2016-04-28 14 views
1

サーバーを監視するC#プログラムを構築しました。監視には、メモリ容量、ディスク容量など、サーバーに関する詳細のキャプチャが含まれます。C# - WMIを使用してハードおよびソフトページフォールトを区別する

これはWMIを使用して行われます。

各サーバーのページフォルトも監視しています。

C#でハードとソフトのページフォールトを区別できるかどうか知りたいですか?

 var machine = "machine"; 

     // get the scope of the remote server 
     var scope = new ManagementScope(@"\\" + machine + @"\root\cimv2"); 

     // the query as a string 
     var queryString = "Select Name, ProcessId, PageFaults from win32_Process"; 

     // the query as an object 
     var query = new ObjectQuery(queryString); 

     // Run the query 
     var worker = new ManagementObjectSearcher(scope, query); 
     var results = worker.Get(); 

     pageFaults.WriteLine(machine); 

     // Enumerate around each item in the results query 
     foreach (ManagementObject item in results) 
     { 
      totalPages = totalPages + (int)(UInt32)item["PageFaults"]; 
     } 
     Console.WriteLine("Total pages = {0}", totalPages); 
     pageFaults.WriteLine("*{0}*",totalPages); 
+0

については

select * from Win32_PerfFormattedData_PerfProc_Process where NOT name = '_Total' 

あなたは、ソフトページフォールトのあなたの意味を明確にもらえますか?その言葉は、あなたが誰に尋ねるかによって複数の意味を持つ傾向があります。 TLBミスに似た何かを意味すると思いますか? – antiduh

+0

特定のプロセスに対してハードフォールトを取得することはできません。次はメモリパフォーマンスカウンタです(https://msdn.microsoft.com/en-us/library/gg590213%28v=vs.100%29.aspx)。ページフォルトはソフト+ハードですが、ページ読み取りは難しいです。 –

+0

応答していただきありがとうございます。ハード・ページ・フォルト:ハード・ページ・フォルトは、ページが物理メモリーまたはプロセスによって作成されたメモリー・マップ・ファイルにない場合に発生します。ソフトページフォールト "ソフトページフォールトは、ページがメモリ内の他の場所に常駐しているときに発生します。私はサーバー全体のページフォルトが必要なので、私が持っているコードを続行します。ハード/ソフト定義の私のソースは次のとおりです。https://blogs.technet.microsoft.com/askperf/2008/06/10/the-basics-of-page-faults/ – TrevorGoss

答えて

0

あなたは個々プロセスpagefaults /秒をしようとしている場合は、下記のクエリを使用することができます。ここでは

は、私が使用していたコードのカットです。ハンスが以前に指摘したように、このページフォールトはハード+ソフトです。しかし、これらのテーブルはかなり頻繁に更新され、私が間違っていない場合、 perfmonも同じデータを示しています。累積

select * from Win32_PerfFormattedData_PerfProc_Process where name = '_Total' 
関連する問題