Ubuntu

如何在 Xen XCP 內的 Ubuntu PV domU 上更改 IRQ 的 SMP 親和性?

  • November 10, 2015

我想更改 IRQ SMP 親和力,原因如下:CPU0 is swamped with eth1 interrupts

但我不能——Input/output error當我嘗試寫信時,我明白了/proc/irq/*/smp_affinity

請指點我關於此事的HOWTO。(正式的參考/proc/irq/*/也會很酷。)

血腥細節:

請注意,這是基於 Ubuntu 的 Xen XCP 主機內的 VM (PV domU)。

$ unname -a
Linux MYHOST 2.6.38-15-virtual #59-Ubuntu SMP Fri Apr 27 16:40:18 UTC 2012 i686 i686 i386 GNU/Linux

$ lsb_release -a
沒有可用的 LSB 模組。
經銷商編號:Ubuntu
說明:Ubuntu 11.04
發佈時間:11.04
代號:納蒂

$ sudo cat /proc/irq/*/smp_affinity
01
01
01
01
01
80
80
80
80
80
80
40
40
40
40
40
40
20
20
20
20
20
20
10
10
10
10
10
10
08
08
08
08
08
08
04
04
04
04
04
04
02
02
02
02
02
02
01
01
01
01
01
01

**更新。**錯誤詳情:

$ N=$(grep -c 處理器 /proc/cpuinfo)
$迴聲$N
8

$ printf %x $((2**N-1))
ff

$ printf %x $((2**N-1)) | sudo tee /proc/irq/*/smp_affinity
fftee:/proc/irq/288/smp_affinity:輸入/輸出錯誤
三通:/proc/irq/289/smp_affinity:輸入/輸出錯誤
三通:/proc/irq/290/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/291/smp_affinity:輸入/輸出錯誤
三通:/proc/irq/292/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/293/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/294/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/295/smp_affinity:輸入/輸出錯誤
三通:/proc/irq/296/smp_affinity:輸入/輸出錯誤
三通:/proc/irq/297/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/298/smp_affinity:輸入/輸出錯誤
三通:/proc/irq/299/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/300/smp_affinity:輸入/輸出錯誤
三通:/proc/irq/301/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/302/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/303/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/304/smp_affinity:輸入/輸出錯誤
三通:/proc/irq/305/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/306/smp_affinity:輸入/輸出錯誤
三通:/proc/irq/307/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/308/smp_affinity:輸入/輸出錯誤
三通:/proc/irq/309/smp_affinity:輸入/輸出錯誤
三通:/proc/irq/310/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/311/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/312/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/313/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/314/smp_affinity:輸入/輸出錯誤
三通:/proc/irq/315/smp_affinity:輸入/輸出錯誤
三通:/proc/irq/316/smp_affinity:輸入/輸出錯誤
三通:/proc/irq/317/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/318/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/319/smp_affinity:輸入/輸出錯誤
三通:/proc/irq/320/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/321/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/322/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/323/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/324/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/325/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/326/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/327/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/328/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/329/smp_affinity:輸入/輸出錯誤
三通:/proc/irq/330/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/331/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/332/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/333/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/334/smp_affinity:輸入/輸出錯誤
tee:/proc/irq/335/smp_affinity:輸入/輸出錯誤

更新。 irqbalance在跑:

$ sudo 服務 irqbalance 狀態
irqbalance 開始/執行,程序 560

我不認為將中斷移動到不同的 CPU——尤其是處理網路事件——會提高性能。

相反會發生,因為網路程式碼不能再保存在特定的 CPU 中。

因此,只要您在網路介面上沒有遇到丟包的情況,我會說 - 這對於服務於許多數據包的網路來說是很正常的行為。

您需要減少中斷的數量 - 移動它們無濟於事(相反,正如我試圖概述的那樣)。

我看到兩種可能的解決方案:

  • 提高 MTU 大小以減少中斷數
  • 將 DomU 的 vCPU 0 固定到 Dom0 上的專用 CPU(不被任何其他 VM 或 Dom0 使用)。

2012 年 12 月 17 日更新:既然您要求提供權威連結 - 我試圖問一個一般性問題何時不使用虛擬化- 我認為這是您達到一般 VM 限制的情況之一。該問題的一個答案包含一種不同的方法:使用容器,而不是虛擬化。

我希望這有幫助…

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