Как отследить загрузку процессора?

125
20 мая 2019, 17:00

Требуется создать аналог диспетчера задач. Использование цп процессами отслеживаю с помощью PerformanceCounter. Нашел на сайте microsoft пример и попытался адаптировать со своим классом для инкапсуляции свойств процесса и данных о CPU в одном объекте.

class MyProcess : IDisposable
{
    private Process process { get; set; }
    private PerformanceCounter performance;
    ...
    public float CPUusage { get { return performance.NextValue(); } }
    public MyProcess(Process process)
    {
        this.process = process;
        performance = new PerformanceCounter("Process", "% Processor Time", process.ProcessName, true);
    }
    public void Dispose()
    {
        performance.Dispose();
    }
}

При отображении заметил что сумарно используется больше 100%. Также при закрытии одного из процессов мое свойство(CPUusage ) выкидывает исключение которое я не могу отловить в коде. Листинг кода отображения перегружен ради табличного стиля, он по сути он неотличим от того что в примере.

Помогите понять как получить нагрузку на процессор конкретным процессом.

Answer 1

Т.к. счетчик \Process(…)\% Processor Time показывает N*100 нагрузки, где N - кол-во ядер процессора, то чтобы использовать усредненную загрузку по всем ядрам нужно использовать счетчик \Processor(…)\% Processor Time:

Подробнее здесь.

READ ALSO
Хранение изображения 16x16px в base64, в базе данных

Хранение изображения 16x16px в base64, в базе данных

При загрузке изображения генерирую очень маленькую, заблюренную превьюшку размером 16x16, конвертирую в base64 и сохраняю в базе данных в поле...

139
Yii2 Ajax возвращает всю страницу

Yii2 Ajax возвращает всю страницу

Есть карточка товара, по клику на заказ которой передаю ajax запрос на экшн контроллера, где хочу производить обработку данныхНо ajax при любом...

124
Есть ли решение замены путей Windows на пути Linux?

Есть ли решение замены путей Windows на пути Linux?

Попался древний проект на Windows хостинге, где все пути прописаны хардкодом "common/js/jsjs"

153
Вывод определенной записи

Вывод определенной записи

Есть 100 записейКак вывести записи я знаю, но как вывести актуальную на первое место к пример запись с id 55, а дальше по плану 1,2,3 и т

148