Ubuntu 24 – Auditd не освобождает SReclaimable

Вопрос или проблема

Я пытаюсь обновить мой jumphost с Ubuntu 20.04 до Ubuntu 24.04.2 LTS с включенным аудитом.

Вот моя конфигурация:

$ cat /etc/audit/rules.d/000.audit.rules
-D
-b 64
-r 1000
-f 1

# Логирование всех пользовательских команд
-a always,exit -F arch=b64 -S execve -F auid>=1000 -F auid!=4294967295 -k user_commands
-a always,exit -F arch=b32 -S execve -F auid>=1000 -F auid!=4294967295 -k user_commands

...

Но когда пользователи входят в систему (40-70 пользователей), я заметил, что система потребляет всю оперативную память, поскольку использование памяти представляет собой буферы ядра, которые используются из-за ограничения скорости, что приводит к деградации системы вплоть до зависания.

$ grep -E 'Slab|SReclaimable|SUnreclaim' /proc/meminfo && free -m
Slab:            2690568 kB
SReclaimable:      14672 kB
SUnreclaim:      2675896 kB
               total        used        free      shared  buff/cache   available
Mem:            2972        2961          70           0          56          10
Swap:           4521         467        4054

Это не происходит в Ubuntu 20.
есть идеи, как это исправить?

спасибо за помощь.

Ответ или решение

Теория

Проблема с SReclaimable и высоким использованием оперативной памяти на Ubuntu 24.04.2 LTS при включённом auditd может быть вызвана различиями в работе ядра или конфигурации системы по сравнению с Ubuntu 20.04. Основной проблемой может быть недостаточная оптимизация параметров ядра для аудита, а также потенциальные изменения в обрабатываемых процессах системы.

Slab Allocation – это комплекс выделения памяти в ядре Linux, часто используемый для структур данных ядра. Он состоит из двух частей: SReclaimable и SUnreclaim. SReclaimable – это часть, которую можно вернуть операционной системе, если память потребуется для других задач, тогда как SUnreclaim означает те части памяти, которые, по сути, зафиксированы за ядром и не могут быть легко возвращены системе.

Пример

Из описанной ситуации видно, что на Ubuntu 24.04.2 LTS большое количество памяти оказывается в SUnreclaim, что блокирует её для переиспользования другими процессами. Это особенно остро ощущается при большом количестве пользователей, когда каждый выполняет команды, которые отслеживаются через auditd.

Ваш текущий конфигурационный файл auditd имеет стандартные правила для отслеживания пользовательских команд:

-D
-b 64
-r 1000
-f 1

# Логирование всех пользовательских команд
-a always,exit -F arch=b64 -S execve -F auid>=1000 -F auid!=4294967295 -k user_commands
-a always,exit -F arch=b32 -S execve -F auid>=1000 -F auid!=4294967295 -k user_commands

Применение

Для решения проблемы попробуем подойти с нескольких сторон:

  1. Тюнинг конфигурации auditd:

    • Увеличьте размер буфера (-b) и предел скорости (-r). Попробуйте значения выше текущих, чтобы уменьшить количество раз, когда события группируются и отправляются. В процессе мониторинга увеличенных настроек на живой системе определите оптимальные параметры:

      -b 128
      -r 2000
    • Отключите или скорректируйте другие конфигурации auditd, чтобы уменьшить объем обрабатываемых данных. Убедитесь, что аудит выполняется только для наиболее необходимых процессов.

  2. Изменение конфигурации ядра:

    • Проверьте vm.min_free_kbytes и другие параметры ядра в /etc/sysctl.conf, которые могут повлиять на поведение памяти. Оптимизация может включать, но не ограничиваться следующими параметрами:
      vm.swappiness=10
      vm.dirty_ratio=10
      vm.dirty_background_ratio=5
  3. Анализ логов и метрик:

    • Изучите лог-файлы в /var/log/audit/ и системные логи для выявления необработанных ошибок или предупреждений, связанных с auditd и его работой при большой нагрузке.
  4. Мониторинг и анализ производительности:

    • Регулярно используйте инструменты, такие как top, htop, и atop для мониторинга использования памяти в реальном времени. Это поможет вам в быстром выявлении процессов, влияющих на память.
  5. Обновление и патчи:

    • Убедитесь, что у вас установлены все последние обновления и патчи для Ubuntu 24.04.2 LTS. Проверяйте списки известных багов и решение от разработчиков для этой версии.
  6. Проверка устройств и компонентов:

    • Убедитесь, что работающие драйверы и встроенные компоненты вашей системы совместимы с новой версией ядра. Неправильные или устаревшие драйверы могут также вести к неэффективному управлению памятью.

Через столь многосторонний подход вы сможете минимизировать отрицательное воздействие использования auditd на вашу систему. Рекомендую также связываться с профессиональными сообществами и поддержкой Ubuntu в случае дальнейших затруднений.

Оцените материал
Добавить комментарий

Капча загружается...