Windows Server 2008 R2でメタファイルによる高メモリ使用量を解消する方法
Windows Server 2008 R2が稼働するファイルサーバーの1台で、RAM使用率が異常に高くなり、サーバーやアプリケーションのパフォーマンスに問題が発生する事象に遭遇しました。調査の結果、原因はファイルシステムのメタデータを格納するシステムファイルキャッシュによってメモリが占有されていたことにあると判明しました。この問題は、ユーザーからアクセスされる大量のファイルを扱うすべてのファイルサーバーで発生する可能性があります。特にx64版のWindowsでは深刻で、メモリ上のメタファイルサイズが実装RAMのほぼ全体にまで拡大することがあります。
Windowsファイルサーバーでの高RAM使用率
この問題は次のような症状として現れます。タスクマネージャーを見ると、物理メモリが95〜99%も使用されています。

ところが、プロセスタブを確認しても、異常に大量のメモリを消費しているプロセスは存在しません。さらに、全プロセスのメモリ使用量を合計しても、サーバーに搭載されている物理メモリの50%にも届きません。では、いったい何がメモリを食いつぶしているのでしょうか?

実際のRAM使用状況は、Mark Russinovich氏作成の小さなユーティリティ「RAMMap」を使えば確認できます。アーカイブをダウンロードし、管理者権限でRAMMap.exeを実行してください。[Use Counts]タブを見ると、Metafile(メタファイル)が最大量のRAMを使用していることがわかります(今回のケースでは、サーバーの25GBのRAMのうち11GBをメタファイルが消費していました)。

Windowsにおけるメタファイルとは?
メタファイルとは、NTFSのメタデータを含むシステムキャッシュの一部であり、ファイルシステムへのアクセス性能を向上させるために使われています。NTFSメタデータには、MFT(Master File Table:マスターファイルテーブル)の情報が含まれます。ユーザーがアクセスした各ファイルやフォルダに対して、少なくとも1KBのブロック(各ファイルの属性レコードは1KB、各ファイルは最低1つの属性を持つ)がメタファイル内に作成されます。そのため、大量のファイルを扱うファイルサーバーでは、メタファイル(NTFSキャッシュ)のサイズが数十GBを超えることもあり得ます。
このキャッシュを無効化したり、Windowsの標準機能で制御したりすることはできません。対策としてはサーバーのメモリを増設する方法もありますが、常に可能とは限りません。
メモリを解放するためにサーバーを再起動することもできますが、しばらくするとメモリ上のメタファイルサイズは再び急激に増大していきます。
なお、MFTのサイズはRussinovich氏のもうひとつのツール「ntfsinfo」を使って概算できます。今回のケースでは、2TBのディスク上のMFTサイズは13GBでした。

メタファイルを手軽にクリアする方法
RAMMapを使えば、サーバーを再起動することなく、MFTのゴミで占有されたメモリを素早く解放できます。手順は、メニューから[Empty]→[Empty System Working Set]を選択するだけです。

この操作により、メモリ上のメタファイルサイズは数十分の一に縮小し、RAM使用率は95%から26%まで低下しました。

ただし、この方法の主な欠点は、クリア作業が手動であり、自動化できないという点です。
Dynamic Cache Serviceによるファイルキャッシュ管理
ファイルシステムのメタファイルによる高メモリ負荷への、より根本的なもうひとつの解決策が、Dynamic Cache Service(DynCache)(https://www.microsoft.com/en-us/download/details.aspx?id=9258)の導入です。このサービスは、システムAPIを使ってMFTキャッシュに割り当てるパラメータを管理できるようにします。
重要: このソリューションは、前述の問題が実際に発生している場合にのみ使用してください。このサービスのインストールは、サーバー上の高メモリ使用量の他の原因に対する万能な解決策ではありません。
DynCacheのインストールは比較的簡単です(アーカイブ内に詳細な手順書が同梱されています)。
- ファイルDynCache.exeを%SystemRoot%\System32フォルダにコピーします
- 次のコマンドでDynCacheサービスを作成します:
sc create DynCache binpath= %SystemRoot%\System32\DynCache.exe start= auto type= own DisplayName= "Dynamic Cache Service"
- DynCache.regをレジストリにインポートします(デフォルト値が含まれています)
- 次のレジストリキーの値を変更します:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters
- MaxSystemCacheMBytes:4096(10進数)—— キャッシュの最大サイズ(MB)
- MinSystemCacheMBytes:100(10進数)—— キャッシュの最小サイズ(MB)

注: これらおよびその他のDynCacheサービスの設定値は、搭載RAMの容量、サーバーの負荷、必要なパフォーマンスなどに応じて編集する必要があります。一般的に、キャッシュサイズはサーバーに搭載された物理RAMの半分以下に設定することが推奨されます。変更後、DynCacheの再起動は不要です。すべての変更は動的に適用されるためです。
- 次のコマンドでサービスを開始します:
sc start DynCache
今回のケースでは、DynCacheサービスの導入後、メタファイルによるメモリ使用量が設定した4GBを超えることはなくなりました。また、ファイルサーバーに関するパフォーマンスの問題についても、ユーザーからの報告はありません。
-
Windows 10でIAStorDataSvcによるCPU使用率の高騰を解決する6つの方法
パソコンには、CPUやメモリを大量に消費するプロセスが数多く存在します。こうしたプロセスが原因で、アプリやソフトウェアが頻繁にクラッシュしたり、パソコン全体の動作が遅くなったりすることがあります。 一見すると無害に見えるプロセスでも、実は内部の不具合がトラブルの引き金になっているケースが少なくありません。その代表例が「IAStorDataSvc」です。このプロセス自体は悪意のあるものではありませんが、場合によってはCPUリソースを大量に消費し、パフォーマンス低下を招くことがあります。本記事では、IAStorDataSvcを無効化する方法やその他の対策について詳しく解説します。 IAStorDa
-
Windows 10でGoogle Chromeのメモリ使用量が高いときの対処法|RAM消費を減らす9つの方法
Google Chromeは、シンプルでクリーンな操作性により快適で安全なブラウジング体験を提供することで人気を集める、世界で最も利用されているWebブラウザの一つです。しかし、Chromeに対する最大の不満として挙げられるのが「システムメモリ(RAM)を大量に消費する」という点です。メモリを大量に消費すると、Chrome本体だけでなくWindows 10パソコン全体の動作が遅くなり、ユーザー体験全体に悪影響を及ぼします。この記事では、Chromeのメモリ使用量を削減し、Windows 10でのRAM消費を抑えるための実用的な対処法を紹介します。 Chromeが大量のメモリを使用する理由は?