C# - 使用WMI区分硬和软页面错误

问题描述:

我构建了一个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

你能澄清你的软页面错误的含义是什么?它的一个术语往往有多种含义,取决于你问的对象。我会认为你的意思是类似于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

如果你想个人过程页面错误/秒,可以使用下面提及的查询。正如汉斯之前指出的那样,这个页面错误既困难又软弱。但是这些表格会经常更新,如果我没有错,perfmon也会显示相同的数据。

select * from Win32_PerfFormattedData_PerfProc_Process where NOT name = '_Total' 

累积

select * from Win32_PerfFormattedData_PerfProc_Process where name = '_Total'