2016-04-28 7 views
1

Ich habe ein C# -Programm erstellt, das Server überwacht. Die Überwachung umfasst die Erfassung von Details zum Server, wie z. B. Speicherplatz, Speicherplatz usw.C# - Unterscheiden zwischen harten und weichen Seitenfehlern mit dem WMI

Dies wird mithilfe des WMI durchgeführt.

Ich überwache auch Seitenfehler für jeden Server.

Ich würde gerne wissen, ob es möglich ist, zwischen harten und weichen Seitenfehlern in C# zu unterscheiden?

Hier ist ein Schnitt des Codes verwende ich:

 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

Könnten Sie Ihre Bedeutung von weichen Seitenfehler klären? Es ist ein Begriff, der dazu neigt, mehrere Bedeutungen zu haben, je nachdem, wen Sie fragen. Ich nehme an, du meinst etwas wie TLB-Misses? – antiduh

+0

Sie können keine schweren Fehler für einen bestimmten Prozess erhalten. Die nächstbesten sind [die Speicherleistungszähler] (https://msdn.microsoft.com/en-us/library/gg590213%28v=vs.100%29.aspx). Seitenfehler sind weich + schwer, Seitenlesevorgänge sind schwer. –

+0

Danke für die Antworten. Harte Seitenfehler: "Harte Seitenfehler treten auf, wenn sich die Seite nicht im physischen Speicher oder in einer durch den Prozess erstellten Speicherabbilddatei befindet." Soft-Page-Fehler "Ein Soft-Page-Fehler tritt auf, wenn die Seite anderswo im Speicher resident ist." Ich werde mit dem Code fortfahren, den ich habe, weil ich Seitenfehler für den gesamten Server möchte. Meine Quelle für harte/weiche Definitionen ist: https://blogs.technet.microsoft.com/askperf/2008/06/10/the-basics-of-page-faults/ – TrevorGoss

Antwort

0

Wenn Sie einzelnen Prozess PageFaults/s versuchen, können Sie unten genannten Abfrage verwenden. Wie Hans bereits erwähnt hat, ist dieser PageFault sowohl hart als auch weich. Aber diese Tabellen werden ziemlich häufig aktualisiert, und wenn ich nicht falsch liege, zeigt perfmon auch dieselben Daten an.

select * from Win32_PerfFormattedData_PerfProc_Process where NOT name = '_Total' 

Für kumulative

select * from Win32_PerfFormattedData_PerfProc_Process where name = '_Total' 
Verwandte Themen