CPU中斷數查看
多核CPU每個核心CPU發生中斷的數量查看
# mpstat -I SUM -P ALL 1 3 Linux 5.4.0-40-generic (verify-new-511kernel) 08/28/2021 _x86_64_ (72 CPU) 09:09:30 AM CPU intr/s 09:09:31 AM all 18762.00 09:09:31 AM 0 253.00 09:09:31 AM 1 256.00 09:09:31 AM 2 253.00 09:09:31 AM 3 253.00 09:09:31 AM 4 254.00 09:09:31 AM 5 260.00
說明:
pstat [-I {SUM| CPU | SCPU}][-P {|ALL}] [internal [count]] 參數 解釋 -I 查看中斷 {SUM 表示匯總每個CPU上的中斷數| SCPU 單個軟件中斷數} -P {|ALL} 表示監控哪個CPU, cpu在[0,cpu個數-1]中取值 internal 相鄰的兩次采樣的間隔時間、 count 采樣的次數,count只能和delay一起使用
當中斷集中在某個CPU時,會把這個CPU打滿,建議將中斷平均分配每個CPU處理。
查看中斷數高的CPU忙於處理哪些中斷
命令:cat /proc/interrupts
cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 0: 245 0 0 7134094 IO-APIC-edge timer 8: 0 0 49 0 IO-APIC-edge rtc 9: 0 0 0 0 IO-APIC-level acpi 66: 67 0 0 0 IO-APIC-level ehci_hcd:usb2 74: 902214 0 0 0 PCI-MSI eth0 169: 0 0 79 0 IO-APIC-level ehci_hcd:usb1 177: 0 0 0 7170885 IO-APIC-level ata_piix, b4xxp 185: 0 0 0 59375 IO-APIC-level ata_piix NMI: 0 0 0 0 LOC: 7104234 7104239 7104243 7104218 ERR: 0 MIS: 0
查看網卡當前中斷號綁定的CPU編號
cat /proc/interrupts | head -n1 && cat /proc/interrupts | grep eth CPU0 CPU1 124: 1733966 0 IR-PCI-MSI 49283073-edge eth0-0 125: 0 0 IR-PCI-MSI 49283074-edge eth0-1 126: 0 0 IR-PCI-MSI 49283075-edge eth0-2 127: 0 0 IR-PCI-MSI 49283076-edge eth0-3 128: 0 0 IR-PCI-MSI 49283077-edge eth0-4 129: 0 0 IR-PCI-MSI 49283078-edge eth0-5 130: 0 0 IR-PCI-MSI 49283079-edge eth0-6 131: 0 0 IR-PCI-MSI 49283080-edge eth0-7
如上看每個網卡隊列對應一個中斷編號,以eth0-0 網卡隊列為例,對應中斷號為124 查看該隊列綁定的CPU
cat /proc/irq/124/smp_affinity_list 查看綁定的CPU列表,(10進制表示)
# cat /proc/irq/124/smp_affinity_list 0
如上表示綁定的為CPU0
cat /proc/irq/124/smp_affinity 查看綁定的CPU列表 (16進制表示)
# cat /proc/irq/124/smp_affinity 00,00000000,00000001
將中斷號綁定所有CPU
綁定中斷到0、1、2、3核
root@verify-new-511kernel:~# echo 0,1,2,3 > /proc/irq/124/smp_affinity_list root@verify-new-511kernel:~# cat /proc/irq/124/smp_affinity 00,00000000,0000000f root@verify-new-511kernel:~# cat /proc/irq/124/smp_affinity_list 0-3 root@verify-new-511kernel:~#
只綁定到個別核心例如CPU0和CPU1 可以寫0-1 代表 連續的核心范圍
# echo 0-1 > /proc/irq/124/smp_affinity_list # cat /proc/irq/124/smp_affinity_list 0-1
# cat /proc/irq/124/smp_affinity 00,00000000,00000003
綁定所有的核心(本例72個核心)
root@verify-new-511kernel:~# echo 0-71 > /proc/irq/124/smp_affinity_list root@verify-new-511kernel:~# cat /proc/irq/124/smp_affinity ff,ffffffff,ffffffff