「メタファイル」のメモリ使用量を減らしますか?


8

私の仕事用コンピューター(Windows 7 64ビット)は、プログラムを切り替えるときに多くの時間をメモリのスワップに費やしています。私が4 GBのRAMを持っているので、これは私を驚かせ、私が使用するプログラムは特にRAMを大量に消費するわけではありません(Outlook、Emacs、p4win、Firefox、さまざまなビルドツール)。私はRAMMapをダウンロードしましたが、「メタファイル」が使用しているギガバイトを超えるメモリが表示されます。

Sysinternalsブログから:

メタファイルはシステムキャッシュの一部であり、NTFSメタデータで構成されています。NTFSメタデータには、MFTとその他のさまざまなNTFSメタデータファイルが含まれます。... MFTでは、各ファイル属性レコードに1kがかかり、各ファイルには少なくとも1つの属性レコードがあります。これに他のNTFSメタデータファイルを追加すると、多数のファイルがあるサーバーでメタファイルカテゴリが非常に大きくなる理由がわかります。

つまり、「メタファイル」データが何であるかを理解しています...数十万のファイルで構成される大規模なビルドで作業しています(大きなものはありませんが、合計すると数ギガバイトになります)。私の質問は、「メタファイル」が使用するメモリの量をどのように減らすことができるかです。これらのファイルをすべてアクティブに一度に使用していないのに、なぜWindowsは情報をRAMに保持する必要があるのですか?新しいビルドを同期するたびにマシンを再起動するのは本当に面倒です。


4
ビルドはIOを集中的に使用するため、Windowsはパフォーマンスを向上させるために大きなファイルシステムキャッシュを保持しています。残念ながら、ビルドツールも大量のメモリを使用し、通常は大きなスパイクが発生するため、おそらく沼地の原因となっています。これはシステムキャッシュと競合しています。最善の解決策は、メモリを追加することです。
tgiphil '17年

@tgiphil、ビルドをチェックアウトまたは作成するときに大量のメモリが使用されることは理解できます。しかし、それはまだ使用されており、私が小さな領域で作業している場合でも、ずっと後にスラッシングを引き起こします。残念ながら、ITはこれ以上メモリを提供しません。
ジェイコンロッド

Windows 7はすでにキャッシュを使用してパフォーマンスを最適化していると思います。したがって、使用可能なメモリを増やしてスワップを減らすには、不要なアプリケーションをすべて閉じます。たとえば、OutlookとFirefoxを閉じると、かなりの量のメモリを戻すことができます。Visual Studioを使用していてコンパイルのみが必要な場合は、代わりにコマンドラインビルドを試してください。これがお役に立てば幸いです。ところで。メモリが非常に少ないため(100ドル未満で6 Gb)、優れた生産性投資になります。
tgiphil 2011年

回答:


4

システムキャッシュは必要に応じてメモリを解放すると思いますが、グリッチが発生する可能性があります。以下にいくつかの可能性を示します。

64ビットシステムでは、ビデオメモリを最初の4 GBのメモリに割り当てます。したがって、ビデオカードに大量のメモリが搭載されている場合、「」で説明されているように、そのメモリは失われます
。使用可能なメモリは、Windows 7ベースのコンピュータにインストールされているメモリより少ない場合があります

デバイスマネージャーを開き、[表示]メニューの[接続別のリソース]を選択して、コンピューターのメモリ使用量を調べることができます。[メモリ]ノードを展開し、メモリを占有しているものがある場合は、それを把握できるかどうかを確認します。場合によっては、firewireなどの未使用のデバイスを無効にすることでメモリを増やすことができます。

また、この記事で説明されていることと正反対のことを試して実行することもでき
ます。Windows7でFileSystemのメモリキャッシュサイズを増やします。

Windows 7 SuperFetch無効にしてみることもできます。

何も解決しない場合は、「パフォーマンス」という名前の「タスクマネージャ」タブのスクリーンショットを投稿すると便利です。


+1は「スーパーフェッチを無効にする」ためのものです。

ダウングレードはありませんが、ビルドの実行可能ファイルは一般に頻繁に実行され、キャッシュから恩恵を受けるため、Superfetchはパフォーマンスを低下させずに向上させる可能性があります。使用可能なメモリに影響を与えるビデオカードについては、4GbのみのWindows 7 64ビットには適用されません。この場合、ビデオカードは4Gbより上にマッピングされます。
tgiphil 2011年

@tgiphil:上記のMicrosoftの記事:「256 MBのオンボードメモリを搭載したビデオカード、そのメモリは最初の4 GBのアドレス空間内にマップする必要があります」。
harrymc '18年

私の組織では、RAMに多数の小さなファイルと巨大なNTFSメタファイルもあります。私が知ることができることから、Windowsは他のすべてのようにメタファイルをキャッシュせず、RAMから実際に解放することはありません。コンピューターのメモリ使用率が100%になり、メモリ不足のためにすべてのアプリケーションがクラッシュし始めます。もちろん、これはWindows 7ではなく、Windows Server 2008 R2です。
Phil

また、「ファイルシステムのメモリキャッシュを増やす」リンクは、実際には機能しないことを通知します。tweakhound.com/blog/?p=1164を
Phil

0

Windows Server 2008 R2では、メタファイルの「キャッシュ」問題とまったく同じ問題が発生します。アクティブなメモリに保持されるメタファイル情報が多すぎるため、メモリの負荷がかかっている場合に、キャッシュ機能にこのメモリの解放を許可する権限がありません。

serverfault.comページのWindows Server 2008 R2メタファイルのRAM使用状況でpowershellスクリプトを作成しました。これにより、メタファイルの最大アクティブメモリが適切な値に設定されます。残りはスタンバイメモリに移動され、通常のキャッシュ機能は適切に優先順位を付けることができます。Windows 7 x64とServer 2008 R2 x64には、どちらも1TBのメタファイルデータのデフォルトの最大アクティブメモリ制限があります。はいTBではなくTB。

現在、作業では、サーバーのすべてのサイトでそのスクリプトを実行して、サイトのバックアップを編成します。このバックアップは、毎日のバックアップサイクル中に何百万ものファイルを処理します。これらのバックアップサーバーは、メモリ負荷の高いJavaプログラム(VMware vSphere)、2つのSQLサーバー、および独自のSQLサーバーを備えたWSUSも実行します。バックアップソフトウェアは、最初にメタデータ(名前、サイズ、変更日、アクセス許可、属性など)を読み取って、バックアップするファイルのリストを決定します。そのリストを渡すと、メタファイルキャッシュが非常にすぐにいっぱいになります。わずか4GBのRAMで、すべてを上手く行っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.