設置待ちの FreeBSD 9.3 サーバーですが、負荷を掛けての放置プレイは重要ですね。次々と、初見(それとも発生がレアなので記憶から消えている?)の症状を発生してくれます。
今回は、”stray irq7″ というメッセージがコンソールやら、/var/log/messages に記録されています。
Aug 3 21:57:48 pc32 kernel: Aug 3 21:57:48 pc32 kernel: stray irq7 Aug 3 22:01:11 pc32 kernel: Aug 3 22:01:11 pc32 kernel: stray irq7 Aug 3 22:01:49 pc32 kernel: Aug 3 22:01:11 pc32 kernel: stray irq7 Aug 3 22:41:29 pc32 kernel: Aug 3 22:41:29 pc32 kernel: stray irq7 Aug 3 22:41:30 pc32 kernel: Aug 3 22:41:30 pc32 kernel: too many stray irq 7's: not logging anymore Aug 4 00:57:25 pc32 kernel: Aug 4 00:57:25 pc32 kernel: stray irq7 Aug 4 00:57:30 pc32 kernel: Aug 4 00:57:30 pc32 kernel: too many stray irq 7's: not logging anymore Aug 7 03:27:21 pc32 kernel: Aug 7 03:27:21 pc32 kernel: stray irq7 Aug 8 15:01:58 pc32 kernel: Aug 8 15:01:58 pc32 kernel: stray irq7 Aug 10 20:42:49 pc32 kernel: Aug 10 20:42:49 pc32 kernel: stray irq7 Aug 13 03:04:13 pc32 kernel: Aug 13 03:04:13 pc32 kernel: stray irq7 Aug 13 03:05:11 pc32 kernel: Aug 13 03:04:13 pc32 kernel: stray irq7 Aug 13 03:16:02 pc32 kernel: Aug 13 03:16:02 pc32 kernel: stray irq7 Aug 14 06:03:42 pc32 kernel: Aug 14 06:03:42 pc32 kernel: stray irq7 Aug 15 03:03:41 pc32 kernel: Aug 15 03:03:41 pc32 kernel: stray irq7 Aug 15 03:04:37 pc32 kernel: Aug 15 03:03:41 pc32 kernel: stray irq7
stray なので、処理されない割り込みが発生しているとか、受け付けられない・拾って貰えない割り込みということになるんでしょうか。
現代のハードウェアの場合はどうなのか確認していませんが、今回使ってたマザーボードは IRQは 0-15 の時代のマザーボードなので、IRQ7 はプリンターが使います。しかし、サーバー用途構築なので、シリアルポート、パラレルポート、FDCなど使わない機能はマザーボード上の設定で DISABLE に設定しています。今回の IRQ7 も本来なら、IRQなんか発生するはずはないのですが、vmstat -i コマンドで確認してみると以下のように2発発生していて、2発とも stray になっていると記録されています。
# vmstat -i interrupt total rate irq0: attimer0 94448508 1998 irq1: atkbd0 6 0 irq5: atapci1 702054 14 irq7: 2 0 stray irq7 2 0 irq10: rl0 587018 12 Total 95737590 2025
この「vmstat -i」、検索して知ったのですが、FreeBSD 9 の場合は、IRQ とドライバーの対応が表示されて、irq7 にはパートナードライバーがないことがわかります。
これくらいの発生頻度なら放置でも良さそうですけど、ログの中には、「kernel: too many stray irq 7’s: not logging anymore」と記録されているところもあり、ログインする時に影響が発生する可能性もあるようです。今まで影響はなかったんですけどね。
他のサーバーを確認してみると、プリンターポートは空きのはずなんですが、IRQ7 が発生していると記録されています。
> vmstat -i
interrupt total rate
irq0: clk 582265541 63
irq1: atkbd0 8 0
irq3: xl0 75032156 8
irq6: fdc0 7 0
irq7: ppc0 1 0
irq8: rtc 1173900519 128
irq14: ata0 54699366 5
irq15: ata1 34 0
Total 1885897632 205
# vmstat -i
interrupt total rate
irq0: attimer0 3069897106 833
irq6: fdc0 10 0
irq7: ppc0 1 0
irq9: dc0 uhci1+ 9421126 2
irq12: rl0 46016 0
irq14: ata0 7375245 2
Total 3086739504 837
どちらも数が1なので、起動時のIOスキャンでもしているのかな〜という印象ですが、プリンターポートは使っていなくても割り込みは発生するようです。プリンターポートをLANのデバイスとして使う事も出来るんで、そうなっているのかもしれません。
IRQ7 に対応するドライバーがあればいいんじゃないの?という安易な(?)対策で、一度シャットダウンし、BIOSの Integrated peripherals の設定で、プリンターをバリバリ使う設定に変更してみました。OS 起動時に、確かにirq7として ppc0 が認識されました。
kernel: ppc0: <Parallel port> port 0x378-0x37f,0x778-0x77b irq 7 drq 3 on acpi0
その後で、vmstat -i を取ってみたところ、irq7 が1発発生しているようですが、stray irq とは認識されておらず、ログにも記録されていません。
# vmstat -i interrupt total rate irq0: attimer0 3716799 1998 irq1: atkbd0 6 0 irq5: atapci1 11522 6 irq7: ppc0 1 0 irq10: rl0 2933 1 Total 3731261 2006
これで対策になったんじゃないかと思いますが、使いもしないIOがリソースを食っているかと思うと、ちょっと不満。