【网络编程实践】1.3.2 CPU占用率对网络传输的影响

博客探讨了网络传输速率受系统资源利用率的影响,通过对比从内存和磁盘读取数据的速度,以及dd命令在不同场景下的性能,揭示了CPU占用率和进程争用如何影响测试结果。实验结果显示,直接从文件读取数据比从管道传输更高效,并强调了网络传输速率不仅仅取决于网络环境,还与进程自身资源占用有关。
摘要由CSDN通过智能技术生成

注意到1.3.2 中三次测量结果:

  • 1:从内存中读取数据,580MB/s
  • 2:从磁盘中读取数据,115.720MB/s (磁盘性测量结果)
  • 3:从内存中读取数据,1074.876MB/s

可以看到,1 与 3 的测试结果差异很大。原因是 1 在测试时使用 dd 命令也有一定的资源消耗,下面我们测试 dd

atom发送端:使用 dd + nc 测试
atom接收端:使用 nc + pv 测试
在这里插入图片描述
可以看到此次测试结果约为 455MB/s , 弱于1.3.2第 3 次测试的1074.876MB/s。

原因分析:该atom机器为双核,在本次测试中可视为启动了四个进程,他们之间会有一定的争用。而在1.3.2第 3 次测试中使用了 time + nc 两个进程,他们刚好充分的利用了CPU,因此测试结果较优。

如果此时我们使用 top 命令可以看到他们占用CPU的情况。在这里插入图片描述

扩展:命令学习

pv命令是Pipe Viewer 的简称。
由Andrew Wood 开发。意思是通过管道显示数据处理进度的信息。
这些信息包括已经耗费的时间,完成的百分比(通过进度条显示),当前的速度,全部传输的数据,以及估计剩余的时间。
参数:
-W	在传输第一个字节之前不显示任何内容

top 命令 Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况

1.3.4 Netcat测试结果分析

在 atom 上使用 dd 命令工具测试的结果实际上并不只是 tcp 上的开销,在发送端,包含有从内核 /dev/zero 拷贝到用户态 dd , 由 dd 拷贝到内核管道中,通过管道拷贝到 nc 中, 通过 nc 将数据发送给 tcp ;在接收端, 从tcp 接收数据到 nc 中, 在由 nc 拷贝到 dev/null
在这里插入图片描述
因此,我们看到 580MB/s 并不是真的测出的 tcp 的传输速率。

而在 atom 上,直接从文件读的方式,测得的结果相比上一次少了 dev/zero -> dd -> pipe 这一步,它不从pipe读而直接从file读。在这里插入图片描述

由此,我们发现影响网络传输速率的不只由网络环境决定,也与程自身所占资源利用率有关(比如CPU占用率等)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我叫RT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值