2016-07-04 27 views
2

特定のプロセスのメモリがどれだけページアウトされたかを示すパフォーマンスカウンタはありますか?私は40GBの利用可能なRAM(128GBの物理メモリ)を持つサーバーを持っていますが、ページアウトされたデータ量は100GBを超えています。 巨大なページファイルをどのプロセスが処理しているかを知るにはどうすればよいですか?プロセスのどのくらいのメモリがページアウトされますか?

また、ページアウトの発生状況を確認するためにxperfをトレースすることもできます。しかし、ページファイルへの多くの書き込みとは別に、どのプロセスからメモリがページファイルに書き込まれているのかわかりません。

リファレンスセットトレースは、自分のプロセスの物理メモリ消費量がどれくらい大きいか分かります。しかし、それはページアウト活動を追跡していないようです。

更新 OSは、Xperfは中のWindows Server 2012 R2

+1

私はそれが事故であると確信していますが、オペレーティングシステムについて言及するのを忘れました。私はその答えを知っているわけではありません:) – Makketronix

答えて

1

ETWプロバイダ"Microsoft-Windows-Kernel-Memory"のキーワードは"KERNEL_MEM_KEYWORD_WS_SWAP""0x80")です。あなたがアクセスしたページ数などの一部のデータ(PagesProcessed)を得る。ここ

 <event value="4" symbol="WorkingSetOutSwapStart" version="0" task="WorkingSetOutSwap" opcode="win:Start" level="win:Informational" keywords="KERNEL_MEM_KEYWORD_WS_SWAP" template="WorkingSetOutSwapStartArgs"/> 
    <event value="4" symbol="WorkingSetOutSwapStart_V1" version="1" task="WorkingSetOutSwap" opcode="win:Start" level="win:Informational" keywords="KERNEL_MEM_KEYWORD_WS_SWAP" template="WorkingSetOutSwapStartArgs_V1"/> 
    <event value="5" symbol="WorkingSetOutSwapStop" version="0" task="WorkingSetOutSwap" opcode="win:Stop" level="win:Informational" keywords="KERNEL_MEM_KEYWORD_WS_SWAP" template="WorkingSetOutSwapStopArgs"/> 
    <event value="5" symbol="WorkingSetOutSwapStop_V1" version="1" task="WorkingSetOutSwap" opcode="win:Stop" level="win:Informational" keywords="KERNEL_MEM_KEYWORD_WS_SWAP" template="WorkingSetOutSwapStopArgs_V1"/> 
    <event value="6" symbol="WorkingSetInSwapStart" version="0" task="WorkingSetInSwap" opcode="win:Start" level="win:Informational" keywords="KERNEL_MEM_KEYWORD_WS_SWAP" template="WorkingSetOutSwapStartArgs"/> 
    <event value="6" symbol="WorkingSetInSwapStart_V1" version="1" task="WorkingSetInSwap" opcode="win:Start" level="win:Informational" keywords="KERNEL_MEM_KEYWORD_WS_SWAP" template="WorkingSetOutSwapStartArgs_V1"/> 
    <event value="7" symbol="WorkingSetInSwapStop" version="0" task="WorkingSetInSwap" opcode="win:Stop" level="win:Informational" keywords="KERNEL_MEM_KEYWORD_WS_SWAP" template="WorkingSetInSwapStopArgs"/> 

:ここでは、データがページアウトされているときに発生するいくつかのイベントがある/でページングそれに

<template tid="WorkingSetOutSwapStartArgs"> 
    <data name="ProcessId" inType="win:UInt32"/> 
</template> 
<template tid="WorkingSetOutSwapStopArgs"> 
    <data name="ProcessId" inType="win:UInt32"/> 
    <data name="Status" inType="win:HexInt32"/> 
    <data name="PagesProcessed" inType="win:UInt32"/> 
</template> 
<template tid="WorkingSetInSwapStopArgs"> 
    <data name="ProcessId" inType="win:UInt32"/> 
    <data name="Status" inType="win:HexInt32"/> 
</template> 
<template tid="WorkingSetOutSwapStartArgs_V1"> 
    <data name="ProcessId" inType="win:UInt32"/> 
    <data name="Flags" inType="win:HexInt32"/> 
</template> 
<template tid="WorkingSetOutSwapStopArgs_V1"> 
    <data name="ProcessId" inType="win:UInt32"/> 
    <data name="Status" inType="win:HexInt32"/> 
    <data name="PagesProcessed" inType="win:Pointer"/> 
    <data name="WriteCombinePagesProcessed" inType="win:Pointer"/> 
    <data name="UncachedPagesProcessed" inType="win:Pointer"/> 
    <data name="CleanPagesProcessed" inType="win:Pointer"/> 
</template> 

プレイしている場合必要なすべてのデータが含まれます。

+0

このプロバイダはうまく見えますが、スワップアウトイベントは、プロセスワーキングセットをスワップアウトするためにAPIコールを介して誰かが強制された場合にのみトリガされます。通常の作業セットトリムアクティビティは、このプロバイダによって記録されません。それでも、アプリケーション自体によってトリガされた少なくとも明示的なスワップアウトを追跡するのは良いヒントです。 –

0

であるあなたは、Hard Faultsを探したい - これはPage Faultのタイプですが、ページフォールトは、多くの場合、ドライブに触れることなく、ソフトウェアで処理できることに注意してください。タスクマネージャーに列を追加して、各プロセスのページフォルトを表示することができます。

https://technet.microsoft.com/en-us/sysinternals/vmmap.aspxのようなツールを使用すると、プロセスアドレススペース内の各メモリブロックとどのくらいコミットされたかを示すツールを使用して、プロセスに関する情報を得ることができます。しかし、それはページアウトできるコミットされたメモリであり、VirtualQueryEx()はそれについてあなたに言いません。

ページアウトされたメモリが大量であるとは必ずしも悪いことではないことも注目に値する - それは遅いハードフォルトだ。

編集:邪魔な一回限りのテストが必要な場合は、VirtualQueryEx()とReadProcessMemory()を組み合わせてプロセスのすべてのコミット済みページに触れるという面倒なオプションがあると思います。

+0

私はハードページの欠陥を知っています。これは、ページファイルからメモリ内のページングを行うためのものです。しかし、私はページファイルに何がプロセスからいつページアウトされるのかを知りたい。おそらく、誰かが作業セットを明示的にトリムし、後で彼のプロセスが非常に応答時間が長い理由を疑問に思うかもしれません。 –

+0

これは重要な情報です。私はこれをタスクマネージャーで、私のシステム*が過去にどれくらいのメモリ圧迫を受けていたかを示す指標として見たいと思います。 私が提供できる最適な近似は、ワーキングセットとコミットサイズを比較することですが、不一致はまだ触れられていないページから、またはイメージファイルにページアウトされているか、ページファイルにページアウトされている可能性がある。 ページアウトメモリは最終的には悪いことになります。 –

関連する問題