2017年5月16日 星期二

[軟體] Linux 上免費的測頻寬工具 - qperf

大部分的人在測頻寬的時候,都會想到 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 功能的。