どのIRQが高いCPU使用率の原因であるかを知るにはどうすればよいですか


20

ディスクコントローラーの障害のため、サーバーをあるメインボードから別のメインボードに移動しました。

それ以来、常に1つのコアの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

回答:


21

で、どのIRQがの数に責任があるのか​​を具体的に尋ねているmpstatので、それらはローカル割り込みタイマー(LOC)ではないと想定できますmpstat。 irq。

システムタイマーであり、何もできないIRQ 0と、b4xxpドライバーに関連付けられているIRQ 177が残ります。

私の推測では、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つの同期パケットを取得する必要があります。

呼び出しが行われずに高いIRQカウントが得られる場合、これは2つの問題の症状である可能性があります。

  1. オペレーターとの同期に問題があります。また、音声品質が低下するはずです。
  2. IRQラインが競合しています。この場合、ata_piix(ide / sata)はBP410Pカードと同じラインを使用していますが、ドライバーはそれほど気に入らないかもしれません。 。

デバッグするには、BRIケーブルを取り外して、違いが生じるかどうかを確認することもできます。


+1アドバイスを確認します。ありがとう
eproyectos

1
わあ、衝撃的。私が最後にカードジョッキーをプレイしなければならなかったのは90年代半ばでした。それ以来、「カード騎手」という用語さえ使用していません。APIC、MSIなど、これがすべて私たちの背後にあると思いました。
Alexios

2

私はしばらく前にそのような状況にいることに気付き、irqtop何が起こっているかを簡単に監視するための小さなツールを書きました。それは基本的に、watch -n 1 cat /proc/interruptsより良い出力でを行うのと同じことです。

ここで利用可能なソースコード:https : //gitlab.com/elboulangero/irqtop

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.