1. 程式人生 > >基於滴滴雲之 Netperf 網路效能測試工具的搭建及使用

基於滴滴雲之 Netperf 網路效能測試工具的搭建及使用

1. 介紹 Netperf

網路效能是雲伺服器的重要指標,對網路效能進行準確的測試非常重要。Netperf 是一種可以用來衡量不同型別網路效能的工具,它可以用來測試 PPS(即每秒鐘傳送資料包的數目)、單向吞吐量和端到端延遲。本文給大家簡述如何採用 Netperf 對網路效能進行測試。

2. 安裝 Netperf

2.1 環境準備

  • 測試機

    • 被壓力測試網路 PPS 的 DC2 例項,可以用來作為 Netperf 測試中的 Client 端或者 Server 端
    • 虛擬機器名稱:test_netperf1; 虛擬機器 IP:116.85.255.6。(虛擬機器可以在
      滴滴雲
      上申請)
  • 陪練機

    • DC2 例項,可以用來作為 Netperf 測試中的 Client 端或者 Server 端,與測試機建立控制連線,傳遞測試配置相關的資訊以及測試結果
    • 虛擬機器名稱:test_netperf2; 虛擬機器 IP:116.85.255.5

2.2 安裝 Netperf

  • 執行下面命令下載 Netperf
   wget -c "https://codeload.github.com/HewlettPackard/netperf/tar.gz/netperf-2.5.0" -O netperf-2.5.0.tar.gz
  • 解壓 Netperf
   tar -zxvf netperf-2.5.0.tar.gz
  • 進入 Netperf目錄
   cd netperf-2.5.0.tar.gz
  • 執行以下命令配置檔案,編譯並且安裝
   ./configure
   make
   make install
  • 執行以下命令驗證 Netperf 是否安裝成功。如果安裝成功會生成2個工具:NetServer 和 Netperf。
   netperf -h
   netserver -h

2.3 開啟多佇列功能

在測試機內開啟多佇列功能(假設需要開啟的網絡卡是 eth0),用來提高測試機接收資料包的效能。

  • 執行以下命令開啟多佇列,開啟 3 個佇列
   ethtool -L eth0 combined 3
  • 執行以下命令修改每個佇列的引數
   echo "ff" > /sys/class/net/eth0/queues/rx-0/rps_cpus
   echo "ff" > /sys/class/net/eth0/queues/rx-1/rps_cpus
   echo "ff" > /sys/class/net/eth0/queues/rx-2/rps_cpus

3. 使用 Netperf 和 NetServer 測試網路效能

3.1 測試收方向

  • 測試機
    • 測試機內啟動 NetServer 程序,-p 引數用來指定接收資料包的埠號
	netserver -p 6000
  • 陪練機
    • 陪練機內啟動 Netperf 程序,分別制定到測試機不同的 NetServer 埠
    • netperf -H 引數指定測試機的 IP 地址
    • netperf -p 引數指定測試機的埠號
    • netperf -l 引數指定陪練機向測試傳送資料包的時間
    • netperf -t 引數指定傳送資料包的協議型別為 TCP_STREAM 還是 UDP_STREAM
    • netperf -m 引數指定資料包的位元組大小
   netperf -H 116.85.255.6 -p 6000 -t UDP_STREAM -l 300 -- -m 64

3.2 測試發方向

  • 陪練機
    • 在所有陪練機內各啟動一個 NetServer 程序,-p 指定埠號
   netserver -p 7000
  • 測試機
    • 測試機內啟動 Netperf 程序,-H 指定為陪練機的 IP 地址
    • 有多少個陪練機,需要在測試機內啟動多少個 Netperf 程序
   netperf -H 116.85.255.5 -p 6000 -t UDP_STREAM -l 300 -- -m 64

3.3 測試結果分析

  • 最終傳送端的每個 Netperf 程序輸出如下結果,以下結果不能代表以上申請測試機的效能,具體效能根據實際測試結果而定
	Socket  Message  Elapsed      Messages
   Size    Size     Time         Okay Errors   Throughput
   bytes   bytes    secs            #      #   10^6bits/sec
   84675       64   300.00     353255      0       6.03
   153284           300.00     109999              0.19

輸出結果各個欄位的含義如下:

欄位名 含義 備註
Socket size(bytes) 緩衝區的大小 -
Message size(bytes) 資料包的大小 -
Elapsed Time(secs) 測試時間 -
Messages Okay(個) 傳送成功的資料包數目 -
Messages Errors(個) 傳送失敗的資料包數目 -
Throughtput(10^6bits/sec) 吞吐量 -
  • PPS
    • PPS 為每秒鐘傳送成功的資料包個數
    • 具體計算方法:PPS = 資料包傳送成功的數目/測試時間
    • 可以在 Server 端用 sar 命令來統計實際收到的資料包,具體命令如下所示,其表示每隔 1 秒統計一次,統計 300 次,sar 命令最後會對 300 次的統計結果求平均
   sar -n DEV 1 300