基於滴滴雲之 Netperf 網路效能測試工具的搭建及使用
阿新 • • 發佈:2018-12-12
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