- ベストアンサー
スリープ状態から復帰後、DPCsがCPUを占有
- スリープ状態から復帰した際に、DELL Inspiron 530のWindows Vista Ultimate 32bitのパソコンでCPU使用率が上昇する問題が発生しています。
- 主にDPCs(Deferred Procedure Calls)、System、InterruptsがCPUを占有しており、電源を切っている状態からの起動では問題が発生しないことが確認されています。
- DPCsについての詳細な説明と、この問題の原因と解決策について教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
(1)DPCとは プライオリティの低くてもいい処理を後回しにして、高いプライオリティでの動作時間を減らす処理方法。 (2)原因 マルチプロセッサシステムでネットワークカードからCPUへの割り込みが入った場合、それが緊急度が高くないと判断されるとDPCとなって延期される。この延期されたDPCが特定のCPUに多くなってくると、もう片方のCPUに送られてしまい更に負荷が高くなってしまう。これはWindowsのデフォルト動作である。ネットワーク常時接続環境のマルチCPU使用PCで長時間起動やスリープ状態等での使用時に起こりがちな現象。 (3)解決策 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NDIS\Parameters にあるProcessorAffinityMaskの値を0にする(無ければ追加)して再起動。割り込みを処理したCPUが、そのCPUに対応するDPCの処理も実行される。1つまたは複数のネットワークインタフェースカードが特定のCPUに固定されないようになる。その結果、割り込みとネットワークインタフェースカードで生成されるDPCに対するCPUの処理が改善される。再発の際は再度同作業を行う。一度試してみてください。改善されるはずです。基本的にスリープ時に起こりがちな現象ですからMSではビスタはスリープを推奨されていますが、シャットダウンを基本にするのも一つの手です。(苦笑) (4)余談 現在DPCはマルチCPU、つまりCore 2 Duo等との相性があまり良くない為、質問者と同じ症状で困っている人は多くいると思われます。マルチCPUやそれと連携するシステムの更なる向上を待つのが現状です。 PS:説明文章は専門サイトの文章を一部引用しています。
お礼
詳しく説明していただいてありがとうございました。 ご説明の方法を試してみたところ、DPCの占有がなくなりました。 これから躊躇することなくスリープを使って行けそうです。