<1>TCP带宽测试试验

来源:互联网 发布:网页小游戏源码 编辑:程序博客网 时间:2024/06/13 05:20

测试1(dl1->node1(dl1发数据到node1):

[david@dl1 ~]$ dd if=/dev/zero bs=1MB count=1000 | nc node1 5001#从/dev/zero中读1MB的数据向node1发送1000+0 records in1000+0 records out1000000000 bytes (1.0 GB) copied, 8.53014 s, 117 MB/s[david@node1 ~]$ nc -l 5001 > /dev/null

结论:带宽为117MB/s, 千兆网带宽差不多就是这个带宽。

测试2(本机测试)

[david@dl1 ~]$ dd if=/dev/zero bs=1MB count=10000 | nc localhost 500110000+0 records in10000+0 records out10000000000 bytes (10 GB) copied, 8.46051 s, 1.2 GB/s[david@dl1 ~]$ nc -l 5001 > /dev/null

结论:本机上为1.2GB/s,实际上带宽会超过此,后面会解释。

测试3(从磁盘上读,测试2是从/dev/zero上读)
通过nc发送到本机(caffe_ 为5.7G)

[root@dl1 ~]# time nc localhost 5001 < caffe-openmpi-1.tar real    0m29.186suser    0m2.771ssys 0m8.132s[root@dl1 ~]# nc -l 5001 > /dev/null

用了30s,可以算出带宽,这个不是网络性能,是磁盘性能190MB/s,因为可以再试下,如下测试4.

测试4(再运行下测试3):

[root@dl1 ~]# time nc localhost 5001 < caffempi-openmpi-1.tar real    0m5.138suser    0m1.413ssys 0m3.730s

这是由于数据已经缓存在内存当中了,所以快多了。

总结:
1. dd 1.2GB/S
2. 磁盘读 190MB/S
3. 数据已经缓存到内存里了,带宽1.14GB/S

总结一句就是,测试方法很重要,都是从内存中读,dd本身也占了资源。

测试5(使用pv查看带宽):

接收端:[david@dl1 ~]$ nc -l 5001 | pv -W > /dev/null9.31GiB 0:00:08 [1.07GiB/s] [                   <=> 

可以观察到带宽基本上为1.07GiB/s,

(原本解释:
启了4个进程,两个核的话,4个进程去争用2个核心的化,可以把top打开看,占用CPU的情况。)
当然我这个机器性能比较强悍,就不会出现括号里的现象了。

测试6(把数据发送到一台更慢的机器上):

waiting...

也是更够达到118MB/S,说明TCP协议栈的开销不大,即便是比较慢的机器,也能占完千兆带宽。

所以第二个测试的580M不只有TCP,如果只有TCP的话,应该是580M*3;
因为还有很多进程,数据需要从内核->用户态,用户态->内核,转移,
可以看出,有6次进出(客户端+服务端)。
这里写图片描述

1 0
原创粉丝点击