netperf
一、簡介
Netperf是一種網絡性能測量工具,主要基于TCP或UDP的傳輸。根據Netperf應用的不同,可以進行不同模式的網絡性能測試,即批量數據傳輸模式和請求/應答模式。Netperf測試結果所反映的是一個系統能夠以多快的速度向另外一個系統發送數據,以及另外一個系統能夠以多快的速度接收數據。
二、網絡性能測試概述
網絡性能測量的五項指標:
可用性(availability)
響應時間(response time)
網絡利用率(network utilization)
網絡吞吐量 (network throughput)
網絡寬帶容量(network bandwidth capacity)
1、可用性
測試網絡性能的第一步是確定網絡是否正常,最簡單的方法是使用ping命令。通過向遠端的機器發送icmp echo request,并等待接收icmp echo reply 來判斷遠端機的機器是否連通,網絡是否正常工作。
2、響應時間
Ping命令的echo request/reply一次往返花費時間就是響應時間。
3、網絡利用率
網絡利用率是指網絡被使用的時間占總時間(即被使用的時間+空閑時間)的比例,比如:ethernet雖然是共享的,但同時卻只能有一個報文在傳輸。因此在任一時刻,ethernet或者是100%的利用率,或者是0%利用率。
4、網絡吞吐量
網絡吞吐量是指在某個時刻,在網絡中的兩個節點之間,提供給網絡應用的剩余寬帶。
網絡吞吐量可以幫助尋找網絡路徑中的瓶頸。比如。即使client 和server都被分別連接到各自的100M ethernet上,但是如果這兩個100M的ethernet被10M的ethernet連接起來,那么10M的ethernet就是網絡的瓶頸。
有些網絡應用程序在開發過程的測試中能夠正常運行,但是到實際的網絡環境中卻無法正常工作(由于沒有足夠的網絡吞吐量)。這是因為測試只是在空閑的網絡環境中,沒有考慮到實際的網絡環境中還存在著其他的各種網絡流量。所以,網絡吞吐量定義剩余寬帶是有實際意義的。
5、網絡寬帶容量
與網絡吞吐量不同,網絡寬帶容量指的是在網絡的兩個節點之間的最大可用寬帶,這是由組成網絡的設備的能力所決定的。
三、Netperf原理
Netperf工具以client/server方式工作。server端是netserver,用來偵聽來自client端的連接。client端是netperf,用來向server發起網絡測試。在client與server之間,首先建立一個控制連接,傳遞有關測試配置信息,以及測試結果;在控制連接建立并傳遞了測試配置信息以后,client與server之間會再建立一個測試連接,進行回傳遞特殊流量模式,以測試網絡性能。
四、安裝Netperf(客戶端以及服務端都執行下面安裝步驟)
1、在linux系統中,執行:
#wget "https://codeload.github.com/HewlettPackard/netperf/tar.gz/netperf-2.5.0"
2、安裝源包
#tar -xvf netperf-netperf-2.5.0.tar.gz
3、安裝依賴包gcc
#yum install gcc cc -y
4、進入neperf解壓目錄
#./configure
5、#make && make install
6、啟動netserver(只在服務器端操作)
[root@localhost netperf-netperf-2.5.0]# netserver
Unable to start netserver with 'IN(6)ADDR_ANY' port '12865' and family AF_UNSPEC
注釋:
客戶端連接服務端,需要關閉防火墻
五、命令參數
命令參數包括如下:
-H host:制定遠端運行netserver 的服務器IP地址;
-I testlen:執行測試的時間長度(秒);
-t testname:制定進行的測試類型,包括TCP_STREAM,UDP_STREAM,TCP_RR,TCP_CRR,UDP_RR;
-s size:設置本地系統的socket發送與接收緩沖大??;
-S size:設置遠端系統的socket發送與接收緩沖大??;
-m size:設置本地系統發送測試分組的大小;
-M size:設置遠端系統接收測試分組的大小;
-D 對本地與遠端系統的socket設置TCP_NODELAY選項;
六、netperf網絡測試
1、TCP_STREAM
netperf向server發送批量的TCP數據分組,以確定數據傳輸過程中的吞吐量,即測試TCP流式通訊時的網絡寬帶。
客戶端進行連接、測試
[root@localhost netperf-netperf-2.5.0]# netperf -t TCP_STREAM -H 10.60.1.181 -l 60
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.60.1.181 (10.60.1.181) 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.03 4.84
修改發送包的大小
[root@localhost netperf-netperf-2.5.0]# netperf -t TCP_STREAM -H 10.60.1.181 -l 60 -- -m 1024
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.60.1.181 (10.60.1.181) 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 1024 60.01 3.18
2、UDP_STREAM
UDP_STREAM用來測試進行UDP批量傳輸時的網絡性能。注意:此時測試分組的大小不得大 于socket的發送與接收緩沖大小,否則netperf會報錯。
批量傳輸
[root@localhost netperf-netperf-2.5.0]# netperf -t UDP_STREAM -H 10.60.1.181 -l 10
MIGRATED UDP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.60.1.181 (10.60.1.181) port 0 AF_INET
Socket Message Elapsed Messages
Size Size Time Okay Errors Throughput
bytes bytes secs # # 10^6bits/sec
124928 65507 10.01 145 0 7.59
124928 10.01 145 7.59
超過socket的發送與接收緩沖大小124928
[root@localhost netperf-netperf-2.5.0]# netperf -t UDP_STREAM -H 10.60.1.181 -l 10 -- -m 200000
MIGRATED UDP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.60.1.181 (10.60.1.181) port 0 AF_INET
send_data: data send error: errno 90
netperf: send_omni: send_data failed: Message too long
3、TCP_RR
TCP_RR方式的測試對象是多次TCP request 和 response的交易過程,但是它發生在同一TCP連接中,這種模式常常出現在數據庫應用中。數據庫的client程序與server程序建立一個TCP連接以后,就在這個連接中傳送數據庫的多次交易過程。
TCP_RR
[root@localhost netperf-netperf-2.5.0]# netperf -t TCP_RR -H 10.60.1.181 -l 10
MIGRATED TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.60.1.181 (10.60.1.181) port 0 AF_INET : first burst 0
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.01 337.49
16384 87380
修改TCP_RR參數
我們可以通過修改相關的參數改變request 和response分組的大小,TCP_RR的參數如下表所示:
參數 說明
-r req,resp 設置request 和response分組的大小
-s size 設置本地系統的socket發送與接收緩沖大小
-S size 設置遠端系統的socket發送與接收緩沖大小
-D 對本地與遠端系統的socket設置TCP_NODELAY選項
[root@localhost netperf-netperf-2.5.0]# netperf -t TCP_RR -H 10.60.1.181 -l 10 -- -r 10 10
MIGRATED TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.60.1.181 (10.60.1.181) port 0 AF_INET : first burst 0
Local /Remote
Socket Size Request Resp. Elapsed Trans.
Send Recv Size Size Time Rate
bytes Bytes bytes bytes secs. per sec
16384 87380 10 10 10.01 356.78
16384 87380
4、TCP_CRR
TCP_CRR為每次交易建立一個新的TCP連接。TCP_CPP為每次交易建立一個新的TCP連接。最典型的的應用就是HTTP,每次HTTP交易實在一條單獨的TCP連接中進行的。因此,由于需要不停地建立新的TCP連接,并且在交易結束后拆除TCP連接,交易率一定會受到很大的影響。(修改參數,參照TCP_RR
[root@localhost netperf-netperf-2.5.0]# netperf -t TCP_CRR -H 10.60.1.181 -- -l 10
MIGRATED TCP Connect/Request/Response TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.60.1.181 (10.60.1.181) 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.01 75.53
16384 87380
5、UDP_RR
[root@localhost netperf-netperf-2.5.0]# netperf -t UDP_RR -H 10.60.1.181
MIGRATED UDP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.60.1.181 (10.60.1.181) port 0 AF_INET : first burst 0
Local /Remote
Socket Size Request Resp. Elapsed Trans.
Send Recv Size Size Time Rate
bytes Bytes bytes bytes secs. per sec
124928 124928 1 1 10.01 350.59
124928 124928
總結
- 上一篇: 你的电脑可能会出现这些问题电脑总是出现你
- 下一篇: Mysql5.7修改字符集