Networking
供應商白皮書說:5Mpps 沒有問題。我已經以 120kpps 的速度撞牆了。瓶頸在哪裡?
惠普關於其 QLogic (fka Broadcom) NetXtreme II 適配器的白皮書(其中包括我正在測試的特定 NIC)指出(第 7 頁),它們對於高達 256 字節/數據包的數據包的小數據包性能高於 5,000,000 個數據包/秒。
在我使用應用程序進行的測試中,我禁用了除單純的 UDP 接收部分之外的所有處理,我只能達到 120,000 個數據包/秒。數據包均勻分佈在 12 個多播組上。
我注意到,當我提高 UDP 發送速率並最大約為 120,000時,有****一個核心(2 個套接字上的每個核心共有 12 個核心)其負載逐漸增加。但我不知道那個核心在做什麼以及為什麼。這不是我的應用程序中的單執行緒瓶頸,因為我是為所有多播組執行應用程序的單個實例,還是為每個處理 1 個多播組的 12 個實例執行一個應用程序實例並不重要。所以瓶頸不是我的接收器應用程序。
MSI 已啟用(通過設備管理器中的“資源類型”視圖進行驗證)並且 RSS 也在 NIC 設置中啟用,有 8 個隊列。那麼,是什麼緊緊抓住了這一核心?所有 NIC 解除安裝功能目前都已打開,但關閉它們並沒有幫助。
那麼瓶頸可能在哪裡呢?
系統詳情:
- ProLiant BL460c Gen9
- 英特爾至強 E5-2670 v3(2 x 12 核)
- HP FlexFabric 10Gb 2 埠 536FLB 網卡
- 視窗 2012 R2
RSS 也在 NIC 設置中啟用,有 8 個隊列。
不幸的是,這並不意味著正在使用 RSS,因為
netsh int tcp show global
顯示:
TCP Global Parameters ---------------------------------------------- Receive-Side Scaling State : disabled
執行後(順便說一句,無需重新啟動)
netsh int tcp set global rss=enabled
RSS 開始工作,以前堆積在那個糟糕的核心上的負載現在均勻分佈在 2 個 NUMA 節點之一上的多個核心上。
我還沒有驗證這是否可以讓我處理廣告中的 Mpps 負載,但是天花板已經足夠高,可以對我需要的東西進行基準測試。