加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-13 17:15:28 所属栏目:Linux 来源:网络整理
导读:我目前正在研究不同Docker覆盖网络的性能(尤其是UDP吞吐量).我这样做是通过在与Docker覆盖网络连接的两个主机之间创建点对点连接,然后在Docker容器内运行iperf来检查吞吐量.我注意到,每当我运行iperf作为客户端将数据发送到运行iperf作为服务器的其他容器时,
我目前正在研究不同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应该能够做到这一点.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读