2004のリソース消費診断イベントが記録されたので調べたら、audiodg.exeがメモリを使いすぎてた。「Realtek High Definition Audio Driver」が悪いのか?使っているソフトウェアが悪いのか?
症状
PCが動かなくなり、そのまま放置すると再起動するという話が来たので確認してきました。
2日~3日に1・2回発生するということで、イベントビューアーを確認してみます。
PCが落ちる前にリソース消費診断イベントが3回発生しています。
その1回目のイベントにaudiodg.exeがあったので不思議に思い注目してみました。
このPCで数分に何度かブザーが鳴るような作業をさせているとのことで、それでaudiodg.exeが動くのかとわかったわけですが、audiodg.exeがメモリを消費するのか疑問でした。
実験してみた
このPCでは処理の合間に短い音を鳴らしてました。
音は作業の完了音なのですが、頻繁に鳴らしてます。
audiodg.exeに注目してみると2秒程度で終了するwavファイルを1ファイル再生する毎に、audiodg.exe のコミットサイズが2MB前後づつ増えていくことに気がつきました。
PCが落ちる少し前のタスクマネージャとリソースモニタの様子。
audiodg.exeのコミットの値がすごいことになってます。
これ、音を鳴らさない休憩時間(PCは起動したままで)を挟んでも減らないんですよね。
なので音を鳴らした分だけ増える一方です。
原因というか条件というか
この現象はSoundドライバに「Realtek High Definition Audio ドライバ」を使用していて、「オーディオ機能拡張を有効にする」にチェックが入って無いと発生しました。
「オーディオ機能拡張を有効にする」にチェックをONにする必要があります。
初期値ではチェックが入っているので、誰かがはずしたのでしょう(たぶん)。
また、利用したプログラムがC#でSoundPlayer関数を使用している場合にメモリ使用量の増加が発生すると思われます。
SoundPlayer関数を使わずにプログラムしてもらえばいいのかと(笑)。
つまりwavではなくmp3とかも使えるようになれば問題無しかな。
なお、「オーディオ機能拡張を有効にする」にチェックを入れても、audiodg.exeのメモリ使用は増えていきます。
しかし音が鳴らない時間が5分間続くとaudiodg.exe がリセットされ、使用していたメモリは解放されます。
「オーディオ機能拡張を有効にする」にチェックが入って無いと、音が鳴らない時間が5分間以上続いてもリセットされることはありませんでした。
解決方法
結局一番手っ取り早い解決方法は「Realtek High Definition Audio Driver」を使わないこと。
互換ドライバへの変更で解決しました。
以下に手順を記載します。
左下のスタートボタンを右クリックし、メニューから「デバイスマネージャー」を選択します。
「サウンド、ビデオ、およびゲームコントローラー」欄の「「Realtek(R) Audio」をダブルクリックします。
「ドライバー」タブを選択し、「ドライバーの更新」をクリックします。
「コンピューターを参照してドライバーを検索」をクリックします。
「コンピューター上の利用可能なドライバーの一覧から選択します」をクリックします。
「互換性のあるハードウェアを表示」にチェックを入れ、「High Definition Audio Device」を選択し、「次へ」をクリックします。
「Windowsによって、このデバイスドライバーがハードウェアと互換性があることを・・・」と表示されます。
「はい」をクリックします。
「ドライバが正常に更新されました」と表示されます。
「閉じる」をクリックします。
「ハードウェアの設定が変更されました。これらの変更を有効にするには・・・」のメッセージが表示されます。
「はい」をクリックしてPCを再起動します。
再度ドライバー画面を開いて「Microsoft」になっているかを確認します。
以上でトラブルなく利用することができるようになりました。
コメント