トップ回答者
ページプールが徐々に増え続ける

質問
-
こんにちは。64bit版を4GBの物理RAM(スワップは10GBで設定)で運用しています。
「利用可能メモリ」が徐々に減っていく原因を調べていくにつれ、どうやらページプールの領域もまた、増えていっていることが判明しました。
そして、poolmon.exeというツールの存在を知り、以下のような出力が確認できています。
ページプールというのは「いつかは書き出される情報」であり、使用可能メモリを逼迫するような存在ではない(あってはならない)はずだと思っていたのですが、それが正しいとなると、これは、「メモリリークが発生している」と疑うに足りる事象でしょうか。
(なお、非ページプールはこういった上昇傾向はみられません)
2015年9月2日 2:15
回答
-
チャブーンです。
メモリリークについては、ページプールについても通常の考え方と一緒という認識です。つまり断続的に増え続けていれば、メモリリークの可能性はあるでしょう。
で、ページプールの場合「Tag」から実際に呼び出されているドライバ、機能を紐づけることで追跡する必要があります。ただ、もし「FSel」が疑わしいと思っている場合、これはWindowsコンポーネントに起因するTagのため、(サードパーティのドライバとは異なり)判断については慎重に行った方がいいのではないでしょうか?
http://blogs.technet.com/b/yongrhee/archive/2009/06/24/pool-tag-list.aspx
一般にpoolmonをつかったデバッグについては、基礎知識が必要かと思います。したのページを読んでいただけると、ある程度はわかるのではないでしょうか?
https://technet.microsoft.com/ja-jp/windows/mark_03.aspx
http://blogs.msdn.com/b/ntdebugging/archive/2012/08/30/troubleshooting-pool-leaks-part-2-poolmon.aspx
http://blogs.msdn.com/b/ntdebugging/archive/2012/08/31/troubleshooting-pool-leaks-part-3-debugging.aspxフォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 回答としてマーク 佐伯玲 2015年9月2日 8:33
2015年9月2日 3:11
すべての返信
-
チャブーンです。
メモリリークについては、ページプールについても通常の考え方と一緒という認識です。つまり断続的に増え続けていれば、メモリリークの可能性はあるでしょう。
で、ページプールの場合「Tag」から実際に呼び出されているドライバ、機能を紐づけることで追跡する必要があります。ただ、もし「FSel」が疑わしいと思っている場合、これはWindowsコンポーネントに起因するTagのため、(サードパーティのドライバとは異なり)判断については慎重に行った方がいいのではないでしょうか?
http://blogs.technet.com/b/yongrhee/archive/2009/06/24/pool-tag-list.aspx
一般にpoolmonをつかったデバッグについては、基礎知識が必要かと思います。したのページを読んでいただけると、ある程度はわかるのではないでしょうか?
https://technet.microsoft.com/ja-jp/windows/mark_03.aspx
http://blogs.msdn.com/b/ntdebugging/archive/2012/08/30/troubleshooting-pool-leaks-part-2-poolmon.aspx
http://blogs.msdn.com/b/ntdebugging/archive/2012/08/31/troubleshooting-pool-leaks-part-3-debugging.aspxフォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 回答としてマーク 佐伯玲 2015年9月2日 8:33
2015年9月2日 3:11 -
推測となりますが・・・・
タグの説明のページで、
"FSel - nt!fsrtl - File System Run Time Extra Create Parameter List"
という説明になっているので、以下のOS内部関数を呼び出すことで割り当てられたメモリではないかと推測します。FltAllocateExtraCreateParameterList routine
https://msdn.microsoft.com/ja-jp/library/ff541741%28v=vs.85%29.aspx上記関数は、ファイルシステムミニフィルタードライバー向けに提供されている関数ですので、サードパーティ製のドライバから呼び出している可能性もあると思います。(OS付属のドライバが呼んでいる可能性もありますけども・・・) また、上記関数を呼び出して割り当てたメモリは、ドライバ作成者がメモリ解放用の関数を呼び出して解放する必要がありますので、サードパーティ製ドライバが解放処理を怠っているとメモリリークする可能性はあるのではないかと思います。
一般的にサードパーティ製ソフトでファイルシステムフィルタードライバをインストールするのは、バックアップソフト、アンチウイルスソフト、レプリケーションソフト、暗号化ソフト、ファイル操作の監視ソフト、のようなものだと思うので、そのようなソフトをインストール済みでしたら、1つずつアンインストールして、しばらくFSelタグのメモリーが増加するかどうか様子を見て、増加するなら別のソフトをアンインストールする、という手順で問題の切り分けをしてみてはどうかと思います。
なお、現在どのようなミニフィルタードライバがインストールされているかはfltmcコマンドで一覧できますが、一覧表示された名前だけ見てもOS付属のドライバかサードパーティ製ドライバか区別はしづらいとは思います
- 編集済み h-yamasaki 2015年9月2日 12:06
- 回答の候補に設定 佐伯玲 2015年9月3日 1:02
2015年9月2日 12:04 -
チャブーンです。
h-yamasakiさん、情報ありがとうございます。こちらが勉強になりました。
試しにWDKをインストールして実際に動作させてみましたが、fltmcでドライバをt特定するのは確かに大変そうです。
fltmcコマンドでのフィルタドライバ名から、その素性を確認する方法ですが、msinfo32(システム情報)の[ソフトウェア環境]-[システムドライバー]から「ファイルシステムドライバー」をソートすることで、説明からある程度はわかるかもしれませんね。
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
2015年9月3日 10:14