測試網絡性能工具Netperf的安裝使用

 

下載 http://www.netperf.org/netperf/DownloadNetperf.html
tar zxf … && cd xxx
./configure –prefix=/tools/netperf-2.4.1 && make && make install
手冊 http://www.netperf.org/svn/netperf2/tags/netperf-2.4.3/doc/netperf.html

服務器端啓動方法 /tools/netperf-2.4.1/bin/netserver
通過客戶端測試

測試批量(bulk)網絡流量的性能 
批量數據傳輸典型的例子有ftp和其它類似的網絡應用(即一次傳輸整個文件)。根據使用傳輸協議的不同,批量數據傳輸又分爲TCP批量傳輸和UDP批量傳輸。

1. TCP_STREAM
/tools/netperf-2.4.1/bin/netperf -H 192.168.0.108 -l 60 [-t TCP_STREAM]
TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.0.108 (192.168.0.108) port 0 AF_INET
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput
bytes bytes bytes secs. 10^6bits/sec
87380 16384 16384 60.01 88.91
從netperf的結果輸出中,我們可以知道以下的一些信息:
1) 遠端系統(即server)使用大小爲87380字節的socket接收緩衝
2) 本地系統(即client)使用大小爲16384字節的socket發送緩衝
3) 向遠端系統發送的測試分組大小爲16384字節
4) 測試經歷的時間爲60.01秒
5) 吞吐量的測試結果爲88.91Mbits/秒
在缺省情況下,netperf向發送的測試分組大小設置爲本地系統所使用的socket發送緩衝大小。
TCP_STREAM方式下與測試相關的局部參數如下表所示:
參數 說明
-s size 設置本地系統的socket發送與接收緩衝大小
-S size 設置遠端系統的socket發送與接收緩衝大小
-m size 設置本地系統發送測試分組的大小
-M size 設置遠端系統接收測試分組的大小
-D 對本地與遠端系統的socket設置TCP_NODELAY選項
通過修改以上的參數,並觀察結果的變化,我們可以確定是什麼因素影響了連接的吞吐量。例如,如果懷疑路由器由於缺乏足夠的緩衝區空間,使得轉發大的分組時存在問題,就可以增加測試分組(-m)的大小,以觀察吞吐量的變化:
./netperf -H 192.168.0.108 -l 60 — -m 2048
TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.0.108 (192.168.0.108) port 0 AF_INET
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput
bytes bytes bytes secs. 10^6bits/sec
87380 16384 2048 60.01 90.20
在這裏,測試分組的大小減少到2048字節,而吞吐量卻沒有很大的變化(與前面例子中測試分組大小爲16K字節相比)。相反,如果吞吐量有了較大的提升,則說明在網絡中間的路由器確實存在緩衝區的問題。

2. UDP_STREAM
/tools/netperf-2.4.1/bin/netperf -H 192.168.0.108 -l 60 -t UDP_STREAM
UDP UNIDIRECTIONAL SEND TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.0.108 (192.168.0.108) port 0 AF_INET
Socket Message Elapsed Messages
Size Size Time Okay Errors Throughput
bytes bytes secs # # 10^6bits/sec
108544 65507 60.00 10998 0 96.06
262144 60.00 3809 33.27
UDP_STREAM方式的結果中有兩行測試數據,第一行顯示的是本地系統的發送統計,這裏的吞吐量表示netperf向本地socket發送分組的能力。第二行顯示的就是遠端系統接收的情況

測試請求/應答(request/response)網絡流量的性能
另一類常見的網絡流量類型是應用在client/server結構中的request/response模式。在每次交易(transaction)中,client向server發出小的查詢分組,server接收到請求,經處理後返回大的結果數據。如下圖所示:

1. TCP_RR
TCP_RR方式的測試對象是多次TCP request和response的交易過程,但是它們發生在同一個TCP連接中,這種模式常常出現在數據庫應用中。數據庫的client程序與server程序建立一個TCP連接以後,就在這個連接中傳送數據庫的多次交易過程。
/tools/netperf-2.4.1/bin/netperf -H 192.168.0.108 -t TCP_RR
TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.0.108 (192.168.0.108) port 0 AF_INET
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 3328.91
16384 87380
Netperf輸出的結果也是由兩行組成。第一行顯示本地系統的情況,第二行顯示的是遠端系統的信息。平均的交易率(transaction rate)爲3328.91次/秒。注意到這裏每次交易中的request和response分組的大小都爲1個字節,不具有很大的實際意義。用戶可以通 過測試相關的參數來改變request和response分組的大小,TCP_RR方式下的參數如下表所示:
參數 說明
-r req,resp 設置request和reponse分組的大小
-s size 設置本地系統的socket發送與接收緩衝大小
-S size 設置遠端系統的socket發送與接收緩衝大小
-D 對本地與遠端系統的socket設置TCP_NODELAY選項
通過使用-r參數,我們可以進行更有實際意義的測試:
/tools/netperf-2.4.1/bin/netperf -H 192.168.0.108 -t TCP_RR — -r 32,1024
TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.0.108 (192.168.0.108) port 0 AF_INET
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 1108.21
16384 87380

2. TCP_CRR
與TCP_RR不同,TCP_CRR爲每次交易建立一個新的TCP連接。最典型的應用就是HTTP,每次HTTP交易是在一條單獨的TCP連接中進行的。因此,由於需要不停地建立新的TCP連接,並且在交易結束後拆除TCP連接,交易率一定會受到很大的影響。
/tools/netperf-2.4.1/bin/netperf -H 192.168.0.108 -t TCP_CRR — -r 32,1024
TCP Connect/Request/Response TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.0.108 (192.168.0.108) port 0 AF_INET
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 793.08
16384 87380
交易率也明顯的降低了,只有793.08次/秒。
3. UDP_RR
UDP_RR方式使用UDP分組進行request/response的交易過程。沒有TCP連接所帶來的負擔
/tools/netperf-2.4.1/bin/netperf -H 192.168.0.108 -t UDP_RR — -r 32,1024
UDP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.0.108 (192.168.0.108) port 0 AF_INET
Local /Remote
Socket Size Request Resp. Elapsed Trans.
Send Recv Size Size Time Rate
bytes Bytes bytes bytes secs. per sec
108544 108544 32 1024 10.00 1139.40
262144 262144
#可能會受到網絡中路由器或其它的網絡設備對UDP採用了與TCP不同的緩衝區空間和處理技術影響,正常情況下會高於TCP_RR的值

發佈了33 篇原創文章 · 獲贊 17 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章