プロが教える店舗&オフィスのセキュリティ対策術

■構成
 機種: DELL Inspiron 530
 OS: Windows Vista Ultimate 32bit
CPU: Intel Core 2 Duo E6700 2.66GHz
 メモリ: 2GB
■問題の状態
パソコンをスリープ状態にしてしばらくのち復帰すると、通常使用していた時よりもCPU使用率が上昇していました。Process ExplorerでどのプロセスがCPUを占有しているのか調べました。
CPUにおもに負荷を与えているプロセスは以下の通りでした。
(占有率順)
1. DPCs(Deferred Procedure Calls) 20~30%
2. System 10~20%
3. Interrupts(Hardware Interrupts) 10~15%
などです。
電源を切っている状態から起動したときには、上記のプロセスはなんらCPUを圧迫することはありません。スリープ状態から復帰したときだけです。またスリープ状態から復帰したときには、必ずと言っていいほどこのような症状が現れます。

■質問
(1)そもそもDPCsとは何でしょうか。検索してみたのですが、そこらへんの知識に疎い自分にはピンときませんでした。できればわかりやすく詳しく教えてください。

(2)この問題が起こる原因は何だと考えられますか?

(3)解決策にはどのようなものがあるでしょうか?

ご回答よろしくお願いします。

A 回答 (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:説明文章は専門サイトの文章を一部引用しています。
    • good
    • 1
この回答へのお礼

詳しく説明していただいてありがとうございました。
ご説明の方法を試してみたところ、DPCの占有がなくなりました。
これから躊躇することなくスリープを使って行けそうです。

お礼日時:2007/09/08 14:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!