網路效能的測量工具netperf
安裝
安裝
從下載 netperf
unzip netperf-2.6.0.zip
cd netperf-2.6.0
./configure
Make
Make install
命令列引數
netperf [global options]-- [test-specific options]
這裡我們只解釋那些常用的命令列引數,其它的引數讀者可以查詢netperf的man手冊。
-H host :指定遠端執行netserver的server IP地址。
-l testlen:指定測試的時間長度(秒)
-t testname:指定進行的測試型別,包括TCP_STREAM,UDP_STREAM,TCP_RR,TCP_CRR,UDP_RR,在下文中分別對它們說明。
在後面的測試中,netserver執行在192.168.0.28,server與client透過區域網連線(100M Hub)。
Netperf測試網路效能
測試批次(bulk)網路流量的效能
批次資料傳輸典型的例子有ftp和其它類似的網路應用(即一次傳輸整個檔案)。根據使用傳輸協議的不同,批次資料傳輸又分為TCP批次傳輸和UDP批次傳輸。
1. TCP_STREAM
Netperf預設情況下進行TCP批次傳輸,即-t TCP_STREAM。測試過程中,netperf向netserver傳送批次的TCP資料分組,以確定資料傳輸過程中的吞吐量:
./netperf -H 192.168.0.28 -l 60
TCP STREAM TEST to 192.168.0.28
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput
bytes bytes bytes secs. 10^6bits/sec
87380 16384 16384 60.00 88.00
從netperf的結果輸出中,我們可以知道以下的一些資訊:
1) 遠端系統(即server)使用大小為87380位元組的socket接收緩衝
2) 本地系統(即client)使用大小為16384位元組的socket傳送緩衝
3) 向遠端系統傳送的測試分組大小為16384位元組
4) 測試經歷的時間為60秒
5) 吞吐量的測試結果為88Mbits/秒
在預設情況下,netperf向傳送的測試分組大小設定為本地系統所使用的socket傳送緩衝大小。
TCP_STREAM方式下與測試相關的區域性引數如下表所示:
引數 |
說明 |
-s size |
設定本地系統的socket傳送與接收緩衝大小 |
-S size |
設定遠端系統的socket傳送與接收緩衝大小 |
-m size |
設定本地系統傳送測試分組的大小 |
-M size |
設定遠端系統接收測試分組的大小 |
-D |
對本地與遠端系統的socket設定TCP_NODELAY選項 |
透過修改以上的引數,並觀察結果的變化,我們可以確定是什麼因素影響了連線的吞吐量。例如,如果懷疑路由器由於缺乏足夠的緩衝區空間,使得轉發大的分組時存在問題,就可以增加測試分組(-m)的大小,以觀察吞吐量的變化:
./netperf -H 192.168.0.28 -l 60 -- -m 2048
TCP STREAM TEST to 192.168.0.28
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput
bytes bytes bytes secs. 10^6bits/sec
87380 16384 2048 60.00 87.62
在這裡,測試分組的大小減少到2048位元組,而吞吐量卻沒有很大的變化(與前面例子中測試分組大小為16K位元組相比)。相反,如果吞吐量有了較大的提升,則說明在網路中間的路由器確實存在緩衝區的問題。
2. UDP_STREAM
UDP_STREAM用來測試進行UDP批次傳輸時的網路效能。需要特別注意的是,此時測試分組的大小不得大於socket的傳送與接收緩衝大小,否則netperf會報出錯提示:
./netperf -t UDP_STREAM -H 192.168.0.28 -l 60
UDP UNIDIRECTIONAL SEND TEST to 192.168.0.28
udp_send: data send error: Message too long
為了避免這樣的情況,可以透過命令列引數限定測試分組的大小,或者增加socket的傳送/接收緩衝大小。UDP_STREAM方式使用與TCP_STREAM方式相同的區域性命令列引數,因此,這裡可以使用-m來修改測試中使用分組的大小:
./netperf -t UDP_STREAM -H 192.168.0.28 -- -m 1024
UDP UNIDIRECTIONAL SEND TEST to 192.168.0.28
Socket Message Elapsed Messages
Size Size Time Okay Errors Throughput
bytes bytes secs # # 10^6bits/sec
65535 1024 9.99 114127 0 93.55
65535 9.99 114122 93.54
UDP_STREAM方式的結果中有兩行測試資料,第一行顯示的是本地系統的傳送統計,這裡的吞吐量表示netperf向本地socket傳送分組的能力。但是,我們知道,UDP是不可靠的傳輸協議,傳送出去的分組數量不一定等於接收到的分組數量。
第二行顯示的就是遠端系統接收的情況,由於client與server直接連線在一起,而且網路中沒有其它的流量,所以本地系統傳送過去的分組幾乎都被遠端系統正確的接收了,遠端系統的吞吐量也幾乎等於本地系統的傳送吞吐量。但是,在實際環境中,一般遠端系統的socket緩衝大小不同於本地系統的socket緩衝區大小,而且由於UDP協議的不可靠性,遠端系統的接收吞吐量要遠遠小於傳送出去的吞吐量。
測試請求/應答(request/response)網路流量的效能
另一類常見的網路流量型別是應用在client/server結構中的request/response模式。在每次交易(transaction)中,client向server發出小的查詢分組,server接收到請求,經處理後返回大的結果資料。如下圖所示:
1. TCP_RR
TCP_RR方式的測試物件是多次TCP request和response的交易過程,但是它們發生在同一個TCP連線中,這種模式常常出現在資料庫應用中。資料庫的client程式與server程式建立一個TCP連線以後,就在這個連線中傳送資料庫的多次交易過程。
./netperf -t TCP_RR -H 192.168.0.28
TCP REQUEST/RESPONSE TEST to 192.168.0.28
Local /Remote
Socket Size Request Resp. Elapsed Trans.
Send Recv Size Size Time Rate
bytes Bytes bytes bytes secs. per sec
16384 87380 1 1 10.00 9502.73
16384 87380
Netperf輸出的結果也是由兩行組成。第一行顯示本地系統的情況,第二行顯示的是遠端系統的資訊。平均的交易率(transaction rate)為9502.73次/秒。注意到這裡每次交易中的request和response分組的大小都為1個位元組,不具有很大的實際意義。使用者可以透過測試相關的引數來改變request和response分組的大小,TCP_RR方式下的引數如下表所示:
引數 |
說明 |
-r req,resp |
設定request和reponse分組的大小 |
-s size |
設定本地系統的socket傳送與接收緩衝大小 |
-S size |
設定遠端系統的socket傳送與接收緩衝大小 |
-D |
對本地與遠端系統的socket設定TCP_NODELAY選項 |
透過使用-r引數,我們可以進行更有實際意義的測試:
./netperf -t TCP_RR -H 192.168.0.28 -- -r 32,1024
TCP REQUEST/RESPONSE TEST to 192.168.0.28
Local /Remote
Socket Size Request Resp. Elapsed Trans.
Send Recv Size Size Time Rate
bytes Bytes bytes bytes secs. per sec
16384 87380 32 1024 10.00 4945.97
16384 87380
從結果中可以看出,由於request/reponse分組的大小增加了,導致了交易率明顯的下降。 注:相對於實際的系統,這裡交易率的計算沒有充分考慮到交易過程中的應用程式處理時延,因此結果往往會高於實際情況。
2. TCP_CRR
與TCP_RR不同,TCP_CRR為每次交易建立一個新的TCP連線。最典型的應用就是HTTP,每次HTTP交易是在一條單獨的TCP連線中進行的。因此,由於需要不停地建立新的TCP連線,並且在交易結束後拆除TCP連線,交易率一定會受到很大的影響。
./netperf -t TCP_CRR -H 192.168.0.28
TCP Connect/Request/Response TEST to 192.168.0.28
Local /Remote
Socket Size Request Resp. Elapsed Trans.
Send Recv Size Size Time Rate
bytes Bytes bytes bytes secs. per sec
131070 131070 1 1 9.99 2662.20
16384 87380
即使是使用一個位元組的request/response分組,交易率也明顯的降低了,只有2662.20次/秒。TCP_CRR使用與TCP_RR相同的區域性引數。
3. UDP_RR
UDP_RR方式使用UDP分組進行request/response的交易過程。由於沒有TCP連線所帶來的負擔,所以我們推測交易率一定會有相應的提升。
./netperf -t UDP_RR -H 192.168.0.28
UDP REQUEST/RESPONSE TEST to 192.168.0.28
Local /Remote
Socket Size Request Resp. Elapsed Trans.
Send Recv Size Size Time Rate
bytes Bytes bytes bytes secs. per sec
65535 65535 1 1 9.99 10141.16
65535 65535
結果證實了我們的推測,交易率為10141.16次/秒,高過TCP_RR的數值。不過,如果出現了相反的結果,即交易率反而降低了,也不需要擔心,因為這說明了在網路中,路由器或其它的網路裝置對UDP採用了與TCP不同的緩衝區空間和處理技術。
參考地址: http://www.ibm.com/developerworks/cn/linux/l-netperf/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15747463/viewspace-1087001/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- netperf網路效能測試工具的使用詳解
- netperf 網路效能測試
- 基於滴滴雲之 Netperf 網路效能測試工具的搭建及使用
- 優秀的網路效能測量工具----Iperf
- [原創]Linux下網路效能測試Netperf工具介紹及安裝Linux
- 使用chrome開發者工具中的network皮膚測量網站網路效能Chrome網站
- 測試網路效能的小工具
- 網路效能測試工具iperf的使用
- 【網路】效能指標與測試工具指標
- berserkJS —— 前端網路(效能)監測工具JS前端
- 使用Iperf工具進行網路效能測試
- Linux iperf 網路傳輸效能測試工具Linux
- 資料庫壓力測試工具tiobench,orion,lmbench,netperf資料庫
- 網路測速工具
- IPERF 網路效能測試
- 網路效能測試-perf
- 雲網路效能測試流程
- 網路流量測試工具
- 18個常用的網站效能測試工具網站
- 網路遊戲效能測試的幾點想法遊戲
- OpManager--強大的網路效能監控工具
- 安全及效能測試工具(網站收集)網站
- web前端應用效能指標測量工具有哪些?Web前端指標
- 網路基礎-常用網路測試工具
- 效能測試工具的原理
- 用於網路協議測試的工具協議
- 效能測試工具
- PR效能測試工具升級到全鏈路效能測試與分析平臺
- 用神經網路測量訓練集的半衰期神經網路
- 手持網路效能乙太網測試怎麼選?
- Oracle效能測量體系Oracle
- 效能測試工具Locust
- mysqlslap 效能測試工具MySql
- 效能測試工具supersmackMac
- 效能壓測工具 —— wrk
- 效能測試工具 - Siege
- 網路入侵檢測規避工具fragrouter
- 測評丨NXP LS系列產品網路效能測試