- PR -

C# 物理メモリおよびスワップファイルの使用状況

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-12-01 06:18
 ところで、こんな検索はしてみました?
___________________________________________________________________
□ written by Jitta on 2005/11/30
□ Microsoft MVP for Visual Developer ASP/ASP.NET Oct.2005-Sept.2006
_________________
iStation
大ベテラン
会議室デビュー日: 2003/12/08
投稿数: 158
投稿日時: 2005-12-01 20:01
Myはいかがですか?
My.Computer.Info Object Members
http://msdn2.microsoft.com/en-us/library/ms172974.aspx
_________________
IEEE-CSDP 2004-2007
nanbu
大ベテラン
会議室デビュー日: 2004/08/19
投稿数: 178
投稿日時: 2005-12-02 02:00
引用:

ひろしさんの書き込み (2005-11-30 13:57) より:
ご回答ありがとうございます。
私なりに現在の理解度をまとめてみました。
アドバイスを宜しくお願いします。

ポイント
※WMIよりも高速な取得方法があれば、その方法を知りたい。
※正しい値がどこから取得できるか知りたい。
 (考え違いで誤った値を参照していないかも確認したい)




南部です。
「私なり」に回答してみました。

「API」は渋木宏明(ひどり)さんの投稿のとおりです。

★質問1-1
⇒API

★質問2-1
⇒API

★質問3-1
⇒Process.CurrentProcess.WorkingSet

★質問4-1
タスクマネージャのコミットチャージの合計?
⇒値がずれているのは、カーネルメモリ分?

★質問4-2
⇒API

★質問5-1
⇒Process.CurrentProcess.PagedMemorySize +
Process.CurrentProcess.PagedSystemMemorySize

★質問6-1
タスクマネージャのコミットチャージの
制限値-合計?
⇒OK

★質問6-2
⇒API

#んー、まるで自信ありません。
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2005-12-02 02:32
引用:
★質問6-1
タスクマネージャのコミットチャージの
制限値-合計?



これは、Paging 可能な Committed Byte を表しているだけで、
そのときの使用している Paging File の容量ではありません。

とりあえず、System Monitor では、Paging File %Usage が取得できるので
それから割り出せるかな〜と。

WMI 使うのであれば、Win32_PageFileUsage の
AllocatedBaseSize から CurrentUsage を引いてやればいいでしょう。
ひろし
ぬし
会議室デビュー日: 2002/09/16
投稿数: 390
お住まい・勤務地: 兵庫県
投稿日時: 2005-12-02 18:14
PerformanceCounterの情報源

ご回答ありがとうございます。
さっそくPerformanceCounterを試してみました。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpgenref/html/gngrfperformancecounters.asp

例題を動かして値を取得することはできたのですが、
PerformanceCounterの取得値についての情報源が不足しているため
応用が効きません。、CategoryNameと CounterNameの一覧は取得できますが、
InstanceNameの一覧を取得する方法が分からず、また、仮に一覧を取得できても、
値の解説記事が見つからないので困っています。宜しくお願いします。

質問1 PerformanceCounterのインスタンス名の一覧を知る方法は?

例えば、CategoryName = "Paging File" CounterName = "% Usage"の場合
InstanceName = "_total"が存在することをどうやって見つければ良いのでしょうか?
また、指定できるInstanceNamの一覧を出力するにはどうすれば良いでしょうか?

質問2 ページングファイルの使用率はパーセントの1000倍が返されるのですか?
例えば、CategoryName = "Paging File" CounterName = "% Usage"
InstanceName = "_total""のRawValue → 17309 が返された場合、
使用率1=17.309%の解釈で正しいでしょうか?

質問3 PerformanceConterの取得できる値の意味を解説したドキュメントの場所が不明です。
例えば、CategoryName = "Paging File" CounterName = "% Usage"
InstanceName = "_total"のRawValueはページングファイルの使用率であるという
記載はどこにあるでしょうか?
ジブ
大ベテラン
会議室デビュー日: 2005/09/22
投稿数: 135
投稿日時: 2005-12-02 23:08
引用:

ひろしさんの書き込み (2005-12-02 18:14) より:

質問1 PerformanceCounterのインスタンス名の一覧を知る方法は?




私はコントロールパネルのパフォーマンスモニターを参照しました。

引用:

質問2 ページングファイルの使用率はパーセントの1000倍が返されるのですか?


あれ、そのままパーセントで返ってませんか?
コード:
myCounterPagingFile.NextValue().ToString() 


の部分です。

ProcessのCPU使用率は自前で計算したので1000倍して10で割っていますが、単に小数点一桁の百分率にしたものです。

引用:

質問3 PerformanceConterの取得できる値の意味を解説したドキュメントの場所が不明です。



これは私もわかりません。ごめんなさい。
パフォーマンスモニターの使い方のドキュメントを探したら見つかるのかもしれません。
ひろし
ぬし
会議室デビュー日: 2002/09/16
投稿数: 390
お住まい・勤務地: 兵庫県
投稿日時: 2005-12-05 19:27
ご回答ありがとうございます。
パフォーマンスモニターで期待通りの値を取得できるようになりました。
パーセント値もきちんと計算できることが確認できました。

スキルアップ/キャリアアップ(JOB@IT)