linux-networking – 测量覆盖网络性能的正确方法

发布时间:2020-05-27 发布网站:脚本之家
价值2580元廖雪峰前端视频终终终于免费啦!
脚本之家收集整理的这篇文章主要介绍了linux-networking – 测量覆盖网络性能的正确方法脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前正在研究不同Docker覆盖网络的性能(尤其是UDP吞吐量).我这样做是通过在与Docker覆盖网络连接的两个主机之间创建点对点连接,然后在Docker容器内运行iperf来检查吞吐量.我注意到,每当我运行iperf作为客户端将数据发送到运行iperf作为服务器的其他容器时,客户端主机的CPU使用率就达到100%.我通过运行我在 here上找到的以下命令获得了该结果:
top -bn1 | grep "Cpu(s)" | \
       sed "s/.*,*\([0-9.]*\)%* id.*/\1/" | \
       awk '{print 100 - $1"%"}'

所以,对我而言,我的吞吐量测试的限制因素似乎是我的主机的CPU容量,因为它以100%运行并且无法产生更多流量来使网络连接饱和.我想知道这是否是一个特定的iperf问题所以我想用不同的工具运行相同的测试,但我不确定哪种替代方案最好.主机正在运行Ubuntu.例如,我找到了qperf,uperf和netpipe.

此外,更一般地说,我开始想知道通常是吞吐量性能的瓶颈.是不是总是CPU容量或链路带宽?哪些因素与覆盖网络没有直接关系.

这是否意味着应用程序(或覆盖网络)的吞吐量仅取决于传输一定数量的数据所需的CPU周期数以及它如何压缩以适应网络(如果这将成为瓶颈).

解决方法

UDP是CPU和带宽限制.它发送数据包而不保证它们被发送,发送或接收.

>如果发送方CPU太忙,则永远不会发送数据包.
>如果带宽无法跟上,则数据包在传输过程中被丢弃.
>如果接收器CPU太忙或未准备好处理传入的网络数据,它就会丢失.
>如果应用程序没有足够快地从OS提取数据包(并处理它们),它们就会丢失.

一般来说,UDP性能毫无意义.没有什么可以阻止你尝试每秒发送1亿个数据包.这使发送者CPU和网络饱和,而接收者可能没有得到任何东西.

如果你真的想测试UDP,这是一个相当长的话题,值得一本书.对于启动器,您需要监控错误率以及实际发送/接收的数据.

您应该使用TCP进行测试以测量主机之间的可用带宽. iperf应该能够做到这一点.

总结

以上是脚本之家为你收集整理的linux-networking – 测量覆盖网络性能的正确方法全部内容,希望文章能够帮你解决linux-networking – 测量覆盖网络性能的正确方法所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入脚本之家官方QQ群:1065694478