Todd

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            65 隨筆 :: 0 文章 :: 24 評(píng)論 :: 0 Trackbacks
          1.下載:http://www.netperf.org/netperf/DownloadNetperf.html
          2.安裝,netperf-2.5.0.tar.gz;解壓后執(zhí)行一下命令:
          cd netperf-2.5.0
          ./configure
          make && make install
          默認(rèn)安裝目錄:/usr/local/bin
          有兩個(gè)文件 netperf netserver
          后者服務(wù)端(在要測(cè)試的機(jī)器上也要安裝,并執(zhí)行netserver啟動(dòng)之,否則客戶端報(bào)錯(cuò))  前者客戶端
          3.測(cè)試--直接轉(zhuǎn)別人的

          TCP網(wǎng)絡(luò)性能

          由于TCP協(xié)議能夠提供端到端的可靠傳輸,因此被大量的網(wǎng)絡(luò)應(yīng)用程序使用。但是,可靠性的建立是要付出代價(jià)的。TCP協(xié)議保證可靠性的措施,如建立并維護(hù)連接、控制數(shù)據(jù)有序的傳遞等都會(huì)消耗一定的網(wǎng)絡(luò)帶寬。

          Netperf可以模擬三種不同的TCP流量模式:

          1) 單個(gè)TCP連接,批量(bulk)傳輸大量數(shù)據(jù)

          2) 單個(gè)TCP連接,client請(qǐng)求/server應(yīng)答的交易(transaction)方式

          3) 多個(gè)TCP連接,每個(gè)連接中一對(duì)請(qǐng)求/應(yīng)答的交易方式

          UDP網(wǎng)絡(luò)性能

          UDP沒(méi)有建立連接的負(fù)擔(dān),但是UDP不能保證傳輸?shù)目煽啃裕允褂肬DP的應(yīng)用程序需要自行跟蹤每個(gè)發(fā)出的分組,并重發(fā)丟失的分組。

          Netperf可以模擬兩種UDP的流量模式:

          1) 從client到server的單向批量傳輸

          2) 請(qǐng)求/應(yīng)答的交易方式

          由于UDP傳輸?shù)牟豢煽啃裕谑褂胣etperf時(shí)要確保發(fā)送的緩沖區(qū)大小不大于接收緩沖區(qū)大小,否則數(shù)據(jù)會(huì)丟失,netperf將給出錯(cuò)誤的結(jié)果。因此,對(duì)于接收到分組的統(tǒng)計(jì)不一定準(zhǔn)確,需要結(jié)合發(fā)送分組的統(tǒng)計(jì)綜合得出結(jié)論。

          Netperf的命令行參數(shù)

          在unix系統(tǒng)中,可以直接運(yùn)行可執(zhí)行程序來(lái)啟動(dòng)netserver,也可以讓inetd或xinetd來(lái)自動(dòng)啟動(dòng)netserver。

          當(dāng)netserver在server端啟動(dòng)以后,就可以在client端運(yùn)行netperf來(lái)測(cè)試網(wǎng)絡(luò)的性能。netperf通過(guò)命令行參數(shù)來(lái)控制測(cè)試的類型和具體的測(cè)試選項(xiàng)。根據(jù)作用范圍的不同,netperf的命令行參數(shù)可以分為兩大類:全局命令行參數(shù)、測(cè)試相關(guān)的局部參數(shù),兩者之間使用--分隔:

          netperf [global options]-- [test-specific options] 

          這里我們只解釋那些常用的命令行參數(shù),其它的參數(shù)讀者可以查詢netperf的man手冊(cè)。

          -H host :指定遠(yuǎn)端運(yùn)行netserver的server IP地址。

          -l testlen:指定測(cè)試的時(shí)間長(zhǎng)度(秒)

          -t testname:指定進(jìn)行的測(cè)試類型,包括TCP_STREAM,UDP_STREAM,TCP_RR,TCP_CRR,UDP_RR,在下文中分別對(duì)它們說(shuō)明。

          在后面的測(cè)試中,netserver運(yùn)行在192.168.0.28,server與client通過(guò)局域網(wǎng)連接(100M Hub)。

          Netperf測(cè)試網(wǎng)絡(luò)性能

          測(cè)試批量(bulk)網(wǎng)絡(luò)流量的性能

          批量數(shù)據(jù)傳輸?shù)湫偷睦佑衒tp和其它類似的網(wǎng)絡(luò)應(yīng)用(即一次傳輸整個(gè)文件)。根據(jù)使用傳輸協(xié)議的不同,批量數(shù)據(jù)傳輸又分為T(mén)CP批量傳輸和UDP批量傳輸。

          1. TCP_STREAM

          Netperf缺省情況下進(jìn)行TCP批量傳輸,即-t TCP_STREAM。測(cè)試過(guò)程中,netperf向netserver發(fā)送批量的TCP數(shù)據(jù)分組,以確定數(shù)據(jù)傳輸過(guò)程中的吞吐量:

           ./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的結(jié)果輸出中,我們可以知道以下的一些信息:

          1) 遠(yuǎn)端系統(tǒng)(即server)使用大小為87380字節(jié)的socket接收緩沖

          2) 本地系統(tǒng)(即client)使用大小為16384字節(jié)的socket發(fā)送緩沖

          3) 向遠(yuǎn)端系統(tǒng)發(fā)送的測(cè)試分組大小為16384字節(jié)

          4) 測(cè)試經(jīng)歷的時(shí)間為60秒

          5) 吞吐量的測(cè)試結(jié)果為88Mbits/秒

          在缺省情況下,netperf向發(fā)送的測(cè)試分組大小設(shè)置為本地系統(tǒng)所使用的socket發(fā)送緩沖大小。

          TCP_STREAM方式下與測(cè)試相關(guān)的局部參數(shù)如下表所示:

          參數(shù)說(shuō)明
          -s size設(shè)置本地系統(tǒng)的socket發(fā)送與接收緩沖大小
          -S size設(shè)置遠(yuǎn)端系統(tǒng)的socket發(fā)送與接收緩沖大小
          -m size設(shè)置本地系統(tǒng)發(fā)送測(cè)試分組的大小
          -M size設(shè)置遠(yuǎn)端系統(tǒng)接收測(cè)試分組的大小
          -D對(duì)本地與遠(yuǎn)端系統(tǒng)的socket設(shè)置TCP_NODELAY選項(xiàng)

          通過(guò)修改以上的參數(shù),并觀察結(jié)果的變化,我們可以確定是什么因素影響了連接的吞吐量。例如,如果懷疑路由器由于缺乏足夠的緩沖區(qū)空間,使得轉(zhuǎn)發(fā)大的分組時(shí)存在問(wèn)題,就可以增加測(cè)試分組(-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  

          在這里,測(cè)試分組的大小減少到2048字節(jié),而吞吐量卻沒(méi)有很大的變化(與前面例子中測(cè)試分組大小為16K字節(jié)相比)。相反,如果吞吐量有了較大的提升,則說(shuō)明在網(wǎng)絡(luò)中間的路由器確實(shí)存在緩沖區(qū)的問(wèn)題。

          2. UDP_STREAM

          UDP_STREAM用來(lái)測(cè)試進(jìn)行UDP批量傳輸時(shí)的網(wǎng)絡(luò)性能。需要特別注意的是,此時(shí)測(cè)試分組的大小不得大于socket的發(fā)送與接收緩沖大小,否則netperf會(huì)報(bào)出錯(cuò)提示:

          ./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 

          為了避免這樣的情況,可以通過(guò)命令行參數(shù)限定測(cè)試分組的大小,或者增加socket的發(fā)送/接收緩沖大小。UDP_STREAM方式使用與TCP_STREAM方式相同的局部命令行參數(shù),因此,這里可以使用-m來(lái)修改測(cè)試中使用分組的大小:

           ./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方式的結(jié)果中有兩行測(cè)試數(shù)據(jù),第一行顯示的是本地系統(tǒng)的發(fā)送統(tǒng)計(jì),這里的吞吐量表示netperf向本地socket發(fā)送分組的能力。但是,我們知道,UDP是不可靠的傳輸協(xié)議,發(fā)送出去的分組數(shù)量不一定等于接收到的分組數(shù)量。

          第二行顯示的就是遠(yuǎn)端系統(tǒng)接收的情況,由于client與server直接連接在一起,而且網(wǎng)絡(luò)中沒(méi)有其它的流量,所以本地系統(tǒng)發(fā)送過(guò)去的分組幾乎都被遠(yuǎn)端系統(tǒng)正確的接收了,遠(yuǎn)端系統(tǒng)的吞吐量也幾乎等于本地系統(tǒng)的發(fā)送吞吐量。但是,在實(shí)際環(huán)境中,一般遠(yuǎn)端系統(tǒng)的socket緩沖大小不同于本地系統(tǒng)的socket緩沖區(qū)大小,而且由于UDP協(xié)議的不可靠性,遠(yuǎn)端系統(tǒng)的接收吞吐量要遠(yuǎn)遠(yuǎn)小于發(fā)送出去的吞吐量。

          測(cè)試請(qǐng)求/應(yīng)答(request/response)網(wǎng)絡(luò)流量的性能

          另一類常見(jiàn)的網(wǎng)絡(luò)流量類型是應(yīng)用在client/server結(jié)構(gòu)中的request/response模式。在每次交易(transaction)中,client向server發(fā)出小的查詢分組,server接收到請(qǐng)求,經(jīng)處理后返回大的結(jié)果數(shù)據(jù)。如下圖所示:


           

          1. TCP_RR

          TCP_RR方式的測(cè)試對(duì)象是多次TCP request和response的交易過(guò)程,但是它們發(fā)生在同一個(gè)TCP連接中,這種模式常常出現(xiàn)在數(shù)據(jù)庫(kù)應(yīng)用中。數(shù)據(jù)庫(kù)的client程序與server程序建立一個(gè)TCP連接以后,就在這個(gè)連接中傳送數(shù)據(jù)庫(kù)的多次交易過(guò)程。

          ./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輸出的結(jié)果也是由兩行組成。第一行顯示本地系統(tǒng)的情況,第二行顯示的是遠(yuǎn)端系統(tǒng)的信息。平均的交易率(transaction rate)為9502.73次/秒。注意到這里每次交易中的request和response分組的大小都為1個(gè)字節(jié),不具有很大的實(shí)際意義。用戶可以通過(guò)測(cè)試相關(guān)的參數(shù)來(lái)改變r(jià)equest和response分組的大小,TCP_RR方式下的參數(shù)如下表所示:

          參數(shù)說(shuō)明
          -r req,resp設(shè)置request和reponse分組的大小
          -s size設(shè)置本地系統(tǒng)的socket發(fā)送與接收緩沖大小
          -S size設(shè)置遠(yuǎn)端系統(tǒng)的socket發(fā)送與接收緩沖大小
          -D對(duì)本地與遠(yuǎn)端系統(tǒng)的socket設(shè)置TCP_NODELAY選項(xiàng)

          通過(guò)使用-r參數(shù),我們可以進(jìn)行更有實(shí)際意義的測(cè)試:

          ./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 

          從結(jié)果中可以看出,由于request/reponse分組的大小增加了,導(dǎo)致了交易率明顯的下降。 注:相對(duì)于實(shí)際的系統(tǒng),這里交易率的計(jì)算沒(méi)有充分考慮到交易過(guò)程中的應(yīng)用程序處理時(shí)延,因此結(jié)果往往會(huì)高于實(shí)際情況。

          2. TCP_CRR

          與TCP_RR不同,TCP_CRR為每次交易建立一個(gè)新的TCP連接。最典型的應(yīng)用就是HTTP,每次HTTP交易是在一條單獨(dú)的TCP連接中進(jìn)行的。因此,由于需要不停地建立新的TCP連接,并且在交易結(jié)束后拆除TCP連接,交易率一定會(huì)受到很大的影響。

          ./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 

          即使是使用一個(gè)字節(jié)的request/response分組,交易率也明顯的降低了,只有2662.20次/秒。TCP_CRR使用與TCP_RR相同的局部參數(shù)。

          3. UDP_RR

          UDP_RR方式使用UDP分組進(jìn)行request/response的交易過(guò)程。由于沒(méi)有TCP連接所帶來(lái)的負(fù)擔(dān),所以我們推測(cè)交易率一定會(huì)有相應(yīng)的提升。

          ./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 

          結(jié)果證實(shí)了我們的推測(cè),交易率為10141.16次/秒,高過(guò)TCP_RR的數(shù)值。不過(guò),如果出現(xiàn)了相反的結(jié)果,即交易率反而降低了,也不需要擔(dān)心,因?yàn)檫@說(shuō)明了在網(wǎng)絡(luò)中,路由器或其它的網(wǎng)絡(luò)設(shè)備對(duì)UDP采用了與TCP不同的緩沖區(qū)空間和處理技術(shù)。

          http://www.ibm.com/developerworks/cn/linux/l-netperf/
          posted on 2012-03-29 22:45 Todd 閱讀(777) 評(píng)論(0)  編輯  收藏 所屬分類: freebsd
          主站蜘蛛池模板: 平湖市| 仁怀市| 呈贡县| 许昌市| 财经| 鹤山市| 沙河市| 纳雍县| 穆棱市| 清丰县| 文山县| 滦南县| 彩票| 岚皋县| 台中县| 富蕴县| 治多县| 天柱县| 亳州市| 繁昌县| 旬邑县| 桂林市| 池州市| 靖边县| 松滋市| 阿合奇县| 安岳县| 介休市| 大邑县| 威远县| 黑龙江省| 当雄县| 航空| 焦作市| 江永县| 湟中县| 台湾省| 亳州市| 宁国市| 横峰县| 福鼎市|