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

312
26 января 2017, 00:48

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

Answer 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");
    }
}
Answer 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()} + %");
}

Пример описание использования

Список категорий для процессов

READ ALSO
Почему строка имеет значение Null

Почему строка имеет значение Null

Есть некий класс с конструктором

344
Как вставить картинку в RichTextBox?

Как вставить картинку в RichTextBox?

Вставляются вместо картинки символы

588
Как вывести объекты из класса List

Как вывести объекты из класса List

Имею json такого вида (категории товаров) =

355
Посмотреть иерархию классов в Visual Studio

Посмотреть иерархию классов в Visual Studio

Как в VS можно в удобном виде посмотреть иерархию(Что от какого класса досталось и т п) в удобном виде?

609