Jump to content
Калькуляторы

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

Есть многопроцессорный сервер (именно многопроцессорный с несколькими 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

 

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

 

Share this post


Link to post
Share on other sites

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

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

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

 

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

zbx_export_templates (2).xml

Share this post


Link to post
Share on other sites

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 или чего-то еще - сразу для всей ноды (всего процессора).

 

Share this post


Link to post
Share on other sites

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 

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

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.