Линейный рост используемой оперативной памяти

приложен диагностический архив, доступен только сотрудникам поддержки
(2,6 МБ)
Добрый день. Раньше сильно не обращал внимание на рост используемой оперативной памяти. После перезагрузки контроллер потребляет 350-400 мб, и в итоге после почти 14 дней аптайма оперативная память загружена на 1200+ мб. После перезагрузки контроллера опять начинается с 350+ мб и продолжает линейно расти. Никаких сторонних программ не установлено, только штатные .Единственно прокинут мост MQTT с параметром “+/# both”, но так было с самого

запуска контроллера. Контроллер 8.5, последнее stable обновление wb2606. Проблем в работе с контроллером нет никаких, но что будет с памятью когда контроллер отработает например 6 месяцев без перезагрузки. Раньше точно так не росла оперативная память. Это нормальная ситуация?

Добрый день.
Из приведеного архива:

              total        used        free      shared  buff/cache   available
Mem:            3931         443        2032           2        1455        3342
Swap:            255           0         255
    PID    PPID CMD                         %MEM %CPU     TIME
    127       1 /lib/systemd/systemd-journa  3.2  0.0 00:00:46
   1903       1 /usr/bin/wb-mqtt-opcua       1.2  0.8 00:08:47
   1873       1 /usr/bin/wb-rules -http 127  1.0 10.7 01:53:11

То что в RAM кэшируется - вполне нормально.
Какого-то значимого потребления сервисами не вижу.

Ну это на сейчас после перезагрузки контроллера вчера. На скрине который приложил, видно что используемая оперативная память дошла до 1200+ мб, После чего я перезагрузил контроллер и оперативная память стартанула с 350+ мб и растет вверх, после нескольких дней посмотрим. Это нормальное поведение?

Целесообразно и анализировать в тот момент когда “используемой” памяти много: посмотреть что ее использует.

Принял. Будем посмотреть. Отпишусь через несколько дней.

Добрый день. Прошло 3d 17h с момента загрузки контроллера. Использование оперативной памяти увеличилось почти в два раза, после рестарта контроллер потреблял 330 мб оперативной памяти, сейчас 630 мб. Контроллер практически не нагружен. Из нештатного подключены к брокеру MQTT несколько клиентов и один мост с параметром “+/# both”. График показывает что стабильно идет рост

приложен диагностический архив, доступен только сотрудникам поддержки
(2,4 МБ)
потребления оперативной памяти. Как я понял потребляет оперативку 127 процесс /lib/systemd/systemd-journald
Это нормальная ситуация? Или смотрим дальше?

Покажите пожалуйста, по сервисам: потребление в начале периода и текущее.
Я не вижу проблем с сервисами.

Это сейчас:


было из Вашего поста:

root@wirenboard-AXEJVKTS:~# free -h
               total        used        free      shared  buff/cache   available
Mem:           3.8Gi       630Mi       1.1Gi       2.0Mi       2.2Gi       3.1Gi
Swap:          255Mi          0B       255Mi

Сейчас

Вижу единственную разницу - ушло в кэш.

Я не понял что Вы имели ввиду, поясните пожалуйста.
Я сужу по контролу metrics/ram_used и из команды free -h used Mem: Значение увеличивается линейно. Из этого я делаю вывод что загрузка оперативной памяти постоянно растет вверх и не падает.

Вот тут , пожалуй, довольно подробно описано.

Тут надо точно делить - ожидается ли увеличение. Если да - то чем оно обусловено. То есть просто “использование” - ни о чем, в общем, не говорит, ну отдано часть под кэш - и хорошо.

Объясните пожалуйста на пальцах. Допустим через пару месяцев после старта контроллера контрол показывает загрузку ОЗУ на 2 гб, хотя при старте я знаю что он потреблял 330 мб ОЗУ. Как мне понять что ОЗУ забилась кэшем или это какой-то сервис контроллера начал поджирать ОЗУ? Что из чего надо вычесть, что бы получить данные по реальной загрузке ОЗУ сервисами и приложениями?
Вопросы:
Сколько будет набираться кэш в ОЗУ?
Есть какие то ограничения по кэшированию?
Можно это изменить/отключить? Ведь с началом изучения контроллера, я точно помню что контрол “исп. ОЗУ” точно показывал график похожий на реальную загрузку ОЗУ.

Жёсткого лимита у page cache нет. Ядро отдаёт под кэш всю свободную RAM и освобождает её мгновенно, как только память нужна приложениям. Поэтому «размер кэша» ограничен не настройкой, а тем, сколько физической памяти в данный момент не занято под что-то более приоритетное.

Управлять размером - да, можно. Но для чего? Я не так долго использую libux, но до сих пор подобное нужно не было.

Встряну :slight_smile:

А не используется ли **Timer и прочее в скриптах? С весны, примерно, нашёлся баг в таймерах и до сих пор не отмечен решённым - замените все Timer функции на setTimeout/setInterval для проверки

Ничего такого нет. Да и особо скриптов и нет. Контроллер почти в холостую работает.

Получается моя ситуация штатная? Контрол metrics/ram_used получается не несет нужной информации и показывает какие условные цифры не имеющие отношение к текущей загрузке? Странно конечно. Планировал в будущих проектах на WB выводить на HMI два важных параметра (CPU и RAM) для оперативного мониторинга состояния контроллера. Если Вы считаете что моя ситуация штатная, то закрывайте тему. Спасибо.

Показывает сколько реально занято памяти. То есть - то же что выводит по free.
Да, совершенно штатная.

Я честно говоря, пока не понимаю - чем поведение контрола отличается от ожидаемого?

Если нужно отслеживать какой-то сервис то так, например.

Ожидаю увидеть как у всех реальные цифры загрузки оперативной памяти сервисами и приложениями, например вот так:


А в реале вижу какие то непонятные цифры стремящиеся в бесконечность. И как мне среди этих цифр отделить мух от котлет (реальное потребление сервисами и кэш) мне не понятно. И еще раз повторюсь,раньше такой линейный рост оперативной памяти не наблюдался.

Ну раз ситуация

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

Для информации, вдруг окажется что не штатная работа.
В htop увидел закономерность потребление оперативки сервисом wb-mqtt-opcua
После ввода команды systemctl restart wb-mqtt-opcua график использованной оперативки стал такой


В работе сервис wb-mqtt-opcua не используется.