2021-05-12 14:32:11
微軟愛Linux:Linux網路特性和效能
Linux網路目標
在生產力虛擬環境中,要達到高效能的網路是極為重要的目標。 針對這個目標,微軟使用在非虛擬環境下相同等級的技術來在 Linux 虛擬環境中達成這個目標。 舉例來說,讓虛擬機器不透過 hypervisor 即可直接使用硬體網絡卡,例如如果有一張實體的 10G 網絡卡,我們必須要確保虛擬機器能夠盡可能達到 10G 的網路傳輸效能。 在 Azure 公有雲上,我們早已投入大量的技術與開發能量在優化 Linux 於虛擬環境的效能,以及虛擬機器使用多個虛擬 CPU 的效能優化。 並且也針對多個程式或者執行續使用相當多的網路聯機做了優化設計。 而每個網路包的延遲也是相當重要的部分,所以除了吞吐量要大之外,也必須顧及延遲的問題。 也在 Linux 上實作這些功能並且作了實際的評估與測量。 在稍後的章節會更仔細深入地提及這些測量的設定與結果。
Linux網路效能特性
在 Linux 系統整合服務驅動程式(LIS)中,已經包含數個提升網路效能及吞吐量的功能。 這些功能包括 Virtual Receive Side Scaling (vRSS) 以及數種 TCP/IP 的處理優化。 vRSS 功能通過多個 vCPU 來處理流入的網路包以增強網路效能。 在沒有 vRSS 的情況下,流入的包會導致第一顆 vCPU 經常中斷處理網路包。 而在繁重的網路使用時,第一顆 vCPU 的使用率常常飆高至 100% 的使用率,而造成使用率的瓶頸,但其他的 vCPU 卻僅有少量的負載。 因此 vRSS 可以更有效利用多核來平均中斷不同的核心,減少第一顆 vCPU 因網路造成的大量使用率。 經由測試,在八顆 vCPU 的情況下,網路的吞吐量可以有顯著的提升。 如果您執行的虛擬機器有多至八顆 vCPU 以上,則 vRSS 僅會使用其中的八顆 vCPU 來處理網路包。 相反的若您使用小型虛擬機器,僅搭載一顆 vCPU 時,則 vRSS 將不會帶來任何好處。 與 vRSS 類似,當在傳送包時,也會將這些包交由多顆 vCPU 來處理,來避免單顆 vCPU 高使用率所帶來的瓶頸。
現今 TCP 體積變得越來越大,甚至已經超越當初 Ethernet 的標準 MTU 規範。 Linux 用戶端內的虛擬網絡卡驅動程式會採用較大的包來轉入 Hyper-V 主端後傳送。 Hyper-V 主端使用實體網絡卡轉送這種大型的資料到實體的網路上。 如果物理網絡卡不支援這麼大的包,則 Hyper-V 會透過軟體分割切段。 不過從 Linux 用戶端傳遞至 Hyper-V 主端採用較大包的傳輸效率明顯高於使用較小的包。
而在檢查碼 (Checksum) 的作法也是類似的,在 Linux 用戶端到 Hyper-V 的包傳輸上,其包是沒有檢查碼片段的,而 Hyper-V 再轉送包去外部網路時,將會使用物理網絡卡來做檢查碼的計算與附加。 如果物理網絡卡不支援檢查碼計算功能,則 Hyper-V 將會透過軟體計算。 而在後述的情況,無論在用戶端或者主端做軟體計算所消耗的效能是幾乎沒有差異的。
上述功能不需要您去做特別的調整或管理。 Hyper-V 將會自動地依照情境啟用這些功能來提升網路吞吐量以及減少 CPU 在處理網路上的額外消耗。
Linux網路可用性特性
其中一個新的網路功能為虛擬網絡卡可用性功能。 這個功能將會在 Windows Server 2016 Hyper-V(可於目前處於技術預覽階段使用到),以及最新版本的 LIS 驅動程式(4.0 或者之後的版本)。 通過虛擬網絡卡可用性功能,你可以在虛擬機器執行當中隨時新增或者移除虛擬網絡卡,這項功能也能減少虛擬機器下線時間。 這在您排除網路問題時相當有用,因為您可直接加入新的網路聯機到已知有網路問題的虛擬機器中。
以下例子簡單示範,當您有一台執行於 Hyper-V 上的 Linux 虛擬機器,並配有一張虛擬網絡卡。 則在 Linux 用戶端內使用 ifconfig 命令將會看到下圖呈現的樣子:
如預期的,您將會看到網路經由 eth0 聯機,還有一個本地迴路 (loopback)。
但如果您到 Hyper-V 加入另外一張虛擬網絡卡至此虛擬機器中,大部分的 Linux 虛擬機器會立刻檢測到此虛擬網絡卡,並指派為 eth1 且自動使用 DHCP 獲取 IP 。 這張虛擬網絡卡可以馬上被使用,則 ifconfig 後的結果為下圖:
當您在 Hyper-V移除虛擬網絡卡時,Linux 虛擬機器將會實時的移除這張網絡卡。
Linux網路效能
我們建立一個測試環境,架設兩台 Linux 虛擬機器分別在兩台分開的 Hyper-V 。 而這兩個 Hyper-V 通過過實體的 10G 網路骨幹連結,當然也支援更快的 40G 版本。 而這兩台 Linux 虛擬機器各自配備 8 顆虛擬 CPU 以發揮 vRSS 最大效能。 我們通過 iperf3 這個工具來測量 Linux 用戶端的最大網路吞吐量。 iperf3 是個開源工具可以點這裡到 Github 檢視更多細節。 我們設定 iperf3 使用 16 條測試,並且有不同程度的吞吐量,來模擬典型生產力伺服器的工作情況。
因此上述的測量設定看起來將會如下圖:
總結
網路高效能與高吞吐量是目前在生產虛擬環境為關鍵需求之一,而 Linux 目前在 Hyper-V 上執行已可達到 10G 物理網路的連線速度,這將能提升更多生產力的使用需求。 不過我們的技術將會持續精進,下一步就是盡可能的達到與物理 40G 網路相近的速度為目標。 除效能提升之外,也加入了虛擬網絡卡可用性功能減少下線時間,並提供您更有彈性的網路設定。
微軟愛Linux:Linux動態記憶體設定與及時備份 http://www.linuxidc.com/Linux/2015-11/125559.htm
本文永久更新連結地址:http://www.linuxidc.com/Linux/2015-12/126546.htm
相關文章