2014-10-01 58 views
3

我很困惑看到netcat和iperf結果之間的巨大差異。我有10 G鏈接連接我的服務器和客戶端。我爲iperf獲得10Gb/s左右的費用,但netcat僅達到約280 MB/s。什麼可能是錯誤?10G鏈接的netcat和iperf結果的巨大差異

對於的Iperf

服務器

iperf -s 

客戶

iperf -c 172.79.56.27 -i1 -t 10 

結果:

Client connecting to 172.79.56.27, TCP port 5001 

TCP window size: 85.0 KByte (default) 
------------------------------------------------------------ 
[ 3] local 172.79.56.28 port 46058 connected with 172.79.56.27 port 5001 
[ ID] Interval  Transfer  Bandwidth 
[ 3] 0.0- 1.0 sec 1.07 GBytes 9.23 Gbits/sec 
[ 3] 1.0- 2.0 sec 1.09 GBytes 9.35 Gbits/sec 
[ 3] 2.0- 3.0 sec 1.09 GBytes 9.35 Gbits/sec 
[ 3] 3.0- 4.0 sec 1.09 GBytes 9.35 Gbits/sec 
[ 3] 4.0- 5.0 sec 1.09 GBytes 9.36 Gbits/sec 
[ 3] 5.0- 6.0 sec 1.09 GBytes 9.35 Gbits/sec 
[ 3] 6.0- 7.0 sec 1.09 GBytes 9.36 Gbits/sec 
[ 3] 7.0- 8.0 sec 1.09 GBytes 9.35 Gbits/sec 
[ 3] 8.0- 9.0 sec 1.09 GBytes 9.36 Gbits/sec 
[ 3] 9.0-10.0 sec 1.09 GBytes 9.35 Gbits/sec 
[ 3] 0.0-10.0 sec 10.9 GBytes 9.34 Gbits/sec 

對於netcat的,

服務器

nc -v -v -l -n 2222 >/dev/null 

客戶

time dd if=/dev/zero | nc -v -v -n 172.79.56.27 2222 


Connection to 172.79.56.27 2222 port [tcp/*] succeeded! 
^C6454690+0 records in 
6454690+0 records out 
3304801280 bytes (3.3 GB) copied, 11.4463 s, 289 MB/s 


real 0m11.449s 
user 0m6.868s 
sys 0m15.372s 

回答

4

先生user1352179,

再次運行netcat的測試,並在另一個窗口看HTOP。我敢打賭你會看到這裏的瓶頸是dd讀/ dev/zero的單線程。嘗試再次與'n'個dd | netcat實例並行運行測試,其中'n'=系統中的核心數量。然後從所有並行運行中一起添加總帶寬以查看實際結果。 (確保你在不同的端口傳輸&讓你的接收端運行多個線程,以及&監聽多個端口)。