1

サーバーを監視する C# プログラムを作成しました。監視には、メモリ容量、ディスク容量など、サーバーに関する詳細のキャプチャが含まれます。

これは、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);
4

1 に答える 1

0

個々のプロセス pagefaults/sec を試している場合は、以下のクエリを使用できます。Hans が以前に指摘したように、このページフォールトはハードとソフトの両方です。しかし、これらのテーブルは頻繁に更新されます。私の間違いでなければ、perfmonにも同じデータが表示されます。

select * from Win32_PerfFormattedData_PerfProc_Process where NOT name = '_Total'

累積用

select * from Win32_PerfFormattedData_PerfProc_Process where name = '_Total'
于 2016-04-28T18:41:54.023 に答える