我有一个关于平衡 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 的中断?