Выпущено ядро Linux 6.13, вот что нового
Линус Торвальдс объявил об официальном выпуске нового ядра Linux 6.13 с легкомысленным обновлением: Ничего ужасного или неожиданного не произошло на прошлой неделе, поэтому я пометил и выпустил финальный релиз 6.13. Теперь позвольте мне рассказать вам о ключевых обновлениях и функциях, которые он несет.
Одним из самых обсуждаемых улучшений в ядре 6.13 является введение lazy preemption, умного компромисса между обычным добровольным и полным режимами preemption. Если Вам интересно почитать про другие релизы ядра Linux, то вот тут, отличные обзоры, которые своевременно выходят. Так сказать день в день! Короче, можно отслеживать все изменения в ядерных делах опенсорса.
В то время как добровольное предусловие обменивает некоторую отзывчивость на повышение производительности, а полное предусловие обеспечивает почти мгновенное переключение задач за счет потенциальной стоимости производительности, ленивое предусловие стремится предоставить больше возможностей предусловия, чем добровольный режим, без накладных расходов, связанных с полным предусловием.
Еще одно ценное улучшение в этом выпуске – поддержка атомарной записи в XFS, Ext4s Direct I/O и некоторых режимах md RAID. При использовании оборудования, способного безопасно объединять несколько секторов в одну атомарную операцию, эти файловые системы могут обновлять данные более эффективно и надежно.
Ядро Linux 6.13 также демонстрирует улучшение производительности сетевой работы, в частности, через NAPI suspension, внедряя метод, который автоматически переключается между этими двумя операциями, обеспечивая эффективность систем при небольшом трафике и уменьшая накладные расходы при увеличении нагрузки на сеть.
Сетевые команды оценят гибкий новый API устройства для настройки аппаратного шейпинга передачи (TX H/W shaping). Благодаря встроенным функциям интроспекции разработчики теперь могут запрашивать аппаратное обеспечение о доступных опциях и точно настраивать политики шейпинга для оптимизации темпа передачи пакетов, использования полосы пропускания или качества обслуживания для различных профилей трафика.
Что касается безопасности, то защитные страницы всегда были отличным способом отлавливать нежелательные или случайные обращения к памяти, подавая сигнал о фатальном исходе при каждом обращении к ним. Однако их реализация обычно требовала больших затрат на выделение памяти.
В ядре 6.13 эта проблема решена с помощью легких защитных страниц, введенных с помощью нового флага MADV_GUARD_INSTALL для системного вызова madvise() .
io_uring, асинхронный интерфейс ввода-вывода, вызвавший ажиотаж с момента своего появления, в этом цикле получил множество усовершенствований, включая:
- Изменение размера кольца: Приложения теперь могут начинать с небольшого кольцевого буфера и плавно расширять его, если потребности растут.
- Частичное клонирование буфера: Вместо того чтобы клонировать всю таблицу буферов, разработчики могут выбрать дублирование только необходимой секции.
- Гибридный опрос ввода-вывода: Метод, позволяющий сократить потери процессора за счет введения короткого периода сна перед активным опросом.
На фронте ARM, Linux 6.13 приносит два заметных дополнения:
- Arm Confidential Compute Architecture (CCA): Системы на базе ARM теперь могут запускать Linux в защищенной виртуальной машине под управлением CCA, усиливая изоляцию гостя и защищая от более широкого спектра атак.
- Теневые стеки пользовательского пространства: Эта функция, часто упоминаемая в документации ARM как Guarded Control Stack (GCS), защищает адреса возврата в аппаратно защищенном стеке. Она предназначена для защиты от атак программирования, ориентированного на возврат (ROP), а также для упрощения профилирования и отладки за счет автоматического отслеживания стека вызовов.
И последнее, но не менее важное: внутренние файловые операции ядра теперь получают преимущества от нового механизма подсчета ссылок. Бенчмарки свидетельствуют о 3-5%-ном приросте производительности в системах с большим количеством потоков – долгожданное улучшение в средах, где постоянно открываются, закрываются и манипулируются файлы.
Конечно, как и в каждом новом выпуске ядра, под капотом происходит бесчисленное множество других изменений, включая:
- Обновления в управлении памятью для более эффективной работы со страницами.
- Улучшения драйверов для аудио, систем хранения, сетей и т. д.
- Обновления компонентов виртуализации, от расширений для архитектур AMD и Intel до улучшений KVM на ARM64.
- Новые запросы на исправление ошибок и дальнейшие корректировки кода, которые повышают общую стабильность и универсальность ядра.
|