Перейти к содержимому
Калькуляторы

Мониторинг нагрузки по каждому процессору

Есть многопроцессорный сервер (именно многопроцессорный с несколькими NUMA nodes).
Хочется для некоторых процессов делать cpu pinning (affinity) на разные процессоры и привязывать туда же память для увеличения пиковой производительности отдельного приложения.

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

Ручной мониторинг загрузки CPU и MEM на отдельных нодах через top и numastat не подходит.

 

Стандартные OID измеряют суммарную загрузку - если у меня на 4-х процессорном сервере в мониторинге показывается 25% нагрузки, то это может означать как нормальную ситуацию, так и проблему, что один процессор используется в полку, а остальные простаивают.

 

                percentage of user CPU time:    .1.3.6.1.4.1.2021.11.9.0
                percentages of system CPU time: .1.3.6.1.4.1.2021.11.10.0
                percentages of idle CPU time:   .1.3.6.1.4.1.2021.11.11.0
                Total RAM used:                  .1.3.6.1.4.1.2021.4.6.0
                Total RAM Free:                   .1.3.6.1.4.1.2021.4.11.0

 

Какие будут предложения по автоматизации мониторинга?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

37 минут назад, nwton сказал:

Стандартные OID

ТС, ты ОС обозначить забыл/забил. Нума, она много в где есть.

 

Да, и стандартные ДЛЯ ЧЕГО? Что есть твой SNMP агент?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Задача решается очень легко с помощью zabbix-агента+zabbix-сервера

 

Шаблон на 16 ядре в аттаче, если у вас меньше/больше, то подправьте по аналогии (для 4ёх ядерного удалите item-ы для cpu id#4-15

 

Будет отрисовываться график по формуле 100-загрузка (т.е. по факту рисуется idle)

zbx_export_templates (2).xml

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

19 hours ago, snvoronkov said:

ТС, ты ОС обозначить забыл/забил. Нума, она много в где есть.

 

Да, и стандартные ДЛЯ ЧЕГО? Что есть твой SNMP агент?

Исправляюсь - система Linux Ubuntu 14.04/16.04 с штатным ядром (минимально 4.4 и до 4.15)

SNMP агент - snmpd из штатных репозиториев, в параллель еще zabbix-agent.
Что-нибудь добавить\заменить предложите?


По SNMP в данный момент размышляю над OID с утилизацией по каждому ядру и потом суммировать, но это проще будет решить сразу через zabbix agent, а не дёргать snmp несколько раз, особенно с учётом того, что индексы могут измениться, но хочется целиком загрузку со всего процессора получать из одного OID - если такой есть.
HOST-RESOURCES-MIB::hrProcessorLoad (.1.3.6.1.2.1.25.3.3.1.2)
HOST-RESOURCES-MIB::hrDeviceIndex (.1.3.6.1.2.1.25.3.2.1.1)
HOST-RESOURCES-MIB::hrDeviceDescr (.1.3.6.1.2.1.25.3.2.1.3)

 

 

5 hours ago, s.lobanov said:

Шаблон на 16 ядре в аттаче

Спасибо, как раз и думал в сторону суммирования использования каждого ядра system.cpu.util[N,idle] где N от 0 до 15 для первого процессора и N от 16 до 31 для второго процессора (и далее для всех остальных процессоров, и HT ядра если есть можно добавить сюда же) и выводить графики для каждого из процессоров отдельно, но может есть что-то еще в мониторинге zabbix agent или snmp или чего-то еще - сразу для всей ноды (всего процессора).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1. cat /proc/stat + скрипт, который обработает статистику

2. collectd+grafana 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

On 31.07.2018 at 8:32 AM, s.lobanov said:

Задача решается очень легко с помощью zabbix-агента+zabbix-сервера

Шаблон на 16 ядре в аттаче

Вопрос к знатокам zabbix - как можно реализовать автоматизацию шаблонов в зависимости от количества ядер на хосте?
Можно ли реализовать два calculated item на system.cpu.util[N,idle] где N от 0 до 15 для первого процессора и N от 16 до 31 - если мы получили system.cpu.num равное 32 - хотелось бы сделать циклом суммирование, но в zabbix такого нет? Или можно как-то назначить определенный темплейт на хост или выбирать один из доступных item в зависимости от значения system.cpu.num?
Хочется красивости, а то текущий вариант не очень радует глаз. Настроил для каждого хоста сбор system.cpu.util каждого ядра через discovery LLD, дальше сделал нескольких шаблонов (для каждого процессора свой шаблон по количеству ядер) - организовал через calculated item подсчет суммы cpu.util для всех ядер именно этого процессора, дальше одинаковые для всех темплейтов отрисовка графиков и отправка алертов. Но для меня навешивание разных темплейтов в зависимости от процессора на хосте выглядит некрасиво, хочется объединить и автоматизировать их создание.

У меня Zabbix 3.0 и 3.4.

 

Quote

collectd+grafana 

Графики красивые, но алертинг из графаны?? 
"шеф, у вас один из процессоров перегружен, а остальные простаивают"
И намекните, как там сделать автоматизацию суммирования отдельных ядер по процессорам и шаблонизирования? По графане я совсем новичок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.