- 2009-08-28 (金) 10:09
- サーバー
なんとなく体調が優れない haru です。豚インフルの可能性も無きにしも非ずなので家でPC弄って引きこもってます。ウィルスを人に感染させる行為は立派な傷害罪です。注意しましょう(ぁ
さて、引きこもり中にPC弄っているわけですが、前々から気になっていた問題に、Intel性 D945GCLF2 + Linux 環境で Kernel の ACPIデーモンである kacpid が暴走してCPU使用率が100%になるという問題があります。
ACPI ってことで電源周りで調査して言ったところどうも怪しいのがCPUの温度でした。lm_sensors の読みによるとCPU温度は次のような感じです。
CPU Temp: +46.0°C (low = +43.0°C, high = +50.0°C)
この状態だとkacpid は暴走しないのですが、次のようになるとkacpidが暴走しだします。
CPU Temp: +53.0°C (low = +43.0°C, high = +50.0°C) ALARM
つまりはhighの温度を超えると kacpidが活性化するわけです。3~4回ほど試してみましたがCPU温度がhigh の温度を越えた瞬間からkacpidが活性化することを確認しました。
要はCPU温度が規定値を超えてkacpidが何とかしようとがんばりだしたがなんともならないので暴走したということですかね。
このhighとかlowなんですが、CPU温度によるFANの自動制御に使う温度なんですよね。自動制御が有効になっていると BIOS から取得した温度値が表示され、無効になっていると非現実的な温度(127℃)とかになりALARMが絶対に出なくなります。
そもそも D945GCLF2 には自動制御つきの4pinファンなんて付けれないので意味がないので無効にしてあげます。BIOS画面に入って、 Advanced -> Boot Configuration -> Fan Control と進みます。標準ではEnabled になっているのをDisabledに変えます。
Disabled に変えると lm_sensors の読みが次のようになります。
CPU Temp: +47.0°C (low = -127.0°C, high = +127.0°C)
さすがにこの温度を超えることはありえないでALARMはでません。この状態でCPU温度を 50度以上にしてみても kacpid は暴走しませんでした。
インターネット上を見てみると PCI スロットの不具合だという意見がいくつかあるようなのですが、kacpid 暴走の原因が上記によるもののみだと考えるのなら PCIスロットにカードをさしたことでエアフローが悪くなり温度が上昇したためではないかと思います。
個人的な感想としては、これは マザーボード側の不具合だと感じました。high の温度を超えたことを kacpid が感知すると ファンの回転数を上げて温度を下げるというのが正常動作だと思います。しかし、今回の場合だとファンの回転数を上げようにもそもそもマザーボードにファンの回転数を制御する機構が存在しないわけです。しかも、マザーボードの設定としては Fan Control が有効になっているわけで、kacpid から見たら 制御できるはずのファンが制御できないという異常な状態なわけです。まぁ、kacpid側でもそのような例外を返すべきではありますが、ないはずのFan Control 機能の設定を残したまま出荷した Intel 側に問題が大きくあるように感じます。おそらくは4pinファンがつけれるマザーと同じBIOSを使っているのが原因だろうとは思いますが、Fan Conrtrol の機能を削れとまでは言わないが標準設定を Disalbe に変えるくらいはしておけよと思います。
スポンサード リンク
- Newer: mumble 1.2.0 テストサーバ建ててみたぉ
- Older: サーバ機いじって(ry