前文:
之前就有寫過netperf相關(guān)腳本,但一直對其不夠了解,這次需要為騰訊寫個網(wǎng)絡(luò)壓力腳本,趁此多了解了解。
經(jīng)過:
netperf是一款能夠測試網(wǎng)絡(luò)基準(zhǔn)性能的工具。能夠用來測試單向的吞吐量以及端對端的延遲。
netperf [global options] -- [test specific options]
global options:
-4 使用IPV4
-6 使用IPV6
-a 本機發(fā)送或者接收數(shù)據(jù)包的對齊大小,默認是8bytes
-A 遠程機發(fā)送或者接收數(shù)據(jù)包的對齊大小,默認是8bytes
-c [rate] 結(jié)果中輸出CPU利用率以及Service Demand的用時
-C [rate] 與-c效果一致,應(yīng)用于remote端
-d 輸出debug信息
-D 輸出臨時結(jié)果,但必須修改--enable-demo=yes,重新編譯才能生效
-f G|M|K|g|m|k 設(shè)置輸出中的Throughout的單位
-F fill_file 用于預(yù)填充發(fā)送buffer,避免send buffer被容易壓縮的數(shù)據(jù)填充,例如0,1
-h 幫助頁面
-H name|ip remote IP
-i max,min 為達到當(dāng)前可信水平所設(shè)置的最大最小迭代數(shù)(cpu利用率瞬間提高一個檔)
-I lvl,[intvl] 設(shè)置可信水平(默認99)和可信間隔(默認10)
-l testlen 測試時間,默認10s,這里需要注意的是,默認單位是s,但是也支持S,M,m, H,h。d|D按理說也應(yīng)該支持,但一來沒試,二來沒看源碼就不胡說了。
-L name|ip, 指明本地測試是跟那個位置在通信,默認是0.0.0.0
-o sizespec 設(shè)置-a設(shè)置的size的offset
-O sizespec 同-o
-p portnum 指定端口
-P 0|1 為1時顯示上面一行標(biāo)題,為0時不顯示
-s seconds 發(fā)送數(shù)據(jù)之前停止seconds秒
-t testname 定義測試類型,支持TCP_STREAM等
-v level 跟-P功能類似,區(qū)別在于,-P 0顯示的是下面的數(shù)據(jù),-v 0 只顯示最后的吞吐
大致理了下netperf的參數(shù),現(xiàn)在來看看網(wǎng)絡(luò)測試的需求。
網(wǎng)絡(luò)性能測試就是看五個指標(biāo):
- 可用性
- 響應(yīng)時間
- 網(wǎng)絡(luò)利用率
- 網(wǎng)絡(luò)吞吐量
- 網(wǎng)絡(luò)帶寬容量
可用性:
可用性這塊很簡單,首要任務(wù)就是測試網(wǎng)路通不通,這塊直接ping測試,需要注意的是,網(wǎng)絡(luò)設(shè)備跟根據(jù)包的大小設(shè)置多個不同大小的包緩沖區(qū),因此測試時,有必要使用ping -s size,設(shè)置不同size的情況下,網(wǎng)路是否聯(lián)通。
響應(yīng)時間:
一次網(wǎng)絡(luò)請求到響應(yīng),就是一個響應(yīng)時間。響應(yīng)時間太大,就會存在卡頓現(xiàn)象。
網(wǎng)絡(luò)利用率:
使用時間占總時間的比率。同一時刻只能有一個報文在使用。
網(wǎng)絡(luò)吞吐量:
網(wǎng)絡(luò)吞吐量是指在某個時刻,在網(wǎng)絡(luò)中的兩個節(jié)點之間,提供給網(wǎng)絡(luò)應(yīng)用的剩余帶寬。
網(wǎng)絡(luò)帶寬容量:
網(wǎng)絡(luò)兩個節(jié)點間的最大可用帶寬。
三種從網(wǎng)絡(luò)獲取數(shù)據(jù)的方式:
- 通過snmp協(xié)議直接到網(wǎng)絡(luò)設(shè)備中獲取,如net-snmp工具
- 偵聽相關(guān)的網(wǎng)絡(luò)性能數(shù)據(jù),典型的工具是tcpdump
- 自行產(chǎn)生相應(yīng)的測試數(shù)據(jù),如netperf
這次我們使用netperf
netperf基于TCP/UDP進行傳輸。有兩種測試模式:批量數(shù)據(jù)傳輸(bulk data transfer)模式和請求/應(yīng)答(request/reponse)模式。
netperf以client/server方式工作,server端是netserver,client端是netperf。client端與server端直接,首先建立一個控制連接,傳遞有關(guān)測試配置以及測試結(jié)果的信息。控制連接建立之后,再建立一個測試連接,用來進行網(wǎng)絡(luò)測試。
TCP網(wǎng)絡(luò)性能:
netperf可以模擬三種tcp流量模式:
1.單個tcp連接,批量傳輸大量數(shù)據(jù)
2.單個tcp連接,client請求,server應(yīng)答的方式
3.多個tcp連接,每個連接中一對請求/應(yīng)答的方式
UDP網(wǎng)絡(luò)性能:
netperf可以模擬兩種udp流量模式:
1.從client到server的單向批量傳輸
2.請求/應(yīng)答的交易方式
由于udp傳輸?shù)牟豢煽啃裕_保發(fā)送的緩沖區(qū)大小不大于接收的緩沖區(qū)大小。