網路效能測試工具qperf使用
-
前言
網路在效能方面的角色越來越重要,特別在現在雲端計算環境中,系統越來越分佈化。任何一個網路效能問題,都有可能導致業務響應遲緩。
我們在知道網絡卡、交換機型號,以及物理距離後,理論上是可以知道頻寬和延遲的。但是實際環境中由於使用不同的網絡卡驅動,交換機跳數,網路配置導致會有不同的效能表現。那麼就需要進行測試驗證,我們通常使用的網路效能測試工具有netperf/iperf,這次介紹的是qperf工具,相對netperf和iperf來說是個新工具, 而且合入到了紅帽系統中
-
qperf介紹
網路效能主要有兩個指標是頻寬和延時。延遲決定最大的QPS(Query Per Second),而頻寬決定了可支撐的最大負荷。
qperf和iperf/netperf一樣可以評測兩個節點之間的頻寬和延時。可以在測試tcp/ip協議和RDMA傳輸。不過相比netperf和iperf,支援RDMA是qperf工具的獨有特性。
接下去開始動手使用qperf。 -
qperf安裝
可以直接通過yum源安裝。#yun install qperf
同時會安裝兩個依賴包(libibverbs, librdmacm),是直接和rdma功能相關的,不然無法啟動rdma功能。也可以通過,https://pkgs.org/download/qperf 官方網頁下載安裝。 -
使用
qperf是測試兩個節點之間的頻寬和延時的,為此需要一個當作服務端,一個當作客戶端。其中服務端直接執行qperf, 無需任何引數。
-
服務端節點
直接執行如下,無需任何引數
#qperf
預設開啟埠號:19765
通過netstat檢視,如下:
#netstat –tunlup
tcp 0 0 0.0.0.0:19765 0.0.0.0:* LISTEN 53755/qperf -
客戶端
客戶端執行獲取頻寬、延時情況,執行過程中不需要指定埠號,只要指定主機名或者ip地址即可。文章中後續命令都是在客戶端中進行執行。
-
TCP頻寬測試
最簡單的格式是客戶端使用兩個引數:一個是服務端的名字,另一個是本次測試的命名(例如tcp_bw TCP頻寬測試)。
#qperf 11.165.67.18 tcp_bw
這個是輸出tcp頻寬。 -
TCP延時測試
測試tcp延時,如下:
#qperf 11.165.67.18 tcp_lat
結果輸出如下:
tcp_bw:
bw = 1.17 GB/sec
tcp_lat:
latency = 61.3 us
可以同時測試tcp頻寬和tcp延時,如下:
#qperf 11.165.67.18 tcp_bw tcp_lat
tcp_bw:
bw = 1.17 GB/sec
tcp_lat:
latency = 61.3 us
UDP協議測試同TCP協議測試類似,只需命令引數中將tcp_bw和tcp_lat改成udp_bw和udp_lat即可。 -
指定測試時間
有些場景下我們需要進行帶負載的長時間穩定性測試,可以通過指定測試執行時間(使用-t引數)來實現。例如測試10秒tcp頻寬,可以使用-t引數,如下:
#qperf 11.165.67.18 -t 10 tcp_bw -
迴圈loop遍歷測試
在做網絡卡效能摸底測試的時候,很多時候需要得到網絡卡的頻寬和延時效能曲線。通過qperf提供的迴圈loop測試,可以一個命令得到所有資料。迴圈多次測試,每次改變訊息大小,例如從16K增加到64K,每次大小翻倍直到64K。
#qperf 11.165.67.18 -oo msg_size:1:64K:*2 -vu tcp_bw tcp_lat
tcp_bw:
bw = 3.06 MB/sec
msg_size = 1 bytes
tcp_bw:
bw = 6.15 MB/sec
msg_size = 2 bytes
tcp_bw:
bw = 12 MB/sec
msg_size = 4 bytes
tcp_bw:
bw = 24 MB/sec
msg_size = 8 bytes
tcp_bw:
bw = 48.6 MB/sec
msg_size = 16 bytes
tcp_bw:
bw = 93.5 MB/sec
msg_size = 32 bytes
tcp_bw:
bw = 176 MB/sec
msg_size = 64 bytes
tcp_bw:
bw = 343 MB/sec
msg_size = 128 bytes
tcp_bw:
bw = 612 MB/sec
msg_size = 256 bytes
tcp_bw:
bw = 904 MB/sec
msg_size = 512 bytes
tcp_bw:
bw = 1.18 GB/sec
msg_size = 1 KiB (1,024)
tcp_bw:
bw = 1.17 GB/sec
msg_size = 2 KiB (2,048)
tcp_bw:
bw = 1.15 GB/sec
msg_size = 4 KiB (4,096)
tcp_bw:
bw = 1.17 GB/sec
msg_size = 8 KiB (8,192)
tcp_bw:
bw = 1.17 GB/sec
msg_size = 16 KiB (16,384)
tcp_bw:
bw = 1.17 GB/sec
msg_size = 32 KiB (32,768)
tcp_bw:
bw = 1.17 GB/sec
msg_size = 64 KiB (65,536)
tcp_lat:
latency = 61.5 us
msg_size = 1 bytes
tcp_lat:
latency = 61.8 us
msg_size = 2 bytes
tcp_lat:
latency = 61.9 us
msg_size = 4 bytes
tcp_lat:
latency = 29.8 us
msg_size = 8 bytes
tcp_lat:
latency = 61.5 us
msg_size = 16 bytes
tcp_lat:
latency = 62.2 us
msg_size = 32 bytes
tcp_lat:
latency = 61.6 us
msg_size = 64 bytes
tcp_lat:
latency = 61.5 us
msg_size = 128 bytes
tcp_lat:
latency = 61.9 us
msg_size = 256 bytes
tcp_lat:
latency = 61.9 us
msg_size = 512 bytes
tcp_lat:
latency = 61.7 us
msg_size = 1 KiB (1,024)
tcp_lat:
latency = 62.7 us
msg_size = 2 KiB (2,048)
tcp_lat:
latency = 62.6 us
msg_size = 4 KiB (4,096)
tcp_lat:
latency = 70.4 us
msg_size = 8 KiB (8,192)
tcp_lat:
latency = 141 us
msg_size = 16 KiB (16,384)
tcp_lat:
latency = 152 us
msg_size = 32 KiB (32,768)
tcp_lat:
latency = 186 us
msg_size = 64 KiB (65,536)
可以最後將測試資料圖形化。得到msg_size從1到64K變化的過程中,頻寬,延時增長趨勢和臨界點。這個臨界點對於伺服器效能評估是很有幫助的。 -
RDMA測試
如果網絡卡支援RDMA功能,例如IB卡,那麼可以進行RDMA效能測試:
#qperf 11.165.67.18 ud_bw
- qperf使用小結
qperf工具使用本身和netperf/iperf非常類似,但是除了支援tcp/udp/sctp外, qperf值得提的亮點是:第一可以支援RDMA測量,第二可進行迴圈遍歷測試。這兩點也是推薦該工具的主要原因。