Linux – nttcp

nttcp – new test TCP program
透過 nttcp 可以針對網路的 TCP, UDP 以及 UDP multicast connection 來進行效能檢視.

測試環境 Ubuntu 16.04 x86_64 (虛擬機)

  • 接收端 IP : 192.168.95.151
  • 傳送端 IP : 192.168.95.159

在 接收端 與 傳送端 進行 nttcp 安裝.

root@ubuntu:~# apt install nttcp

接收端 IP : 192.168.95.151

root@ubuntu:~# nttcp -i

使用參數 :

  • -i : nttcp 可以透過 inetd 的方式來啟動,或是直接使用參數 -i 來啟動.

傳送端 IP : 192.168.95.159

使用參數 :

  • -t : 當傳送端.
  • -T : 顯示傳輸結果的標題.
    預設會傳送 4KByte x 2048 buffers (總共 8 MByte) 資料到遠端.

    root@ubuntu:~# nttcp -t -T 192.168.95.151 
         Bytes  Real s   CPU s Real-MBit/s  CPU-MBit/s   Calls  Real-C/s   CPU-C/s
    l  8388608    0.20    0.18    331.9723    380.9908    2048  10130.99   11626.9
    1  8388608    0.20    0.04    332.6206   1825.2969    2412  11954.92   65604.1
    

    主要測試結果可以看 Real-MBit/s 331.9723 (l-Local 自己) , 332.6206 (1-Remote 遠端)
    Real-MBit/s 是從 Bytes / Real s 換算而來的(需注意 bytes , bites 轉換).

    8388608(Bytes) / 0.2(s) x 8(Bytes -> Bit) / 1024 (Bit->KBit) / 1024(KBit->MBits) 大約為 331.9723(MBit/s)  
    

    其他數值所代表的意思

    • l,1 : l-Local 自己, 1-Remote 遠端.
    • Bytes : 總傳送資料數.
    • Real s : 傳送所花時間(單位秒),浮點數(格式 %8.2),
    • CPU s : 傳送所使用的 CPU 時間(單位秒),浮點數(格式 %8.2),
    • Real-MBit/s : 每秒可以傳送的資料量,浮點數(格式 %12.4)
    • CPU-MBit/s : 每秒 CPU 可以處理的資料量,浮點數(格式 %12.4),
    • Calls : Prints the number of calls,整數 (%8).
    • Real-C/s : Prints the real call rate in calls/s,浮點數(格式 %10.2).
    • CPU-C/s : Prints the cpu call rate in calls/s,浮點數(格式 %10.2).
  • -n : number of buffers (預設為 2048).
  • -l : length of buffer (預設為 4096).
    Buffers 的數量跟長度是可以自行設定.

    root@ubuntu:~# nttcp -t -T -n 4096 -l 10240 192.168.95.151
         Bytes  Real s   CPU s Real-MBit/s  CPU-MBit/s   Calls  Real-C/s   CPU-C/s
    l 41943040    0.58    0.53    580.8410    633.2722    4096   7090.34    7730.4
    1 41943040    0.60    0.11    560.9252   3087.6228    4974   8314.97   45769.9
    
  • -r : 當接收端.
    要當接收 (-r) 或是傳送 (-t) 皆可以設定.

    root@ubuntu:~# nttcp -r -T 192.168.95.151 
         Bytes  Real s   CPU s Real-MBit/s  CPU-MBit/s   Calls  Real-C/s   CPU-C/s
    l  8388608    0.08    0.03    804.5083   2592.0766    2083  24971.23   80455.8
    1  8388608    0.08    0.07    798.4683    969.8794    2048  24367.32   29598.4
    
  • -v : verbose 顯示更多訊息.
    root@ubuntu:~# nttcp -t -T -v 192.168.95.151 
    nttcp-l: nttcp, version 1.47
    nttcp-l: Pid=1497
    nttcp-l: from 192.168.95.151: "192.168.95.151" (=nttcp-1: Pid=1500, InetPeer= 1)
    nttcp-l: from 192.168.95.151: "192.168.95.151" (=nttcp-1: Optionline="nttcp@-r@)
    nttcp-l: from 192.168.95.151: "192.168.95.151" (=dataport: 5038)
    nttcp-l: send window size = 87040
    nttcp-l: receive window size = 372480
    nttcp-l: buflen=4096, bufcnt=2048, dataport=5038/tcp
    nttcp-l: try to get outstanding messages from 1 remote clients
    nttcp-1: accept from 192.168.95.159
    nttcp-1: send window size = 87040
    nttcp-1: receive window size = 374400
    nttcp-1: buflen=4096, bufcnt=2048, dataport=5038/tcp
    
    nttcp-l: transmitted 8388608 bytes
         Bytes  Real s   CPU s Real-MBit/s  CPU-MBit/s   Calls  Real-C/s   CPU-C/s
    l  8388608    0.25    0.24    264.6071    276.0262    2048   8075.17    8423.7
    nttcp-l: try to get outstanding messages from 1 remote clients
    nttcp-1: received 8388608 bytes
    1  8388608    0.26    0.04    261.6310   1708.7787    2298   8958.99   58513.5
    nttcp-1: exiting
    
  • -u : 使用 UDP
    root@ubuntu:~# nttcp -t -T -u -v 192.168.95.151 
    nttcp-l: nttcp, version 1.47
    nttcp-l: Pid=1496
    nttcp-l: from 192.168.95.151: "192.168.95.151" (=nttcp-1: Pid=1499, InetPeer= 1)
    nttcp-l: from 192.168.95.151: "192.168.95.151" (=nttcp-1: Optionline="nttcp@-r@)
    nttcp-l: from 192.168.95.151: "192.168.95.151" (=dataport: 5038)
    nttcp-l: send window size = 212992
    nttcp-l: receive window size = 212992
    nttcp-l: buflen=4096, bufcnt=2048, dataport=5038/udp
    nttcp-l: try to get outstanding messages from 1 remote clients
    nttcp-1: buflen=4096, bufcnt=2048, dataport=5038/udp
    
    nttcp-l: transmitted 8388608 bytes
         Bytes  Real s   CPU s Real-MBit/s  CPU-MBit/s   Calls  Real-C/s   CPU-C/s
    l  8388608    0.29    0.29    227.7084    229.1382    2051   6959.29    7003.0
    nttcp-l: try to get outstanding messages from 1 remote clients
    nttcp-1: got EOF
    nttcp-1: received 8388608 bytes
    1  8388608    0.29    0.04    227.7061   1884.4452    2049   6952.43   57536.8
    nttcp-1: exiting
    
  • -f : 自訂測試輸出格式.
    使用參數 -f format string 可以自訂輸出格式 (預設測試輸出格式為 %9b%8.2rt%8.2ct%12.4rbr%12.4cbr%8c%10.2rcr%10.2ccr)
    輸出可用參數如下.

    • b – 顯示傳送或接收的 bytes 總數 (整數).
    • l – 顯示 buffer length in bytes (整數).
    • n – 顯示 buffer count (整數).
    • c – 顯示 number of calls (整數).
    • rt – 顯示 real time in s (浮點數).
    • rbr – 顯示 real bit rate in MBit/s (浮點數).
    • rcr – 顯示 real call rate in calls/s (浮點數).
    • ct – 顯示 cpu time in s (浮點數).
    • cbr – 顯示 cpu bit rate in MBit/s (浮點數).
    • ccr – 顯示 cpu call rate in calls/s (浮點數).
    root@ubuntu:~# nttcp -t -T -f %9b%8.2rt%12.4rbr 192.168.95.151
         Bytes  Real s Real-MBit/s
    l  8388608    0.11    628.6427
    1  8388608    0.11    610.4524
    

更多參數使用請參考 man page 或是 https://linux.die.net/man/1/nttcp

可惜沒看到設定時間的參數,只能透過參數 -n : number of buffers (預設為 2048) 與 -l : length of buffer (預設為 4096) 來把 nttcp 當作長時間壓力測試的工具.

沒有解決問題,試試搜尋本站其他內容

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料