<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Rdma on Charlie Chiang's blog</title><link>https://charlie0129.github.io/blog/tags/rdma/</link><description>Recent content in Rdma on Charlie Chiang's blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Fri, 09 Aug 2024 14:28:00 +0800</lastBuildDate><atom:link href="https://charlie0129.github.io/blog/tags/rdma/index.xml" rel="self" type="application/rss+xml"/><item><title>Rename RDMA NIC Interface Names</title><link>https://charlie0129.github.io/blog/p/rename-rnics/</link><pubDate>Fri, 09 Aug 2024 14:28:00 +0800</pubDate><guid>https://charlie0129.github.io/blog/p/rename-rnics/</guid><description>&lt;h2 id="background">Background
&lt;/h2>&lt;p>The RDMA NIC names (InfiniBand HCAs in this case) of our nodes are inconsistent. We want to rename them to a consistent naming scheme.&lt;/p>
&lt;p>One node:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;span class="lnt">55
&lt;/span>&lt;span class="lnt">56
&lt;/span>&lt;span class="lnt">57
&lt;/span>&lt;span class="lnt">58
&lt;/span>&lt;span class="lnt">59
&lt;/span>&lt;span class="lnt">60
&lt;/span>&lt;span class="lnt">61
&lt;/span>&lt;span class="lnt">62
&lt;/span>&lt;span class="lnt">63
&lt;/span>&lt;span class="lnt">64
&lt;/span>&lt;span class="lnt">65
&lt;/span>&lt;span class="lnt">66
&lt;/span>&lt;span class="lnt">67
&lt;/span>&lt;span class="lnt">68
&lt;/span>&lt;span class="lnt">69
&lt;/span>&lt;span class="lnt">70
&lt;/span>&lt;span class="lnt">71
&lt;/span>&lt;span class="lnt">72
&lt;/span>&lt;span class="lnt">73
&lt;/span>&lt;span class="lnt">74
&lt;/span>&lt;span class="lnt">75
&lt;/span>&lt;span class="lnt">76
&lt;/span>&lt;span class="lnt">77
&lt;/span>&lt;span class="lnt">78
&lt;/span>&lt;span class="lnt">79
&lt;/span>&lt;span class="lnt">80
&lt;/span>&lt;span class="lnt">81
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">root@tj01-h20-node139:/# ibstatus
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;ibp171s0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x70
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;ibp187s0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x6f
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;ibp203s0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x29
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;ibp219s0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x6a
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;ibp41s0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x6c
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;ibp59s0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x2b
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;ibp75s0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x80
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;ibp93s0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x6e
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;rocep22s0f0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 25 Gb/sec (1X EDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: Ethernet
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Another node:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;span class="lnt">55
&lt;/span>&lt;span class="lnt">56
&lt;/span>&lt;span class="lnt">57
&lt;/span>&lt;span class="lnt">58
&lt;/span>&lt;span class="lnt">59
&lt;/span>&lt;span class="lnt">60
&lt;/span>&lt;span class="lnt">61
&lt;/span>&lt;span class="lnt">62
&lt;/span>&lt;span class="lnt">63
&lt;/span>&lt;span class="lnt">64
&lt;/span>&lt;span class="lnt">65
&lt;/span>&lt;span class="lnt">66
&lt;/span>&lt;span class="lnt">67
&lt;/span>&lt;span class="lnt">68
&lt;/span>&lt;span class="lnt">69
&lt;/span>&lt;span class="lnt">70
&lt;/span>&lt;span class="lnt">71
&lt;/span>&lt;span class="lnt">72
&lt;/span>&lt;span class="lnt">73
&lt;/span>&lt;span class="lnt">74
&lt;/span>&lt;span class="lnt">75
&lt;/span>&lt;span class="lnt">76
&lt;/span>&lt;span class="lnt">77
&lt;/span>&lt;span class="lnt">78
&lt;/span>&lt;span class="lnt">79
&lt;/span>&lt;span class="lnt">80
&lt;/span>&lt;span class="lnt">81
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">root@tj01-h20-node140:/# ibstatus
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;mlx5_2&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x68
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;mlx5_3&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x71
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;mlx5_4&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x27
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;mlx5_5&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x69
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;mlx5_6&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x6d
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;mlx5_7&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x6b
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;mlx5_8&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x2a
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;mlx5_9&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x2c
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;mlx5_bond_0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 25 Gb/sec (1X EDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: Ethernet
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Note that one node has the names &lt;code>ibp*&lt;/code> and the other has &lt;code>mlx5_*&lt;/code>. We want to make node 1 follow a same naming scheme as the other nodes.&lt;/p>
&lt;p>To be fair &lt;code>ibp*&lt;/code> is actually consistent (named using PCI location). &lt;code>mlx5_*&lt;/code> is not consistent, which depends on the card initialization order and can change after a reboot.&lt;/p>
&lt;p>Anyway, since all other nodes are using &lt;code>mlx5_*&lt;/code> naming scheme, we want to rename all of them to &lt;code>mlx5_*&lt;/code> for consistency with the other nodes.&lt;/p>
&lt;h2 id="solution">Solution
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">cp cp /lib/udev/rules.d/60-rdma-persistent-naming.rules /etc/udev/rules.d/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>This is all you need. Now reboot your server.&lt;/p>
&lt;p>If you are interested in the details, read on.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># SPDX-License-Identifier: (GPL-2.0 OR Linux-OpenIB)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Copyright (c) 2019, Mellanox Technologies. All rights reserved. See COPYING file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Rename modes:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># NAME_FALLBACK - Try to name devices in the following order:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># by-pci -&amp;gt; by-guid -&amp;gt; kernel&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># NAME_KERNEL - leave name as kernel provided&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># NAME_PCI - based on PCI/slot/function location&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># NAME_GUID - based on system image GUID&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># NAME_FIXED - rename the device to the fixed named in the next argument&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># The stable names are combination of device type technology and rename mode.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Infiniband - ib*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># RoCE - roce*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># iWARP - iw*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># OPA - opa*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Default (unknown protocol) - rdma*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Example:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># * NAME_PCI&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># pci = 0000:00:0c.4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Device type = IB&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># mlx5_0 -&amp;gt; ibp0s12f4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># * NAME_GUID&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># GUID = 5254:00c0:fe12:3455&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Device type = RoCE&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># mlx5_0 -&amp;gt; rocex525400c0fe123455&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">ACTION&lt;/span>&lt;span class="o">==&lt;/span>&lt;span class="s2">&amp;#34;add&amp;#34;&lt;/span>, &lt;span class="nv">SUBSYSTEM&lt;/span>&lt;span class="o">==&lt;/span>&lt;span class="s2">&amp;#34;infiniband&amp;#34;&lt;/span>, &lt;span class="nv">PROGRAM&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;rdma_rename %k NAME_KERNEL&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Example:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># * NAME_FIXED&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># fixed name for specific board_id&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#ACTION==&amp;#34;add&amp;#34;, ATTR{board_id}==&amp;#34;MSF0010110035&amp;#34;, SUBSYSTEM==&amp;#34;infiniband&amp;#34;, PROGRAM=&amp;#34;rdma_rename %k NAME_FIXED myib&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Look at the line contains &lt;code>PROGRAM=&amp;quot;rdma_rename %k NAME_KERNEL&amp;quot;&lt;/code>. So if you want to use &lt;code>mlx5_*&lt;/code> (called kernel names), you can use &lt;code>NAME_KERNEL&lt;/code> as the rename mode (default). If you want to use &lt;code>ibp*&lt;/code> (called PCI names), you can use &lt;code>NAME_PCI&lt;/code> as the rename mode or use &lt;code>NAME_FALLBACK&lt;/code>, which first tries &lt;code>NAME_PCI&lt;/code>.&lt;/p></description></item><item><title>NFS over RDMA Setup &amp; Benchmark</title><link>https://charlie0129.github.io/blog/p/nfs-over-rdma/</link><pubDate>Fri, 19 Jul 2024 22:36:00 +0800</pubDate><guid>https://charlie0129.github.io/blog/p/nfs-over-rdma/</guid><description>&lt;p>So I decided to test NFS over RDMA somehow.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Hostname&lt;/th>
&lt;th>&lt;code>ft2000&lt;/code> (Server)&lt;/th>
&lt;th>&lt;code>t3640&lt;/code> (Client)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>CPU&lt;/td>
&lt;td>Phytium FT-2000+/64&lt;/td>
&lt;td>Intel Core i9-10900K&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RAM&lt;/td>
&lt;td>Quad Channel DDR4 128GB&lt;/td>
&lt;td>Dual Channel DDR4 64GB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>NIC&lt;/td>
&lt;td>Mellanox ConnextX-4 Lx 25GbE&lt;/td>
&lt;td>Mellanox ConnextX-4 Lx 25GbE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>OS&lt;/td>
&lt;td>UOS Server 20 1070a&lt;/td>
&lt;td>Debian 12&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Two servers are connected using a 25GbE network. The goal is to set up NFS over RDMA and benchmark it to see the performance difference between NFS over TCP and NFS over RDMA.&lt;/p>
&lt;h2 id="rdma-link-verification">RDMA Link Verification
&lt;/h2>&lt;p>&lt;strong>Install RDMA/IB dependencies:&lt;/strong>&lt;/p>
&lt;p>Dependencies should be the same on both devices (no server and client differences). The difference is only the package manager (and OS).&lt;/p>
&lt;blockquote>
&lt;p>If you are using Mellanox OFED, you can skip this step. Be sure to install Mellanox OFED using &lt;code>--with-nfsrdma&lt;/code> flag. Otherwise, you will not be able to use NFS over RDMA.&lt;/p>&lt;/blockquote>
&lt;p>On UOS Server 20 1070a, which is Anolis8-based, which is again CentOS8-based:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# yum install -y libibverbs librdmacm opensm-libs rdma-core rdma-core-devel \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> librdmacm-utils opensm-static srp_daemon ucx-devel ucx-rdmacm infiniband-diags ibacm \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> opensm-devel ucx ucx-ib libibumad opensm mstflint ucx-cma openmpi rshim libibverbs-utils \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> perftest rdma-core rdma-core-devel infiniband-diags rshim
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>On Debian 12:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# apt install -y infiniband-diags srptools perftest opensm-doc librdmacm-dev \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> rdmacm-utils librdmacm1 ibacm libibmad-dev libibmad5 libibumad-dev libibumad3 \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> ibverbs-utils libibverbs-dev libibverbs1 mstflint rdma-core opensm fio librbd1 \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> librados2 libibnetdisc5 ibverbs-providers
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Make sure link is up on both servers using &lt;code>ip&lt;/code> or &lt;code>ibstatus&lt;/code> command:&lt;/strong>&lt;/p>
&lt;p>Client:&lt;/p>
&lt;p>Use &lt;code>ip&lt;/code> (note &lt;code>state UP&lt;/code>):&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# ip l show dev enp1s0f1np1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">6: enp1s0f1np1: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Or use &lt;code>ibstatis&lt;/code> (note &lt;code>phys state: 5: LinkUp&lt;/code>):&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# ibstatus
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">Infiniband device &amp;#39;mlx5_0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> base lid: 0x0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> sm lid: 0x0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> rate: 10 Gb/sec (1X QDR)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> link_layer: Ethernet
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">&lt;/span>&lt;span class="err">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">&lt;/span>&lt;span class="go">Infiniband device &amp;#39;mlx5_1&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> base lid: 0x0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> sm lid: 0x0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> rate: 25 Gb/sec (1X EDR)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> link_layer: Ethernet
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Server:&lt;/p>
&lt;p>Use &lt;code>ip&lt;/code> (note &lt;code>state UP&lt;/code>):&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# ip l show dev enp16s0f0np0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">4: enp16s0f0np0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Or use &lt;code>ibstatis&lt;/code> (note &lt;code>phys state: 5: LinkUp&lt;/code>):&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# ibstatus
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">Infiniband device &amp;#39;mlx5_0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> base lid: 0x0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> sm lid: 0x0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> rate: 25 Gb/sec (1X EDR)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> link_layer: Ethernet
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">&lt;/span>&lt;span class="err">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">&lt;/span>&lt;span class="go">Infiniband device &amp;#39;mlx5_1&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> base lid: 0x0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> sm lid: 0x0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> state: 1: DOWN
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> phys state: 3: Disabled
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> rate: 40 Gb/sec (4X QDR)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> link_layer: Ethernet
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Verify IP connectivity between the servers (ping the IP address of the other server):&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# ping 192.168.23.1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">PING 192.168.23.1 (192.168.23.1) 56(84) bytes of data.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">64 bytes from 192.168.23.1: icmp_seq=1 ttl=64 time=0.199 ms
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">64 bytes from 192.168.23.1: icmp_seq=2 ttl=64 time=0.206 ms
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Make sure the the InfiniBand kernel modules are enabled.&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="gp">#&lt;/span> On both servers
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# lsmod | grep ^ib
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">ib_srpt 262144 0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">ib_isert 262144 0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">ib_iser 262144 0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">ib_umad 262144 0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">ib_ipoib 327680 0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">ib_cm 262144 3 rdma_cm,ib_ipoib,ib_srpt
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">ib_uverbs 327680 2 rdma_ucm,mlx5_ib
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">ib_core 458752 12 rdma_cm,ib_ipoib,rpcrdma,ib_srpt,iw_cm,ib_iser,ib_umad,ib_isert,rdma_ucm,ib_uverbs,mlx5_ib,ib_cm
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Make sure you have a lossless network:&lt;/strong>&lt;/p>
&lt;p>In case the RDMA is running over Ethernet (RoCE) you need to make sure that the network is configured to be loss-less, which means that either flow control (FC) or priority flow control PFC is enabled on the adapter ports and the switch.&lt;/p>
&lt;p>In case of lab environment or small setup, you can use Global Pause Flow Control to create loss-less environment. To check what is the global pause configuration use the following command (by default it is enabled normally).&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# ethtool -a enp1s0f0np0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">Pause parameters for enp1s0f0np0:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">Autonegotiate: off
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">RX: on
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">TX: on
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>In case it is disabled, run:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# ethtool -A enp1s0f0np0 rx on tx on
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Test RDMA speed. Refer to my previous blog &lt;a class="link" href="https://charlie0129.github.io/blog/p/ib-perf-test/" >InfiniBand Performance Test&lt;/a> for details.&lt;/strong>&lt;/p>
&lt;p>Run the following command on client and server, respectively:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# ib_send_bw --report_gbit -F -d mlx5_1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">&lt;/span>&lt;span class="gp">#&lt;/span> device name can be seen in &lt;span class="sb">`&lt;/span>ibstatus&lt;span class="sb">`&lt;/span> &lt;span class="nb">command&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# ib_send_bw --report_gbit -a -F -d mlx5_0 192.168.23.2
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">---------------------------------------------------------------------------------------
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> Send BW Test
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> Dual-port : OFF Device : mlx5_0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> Number of qps : 1 Transport type : IB
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> Connection type : RC Using SRQ : OFF
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> PCIe relax order: ON
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> ibv_wr* API : ON
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> TX depth : 128
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> CQ Moderation : 100
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> Mtu : 1024[B]
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> Link type : Ethernet
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> GID index : 3
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> Max inline data : 0[B]
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> rdma_cm QPs : OFF
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> Data ex. method : Ethernet
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">---------------------------------------------------------------------------------------
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> local address: LID 0000 QPN 0x0087 PSN 0x176d37
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:23:01
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> remote address: LID 0000 QPN 0x0188 PSN 0x789e84
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:23:02
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">---------------------------------------------------------------------------------------
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> #bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps]
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> 65536 1000 23.14 23.13 0.044119
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">---------------------------------------------------------------------------------------
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>As you can see, the speed is around 23 Gb/sec. This is the maximum speed of the network (25G). If you see a lower speed, you need to check the network configuration and the switch configuration.&lt;/p>
&lt;h2 id="configure-nfs-without-rdma">Configure NFS without RDMA
&lt;/h2>&lt;p>Just to make sure NFS is working.&lt;/p>
&lt;p>&lt;strong>Install NFS on server:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# yum -y install nfs-utils # On Debian: apt install nfs-kernel-server
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# systemctl start nfs-server rpcbind
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# systemctl enable nfs-server rpcbind
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Use &lt;code>/tmp&lt;/code> as a test dir and share it:&lt;/strong>&lt;/p>
&lt;blockquote>
&lt;p>Since I want to test the network performance (TCP and RDMA), I don&amp;rsquo;t want to be bottlenecked by the disk speed. So I will use &lt;code>/tmp&lt;/code>, which is backed by RAM (usually), as a reasonably fast directory to avoid bottlenecks.&lt;/p>
&lt;p>Make sure it is &lt;code>tmpfs&lt;/code>, otherwise IO will be limited by your disk speed.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# mount | grep /tmp
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">tmpfs on /tmp type tmpfs (rw,nosuid,nodev)
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/blockquote>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# echo &amp;#39;/tmp *(rw,async,insecure,no_root_squash)&amp;#39; &amp;gt;&amp;gt;/etc/exports
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Make it available:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# exportfs -a
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# systemctl restart nfs-server
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Install NFS on client:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# apt install nfs-common
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Mount the NFS share temporarily:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# mkdir -p /mnt/nfs
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# mount -t nfs 192.168.23.1:/tmp /mnt/nfs
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Verify the mount:&lt;/strong>&lt;/p>
&lt;p>Should see the files in &lt;code>/tmp&lt;/code> on the server.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# ls -l /mnt/nfs
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="configure-nfs-with-rdma">Configure NFS with RDMA
&lt;/h2>&lt;p>&lt;strong>Load RDMA transport module on the server:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# modprobe svcrdma
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">&lt;/span>&lt;span class="gp">#&lt;/span> To make it permanent: &lt;span class="nb">echo&lt;/span> &lt;span class="s1">&amp;#39;svcrdma&amp;#39;&lt;/span> &amp;gt;&amp;gt;/etc/modules
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# systemctl restart nfs-server
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Instruct the server to listen on the RDMA transport port (20049 is the default port):&lt;/strong>&lt;/p>
&lt;p>Note: if you see &lt;code>echo: write error: protocol not supported&lt;/code>, it means that the NFSoRDMA is not supported in the Mellanox OFED. You need to use the inbox OS driver (refer to &lt;em>Install RDMA/IB dependencies&lt;/em> section in this blog) or re-install Mellanox OFED with &lt;code>--with-nfsrdma&lt;/code> flag. I was tripped by this issue.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# echo rdma 20049 &amp;gt; /proc/fs/nfsd/portlist
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">&lt;/span>&lt;span class="gp">#&lt;/span> To make it permanent: &lt;span class="nb">echo&lt;/span> &lt;span class="s1">&amp;#39;rdma=nfsrdma&amp;#39;&lt;/span> &amp;gt;&amp;gt; /etc/nfs.conf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Load the RDMA transport module on the client&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# modprobe xprtrdma
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">&lt;/span>&lt;span class="gp">#&lt;/span> To make it permanent: &lt;span class="nb">echo&lt;/span> &lt;span class="s1">&amp;#39;xprtrdma&amp;#39;&lt;/span> &amp;gt;&amp;gt;/etc/modules
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# systemctl restart nfs-utils.service
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Mount the NFS share with RDMA:&lt;/strong>&lt;/p>
&lt;p>Before running the mount command, unmount the NFS share if it is mounted (&lt;code>umount /mnt/nfs&lt;/code>).&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# mount -t nfs -o rdma,port=20049 192.168.23.1:/tmp /mnt/nfs
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">&lt;/span>&lt;span class="gp">#&lt;/span> To make it permanent: &lt;span class="nb">echo&lt;/span> &lt;span class="s1">&amp;#39;192.168.23.1:/tmp /mnt/nfs nfs defaults,proto=rdma,port=20049 0 0&amp;#39;&lt;/span> &amp;gt;&amp;gt; /etc/fstab
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Check the mount parameters:&lt;/strong>&lt;/p>
&lt;p>If you see &lt;code>proto=rdma&lt;/code>, it means the NFS is mounted using RDMA.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# nfsstat -m
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">/mnt/nfs from 192.168.23.1:/tmp
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> Flags: rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=rdma,port=20049,timeo=600,retrans=2,sec=sys,clientaddr=192.168.23.2,local_lock=none,addr=192.168.23.1
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Verify the mount:&lt;/strong>&lt;/p>
&lt;p>Should see the files in &lt;code>/tmp&lt;/code> on the server.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# ls -l /mnt/nfs
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="benchmark">Benchmark
&lt;/h2>&lt;p>Use &lt;code>fio&lt;/code> to benchmark the NFS performance. Parameters such as &lt;code>bs&lt;/code>, &lt;code>iodepth&lt;/code> will be changed to different values later to evaluate the performance in different scenarios.&lt;/p>
&lt;p>I will only test &lt;strong>random read&lt;/strong> performance since sequential read performance is not a main concern even using TCP let alone RDMA.&lt;/p>
&lt;p>The actual command will be:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# fio --rw=randread --bs=4k --numjobs=1 --iodepth=1 --runtime=10 --time_based --loops=1 \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> --ioengine=libaio --direct=1 --invalidate=1 --fsync_on_close=1 --randrepeat=1 --norandommap \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> --exitall --name task1 --filename=/mnt/nfs/testfile --size=256M
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>The full log and related scripts can be found in the &lt;a class="link" href="#appendix" >Appendix&lt;/a>.&lt;/p>&lt;/blockquote>
&lt;p>Here are the results we have all been waiting for!&lt;/p>
&lt;p>For IO operations per second (IOPS), the average IOPS for NFS over RDMA is higher than NFS over TCP. The difference is more significant when the block size is larger and the most significant when &lt;code>iodepth=12&lt;/code>. We can also see that no matter the block size and iodepth, the IOPS for NFS over TCP is capped at around 47 KIOPS, while the one of RDMA is significantly higher at over 180 KIOPS.&lt;/p>
&lt;p>The reason why the difference is smaller with larger block sizes is that the network bandwidth is the bottleneck. For our 25GbE network, the maximum bandwidth is around 2800 MiB/s. We are hitting this limit with larger block sizes and this much IOPS. This is unrelated to the RDMA or TCP. If you have a faster network, you will see this difference for larger block sizes as well.&lt;/p>
&lt;p>For 4K block size:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>IO Depth&lt;/th>
&lt;th>KIOPS (RDMA)&lt;/th>
&lt;th>KIOPS (TCP)&lt;/th>
&lt;th>Ratio&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>8&lt;/td>
&lt;td>124.5&lt;/td>
&lt;td>36.1&lt;/td>
&lt;td>3.4&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>12&lt;/td>
&lt;td>156.0&lt;/td>
&lt;td>38.1&lt;/td>
&lt;td>4.1&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>16&lt;/td>
&lt;td>165.8&lt;/td>
&lt;td>41.4&lt;/td>
&lt;td>4.0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>24&lt;/td>
&lt;td>177.0&lt;/td>
&lt;td>45.8&lt;/td>
&lt;td>3.9&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>32&lt;/td>
&lt;td>179.4&lt;/td>
&lt;td>50.7&lt;/td>
&lt;td>3.5&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;img src="https://charlie0129.github.io/blog/p/nfs-over-rdma/plots/iops_avg.svg"
loading="lazy"
alt="IOPS vs Block Size for NFS over RDMA and TCP"
>
&lt;/p>
&lt;p>For bandwidth, the average bandwidth for NFS over RDMA is significantly higher (around 4x for small block sizes).&lt;/p>
&lt;p>The reason why the difference is more significant when the block size is small (4-16) is that we are limited by the network bandwidth. Since we have a 25GbE network, the maximum bandwidth is around 2800 MiB/s so you can see that the bandwidth is capped at 2800 MiB/s for large block sizes and deep IO depths. If you have a faster network, you will see this 4x difference for larger block sizes as well.&lt;/p>
&lt;p>&lt;img src="https://charlie0129.github.io/blog/p/nfs-over-rdma/plots/bw_avg.svg"
loading="lazy"
alt="Bandwidth vs Block Size for NFS over RDMA and TCP"
>
&lt;/p>
&lt;p>Latency-wise, the average latency for NFS over RDMA is slightly lower than NFS over TCP. The difference is more significant for small block size and large iodepths.&lt;/p>
&lt;p>&lt;img src="https://charlie0129.github.io/blog/p/nfs-over-rdma/plots/lat_avg.svg"
loading="lazy"
alt="Latency vs Block Size for NFS over RDMA and TCP"
>
&lt;/p>
&lt;h2 id="appendix">Appendix
&lt;/h2>&lt;ul>
&lt;li>Benchmark script &lt;a class="link" href="benchmark.sh" >benchmark.sh&lt;/a>: automatically run &lt;code>fio&lt;/code> with different &lt;code>bs&lt;/code> and &lt;code>iodepth&lt;/code> values and saves logs (it saves stdout, not the fio-generated log, e.g. &lt;code>--bandwidth-log&lt;/code>).&lt;/li>
&lt;li>Plotting script &lt;a class="link" href="plot.py" >plot.py&lt;/a>: parses the &lt;code>fio&lt;/code> logs (stdout) saved by &lt;code>benchmark.sh&lt;/code> and plots the results, which is the three figures you see above in the &lt;a class="link" href="#benchmark" >Benchmark&lt;/a> section.&lt;/li>
&lt;/ul>
&lt;details>
&lt;summary>Raw fio Logs (Click to Show)&lt;/summary>
&lt;ul>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth1.log" >rdma_fio_bs4k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth2.log" >rdma_fio_bs4k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth3.log" >rdma_fio_bs4k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth4.log" >rdma_fio_bs4k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth6.log" >rdma_fio_bs4k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth8.log" >rdma_fio_bs4k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth12.log" >rdma_fio_bs4k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth16.log" >rdma_fio_bs4k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth24.log" >rdma_fio_bs4k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth32.log" >rdma_fio_bs4k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth64.log" >rdma_fio_bs4k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth128.log" >rdma_fio_bs4k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth1.log" >rdma_fio_bs8k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth2.log" >rdma_fio_bs8k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth3.log" >rdma_fio_bs8k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth4.log" >rdma_fio_bs8k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth6.log" >rdma_fio_bs8k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth8.log" >rdma_fio_bs8k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth12.log" >rdma_fio_bs8k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth16.log" >rdma_fio_bs8k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth24.log" >rdma_fio_bs8k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth32.log" >rdma_fio_bs8k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth64.log" >rdma_fio_bs8k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth128.log" >rdma_fio_bs8k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth1.log" >rdma_fio_bs16k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth2.log" >rdma_fio_bs16k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth3.log" >rdma_fio_bs16k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth4.log" >rdma_fio_bs16k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth6.log" >rdma_fio_bs16k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth8.log" >rdma_fio_bs16k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth12.log" >rdma_fio_bs16k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth16.log" >rdma_fio_bs16k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth24.log" >rdma_fio_bs16k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth32.log" >rdma_fio_bs16k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth64.log" >rdma_fio_bs16k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth128.log" >rdma_fio_bs16k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth1.log" >rdma_fio_bs32k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth2.log" >rdma_fio_bs32k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth3.log" >rdma_fio_bs32k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth4.log" >rdma_fio_bs32k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth6.log" >rdma_fio_bs32k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth8.log" >rdma_fio_bs32k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth12.log" >rdma_fio_bs32k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth16.log" >rdma_fio_bs32k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth24.log" >rdma_fio_bs32k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth32.log" >rdma_fio_bs32k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth64.log" >rdma_fio_bs32k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth128.log" >rdma_fio_bs32k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth1.log" >rdma_fio_bs64k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth2.log" >rdma_fio_bs64k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth3.log" >rdma_fio_bs64k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth4.log" >rdma_fio_bs64k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth6.log" >rdma_fio_bs64k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth8.log" >rdma_fio_bs64k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth12.log" >rdma_fio_bs64k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth16.log" >rdma_fio_bs64k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth24.log" >rdma_fio_bs64k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth32.log" >rdma_fio_bs64k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth64.log" >rdma_fio_bs64k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth128.log" >rdma_fio_bs64k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth1.log" >rdma_fio_bs128k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth2.log" >rdma_fio_bs128k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth3.log" >rdma_fio_bs128k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth4.log" >rdma_fio_bs128k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth6.log" >rdma_fio_bs128k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth8.log" >rdma_fio_bs128k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth12.log" >rdma_fio_bs128k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth16.log" >rdma_fio_bs128k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth24.log" >rdma_fio_bs128k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth32.log" >rdma_fio_bs128k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth64.log" >rdma_fio_bs128k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth128.log" >rdma_fio_bs128k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth1.log" >rdma_fio_bs256k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth2.log" >rdma_fio_bs256k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth3.log" >rdma_fio_bs256k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth4.log" >rdma_fio_bs256k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth6.log" >rdma_fio_bs256k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth8.log" >rdma_fio_bs256k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth12.log" >rdma_fio_bs256k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth16.log" >rdma_fio_bs256k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth24.log" >rdma_fio_bs256k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth32.log" >rdma_fio_bs256k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth64.log" >rdma_fio_bs256k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth128.log" >rdma_fio_bs256k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth1.log" >rdma_fio_bs512k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth2.log" >rdma_fio_bs512k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth3.log" >rdma_fio_bs512k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth4.log" >rdma_fio_bs512k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth6.log" >rdma_fio_bs512k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth8.log" >rdma_fio_bs512k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth12.log" >rdma_fio_bs512k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth16.log" >rdma_fio_bs512k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth24.log" >rdma_fio_bs512k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth32.log" >rdma_fio_bs512k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth64.log" >rdma_fio_bs512k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth128.log" >rdma_fio_bs512k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth1.log" >rdma_fio_bs1024k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth2.log" >rdma_fio_bs1024k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth3.log" >rdma_fio_bs1024k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth4.log" >rdma_fio_bs1024k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth6.log" >rdma_fio_bs1024k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth8.log" >rdma_fio_bs1024k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth12.log" >rdma_fio_bs1024k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth16.log" >rdma_fio_bs1024k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth24.log" >rdma_fio_bs1024k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth32.log" >rdma_fio_bs1024k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth64.log" >rdma_fio_bs1024k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth128.log" >rdma_fio_bs1024k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth1.log" >tcp_fio_bs4k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth2.log" >tcp_fio_bs4k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth3.log" >tcp_fio_bs4k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth4.log" >tcp_fio_bs4k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth6.log" >tcp_fio_bs4k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth8.log" >tcp_fio_bs4k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth12.log" >tcp_fio_bs4k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth16.log" >tcp_fio_bs4k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth24.log" >tcp_fio_bs4k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth32.log" >tcp_fio_bs4k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth64.log" >tcp_fio_bs4k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth128.log" >tcp_fio_bs4k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth1.log" >tcp_fio_bs8k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth2.log" >tcp_fio_bs8k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth3.log" >tcp_fio_bs8k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth4.log" >tcp_fio_bs8k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth6.log" >tcp_fio_bs8k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth8.log" >tcp_fio_bs8k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth12.log" >tcp_fio_bs8k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth16.log" >tcp_fio_bs8k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth24.log" >tcp_fio_bs8k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth32.log" >tcp_fio_bs8k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth64.log" >tcp_fio_bs8k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth128.log" >tcp_fio_bs8k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth1.log" >tcp_fio_bs16k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth2.log" >tcp_fio_bs16k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth3.log" >tcp_fio_bs16k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth4.log" >tcp_fio_bs16k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth6.log" >tcp_fio_bs16k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth8.log" >tcp_fio_bs16k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth12.log" >tcp_fio_bs16k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth16.log" >tcp_fio_bs16k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth24.log" >tcp_fio_bs16k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth32.log" >tcp_fio_bs16k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth64.log" >tcp_fio_bs16k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth128.log" >tcp_fio_bs16k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth1.log" >tcp_fio_bs32k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth2.log" >tcp_fio_bs32k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth3.log" >tcp_fio_bs32k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth4.log" >tcp_fio_bs32k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth6.log" >tcp_fio_bs32k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth8.log" >tcp_fio_bs32k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth12.log" >tcp_fio_bs32k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth16.log" >tcp_fio_bs32k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth24.log" >tcp_fio_bs32k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth32.log" >tcp_fio_bs32k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth64.log" >tcp_fio_bs32k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth128.log" >tcp_fio_bs32k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth1.log" >tcp_fio_bs64k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth2.log" >tcp_fio_bs64k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth3.log" >tcp_fio_bs64k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth4.log" >tcp_fio_bs64k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth6.log" >tcp_fio_bs64k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth8.log" >tcp_fio_bs64k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth12.log" >tcp_fio_bs64k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth16.log" >tcp_fio_bs64k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth24.log" >tcp_fio_bs64k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth32.log" >tcp_fio_bs64k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth64.log" >tcp_fio_bs64k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth128.log" >tcp_fio_bs64k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth1.log" >tcp_fio_bs128k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth2.log" >tcp_fio_bs128k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth3.log" >tcp_fio_bs128k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth4.log" >tcp_fio_bs128k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth6.log" >tcp_fio_bs128k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth8.log" >tcp_fio_bs128k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth12.log" >tcp_fio_bs128k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth16.log" >tcp_fio_bs128k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth24.log" >tcp_fio_bs128k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth32.log" >tcp_fio_bs128k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth64.log" >tcp_fio_bs128k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth128.log" >tcp_fio_bs128k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth1.log" >tcp_fio_bs256k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth2.log" >tcp_fio_bs256k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth3.log" >tcp_fio_bs256k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth4.log" >tcp_fio_bs256k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth6.log" >tcp_fio_bs256k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth8.log" >tcp_fio_bs256k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth12.log" >tcp_fio_bs256k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth16.log" >tcp_fio_bs256k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth24.log" >tcp_fio_bs256k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth32.log" >tcp_fio_bs256k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth64.log" >tcp_fio_bs256k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth128.log" >tcp_fio_bs256k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth1.log" >tcp_fio_bs512k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth2.log" >tcp_fio_bs512k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth3.log" >tcp_fio_bs512k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth4.log" >tcp_fio_bs512k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth6.log" >tcp_fio_bs512k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth8.log" >tcp_fio_bs512k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth12.log" >tcp_fio_bs512k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth16.log" >tcp_fio_bs512k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth24.log" >tcp_fio_bs512k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth32.log" >tcp_fio_bs512k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth64.log" >tcp_fio_bs512k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth128.log" >tcp_fio_bs512k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth1.log" >tcp_fio_bs1024k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth2.log" >tcp_fio_bs1024k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth3.log" >tcp_fio_bs1024k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth4.log" >tcp_fio_bs1024k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth6.log" >tcp_fio_bs1024k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth8.log" >tcp_fio_bs1024k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth12.log" >tcp_fio_bs1024k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth16.log" >tcp_fio_bs1024k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth24.log" >tcp_fio_bs1024k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth32.log" >tcp_fio_bs1024k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth64.log" >tcp_fio_bs1024k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth128.log" >tcp_fio_bs1024k_iodepth128.log&lt;/a>&lt;/li>
&lt;/ul>
&lt;/details></description></item></channel></rss>