2016-06-24 18 views
0

現在実行中のプロセスを監視するアプリケーションを作成しました。"Process"カテゴリのどのPerformanceCounterがプロセスのインスタンスのメモリサイズを返しますか?

次のスニペットでは、すべてのインスタンスを「プロセス」カテゴリに入れています。

var category = new PerformanceCounterCategory("Process"); 
    var instanceNames = category.GetInstanceNames(); 

少し後で、すべてのカテゴリが1つのインスタンスになります。 このように見えます。

var counters = category.GetCounters(instanse); 

このカテゴリのevryインスタンスには28個のカウンタが含まれています。 カウンターの一覧の下にあります。

%プロセッサ時間
%ユーザ時間
%特権時間
仮想バイトピーク
仮想バイト
ページフォルト/秒
ワーキングセットのピーク
ワーキングセット
ページファイルバイトピーク
ページファイルバイト
プライベートバイト
スレッド数
優先度ベース
経過時間
IDプロセス
作成プロセスID
プールページバイト
プール非ページバイト
ハンドルカウント
IO読み取り操作/秒
IO書き込み操作/秒
IOデータ操作/秒
IOその他の操作/秒
IO読み取りバイト数/秒
IO Wr ITEバイト/秒
IOデータバイト/秒
IOその他のバイト/秒
ワーキングセット - プライベート

そこで質問。現在のインスタンスによってバスされるメモリに関する情報を提供するカウンタはどれですか?
私はそれは簡単な質問だと思いますが、私は答えを見つけることができません。誰かが教えてくれたら、私は感謝しています。

私たちは、この "ワーキングセット" と仮定した場合:

ProcessNameの:SkypeC2CPNRSvc |プロセスID:2500プロセス:
グループ:プロセス|プロセス:SkypeC2CPNRSvc |名前:ワーキングセット|値:311296

この値は次のように計算されます、タスクmanakerでprfc.NextValue()/ 1024
このプロセスのために、私は316K

+0

おそらく「ワーキングセット」ですか? (全面的にhttps://en.wikipedia.org/wiki/Working_setに基づいています) –

答えて

1

"ワーキングセット" を参照してください。 "ワーキングセット - プライベート"と "プライベートバイト"はすべて、現在のプロセスで使用されているメモリを記述するカウンタです。

あなたは違いの良い議論のために、このリンクを見ることができます:

What is private bytes, virtual bytes, working set?

0

私はRealtime Sessionを開始し、keyworkの0x40の(KERNEL_MEM_KEYWORD_MEMINFO_EX)とプロバイダMicrosoft-Windows-Kernel-Memoryを有効にするには、TraceEventを使用します。

今、Windowsは、それらのデータを持つすべての0.5秒とイベントが発生します。

Count, ProcessID, WorkingSetPageCount, CommitPageCount, VirtualSizeInPages, PrivateWorkingSetPageCount 

は、あなたがそれらを必要とする方法でそれらを解析します。

関連する問題