大部分的人在測頻寬的時候,都會想到 iperf 這個軟體。
(其實他已經很好用了,尤其又有 windows 版本)
不過由於 qperf 沒有 support RDMA,所以來研究一下 qperf。
qperf 跟 iperf 很像,都是需要兩台機器,一台當 server,一台當 client。
當 Server 的機器只要下 "qperf" 即可。
當 Client 的機器的指令則是
qperf <server ip> <test pattern>
例如:qperf 10.0.10.1 tcp_bw
不同的 test pattern 會跑不同的測試。
如果不跑 RDMA 的話,下面四個 test pattern 應該就很夠一般使用了!
tcp_bw : TCP bandwidth
tcp_lat : TCP latency
udp_bw : UDP bandwidth
udp_lat : TDP latency
(更多 test pattern,可以下 qperf --help tests)
當然,可以在 <server ip> 與 <test pattern> 中間加上 options。
(不能加在最後!!不能加在最後!!不能加在最後!!)
比較常用的 options 大概是
-ca (or --cpu_affinity) 綁定 CPU
-m (or --msg_size) 設定訊息大小
-t (or --time) 設定時間(預設兩秒)
-v (or --verbose) 提供更多輸出資訊
qperf 比 iperf 豐富的地方莫過是拿 -oo (or --loop) 來測 loop 了!
qperf <server ip> -oo Var:Init:Last:Incr <test pattern>
範例: qperf 10.0.10.1 -oo msg_size:1K:1G:*2 tcp_bw
第一個參數 msg_size 是指要拿不同的 message size 來做測試
第二個參數 1K 是指從 1K 大小開始測試
第三個參數 2K 是指測到 1G 大小結束
第四個參數 *2 代表每次增加是以兩倍的方式增加
結果:
另外是,如果不是 RedHat 5以上,或 CentOS 7,qperf 是需要自己下載的。Source code
按照 README 就能很順利的 build 出 qperf 的 binary 檔。
一般 OS 沒有 libibverbs 的情況下,build 出來的 qperf 是沒有 RDMA 功能的。