Deferred Procedure Call(その2)
以前_にDPCsがCPUを圧迫している場合、ネットワークカードの設定を変えてみると御利益があるかも、ということを書きましたが、あれからメインマシンが変わりDPCsを吐き出していたマシンはファイルサーバと成り下がりました。
で、ふと気づいたこと。
アプリとかボードとかを新マシンに移行している途中、古いマシンで動画を動かさないといけない状況がたびたびあったんです。
もちろん動画は相変わらずカクカク状態(DPCsの占有率が高い)だったのですが、とあるタイミングからスムーズな動画を表示するようになったのです。
「!?」と思っていろいろと調べて見たら、あることがわかりました。
それは・・・
「サウンドボードを抜くとDPCsが下がる」
私はオンボードのサウンドデバイスがずっと前にヤられて、それ以降SoundBlaster Audigy2(PCI)⇒SoundBlaster Audigy2 NX(USB)を使っていたのですがしたのですが、それらのデバイスとドライバを削除すると見事に回復したんです。確かにDPCsが増えたのは、Audigy2(PCI)のスロットを別のところへ入れ替えた時期と同じ頃だった記憶が。
SoundBlasterがどのようにCPUのDPCsへ割り込むのかはよくわかりませんし、本当にSoundBlasterがDPCsの増加の原因なのかはわかりませんが、いずれにせよネットワークデバイスだったりサウンドデバイスだったりCPUへ直接割り込みをかける外部デバイスがあると、それらが複数あるCPUのどちらかだけに割り込み処理をしてDPCsが増えてゆくのでは?というのが私の勝手な想像です。
そもそも、一般ユーザー向けのハードウェアデバイスが「デュアルCPU対応」なんてのを謳うことは少なく、片側のCPUへのみ(つまりシングルCPUとして)割り込みをかける可能性が高い、ってのは想像できます。
つまりは「マザー&OSとハードの相性」ということ?なんですかね。