我怎么知道哪个IRQ导致CPU使用率过高


20

由于磁盘控制器故障,我已将服务器从一个主板移至另一个主板。

从那以后,我一直注意到,其中一个核心中的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

如何确定哪个IRQ导致CPU使用率高?

编辑:

来自的输出 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

1
这是星号服务器吗?什么呢dmesg | grep -i b4xxp秀?
蒂姆·肯尼迪

@TimKennedy:是的。我已经编辑了问题以显示dmesg显示了什么。
eproyectos

Answers:


21

好吧,由于您专门询问如何知道哪个IRQ负责in中的数字mpstat,您可以假定它不是本地中断计时器(LOC),因为这些数字相当相等,但mpstat其中一些cpus显示为0% irq。

这样就剩下IRQ 0和IRQ 177,IRQ 0是系统计时器,您无法执行任何操作,IRQ 177与b4xxp驱动程序绑定。

我的猜测是IRQ 177将是您的罪魁祸首。

如果这引起了问题,并且您想更改所看到的行为,请尝试:

  1. 禁用使用该卡的软件,并查看中断是否减少。

  2. 从系统中卸下该卡,然后卸载驱动程序,然后查看是否有改进。

  3. 将该卡移到另一个插槽,看看是否有帮助。

  4. 检查软件的更新驱动程序或补丁。

如果这不是问题,而您只是好奇,那就继续。:)


更改MB后出现问题。也许将卡更改为另一个PCI插槽值得尝试。
eproyectos

请查看以下页面: voip-info.org/wiki/view/Asterisk+PCI+bus+对 良好信息进行故障排除以识别问题,包括IRQ问题。
蒂姆·肯尼迪

4
watch -n1 -d cat /proc/interrupts

这不能回答OP提出的实际问题。
heemayl

你看到最中断改变这样的话,我知道故障排除时,它确实帮助我恰好那是主题中描述的问题。
sjas

4

BP410P是具有4条BRI线路的ISDN卡,如果所有4条线路均已连接,则您一次应该获得4个同步数据包,并且在进行呼叫时,您可以有8个语音通道处于活动状态,所有发送数据包,等等。

如果您在没有进行任何呼叫的情况下获得很高的IRQ计数,则可能是以下两个不良现象的征兆:

  1. 运营商存在同步问题,您还应该获得较差的语音质量。
  2. IRQ线路冲突,在这种情况下,您的ata_piix(ide / sata)使用的是具有BP410P卡的同一条线路,驱动程序可能不太喜欢,在这种情况下确实有建议的先前答案,请尝试将卡更换为另一个插槽。

要进行调试,您也可以尝试拔掉BRI电缆,看看是否有作用。


+1我会检查您的建议。谢谢
eproyectos

1
哇,令人震惊。我上次不得不打牌的时间是在九十年代中期。从那以后,甚至没有使用过“卡片骑师”一词。我认为所有这一切都在我们身后,APIC,MSI等都在后面。–
Alexios

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.