我已经创建了启用的m4.x2large
实例SR-IOV
并运行了一些sipp
性能测试,我注意到top
命令ksoftirq/5
是100%
并且它坚持CPU5
所有其他 CPU 的负载为 0%,我想在所有8
CPU之间共享 irq
[root@ip-10-100-2-169 irqbalance]# cat /proc/interrupts | grep eth0
97: 2119 0 0 0 6581710 0 0 0 xen-pirq-msi-x eth0-TxRx-0
98: 576 87 0 0 0 1780987 0 0 xen-pirq-msi-x eth0-TxRx-1
99: 34 0 0 0 0 0 0 0 xen-pirq-msi-x eth0
mpstat(可以看到CPU5)
[root@ip-10-100-2-169 irqbalance]# mpstat -P ALL
Linux 3.10.0-514.el7.x86_64 (ip-10-100-2-169.us-west-2.compute.internal) 03/07/2017 _x86_64_ (8 CPU)
10:33:15 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10:33:15 PM all 0.11 0.00 0.08 0.01 0.00 2.90 0.17 0.00 0.00 96.74
10:33:15 PM 0 0.07 0.00 0.12 0.01 0.00 0.00 0.12 0.00 0.00 99.68
10:33:15 PM 1 0.18 0.00 0.05 0.04 0.00 0.00 0.15 0.00 0.00 99.58
10:33:15 PM 2 0.08 0.00 0.04 0.01 0.00 0.00 0.18 0.00 0.00 99.69
10:33:15 PM 3 0.05 0.00 0.03 0.00 0.00 0.00 0.19 0.00 0.00 99.72
10:33:15 PM 4 0.13 0.00 0.06 0.00 0.00 0.00 0.18 0.00 0.00 99.63
10:33:15 PM 5 0.17 0.00 0.22 0.00 0.00 23.60 0.17 0.00 0.00 75.84
10:33:15 PM 6 0.09 0.00 0.05 0.00 0.00 0.00 0.16 0.00 0.00 99.70
10:33:15 PM 7 0.08 0.00 0.05 0.00 0.00 0.00 0.17 0.00 0.00 99.70
我尝试禁用/启用irqbalance
守护进程来查看结果,但结果是一样的。如何在所有 CPU 上共享以太网 irq 份额?
答案1
为了能够将 IRQ 传播到所有可用的 CPU,您需要更改关联性。
例如,要更改 IRQ 关联性eth0-TxRx-0
- 禁用
irqbalance
验证当前亲和力
# cd /proc/irq/97
# cat smp_affinity
通过回显 CPU 位掩码来更改关联性
# echo 0xffff > smp_affinity
验证
/proc/interrupts
IRQ 97
您可以阅读更多详细信息:SMP IRQ 亲和性