Вызывает ли SElinux в принудительном режиме задержки при доступе к файлам?

Я включил SElinux в принудительном режиме на Amazon Linux и вижу, что время, необходимое для доступа к файлу (чтение / запись / обновление), увеличилось в среднем на 2-4 секунды. Исходным процессом является Salt, а доступ к файлу связан с состоянием file.managed Salt https://docs.saltstack.com/en/latest/ref/states/all/salt.states.file.html В файле audit.log нет соответствующих отказов. В качестве метода грубой силы мы попытались добавить правила разрешения для всех отказов в журнале с использованием audit2allow, но не смогли сократить время, необходимое для доступа к файлам.

Известно ли, что SElinux вызывает снижение производительности при доступе к файловой системе? Существуют ли известные процессы в системе Linux, которые влияют на время доступа к файлам?

2 ответа

Решение

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

Что-то еще происходит. Используйте богатые инструменты производительности Linux, чтобы показать это. Некоторые стартовые идеи:

  • Измерьте использование всех ресурсов производительности на хосте. Процессор, пропускная способность диска, IOPS диска, память и т. Д.
  • Получите график пламени того, что находится на процессоре, когда эта штука медленная.
  • Используйте специальный профилировщик языка программирования для проблемных строк кода. В этом случае функции файла соли.
  • Получите распределение задержки ввода-вывода блока, например с biolatency,
  • Оцените необработанные операции ввода-вывода в этой системе хранения, используя такие инструменты, как fio, или просто touch

(Некоторые из них требуют новейших ядер для bpf и других функций. Я не знаю, насколько хороши инструменты Amazon Linux для всего этого.)

Короткий ответ: да, это вызывает дополнительную задержку, но она настолько мала, что вам, как правило, все равно

Длинный ответ: SELinux добавляет задержку, потому что:

  • его метка хранится в расширенном атрибуте, который является дополнительным тегом метаданных (для чтения / анализа), прикрепленным к каждому файлу;

  • он должен сравнивать только что прочитанные метаданные с текущей загруженной двоичной политикой.

Чтобы свести к минимуму влияние на производительность, ядро ​​Linux хранит кэш AVC, чтобы обойти самые тяжелые шаги в процессе чтения / сравнения. Более подробную информацию можно найти здесь и здесь

Вывод заключается в том, что в общем случае SELinux влияет на производительность только на 0-2% и может быть проигнорирован с точки зрения производительности

Другие вопросы по тегам