NetXMS Support Forum

Russian Support => Общие вопросы => Topic started by: l_d on August 11, 2017, 05:10:49 PM

Title: Мониторинг загрузки процессора несколькими одноименными процессами (Решено)
Post by: l_d on August 11, 2017, 05:10:49 PM
День добрый!
Есть необходимость мониторить сервер 1С. Он запускает для работы 2-6 процессов с именем rphost.exe.
Если я пытаюсь мониторить количество занимаемой ими памяти через Process.WkSet(rphost.exe) то все работает вроде нормально, вижу общую занимаемую ими память(примерно прикинул, вроде сходится все), но когда пытаюсь посмотреть загрузку процессора через \Процесс(rphost)\% загруженности процессора ожидаемо получаю данные только по одному(видимо у кого PID меньше) процессу, знаю, что это вроде ограничение самой Windows и ее счетчиков производительности. Нет ли аналога этого счетчика в агенте NetXMS? Либо какого-то лайфхака как мониторить общую загрузку CPU этими процессами?
Title: Re: Мониторинг загрузки процессора несколькими одноименными процессами
Post by: Victor Kirhenshtein on August 11, 2017, 05:21:23 PM
Можно собирать Process.CPUTime(rphost.exe) - это даст общее время использованое всеми процессами с таким названием в миллисекундах. Затем в трансформации включить подсчет разницы (delta calculation), и добавить формулу пересчета в проценты:

return $1 * 100 / 60000;

(принимаем что собирается каждые 60 секунд, если чаще, то соответственно поменять интервал в формуле).
Title: Re: Мониторинг загрузки процессора несколькими одноименными процессами
Post by: l_d on August 11, 2017, 05:22:58 PM
Спасибо огромное за быстрый ответ, попробую это реализовать! Отпишусь по результату
Title: Re: Мониторинг загрузки процессора несколькими одноименными процессами
Post by: l_d on August 11, 2017, 05:32:44 PM
Возникли вопросы:
Title: Re: Мониторинг загрузки процессора несколькими одноименными процессами
Post by: Victor Kirhenshtein on August 11, 2017, 05:50:30 PM
Да, "simple delta". Можно еще выбрать "average per second" - тогда будет средняя загрузка за секунду - только делить в таком случае надо будет на 1000.

Это будет процент процессорного времени, затраченный на исполнение данного процесса. Так что по идее это та-же самая закрузка в процентах - просто когда она считается для системы в целом, то это процент процессорного времени, затраченный на исполнение всех процессов в системе.

Да, надо делить на 5000.
Title: Re: Мониторинг загрузки процессора несколькими одноименными процессами
Post by: l_d on August 15, 2017, 10:25:26 AM
Все сделал, как вы писали:
Process.CPUTime(rphost.exe)
Опрос раз в минуту
Simple Delta
return $1 * 100 / 60000;

Но вот вижу странные показатели сегодня, либо они не странные, а я просто не могу их правильно интерпретировать.
Значения больше 100, это как может быть?
Title: Re: Мониторинг загрузки процессора несколькими одноименными процессами
Post by: Victor Kirhenshtein on August 15, 2017, 02:04:39 PM
Это процент использованного процессорного времени - 100% это полная загрузка, т.е. процессор вообще не простаивал. Но если система многопроцессорная, то 100% это полная загрузка одного ядра - поскольку за каждый интервал времени максимальное кол-во потраченного процессорного времени будет кол-во ядер * период. Загрузка процессом 200% означает что процесс полностью использовал 2 ядра. Если хотите процент от общей мощности системы, то надо делить значение на кол-во процессоров.
Title: Re: Мониторинг загрузки процессора несколькими одноименными процессами
Post by: l_d on August 15, 2017, 02:15:41 PM
Ааа, вот теперь понятно, да выглядит логично, спасибо большое!