您好,登錄后才能下訂單哦!
這篇文章主要講解了“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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。