这篇文章主要讲解了“docker容器中的网络延迟相对于宿主机有多高”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“docker容器中的网络延迟相对于宿主机有多高”吧!
本次验证工具我使用了Netperf,Netperf是一种网络性能的测量工具,可以测试基于TCP或UDP吞吐、响应速率。Netperf包括Clien和Server端。Server端主要用来实现监听工作,Client端进行测试。根据流量传输方式可分为以下三种:
单方向最大吞吐传输大量数据。
双方向交互传输数据,对于tcp为单连接。
针对tcp,每个连接交互传输数据。
总共两台机器,一台机器启动了NetPerf服务端;另外一台机器分别在容器内和宿主机上运行Netperf客户端。
1.下载wget http://repo.iotti.biz/CentOS/7/x86_64/netperf-2.7.0-1.el7.lux.x86_64.rpm
2.安装 rpm -ivh netperf-2.7.0-1.el7.lux.x86_64.rpm
3.启动 netserver
首先直接在宿主机上安装Netperf,然后进行网络性能测试,如下所示:
TCP_RR 是 netperf 里专门用来测试网络延时的,缺省每次运行10秒钟。运行以后,我们还要计算平均每秒钟 TCP request/response 的次数,这个次数越高,就说明延时越小。如上所示,总共测试三轮,分别得出20146、20248、20221,平均是20221/s
在同一台客户端机器上,启动docker服务,并安装Netperf进行验证,命令如下所示[root@test ~]# docker run -d --name test -v /home/net/:/home/net/ docker.harbor.com/centos:7.8 sleep 36000
我这里相当于是把Netperf挂载到容器内部,然后执行:
docker exec -it test bash
进入容器内部安装Netperf。
同样运行了三轮,分别得出的是19546、19541、19259,平均是19448/s。
从数据上看容器中比宿主机少了773次。773/20221= 4%也就是容器中网络处理速度下降了4%,后来在网上找到了一些paper,有人得出结论是10%上下
。
[root@test ~]# docker run -d --name test --network host -v /home/net/:/home/net/ docker.harbor.com/centos:7.8 sleep 36000
可以发现当使用共享宿主机网络模式下,其网络延迟跟宿主机基本没有差异。
网络延迟的原因也不难想象,因为每次网络数据传输都要经过veth接口,然后向外发送。这个虚拟的网络设备除了没有硬中断,只有软中断处理过程,其它跟网卡发送数据逻辑基本相似,虽然发送速度很快。但即便如此也带来了一定的网络开销,从而造成了网络延迟。
感谢各位的阅读,以上就是“docker容器中的网络延迟相对于宿主机有多高”的内容了,经过本文的学习后,相信大家对docker容器中的网络延迟相对于宿主机有多高这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。