Линус Торвальдс объявил об официальном выпуске нового ядра Linux 6.18.
Должен признать, что я был бы счастлив, если бы в последнюю неделю релиза было чуть меньше шума, связанного с исправлением ошибок, но хотя исправлений несколько больше, чем я надеялся, не было ничего, что заставило бы меня почувствовать, что нужно больше времени для подготовки. Так что 6.18 отмечена и выложена.
Ключевые особенности Linux 6.18
Ядро Linux 6.18 представляет новую опцию шифрования на основе PSP для TCP-соединений, более быстрое распределение и замену слотов, значительные улучшения на стороне получения UDP, цель маппера устройств с постоянным кэшем, пространства имен, которыми можно управлять через дескрипторы файлов, поддержку Accurate ECN в TCP и подписанные программы BPF, а также множество небольших изменений в ядре и драйверах.
Одним из главных изменений является внедрение в аллокатор SLUB. Проще говоря, ядро теперь хранит кэши небольших объектов памяти на каждом процессоре, поэтому большинство выделений и освобождений может обрабатываться локально, без синхронизации между процессорами. Это снижает вероятность возникновения конфликтов в горячих путях и ускоряет выделение и освобождение, повышая производительность рабочих нагрузок, которые в значительной степени зависят от RCU.
Производительность свопинга – еще одна область, которая улучшается. В Linux 6.18 началась первая фаза работы над таблицей подкачки, которая представляет собой новую абстракцию, используемую в качестве основы для кэша подкачки. Цель состоит в том, чтобы сделать поиск и управление свопом более эффективным, особенно в условиях нехватки памяти.
В свете этого бенчмарки, представленные в примечаниях к слиянию, показывают прирост пропускной способности и количества запросов в секунду на 5-20% для репрезентативных рабочих нагрузок, а также лучшее поведение под нагрузкой при выделении больших страниц.
Что касается хранения данных, то новая цель маппера устройств, dm-pcache, позволяет использовать постоянную память – например, устройства на базе CXL или DAX – в качестве высокоскоростного кэша перед более медленными блочными устройствами. Это дает разработчикам систем возможность на уровне ядра рассматривать постоянную память как прослойку между DRAM и SSD или дисками, без необходимости использования пользовательского кода.
В то же время Сервер NFS получает возможность полностью отключить собственное кэширование ввода-вывода. Это может показаться нелогичным, но для больших, высоконагруженных серверов или очень маленьких облачных инстансов отказ от кэширования на стороне сервера может реально улучшить масштабируемость и избежать перегрузки локальной памяти.
Управление процессами и пространствами имен получило заметное улучшение в плане удобства использования. Ядро поддерживает pidfds, дескрипторы файлов для процессов, начиная с Linux 5.1, и они оказались очень полезными для надежного управления процессами.
Ядро Linux 6.18 распространяет ту же идею на пространства имен: теперь пользовательское пространство может кодировать и декодировать идентификаторы пространств имен, используя существующие API name_to_handle_at() и open_by_handle_at(). Это позволяет последовательно ссылаться на пространства имен в течение всего времени жизни системы, надежно сравнивать их и передавать без выделения дополнительных ресурсов.
Сетевые технологии претерпели несколько существенных изменений: в новом выпуске добавлена начальная поддержка Accurate Explicit Congestion Notification, которая расширяет классическую ECN, позволяя получать более подробную информацию о количестве отметок перегрузки за RTT.
Со стороны UDP путь получения был переработан для уменьшения количества перегрузок и использования блокировки с учетом NUMA и лучшей компоновки структуры данных; тестирование, приведенное в журнале изменений, сообщает об улучшении производительности UDP RX примерно на 50%, а в условиях атаки, когда небольшой набор сокетов получает очень высокие скорости передачи пакетов, прирост еще больше.
Кроме того, размер буфера приема сокетов по умолчанию увеличен до 4 МБ, а также объединена более ранняя работа над прямым разделением внутреннего буфера (dibs), что еще больше улучшает масштабируемость для сетей с большими объемами данных.
Безопасность и шифрование транспорта усилены благодаря поддержке TCP-соединений с шифрованием PSP. Протокол PSP, разработанный в Google, занимает промежуточное положение между IPsec и TLS: он имеет некоторое архитектурное сходство с обоими, но рассчитан на сильную аппаратную разгрузку, включая режимы туннелирования, что делает его привлекательным для развертывания в центрах обработки данных, где часто используются разгрузочные механизмы.
Подсистема BPF получила возможность загружать криптографически подписанные программы BPF. На данный момент основное изменение заключается в настройках: ядро может проверять подписи программ при их загрузке. Кроме того, подсистема аудита продолжает двигаться в сторону надежной поддержки нескольких LSM, поскольку в ядре Linux 6.18 улучшена обработка событий при одновременном включении нескольких модулей безопасности Linux.
Что касается виртуализации, то в этом выпуске появился драйвер virtio SPI, позволяющий гипервизорам напрямую подключать SPI-устройства к виртуальным машинам через стандартный механизм virtio. На хостах x86 появилась функция SEV-SNP CipherText Hiding, которая не позволяет процессорам, не авторизованным для доступа к приватной памяти гостей, увидеть шифртекст в этой памяти.
На стороне KVM теперь можно обеспечить теневые стеки и косвенное отслеживание ветвлений на оборудовании Intel и теневые стеки на AMD, предоставляя гостям доступ к современным средствам защиты потока управления.
В файловых системах и блочном слое проведена большая работы над функциями и чистки. Новая цель dm-pcache также вписывается сюда, обеспечивая постоянное кэширование перед блочными устройствами. Ext4 продолжает модернизироваться: расширена поддержка зарезервированных идентификаторов, появился новый интерфейс ioctl для получения и изменения параметров суперблоков, а также удалены последние остатки отдельных опций конфигурации ext3.
OverlayFS получила поддержку сворачивания регистров, а файловые системы FUSE теперь могут напрямую работать с копиями большого диапазона. Кроме того, по умолчанию отключены устаревшие опции XFS, удалены устаревшие опции монтирования, а онлайн fsck теперь включен по умолчанию и больше не рассматривается как экспериментальный. Ядро Linux 6.18 также полностью удаляет файловую систему Bcachefs, а некоторые файловые системы используют новые реализации растровых карт без блокировки для снижения нагрузки на общие метаданные.
Наконец, что касается поддержки аппаратного обеспечения, в выпуске представлены новые или улучшенные драйверы для широкого спектра графических процессоров (включая последние варианты Mali и дополнительные графические блоки SoC), дисплейных мостов и панелей, встраиваемых SoC, сетевых карт, контроллеров и регуляторов питания, промышленных датчиков ввода-вывода, контроллеров хранения данных, USB PHY и повторителей, аудиоустройств, а также контроллеров ввода и тактильных устройств.
Для тех, кто хочет самостоятельно скомпилировать ядро Linux 6.18, оно уже доступно для загрузки на сайте kernel.org. Как обычно, первыми новое ядро получат пользователи дистрибутивов с выкатным релизом. Ожидается, что обновление появится в их репозиториях в течение следующих недель.

Комментарии (0)