Linux

irqbalance 在現代硬體上還有用嗎?

  • August 21, 2016

這個問題以前有人問過,但我相信世界已經發生了足夠的變化,可以再次提出這個問題。

irqbalance 在我們擁有支持 NUMA 的 CPU 並在其核心之間共享記憶體的當今系統上是否有用?

執行irqbalance --oneshot --debug顯示現代 VMware ESXi 環境中的虛擬來賓正在核心之間共享 NUMA 節點。

# irqbalance --oneshot --debug 3
Package 0:  numa_node is 0 cpu mask is 0000000f (load 0)
   Cache domain 0:  numa_node is 0 cpu mask is 0000000f  (load 0)
           CPU number 0  numa_node is 0 (load 0)           
           CPU number 1  numa_node is 0 (load 0)
           CPU number 2  numa_node is 0 (load 0)
           CPU number 3  numa_node is 0 (load 0)

在這種情況下,irqbalance 將檢測到它正在 NUMA 系統上執行,然後退出。這與我們的流程監控相混淆。

我們應該考慮在這樣的系統上執行numad而不是 irqbalance 嗎?

這對於 VMware 虛擬化伺服器來說非常有趣。

這是 RedHat 技術人員的一個回答。儘管我確實相信大多數企業硬體都支持 NUMA。據我所知,只要 CPU 配置合適,VMware 也會嘗試將您的虛擬機安裝在同一個 NUMA 節點上。

經驗(尤其是關於 VMware)將不勝感激。

這是真的“因為”現代伺服器。請記住,多 CPU/多核與 NUMA 不同。有許多多 CPU/Core 系統沒有 NUMA。

在閱讀下面我的解釋之前,請閱讀上面的 IRQ Affinity 文件,以及以下指南:

RHEL 6 性能調整指南

RHEL 6 的低延遲性能調整

都讀完了嗎?太好了,你不需要再聽到我的消息了!;-) 但是以防萬一您不耐煩,這就是您想要它們的原因…

IRQbalance 防止所有 IRQ 請求在單個 CPU 上備份。我已經看到許多具有 4 個以上 CPU 核心的系統執行緩慢,因為各種 CPU 上的所有程序都在等待 CPU 0 處理網路或儲存 IRQ 請求。CPU 0 看起來非常非常繁忙,所有其他 CPU 都不忙,但應用程序非常慢。這些應用程序很慢,因為它們正在等待來自 CPU 0 的 IO 請求。

IRQbalance 試圖以一種智能的方式在所有 CPU 之間平衡這一點,並在可能的情況下將 IRQ 處理置於盡可能接近程序的位置。這可能是同一個核心,同一個晶片上的一個核心共享同一個記憶體,或者是同一個 NUMA 區域中的一個核心。

你應該使用 irqbalance 除非:

您出於很好的理由(低延遲、實時要求等)手動將您的應用程序/IRQ 固定到特定核心

虛擬客人。這實際上沒有任何意義,因為除非您將客戶機固定到特定的 CPU 和 IRQ 以及專用的網路/儲存硬體,否則您可能看不到裸機所帶來的好處。但是你的 KVM/RHEV 主機應該使用 irqbalance 和numadtune 。

其他非常重要的調整工具是調整配置文件和 numad。了解他們!使用它們!

Numad 與 irqbalance 類似,它試圖確保一個程序及其記憶體在同一個 numa 區域中。對於許多核心,我們看到延遲顯著減少,從而在負載下實現更平穩可靠的性能。

如果您技術嫻熟、勤奮並定期監控或具有非常可預測的工作負載,則可以通過手動將程序/IRQ 固定到 CPU 來獲得更好的性能。即使在這些情況下,irqbalance 和 numad 也非常接近匹配。但是如果你不確定或者你的工作量是不可預測的,你應該使用 irqbalance 和 numad。

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