Networking

適合數據包密集型應用的虛擬化?

  • May 7, 2014

我們有一個在 Windows 2008R2 伺服器上執行的定制且非常定制的應用程序。它的主要功能是盡可能快地連接到數以萬計的 IP 地址並詢問特定的 TCP 埠——本質上是一個網路掃描器,但根據我們的要求進行了大量定制。伺服器和目標地址之間沒有 NAT,應用程序不會消耗大量記憶體或 CPU。

應用程序(基於 .NET)已經過優化,我們相信程式碼盡可能緊湊。然而,應用程序通過 IP 地址的速度似乎受限於 Windows TCP 堆棧和它所執行的硬體的組合——目前它位於低端、幾乎沒有伺服器級別的機器上。

由於此應用程序的性能至關重要,我們計劃將其移至新的更高規格伺服器,可能是HP DL360 G8。但是,我們可能會同時在不同的機器上執行應用程序的多個實例,因此我想探索將新伺服器用作虛擬主機的選項。

我們可能會使用 VMWare ESXi,而 Hyper-V 作為替代選項。但是,我不確定在伺服器上的虛擬機中執行的數據包密集型應用程序是否會簡單地將瓶頸轉移到虛擬機管理程序?

DL360 有 4 個 NIC:我們可以潛在地將 4 個虛擬機“連接”到 4 個 NIC 中的每一個並並行執行它們。VMWare/Hyper-V 是否有效地將流量直接傳遞到 NIC,從而提供“本機”網路性能,或者客戶作業系統和硬體之間是否存在可能導致虛擬機管理程序出現數據包瓶頸的轉換元素?

對於 hyper-v:視情況而定。您希望在硬體卡、虛擬網路和 - NIC 上啟用 SR-VIO。否則所有數據包都會通過一個虛擬交換機,這將意味著成本。給定一個不錯的網卡,這將導致分配給虛擬機的硬體隊列,這與它在虛擬化層中的速度一樣快。

在VMware中你也可以做SR-IOV,記住需要一個支持它的網卡。Scott Lowe 對SR-IOV的一個很好的概述,如果你不熟悉的話。VMware 還為您提供了執行“DirectPath I/O”的選項,您可以在其中讓來賓直接訪問 pci 設備,在此PDF中搜尋“DirectPath”以獲取更多資訊。還值得注意的是,您可以在 VMware 中嘗試不使用 DirectPath 或 SR-IOV,只要您使用 VMXNET3 客戶機驅動程序,性能就非常好。

引用自:https://serverfault.com/questions/593461