Linux Kernel 6.0: что нового «выросло» в ядре?

qrpywshvugne3pk0c40q_1y6ldm.jpeg


На днях на Хабре публиковалась новость о том, что Торвальдс представил новый релиз ядра Linux, который получил номер 6.0, вместо, например, 5.20. Противники такой нумерации, конечно, есть, но Торвальдс особо не обращает на них внимания.

Но сегодня поговорим не про нумерацию версий, а про подробности самого релиза. Среди самых заметных изменений — оптимизация менеджера задач, верификация корректности ядра, драйвер ublk, поддержка асинхронной буферизованной записи в XFS и ряд других дополнений и обновлений. Подробности — под катом.
Несмотря на то, что по словам самого Линуса Торвальдса, в новой версии ядра нет ничего революционного, в ней все же немало изменений. Так, в релизе — 16585 исправлений от более, чем 2 000 разработчиков. Размер патча составляет 103 МБ, изменены при этом около 14 000 файлов. Общее количество добавленных строк кода — 1420093. Удалено тоже немало — 318741. Примерно 40% представленных в новом ядре изменений связаны с драйверами устройств, еще около 19% — это изменения, связанные с обновлением кода для аппаратных архитектур. Еще 12% — сеть, 4 — % файловые системы и 2% — внутренние подсистемы ядра. Ну, а теперь — детально просмотрим, что там и как.

Виртуализация и безопасность


  • Выполнена интеграция компонентов ядра для управления анклавами на базе технологии, которая называется Intel SGX2 (Software Guard eXtensions). Она дает возможность приложениям выполнять код в изолированных и зашифрованных областях памяти, к которым ограничен доступ для других компонентов системы. Эта технология поддерживается, например, чипами Intel Ice Lake и Gemini Lake.
  • Добавлен механизм для определения зависаний гостевых систем, это реализовано путем мониторинга активности vCPU.
  • Кроме того, появилась возможность передачи затравки для генератора псевдослучайных чисел через настройки загрузчика в отношении архитектуры x86.
  • Еще важный момент — в добавлении механизма верификации с названием RV (Runtime Verification). Он нужен для проверки корректности работы на высоконадежных системах, которые гарантируют отсутствие сбоев. Достоинство механизма в возможности обеспечить строгую верификацию без отдельной реализации всей системы на языке моделирования, плюс гибком реагировании на неожиданные события.


s3ujz5rjnsbaymhqs9xlwvv3pqm.jpeg


Память и системные сервисы


  • Наконец-то решены проблемы с производительностью систем на процессорах AMD Zen. О них уже сообщалось и на Хабре, и других СМИ. Проблема с падением производительности из-за кода, который был добавлен 20 лет назад. Предназначался он для обхода аппаратной проблемы в некоторых чипсетах. Нужна была дополнительная инструкция WAIT, которая замедляет процессор, чтобы чипсет мог вовремя перейти в состояние простоя. В текущее время код приводил к значительному снижению производительности при нагрузках, в ходе которых часто чередуются состояния простоя и активности.
  • Кроме того, разработчики выполнили оптимизацию распределения задач по ядрам CPU на крупных системах, что позволило увеличить производительность при ряде видах нагрузок.
  • Код ядра избавили от устаревшего интерфейса «efivars» в sysfs, предназначенный для доступа к загрузочным переменным UEFI (для доступа к данным EFI теперь повсеместно применяется виртуальная ФС efivarfs).
  • В подсистеме DAMON (Data Access MONitor) появились новые возможности, которые позволяют не только отслеживать доступ процессов в оперативной памяти из пространства пользователя, но и в значительной степени влиять на управление памятью.
  • В планировщике задач теперь нет кода с эвристикой, которая обеспечивает миграцию процессов на минимально загруженные процессоры с учетом прогнозируемого снижения энергопотребления. По словам специалистов, выигрыш минимальный, так что проще вообще убрать код, чем тратить ресурсы на его работу. В итоге отключение эвристики уже позволило снизить энергопотребления в тесте с декодированием видео на 5,6%.
  • Такие архитектуры, как OpenRISC и LoongArch, получили поддержку шины PCI. Ну, а RISC-V получила расширение «Zicbom» для управления устройствами c DMA, не согласованным с кэшем (non-cache-coherent).


biiie9qllcck6xqyg02-ic41apq.png

Дисковая подсистема, I/O, файловые системы


  • В файловой системе F2FS появился режим низкого потребления памяти. Он оптимизирует работу на устройствах с небольшим объемом оперативки. Так что ценой снижения производительности можно снизить и потребление памяти.
  • Ну, а в файловой системе XFS появилась поддержка асинхронной буферизованной записи для приложений. Речь идет, в первую очередь, о приложениях, которые используют io_uring. После тестов оказввода/вывода в секунду (IOPS) увеличились с 77k до 209k, скорости передачи данных — с 314MB/s до 854MB/s. Задержки упали с 9600ns до 120ns (80 раз). Тестирование выполнялось при помощи fio, 1 поток, размер блока 4 кб, 600 секунд, последовательная запись.
  • В ext4 появились новые ioctl-операции EXT4_IOC_GETFSUUID и EXT4_IC_SETFSUUID для извлечения или установки UUID-идентификатора, который хранится в суперблоке.
  • В Btrfs добавлена втора версия протокола для send, которая реализует поддержку дополнительных метаданных. Она позволяет отправлять данные блоками более 64К, плюс передавать экстенты в сжатом виде. Ну и примерно в 3 раза увеличена производительность операций прямого чтения.


Сеть


  • Тут изменений немного. Есть повышение производительности встроенной в ядро реализации TLS.
  • В беспроводном стеке появилась поддержка механизма MLO (Multi-Link Operation), который определен в спецификации WiFi 7 и дает возможность устройствам получать и отправлять данные одновременно, причем с применением разных частот и каналов.
  • В BPF появились обработчики для генерации и проверки SYN cookies.


Железо


  • Здесь побольше новинок и апдейтов. Так, в драйвере i915 (Intel) обеспечена поддержка дискретных видеокарт Intel Arc (DG2/Alchemist) A750 и A770. Предложена начальная реализация поддержки GPU Intel Ponte Vecchio (Xe-HPC) и Meteor Lake. Кроме того, продолжается работа по реализации поддержки платформы Intel Raptor Lake.
  • В amdgpu продолжают внедрять поддержку платформ AMD RDNA3 (RX 7000) и CDNA (Instinct).
  • Появился новый DRM-драйвер logicvc для экранов LogiCVC.
  • В v3D теперь есть поддержка четвертой версии «малинок».
  • В Panfrost добавили поддержку GPU ARM Mali Valhall.
  • Кроме того, добавлена поддержка процессоров Qualcomm Snapdragon 8cx Gen3, используемых в ноутбуках Lenovo ThinkPad X13s, добавлены драйверы звука для платформ AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake и Mediatek MT8186.
  • Также добавлена поддержка ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3.

© Habrahabr.ru