Страницы

Поиск по вопросам

воскресенье, 8 марта 2020 г.

Получить счетчики производительности

#c_sharp #производительность #счетчики #мониторинг


Мне необходимо получить данные системы как в мониторинге ресурсов Windows. А именно
работу каждого процесса с файлами и статистику. Данные из верхней таблице нашел через
GetPidIoCounters и структуру IO_COUNTERS а вот данные из нижней сетки не получается.


    


Ответы

Ответ 1



1) Через WMI, класс Win32_Process, как с ним работать написано тут и тут 2) Через PerformanceCounter void Main() { Process p = Process.GetProcesses()[0]; PerformanceCounter ramCounter = new PerformanceCounter("Process", "Working Set", p.ProcessName); PerformanceCounter cpuCounter = new PerformanceCounter("Process", "% Processor Time", p.ProcessName); PerformanceCounter privateCounter = new PerformanceCounter("Process", "Private Bytes", p.ProcessName); while (true) { Thread.Sleep(1000); double ram = ramCounter.NextValue(); double cpu = cpuCounter.NextValue(); double privateBytes = privateCounter.NextValue(); Console.WriteLine("RAM: "+(ram/1024/1024)+" MB; CPU: "+(cpu)+" %; " + privateBytes/1024/1024 + " MB"); } }

Ответ 2



Вам нужен класс PerfomanceCounter: Примерно так будет: foreach(var process in Process.GetProcesses()) { PerformanceCounter pcRead = new PerformanceCounter("Process", "IO Write Bytes/sec", process.ProcessName); PerformanceCounter pcWrite = new PerformanceCounter("Process", "IO Read Bytes/sec", process.ProcessName); Console.WriteLine($"Read: {pcRead.NextValue()} + %"); Console.WriteLine($"Write: {pcWrite.NextValue()} + %"); } Пример описание использования Список категорий для процессов

Комментариев нет:

Отправить комментарий