web-dev-qa-db-ja.com

デスクトップウィンドウマネージャーがメモリをリークしたり、クラッシュしたりするのはなぜですか?

デスクトップウィンドウマネージャーのメモリ使用量が急上昇し続け、許可されたメモリが不足していると言ってAeroを無効にします。 DWMが再起動し、プロセスを強制終了すると正常に復帰します。なんでこんなことが起こっているの?どうすれば修正できますか?許可されるメモリの量を変更できますか?

enter image description here

ハードウェア:

  • Intel Core 2 Quad/EVGA 680i mobo
  • 8GBパトリオットDDR2
  • (3x)Sapphire ATI Radeon HD 4760(Crossfireセットアップではなく、マルチモンセットアップ)

編集:

新しいシステム。現在、16GBDDR3を搭載したAMDPhenom 21055Tを搭載しています。 Windows 7と同じビデオカードの同じインストール(新しいmoboですが、MSI nf980-g65にはHDMIも搭載されており、現在も使用しています)。 同じ問題

ブラウザを開いているとき、およびSeesmic(Silverlightのブラウザ外アプリケーション)を開いているときに、より頻繁に発生することがわかります。

7
tsilb

これに関するWindowsエンジニアリングチームからの公式の非公式の説明は、WindowsがGPUアクセラレーションアプリケーションをプライマリビデオカードに固定しているというものです。エンジニアリングチームは、プライマリ以外のビデオカードでGPUアクセラレーションアプリを使用することは「非常に非効率的」であると説明しています。

彼らは、これが長年にわたって機能し、現在すべてのGPUレンダリングアプリケーションがDWMを停止するリスクが高いという事実を非常に否定しています。

彼らは修正がないことを知っており、再現が単純であるにもかかわらず、再現がないと主張しています。非SLI/Crossfire方式で複数のビデオカードを実行し、複数のモニターに出力します。次に、セミアクティブGPUアクセラレーションアプリケーションを非プライマリビデオカードに移動し、共有メモリGPU割り当てを監視します。それらは、アプリケーションのGPUAPIのアクティビティに関連して急上昇します。 GPUアクセラレーションブラウザ(Chrome、IE、Firefox)をスクロールまたは入力するだけで、DWMが解放できるよりも多くのGPU共有RAMを割り当てるリスクが発生する可能性があります。

ビデオカードのRAMとシステムのRAMの比率の組み合わせである可能性がある再現を取り巻く問題があるかもしれませんが、複数のビデオカードが設定されている任意のシステムでGPU共有メモリのスパイクを確認できます。 DWMを停止するかどうか。

DWMには、マシンに関連するリソース割り当てを超えたときに起動するリソース使用量キルスイッチがあります。より多くのシステムを備えたシステムRAMまたはより多くのGPU ramを備えたシステムは、RAMに比べてメモリ割り当てが埋め込まれることが非常に多いため、影響を受けやすいかどうかはわかりません。ほぼ同一の3つのシステムで10個のアプリケーションを起動しますが、異なるRAMの量であり、異なるメモリ消費量が得られます。

これを解決するための公式の非公式の対応は-解決策はなく、SLI/Crossfire以外のセットアップで複数のビデオカードを実行しないでください。

ブラウザでGPUアクセラレーションを無効にすることもできます。 IE9は、GPUアクセラレーションを無効にするとパフォーマンスが大幅に低下することを私が知っている唯一のブラウザです。

もちろん、この問題により、Flash/Silverlight/Moviesを実行する場所に非常に注意する必要があります。私のセットアップでは、メインのビデオカードとまったく同じであるにもかかわらず、2枚目のビデオカードでそれらのいずれかを実行するのはほとんど自殺です。

7
MDR

まず、64ビットバージョンのWindowsを実行していると仮定します。そうしないと、8GBのほとんどが役に立たなくなります:)

次に、Windowsエクスプローラーと統合する最近インストールしたものを確認します。たとえば、私が何度も誤動作しているのを目撃したTurtleSVN(SVN統合ピース)。基本的に、エクスプローラーでタッチしたすべてのフォルダーを列挙し、SVNリポジトリーと統合する必要があることを予測します。そして時々それは速度低下とリークを引き起こします-Windowsエクスプローラーのメモリスペースで。

第三に、Explorerのメモリスペースに他に何がロードされているかを調べ(Process Explorerを使用)、本当の原因を排除してください。もう1つできることは、セーフモードで起動し、そこでも問題が発生するかどうかを確認することです。

第4に、ウイルスやマルウェアを除外しないでください。これらのいずれかを徹底的にチェックしてください。

3

この(古い)フォーラム投稿がこの問題のトップグーグル検索結果であるため、私はアップデートを提供しています。

2枚のATIビデオカードと3台のモニターでWindows7x64を実行しています。セカンダリビデオカードに接続されたモニターでChromeにテキストを入力するだけで、dwm.exeのメモリ使用量が急増し、Aeroが無効になります。

多くの提案された解決策を試した後、about:flags Chrome構成画面で「すべてのページでのGPU合成」を無効に設定することで、問題を回避することができました。

2
Eric Stevens

この特定の状況に遭遇したのはごく最近で、特にセカンダリGPU上のウィンドウの場合、複数のマシンで非常に簡単に複製されました。これは非常に特殊なコーナーケースですが、あなたにも当てはまると思います。

このマシンのビデオカードはアップグレードされたことがありますか?もしそうなら、これはおそらく以前のDirectX構成のアーティファクトです。 Windowsは、すべての状況でDX9からの正しいアップグレードパスに従わないようであり、代わりに、ハードウェアアクセラレーション機能(Aeroなど)を使用してdwmに過度の負荷をかける可能性のある新しい機能(「10Level9」と呼ばれます)のソフトウェアエミュレーションを実行しようとします。セカンダリGPUで。

次のように私たちのために働いた修正:

  • Regeditを起動します。 (Win7のスタートメニューで検索できます)。
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectXに移動します
  • 「InstalledVersion」= "00,00,00,09,00,00,00,00"および "Version" = "4.09.00.0904"かどうかを確認します
  • その場合は、「DirectX」キー全体を削除してください。 (そうでない場合は、間違ったツリーを吠えている可能性があります。Windows7では6.01.somethingが表示されるはずです)
  • マシンを再起動すると、問題が解決するはずです。
2
Shinrai

私も同じ問題を抱えていて、Shinraiが提案したようにレジストリがオフになっていることがわかりました。しかし、それだけを削除しても問題は解決しませんでした。 here からDirect X 11もインストールしましたが、問題は解決したようです。

0
drbell