Linux

如何測試 linux NAPI 功能?

  • February 4, 2022

我正在嘗試在嵌入式 linux 環境中測試**NAPI功能。*我使用 ’ pktgen ’ 生成大量數據包,並嘗試在/proc/interrupts*驗證我的網路介面的中斷計數。

我發現中斷計數比生成的數據包要少。此外,我正在嘗試將“ netdev_budget ”值從1調整到1000(預設為 300),以便在 netdev_budget 增加時可以觀察到中斷計數的減少。

然而,增加 netdev_budget 似乎沒有幫助。該中斷類似於 netdev_budget 設置為 300 時觀察到的中斷計數。

所以這是我的疑問:

  1. ’netdev_budget’ 對 NAPI 有什麼影響?
  2. 我可以/應該調整哪些其他參數來觀察中斷計數的變化?
  3. 有沒有其他方法可以用來測試 Linux 上的 NAPI 功能?(除了直接查看網路驅動程式碼)

任何幫助深表感謝。

提前致謝。

我寫了一篇關於 Linux 網路調整的綜合博文,其中解釋了有關監視、調整和優化 Linux 網路堆棧(包括 NAPI 權重)的所有內容。看一看。

請記住:當 NAPI 啟動時,一些驅動程序不會禁用 NIC 的 IRQ。他們應該這樣做,但有些根本沒有。您可以通過檢查驅動程序中的硬 IRQ 處理程序以查看硬 IRQ 是否被禁用來驗證這一點。

請注意,硬 IRQ 在某些情況下會重新啟用,如博文及下文所述。

至於你的問題:

  1. 增加netdev_budgetNET_RX 軟中斷可以處理的數據包數量。可以處理的數據包數量也受到時間限制的限制,這是不可調整的。這是為了防止 NET_RX 軟中斷佔用 100% 的 CPU 使用率。如果設備在其時間分配期間沒有收到足夠的數據包來處理,則會重新啟用 hardirqs並禁用 NAPI。
  2. 如果支持,您還可以嘗試修改 NIC 的 IRQ 合併設置。有關如何執行此操作以及這意味著什麼的更多資訊,請參閱上面的部落格文章。
  3. 您應該將監控添加到您的/proc/net/softnet_stat文件中。此文件中的欄位可以幫助您確定正在處理的數據包數量,是否已超時等。

如果可以的話,您需要考慮一個問題:

為什麼你的 hardirq 速率很重要?應該沒關係,直接。NIC 驅動程序中的 hardirq 處理程序應該做盡可能少的工作,所以它執行很多可能對您的系統來說不是問題。如果是,您應該仔細測量,因為這似乎不太可能。不過,您可以調整 IRQ 合併設置和 IRQ CPU 親和性來分配處理,以分別更改 NIC 生成和特定 CPU 處理的 hardirq 數量。

您應該考慮您可能對數據包處理吞吐量或數據包處理延遲更感興趣。根據關注的問題,您可以適當地調整網路堆棧。

請記住:要完全調整和優化您的 Linux 網路堆棧,您必須監視和調整每個組件。它們都是相互交織的,很難(而且通常是不正確的)只監控和調整堆棧的一個方面。

引用自:https://unix.stackexchange.com/questions/294353