并非所有 CPU 都能处理 IRQ

并非所有 CPU 都能处理 IRQ

我有一个关于平衡 irq 的问题。我从 /etc/interrupts 中获取 irq 编号,并将每个 irq 分配给 24 个 CPU 中的每一个,如下所示教程说

for i in {143..166};do cat /proc/irq/${i}/smp_affinity; done
000001                                                                                                                                   
000002                                                                                                                                   
000004                                                                                                                                   
000008                                                                                                                                   
000010                                                                                                                                   
000020                                                                                                                                   
000040                                                                                                                                   
000080                                                                                                                                   
000100
000200
000400
000800
001000
002000
004000
008000
010000
020000
040000
080000
100000
200000
400000
800000

之后,我们通过发送大约 1000 万 pps 来测试服务器并观察 top 命令的输出。

top - 15:19:06 up  5:02,  8 users,  load average: 12.51, 12.86, 12.38
Tasks: 278 total,  17 running, 261 sleeping,   0 stopped,   0 zombie
%Cpu0  :  0.0 us,  0.0 sy,  0.0 ni,  0.7 id,  0.0 wa, 99.3 hi,  0.0 si,  0.0 st
%Cpu1  :  0.0 us,  0.0 sy,  0.0 ni,  1.0 id,  0.0 wa, 99.0 hi,  0.0 si,  0.0 st
%Cpu2  :  0.0 us,  0.0 sy,  0.0 ni,  0.7 id,  0.0 wa, 99.3 hi,  0.0 si,  0.0 st
%Cpu3  :  0.0 us,  0.0 sy,  0.0 ni,  1.0 id,  0.0 wa, 99.0 hi,  0.0 si,  0.0 st
%Cpu4  :  0.0 us,  0.0 sy,  0.0 ni,  4.0 id,  0.0 wa, 96.0 hi,  0.0 si,  0.0 st
%Cpu5  :  0.0 us,  0.0 sy,  0.0 ni,  4.7 id,  0.0 wa, 95.3 hi,  0.0 si,  0.0 st
%Cpu6  :  0.0 us,  0.0 sy,  0.0 ni,  5.3 id,  0.0 wa, 94.7 hi,  0.0 si,  0.0 st
%Cpu7  :  0.0 us,  0.0 sy,  0.0 ni,  6.0 id,  0.0 wa, 94.0 hi,  0.0 si,  0.0 st
%Cpu8  :  0.0 us,  0.3 sy,  0.0 ni,  5.0 id,  0.0 wa, 94.7 hi,  0.0 si,  0.0 st
%Cpu9  :  0.0 us,  0.3 sy,  0.0 ni,  5.6 id,  0.0 wa, 94.1 hi,  0.0 si,  0.0 st
%Cpu10 :  0.0 us,  0.3 sy,  0.0 ni,  5.3 id,  0.0 wa, 94.4 hi,  0.0 si,  0.0 st
%Cpu11 :  0.0 us,  0.0 sy,  0.0 ni,  6.0 id,  0.0 wa, 94.0 hi,  0.0 si,  0.0 st
%Cpu12 :  0.0 us,  0.0 sy,  0.0 ni,  1.0 id,  0.0 wa, 99.0 hi,  0.0 si,  0.0 st
%Cpu13 :  0.0 us,  0.0 sy,  0.0 ni,  1.0 id,  0.0 wa, 99.0 hi,  0.0 si,  0.0 st
%Cpu14 :  0.0 us,  0.3 sy,  0.0 ni,  1.0 id,  0.0 wa, 98.7 hi,  0.0 si,  0.0 st
%Cpu15 :  0.0 us,  0.0 sy,  0.0 ni,  0.7 id,  0.0 wa, 99.3 hi,  0.0 si,  0.0 st
%Cpu16 :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu17 :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu18 :  0.3 us,  0.7 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu19 :  1.3 us,  0.3 sy,  0.0 ni, 98.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu20 :  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu21 :  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu22 :  0.7 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu23 :  0.3 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.3 hi,  0.0 si,  0.0 st
KiB Mem:  65947892 total,  1055364 used, 64892528 free,    24544 buffers
KiB Swap: 50321404 total,        0 used, 50321404 free,   348920 cached

我的问题是为什么 24 个 CPU 中只有 16 个加载?这正常吗?如何平衡所有 CPU 的中断?

相关内容