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);
答
如果你想个人过程页面错误/秒,可以使用下面提及的查询。正如汉斯之前指出的那样,这个页面错误既困难又软弱。但是这些表格会经常更新,如果我没有错,perfmon也会显示相同的数据。
select * from Win32_PerfFormattedData_PerfProc_Process where NOT name = '_Total'
累积
select * from Win32_PerfFormattedData_PerfProc_Process where name = '_Total'
你能澄清你的软页面错误的含义是什么?它的一个术语往往有多种含义,取决于你问的对象。我会认为你的意思是类似于TLB的失误? – antiduh
您无法获得特定过程的严重故障。接下来最好的是[内存性能计数器](https://msdn.microsoft.com/en-us/library/gg590213%28v=vs.100%29.aspx)。页面错误是软+硬,页面读取很难。 –
感谢您的回复。硬页面错误:“当页面不在物理内存或进程创建的内存映射文件中时,会发生硬页面错误。”软页面错误“当页面驻留在内存中的其他位置时发生软页面错误。”我将继续使用我的代码,因为我想要整个服务器的页面错误。硬/软定义的来源是:https://blogs.technet.microsoft.com/askperf/2008/06/10/the-basics-of-page-faults/ – TrevorGoss