歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux管理 >> Linux網絡 >> 微軟愛Linux:Linux網絡特性和性能

微軟愛Linux:Linux網絡特性和性能

日期:2017/2/28 13:55:45   编辑: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

Copyright © Linux教程網 All Rights Reserved