1. 程式人生 > >網路效能測試工具qperf使用

網路效能測試工具qperf使用

  1. 前言

    網路在效能方面的角色越來越重要,特別在現在雲端計算環境中,系統越來越分佈化。任何一個網路效能問題,都有可能導致業務響應遲緩。
    我們在知道網絡卡、交換機型號,以及物理距離後,理論上是可以知道頻寬和延遲的。但是實際環境中由於使用不同的網絡卡驅動,交換機跳數,網路配置導致會有不同的效能表現。那麼就需要進行測試驗證,我們通常使用的網路效能測試工具有netperf/iperf,這次介紹的是qperf工具,相對netperf和iperf來說是個新工具, 而且合入到了紅帽系統中

  1. qperf介紹

    網路效能主要有兩個指標是頻寬和延時。延遲決定最大的QPS(Query Per Second),而頻寬決定了可支撐的最大負荷。
    qperf和iperf/netperf一樣可以評測兩個節點之間的頻寬和延時。可以在測試tcp/ip協議和RDMA傳輸。不過相比netperf和iperf,支援RDMA是qperf工具的獨有特性。
    接下去開始動手使用qperf。

  2. qperf安裝

    可以直接通過yum源安裝。#yun install qperf
    同時會安裝兩個依賴包(libibverbs, librdmacm),是直接和rdma功能相關的,不然無法啟動rdma功能。也可以通過,https://pkgs.org/download/qperf 官方網頁下載安裝。

  3. 使用

    qperf是測試兩個節點之間的頻寬和延時的,為此需要一個當作服務端,一個當作客戶端。其中服務端直接執行qperf, 無需任何引數。

  4. 服務端節點

    直接執行如下,無需任何引數
    #qperf
    預設開啟埠號:19765
    通過netstat檢視,如下:
    #netstat –tunlup
    tcp 0 0 0.0.0.0:19765 0.0.0.0:* LISTEN 53755/qperf

  5. 客戶端

    客戶端執行獲取頻寬、延時情況,執行過程中不需要指定埠號,只要指定主機名或者ip地址即可。文章中後續命令都是在客戶端中進行執行。

  6. TCP頻寬測試

    最簡單的格式是客戶端使用兩個引數:一個是服務端的名字,另一個是本次測試的命名(例如tcp_bw TCP頻寬測試)。
    #qperf 11.165.67.18 tcp_bw
    這個是輸出tcp頻寬。

  7. 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即可。

  8. 指定測試時間

    有些場景下我們需要進行帶負載的長時間穩定性測試,可以通過指定測試執行時間(使用-t引數)來實現。例如測試10秒tcp頻寬,可以使用-t引數,如下:
    #qperf 11.165.67.18 -t 10 tcp_bw

  9. 迴圈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變化的過程中,頻寬,延時增長趨勢和臨界點。這個臨界點對於伺服器效能評估是很有幫助的。

  10. RDMA測試

如果網絡卡支援RDMA功能,例如IB卡,那麼可以進行RDMA效能測試:
#qperf  11.165.67.18 ud_bw
  1. qperf使用小結
qperf工具使用本身和netperf/iperf非常類似,但是除了支援tcp/udp/sctp外, qperf值得提的亮點是:第一可以支援RDMA測量,第二可進行迴圈遍歷測試。這兩點也是推薦該工具的主要原因。