Компания Oracle опубликовала ядро Unbreakable Enterprise Kernel 6

Компания Oracle представила первый стабильной выпуск Unbreakable Enterprise Kernel 6 (UEK R6), расширенной сборки ядра Linux, позиционируемой для использования в дистрибутиве Oracle Linux в качестве альтернативы штатному пакету с ядром из Red Hat Enterprise Linux. Ядро доступно только для архитектур x86_64 и ARM64 (aarch64). Исходные тексты ядра, включая разбивку на отдельные патчи, опубликованы в публичном Git-репозитории Oracle.

Пакет Unbreakable Enterprise Kernel 6 основан на ядре Linux 5.4 (UEK R5 базировался на ядре 4.14), которое дополнено новыми возможностями, оптимизациями и исправлениями, а также проверено на совместимость с большинством приложений, работающих в RHEL, и специально оптимизировано для работы с промышленным программным обеспечением и оборудованием Oracle. Установочные и src-пакеты с ядром UEK R6 подготовлены для Oracle Linux 7.x и 8.x. Поддержка ветки 6.x прекращена, для применения UEK R6 следует обновить систему до Oracle Linux 7 (нет никаких препятствий по использованию данного ядра в аналогичных версиях RHEL, CentOS и Scientific Linux).

Ключевые новшества Unbreakable Enterprise Kernel 6:

  • Расширенная поддержка систем на базе 64-разрядной архитектуры ARM (aarch64).
  • Реализована поддержка всех возможностей Cgroup v2.
  • Реализован фреймворк ktask для распараллеливания задач в ядре, потребляющих значительные ресурсы CPU. Например, при помощи ktask может быть организовано распараллеливание операций по очистке диапазонов страниц памяти или обработке списка inode;
  • Включена распараллеленная версия kswapd для обработки операций замены страниц памяти в асинхронном режиме, позволяя сократить число прямых (синхронных) операций замены. При уменьшении числа свободных страниц памяти kswapd выполняет сканирование для выявления неиспользуемых страниц, которые могут быть высвобождены.
  • Поддержка верификации целостности образа ядра и прошивок по цифровой подписи, при загрузке ядра при помощи механизма Kexec (загрузка ядра из уже загруженной системы).
  • Проведена оптимизация производительности системы управления виртуальной памятью, улучшена эффективность очистки станиц памяти и кэша, улучшена обработка обращений к не выделенным страницам памяти (page faults).
  • Расширена поддержка NVDIMM, указанная постоянная память теперь может использоваться в качестве традиционного ОЗУ.
  • Осуществлён переход на систему динамической отладки DTrace 2.0, которая переведена на использование подсистемы ядра eBPF. DTrace теперь работает поверх eBPF, по аналогии с тем, как поверх eBPF работают существующие в Linux инструменты трассировки.
  • Внесены улучшения в файловую систему OCFS2 (Oracle Cluster File System).
  • Улучшена поддержка файловой системы Btrfs. Добавлена возможность применения Btrfs на корневых разделах. В инсталлятор добавлена опция для выбора Btrfs при форматировании устройств. Добавлена возможность размещения файлов подкачки на разделах с Btrfs. В Btrfs добавлена поддержка сжатия с использованием алгоритма ZStandard.
  • Добавлена поддержка интерфейса для асинхронного ввода/вывода — io_uring, который примечателен поддержкой поллинга ввода/вывода и возможностью работы как с буферизацией, так и без буферизации. По производительности io_uring очень близок к SPDK и существенно опережает libaio при работе с включённым поллингом. Для использования io_uring в конечных приложениях, работающих в пространстве пользователя, подготовлена библиотека liburing, предоставляющая высокоуровневую обвязку над интерфейсом ядра;
  • Добавлена поддержка режима Adiantum для быстрого шифрования накопителей.
  • Добавлена поддержка сжатия с использованием алгоритма Zstandard (zstd).
  • В файловой системе ext4 задействованы 64-разрядные метки времени в полях суперблока.
  • В XFS включены средства для информирования о состоянии целостности ФС во время работы и получения статуса о выполнении fsck на лету.
  • TCP-стек по умолчанию переведён на модель «Early Departure Time» вместо «As Fast As Possible» при отправке пакетов. Для UDP включена поддержка GRO (Generic Receive Offload). Добавлена поддержка приёма и отправки TCP-пакетов в режиме zero-copy.
  • Задействована реализация протокола TLS на уровне ядра (KTLS), которая теперь может применяться не только для отправляемых, но и для принимаемых данных.
  • В качестве бэкенда для межсетевого экрана по умолчанию задействован nftables. Опционально добавлена поддержка bpfilter.
  • Добавлена поддержка подсистемы XDP (eXpress Data Path), позволяющей в Linux запускать BPF-программы на уровне сетевого драйвера с возможностью прямого доступа к DMA-буферу пакетов и на стадии до выделения буфера skbuff сетевым стеком.
  • Улучшен и включён при использовании UEFI Secure Boot режим Lockdown, который ограничивает доступ пользователя root к ядру и блокирует пути обхода UEFI Secure Boot. Например, в режиме lockdown ограничивается доступ к /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, отладочному режиму kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), некоторым интерфейсам ACPI и MSR-регистрам CPU, блокируются вызовы kexec_file и kexec_load, запрещается переход в спящий режим, лимитируется использование DMA для PCI-устройств, запрещается импорт кода ACPI из переменных EFI, не допускаются манипуляции с портами ввода/вывода, в том числе изменение номера прерывания и порта ввода/вывода для последовательного порта.
  • Добавлена поддержка расширенных инструкций IBRS (Enhanced Indirect Branch Restricted Speculation), которые позволяют адаптивно разрешать и запрещать спекулятивное выполнение инструкций во время обработки прерываний, системных вызовов и переключений контекста. При наличии поддержки Enhanced IBRS данный метод применяется для защиты от атак класса Spectre V2 вместо Retpoline, так как позволяет добиться более высокой производительности.
  • Улучшена защита в каталогах, доступных всем на запись. В подобных каталогах запрещено создания FIFO-файлов и файлов, принадлежащих пользователям, не совпадающим с владельцем каталога с флагом sticky.
  • По умолчанию на системах ARM включена рандомизация адресного пространства ядра на системах (KASLR). Для Aarch64 включена аутентификация указателей.
  • Добавлена поддержка «NVMe over Fabrics TCP».
  • Добавлен драйвер virtio-pmem, представляющий доступ к устройствам хранения, отражённым в физическое адресное пространство, таким как NVDIMM.

Источник: http://www.opennet.ru/opennews/art.shtml?num=52670