如何在沒有巨型數據包的情況下提高 Intel X520-DA2 10Gb NIC 吞吐量
這是我到目前為止所做的:
使用更多的 Rx/Tx 緩衝區可以最大程度地提高預設值的性能。我在每個適配器上將 RSS 隊列設置為 4,並將第二個埠上的啟動 RSS CPU 指定為 0 以外的值(在我使用的 PC 上是 16,有 16 個核心,32 個 HT)。
通過觀看 ProcessExplorer,我受到 CPU 處理大量傳入中斷的能力的限制,即使啟用了 RSS。我在 2.x 模式下使用 PCIe x8(電氣)插槽。兩個適配器中的每一個都與 5GT/sec x8 匯流排連接。
作業系統響應能力無關緊要,I/O 吞吐量才是。我受到客戶無法處理巨型數據包的限制。
接下來我應該嘗試哪些設置?
詳細資訊:雙 Xeon-E5 2665、32 GB RAM、RAID0 中的 8 個 SSD(用於 NIC 性能驗證的 RAMDrive)、通過 IIS/FTP 從 400 個客戶端盡快移動的 1TB 數據。
回應評論:
實際讀取吞吐量為 650 MB/秒,通過一對 10Gb/秒的連結,進入 RAM 驅動器
防病毒和防火牆已關閉,AFAICT。(在這種情況下,我可以很好地控制 PC 上安裝的內容。我如何確定沒有過濾器會降低性能?我將不得不跟進,好點。)
在 Process Explorer 中,我看到 CPU 持續執行的一段時間(紅色,核心時間),但網路和磁碟 I/O 停止
最大 RSS 處理器為預設值,16
X520-DA2 設備的兩個實例都支持消息信號中斷,MessageNumberLimit 設置為 18。這是我在低端桌面卡上看到的內容
高性能 NIC 的問題之一是現代 PC 架構難以跟上。但是,在您的情況下,這並不是問題所在。讓我解釋。
CPU 必須做很多工作來處理 TCP 數據包。這會影響吞吐量。在您的情況下,限制事物的不是網路硬體,而是伺服器使網路連結飽和的能力。
最近,我們看到處理從 CPU 轉移到 NIC,如校驗和解除安裝。英特爾還增加了一些功能來幫助進一步減少負載。這很酷,我確信所有優化功能都已打開。
正如您所提到的,巨型幀 - 實際上這在一定程度上有助於吞吐量。但不如RDMA多。
大多數 10GBit 乙太網硬體都有一個很好的未充分利用的功能,稱為 RDMA 或遠端直接記憶體訪問。它允許 NIC 通過網路進行記憶體到記憶體的複制,而無需 CPU 的干預。好吧,好的,CPU 告訴 NIC 做什麼,然後 NIC 完成其餘的工作。問題是,它還沒有被太多使用。但它正在到達那裡。顯然,在最新版本的 Microsoft Windows Server 2012 中,他們有一個叫做SMB Direct的東西。它使用 RDMA。所以,如果你想增加吞吐量,你想使用它。
您是否能夠將一些測試硬體放在一起並將其安裝到那里以查看它的性能?
順便說一句,我不確定你是否會在 10Gbit 上看到它,但快速 RAM 有助於 RDMA,尤其是 56Gbit Infiniband。一般來說,最好使用伺服器支持的最快 RAM。
另請注意我在上面放置的 SMB Direct 連結上的此評論:
如果您打算使用網路適配器的 RDMA 功能,則不應將支持 RDMA 的網路適配器組合在一起。組合時,網路適配器將不支持 RDMA。
更新:由於某種原因,看起來並非所有 10GBit NIC 都支持 RDMA。因此,首先檢查您的模型的功能。
我的另一個想法是用於進行測試的協議類型可能會影響結果。即 TCP 成本之上的協議成本。我建議您考慮使用可以在不接觸硬碟驅動器的情況下進行測試的東西,例如 iperf。它的某個地方有一個 Windows 埠。