Нагрузка CPU

День добрый!
прошу подсказать по нагрузке CPU на WB6
установлен 2 шт, и на обоих все время ругается Zabbix

общая картина загрузки такая

извиняюсь, как только собрался заскриншотить, так сразу нагрузка упала, но пропорции всегда примерно такие

тут в теме писали, что можно десятые убрать от напряжения например, и нагрузка снизится
(правда там писали про проблему с iowait, у меня такой проблемы нет)
подскажите, может можно десятые еще где убрать?
например в мощности и токах на MAP-ах, на датчиках температуры и т.п.

В теме, о которой говорили - нагрузхка была на базу, то есть на дисковую подсистему. У вас - работают скрипты, кстати, нет ли циклов в них?
Судя по картинке - запущено несколько процессов wb-rules.
Что в /var/run/wb-rules.pid?
Попробуйте остановить сервис штатно, с помощью systemctl. Все закроюtся?

что касаемо скриптов и правил, то там еще ничего не добавлял, состояние как после покупки
сервис попробую остановить

попробовал на пустом WB6 подключить WB-MS v.2 и WB-MAP12, сравнил как они грузят проц.
в общем WB-MS, грузит за как MAP12, надо бы там что-то подкрутить …

Если хотите “освободить” ресурсы (зачем?) - то советую увеличить период опроса устройств.

так на рабочих WB6 подключено по нескольку MAP12 и по нескольку WB-MS
и постоянно срабатывает триггер в заббиксе - загрузка проца постоянно около 2,5 ядра (при наличии одного), вот графика загрузки проца рабочего контроллера:

вот пустого:

ему и пустому то не просто, хотелось бы чтоб выше 2,5 не прыгал

так на рабочих WB6 подключено по нескольку MAP12 и по нескольку WB-MS
и постоянно срабатывает триггер в заббиксе - загрузка проца постоянно около 2,5 ядра (при наличии одного)
опрос увеличил, на одном до 50 мс, на другом до 100

load average не так работает же. Насколько я понимаю, если load average < num_cpu, то с производительностью проблем нет. Если больше, то повод разбираться.

Wiren Board 6 вообще сбрасывает частоту процессора при простое в 4 раза, поэтому там и load average, и процентики загрузки CPU могут оставаться одинаковыми при одинаковой нагрузке.

постоянно около или больше 2-х

lscpu текущую частоту не показывает, как ее посмотреть на WB6?

Хорошая статья про нагрузку процессора в Linux.

Основые выводы:

Теперь самое время дать ответы на вопросы, поставленные нами в начале статьи: "Много это или мало? Хорошо или плохо? " Для одного ядра мы считаем приемлемыми следующие значения:

  • LA 1 - может превышать 1.00, свидетельствуя о кратковременной пиковой нагрузке на систему.
  • LA 5 - не должен превышать 1.00, в противном случае налицо явный недостаток вычислительных ресурсов.
  • LA 15 - максимальное значение 0.7 - 0.8, но в любом случае не выше 1.0, в противном случае вы можете получить в три часа ночи звонок от руководства с вопросом: " А что это с нашим сервером???"

ИМХО правильнее оценивать по idle-загрузке в top. 100 - idle даст загрузку в % в реальный момент. У меня LA тоже меньше 2х никогда не опускается, хотя в idle 30-40%, т.е. загрузка около 60-70%

1 симпатия

через стандартный ядерный интерфейс, как и в любом линуксе.

cat /sys/bus/cpu/devices/cpu0/cpufreq/cpuinfo_cur_freq

Можете ещё сделать

echo performance >  /sys/bus/cpu/devices/cpu0/cpufreq/scaling_governor 

и тогда частота не будет уменьшаться, всегда будет максимальной. До перезагрузки, естественно.

посмотрел частоту, ничего особо не увидел
на нагруженных прыгает в основном, в пределах - 396-792, на пустом в основном - 198-396
количественно оценить на глаз сложно

постоянно в топе по загрузке процессора (на 1-3 месте) процесс - wb-rules
на всех контроллерах, я еще никаких правил не писал, конфигурация правил стандартная - “из коробки”
может там чего-нибудь поправить можно?

смотрел частоту на пустом контроллере, запустил watch с частотой обновления - 0,2 сек, это дало вот такой скачок на графике cpu.util
watch

на загруженных контроллерах, этот график постоянно в районе 50%, там таких скачков при запуске watch нет, только горка небольшая в 5%

зафиксировал частоту CPU на максимуме, на одном из загруженных контроллеров, загрузка CPU упала на 20% примерно, температура не растет
нагрузка на дисковую подсистему не изменилась

ну вот то, что процессор сбрасывает частоту от простоя плохо сочетается с тем, что ресурсов не хватает.

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

вот график CPU utilization заббикса, три графика
зеленый - обновленный контроллер, до и после обновления
красный - нагруженный контроллер, без обновлений последних
синий - пустой контроллер

и в обновленном контроллере частота уперлась в максимум и не меняется, без всяких доп настроек (при значении по умолчанию в scaling_governor - ondemand)

так же стал выскакивать чаще тригер “mmcblk0: Disk read/write request responses are too high”

после обновления стало тормозить получение параметров по mqtt.value очень сильно
вот пример (P Ch1 MAP12)


и у меня все параметры со счетчиков сразу стали “рваными”, трудно читаемыми
никаких изменений, кроме обновления, не было
нагрузка на контроллер по количеству запусков в сек mqtt.value (в качестве параметра в заббикс агенте), такая:
с частотой запуска 10 сек - 2 параметра
30 сек - 41 параметр
2 мин - 4 параметра
5 мин - 14 параметров
30 мин - 6 пар.
1 час - 1 пар.
2 ч - 6 пар
6 ч -6 пар
итого около 1,7 запуска mqtt.value в секунду, до обновления справлялся на отлично

Добрый день!

А как у вас данные попадают в Zabbix? Через вызов mosquitto_sub агентом на каждый параметр?

Нужно сделать две вещи:

  1. Прислать нам логи, посмотрим, нет ли ошибок обмена

  2. Как-то понять, с какой частотой нужные сообщения (P Ch1) приходят на уровне MQTT. Это можно сделать, например запустив в консоли

    mosquitto_sub -v топик | ts

Сделайте ещё пожалуйста пункт 3 из этого сообщения: Существенное увеличение нагрузки после обновления до последних версий, в частности wb-mqtt-serial - #6 от пользователя PeteK

пункт 3 выполнил, обновление поставил, после этого обновления версии такие:
wb-mqtt-serial/stretch,stretch,now 2.11.0~feature+less-logs+17+d3de92e armhf [установлен]
Wiren Board Smart Home MQTT serial protocol driver.

wb-mqtt-serial-dbgsym/stretch,stretch 1.41.1 armhf
  Debug symbols for wb-mqtt-serial

обратил внимание на ошибки в статусе сервиса:
апр 16 09:43:58 wirenboard-AIZ2ODPK wb-mqtt-serial[17036]: WARNING: [modbus] failed to read 2 input(s) @ 4248 of device modbus:38: Serial protocol error: request timed out
апр 16 09:44:38 wirenboard-AIZ2ODPK wb-mqtt-serial[17036]: WARNING: [modbus] failed to read 2 input(s) @ 4248 of device modbus:60: Serial protocol error: request timed out
апр 16 09:47:09 wirenboard-AIZ2ODPK wb-mqtt-serial[17036]: WARNING: [modbus] failed to read 1 input(s) @ 2 of device modbus:43: Serial protocol error: request timed out
апр 16 09:50:15 wirenboard-AIZ2ODPK wb-mqtt-serial[17036]: WARNING: [modbus] failed to read 2 input(s) @ 4248 of device modbus:50: Serial protocol error: request timed out
апр 16 09:53:30 wirenboard-AIZ2ODPK wb-mqtt-serial[17036]: WARNING: [modbus] failed to read 2 input(s) @ 4248 of device modbus:53: Serial protocol error: request timed out
апр 16 09:54:24 wirenboard-AIZ2ODPK wb-mqtt-serial[17036]: WARNING: [modbus] failed to read 2 input(s) @ 4248 of device modbus:38: Serial protocol error: request timed out
апр 16 10:02:15 wirenboard-AIZ2ODPK wb-mqtt-serial[17036]: WARNING: [modbus] failed to read 2 input(s) @ 4248 of device modbus:53: Serial protocol error: request timed out
апр 16 10:03:07 wirenboard-AIZ2ODPK wb-mqtt-serial[17036]: WARNING: [modbus] failed to read 2 input(s) @ 270 of device modbus:43: Serial protocol error: request timed out
апр 16 10:05:51 wirenboard-AIZ2ODPK wb-mqtt-serial[17036]: WARNING: [modbus] failed to read 1 input(s) @ 2 of device modbus:43: Serial protocol error: request timed out
апр 16 10:05:51 wirenboard-AIZ2ODPK wb-mqtt-serial[17036]: WARNING: [modbus] failed to read 4 input(s) @ 4 of device modbus:43: Serial protocol error: request timed out

на контроллере с версией:
wb-mqtt-serial/stretch,now 1.61.0 armhf [установлен]
Wiren Board Smart Home MQTT serial protocol driver.
никаких ошибок в статусе нет, хотя к нему тоже подключены два MAP12 и еще кое что
и загруз процессора тоже меньше (50%)

с “рваными” графиками разобрался, внимательно посмотрев увидел что проблема была и раньше, причем встречалась на нескольких параметров из множества (считываемых одним путем и с одним интервалом), но случалось это очень редко
обновление просто резко усугубило проблему
проблема действительна отображалась в лога заббикс сервера
1094:20210404:032554.581 Zabbix agent item “mqtt.value[/devices/wb-map12h_{$SLAVE_ID2}/controls/Ch 1 Total AP energy]” on host “wb1.ru” failed: first network error, wait for 15 seconds
1112:20210404:032610.675 resuming Zabbix agent checks on host “wb1.ru”: connection restored
но только сейчас, посмотрев по вашему совету частоту сообщений в топиках, до меня дошло, что причина в настройке таймаута на заббикс сервере
после его увеличения этих ошибок не стало

после обновления загрузка процессора еще больше подпрыгнула

интересно. А до обновления какая стояла версия wb-mqtt-serial?

Это можно посмотреть в /var/log/apt