Kernel
我如何知道哪個 IRQ 導致 CPU 使用率高
由於磁碟控制器故障,我已將伺服器從一個主機板移動到另一個主機板。
從那時起,我注意到其中一個核心的 25% 總是用於 IRQ,但是我不知道哪個 IRQ 對此負責。
核心是 Linux 2.6.18-194.3.1.el5 (CentOS)。
mpstat -P ALL
顯示:18:20:33 CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 18:20:33 all 0,23 0,00 0,08 0,11 6,41 0,02 0,00 93,16 2149,29 18:20:33 0 0,25 0,00 0,12 0,07 0,01 0,05 0,00 99,49 127,08 18:20:33 1 0,14 0,00 0,03 0,04 0,00 0,00 0,00 99,78 0,00 18:20:33 2 0,23 0,00 0,02 0,03 0,00 0,00 0,00 99,72 0,02 18:20:33 3 0,28 0,00 0,15 0,28 25,63 0,03 0,00 73,64 2022,19
這是 /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 使用率高的 IRQ?
編輯:
輸出自
dmesg | grep -i b4xxp
wcb4xxp 0000:30:00.0: probe called for b4xx... wcb4xxp 0000:30:00.0: Identified Wildcard B410P (controller rev 1) at 00012000, IRQ 177 wcb4xxp 0000:30:00.0: VPM 0/1 init: chip ver 33 wcb4xxp 0000:30:00.0: VPM 1/1 init: chip ver 33 wcb4xxp 0000:30:00.0: Hardware echo cancellation enabled. wcb4xxp 0000:30:00.0: Port 1: TE mode wcb4xxp 0000:30:00.0: Port 2: TE mode wcb4xxp 0000:30:00.0: Port 3: TE mode wcb4xxp 0000:30:00.0: Port 4: TE mode wcb4xxp 0000:30:00.0: Did not do the highestorder stuff wcb4xxp 0000:30:00.0: new card sync source: port 3
好吧,由於您特別詢問如何知道哪個 IRQ 對 中的數字負責,因此
mpstat
您可以假設它不是本地中斷計時器 (LOC),因為這些數字相當相等,但mpstat
其中一些 cpu 顯示為 0 %中斷。剩下的就是 IRQ 0,它是系統計時器,你不能對它做任何事情,而 IRQ 177,它與你的 b4xxp 驅動程序相關聯。
我的猜測是 IRQ 177 將是你的罪魁禍首。
如果這導致了問題,並且您想更改您看到的行為,請嘗試:
- 禁用使用該卡的軟體,並查看中斷是否減少。
- 從系統中刪除該卡,並解除安裝驅動程序,看看是否有改進。
- 將該卡移動到另一個插槽,看看是否有幫助。
- 檢查軟體的更新驅動程序或更新檔。
如果這不是問題,而您只是好奇,那麼繼續。:)