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太忙,则永远不会发送数据包. 一般来说,UDP性能毫无意义.没有什么可以阻止你尝试每秒发送1亿个数据包.这使发送者CPU和网络饱和,而接收者可能没有得到任何东西. 如果你真的想测试UDP,这是一个相当长的话题,值得一本书.对于启动器,您需要监控错误率以及实际发送/接收的数据. 您应该使用TCP进行测试以测量主机之间的可用带宽. iperf应该能够做到这一点. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |