如何測試 linux NAPI 功能?
我正在嘗試在嵌入式 linux 環境中測試**NAPI功能。*我使用 ’ pktgen ’ 生成大量數據包,並嘗試在/proc/interrupts*驗證我的網路介面的中斷計數。
我發現中斷計數比生成的數據包要少。此外,我正在嘗試將“ netdev_budget ”值從1調整到1000(預設為 300),以便在 netdev_budget 增加時可以觀察到中斷計數的減少。
然而,增加 netdev_budget 似乎沒有幫助。該中斷類似於 netdev_budget 設置為 300 時觀察到的中斷計數。
所以這是我的疑問:
- ’netdev_budget’ 對 NAPI 有什麼影響?
- 我可以/應該調整哪些其他參數來觀察中斷計數的變化?
- 有沒有其他方法可以用來測試 Linux 上的 NAPI 功能?(除了直接查看網路驅動程式碼)
任何幫助深表感謝。
提前致謝。
我寫了一篇關於 Linux 網路調整的綜合博文,其中解釋了有關監視、調整和優化 Linux 網路堆棧(包括 NAPI 權重)的所有內容。看一看。
請記住:當 NAPI 啟動時,一些驅動程序不會禁用 NIC 的 IRQ。他們應該這樣做,但有些根本沒有。您可以通過檢查驅動程序中的硬 IRQ 處理程序以查看硬 IRQ 是否被禁用來驗證這一點。
請注意,硬 IRQ 在某些情況下會重新啟用,如博文及下文所述。
至於你的問題:
- 增加
netdev_budget
NET_RX 軟中斷可以處理的數據包數量。可以處理的數據包數量也受到時間限制的限制,這是不可調整的。這是為了防止 NET_RX 軟中斷佔用 100% 的 CPU 使用率。如果設備在其時間分配期間沒有收到足夠的數據包來處理,則會重新啟用 hardirqs並禁用 NAPI。- 如果支持,您還可以嘗試修改 NIC 的 IRQ 合併設置。有關如何執行此操作以及這意味著什麼的更多資訊,請參閱上面的部落格文章。
- 您應該將監控添加到您的
/proc/net/softnet_stat
文件中。此文件中的欄位可以幫助您確定正在處理的數據包數量,是否已超時等。如果可以的話,您需要考慮一個問題:
為什麼你的 hardirq 速率很重要?應該沒關係,直接。NIC 驅動程序中的 hardirq 處理程序應該做盡可能少的工作,所以它執行很多可能對您的系統來說不是問題。如果是,您應該仔細測量,因為這似乎不太可能。不過,您可以調整 IRQ 合併設置和 IRQ CPU 親和性來分配處理,以分別更改 NIC 生成和特定 CPU 處理的 hardirq 數量。
您應該考慮您可能對數據包處理吞吐量或數據包處理延遲更感興趣。根據關注的問題,您可以適當地調整網路堆棧。
請記住:要完全調整和優化您的 Linux 網路堆棧,您必須監視和調整每個組件。它們都是相互交織的,很難(而且通常是不正確的)只監控和調整堆棧的一個方面。