Linux 5.10 содержит значительные оптимизации для Ext4, улучшенную совместимость с AMD SEV и многое другое.

ядро

После двух месяцев разработки Линус Торвальдс объявил о выпуске новой версии ядра Linux 5.10 , которая имеет статус ветки с длительным периодом поддержки, обновления которой будут выпускаться как минимум в течение двух лет.

В этой новой версии произошли значительные изменения, включая поддержку механизма защиты MemTag для систем ARM64, опцию монтирования "nosymfollow", существенные оптимизации Ext4, исправление ошибки XFS 2038, новый системный вызов process_madvise, улучшенную поддержку AMD SEV через шифрование регистров ЦП и возможность приостанавливать программы BPF.

Новая версия получила 17 470 исправлений от 2062 разработчиков; размер патча: 64 МБ (изменения затронули 15 101 файл, добавили 891 932 строки кода и удалили 619 716 строк). Примерно 42% всех изменений, внесенных в версию 5.10, связаны с драйверами устройств , примерно 16% — с обновлением кода, специфичного для аппаратной архитектуры, 13% — с сетевым стеком, 3% — с файловыми системами и 3% — с внутренними подсистемами ядра.

Основные новые возможности Linux 5.10

Среди основных изменений следует отметить добавление режима fast_commit для файловой системы ext4 , который значительно сокращает задержки во многих файловых операциях благодаря более быстрой записи метаданных на диск при выполнении вызова fsync(). В обычных условиях выполнение fsync() синхронизирует избыточный набор метаданных. В режиме fast_commit в реестр передаются только метаданные, необходимые для восстановления файловой системы в случае сбоя, что ускоряет вызовы fsync() и повышает производительность операций, активно работающих с метаданными.

В то время как для Btrfs включает важные оптимизации производительности, связанные с операциями fsync (). Уменьшение числа конфликтов за мьютекс журналов привело к увеличению производительности на 4% и снижению задержки на 14% при запуске теста dbench с 32 клиентами. Устранение дополнительных коммитов для ссылок и изменений имен увеличило пропускную способность на 6% и уменьшило задержку на 30%. Ограничение fsync ожиданием только перезаписи повысило производительность на 10-40%.
Кроме того, Реализация прямого ввода-вывода (direct io) в Btrfs перенесена в инфраструктуру iomap. 

В XFS внесены изменения в метаданные inode для решения проблем переполнения в 32-битном типе данных time_t в 2038 году. Аналогичные изменения, переместившие переполнение счетчика времени на 2468 год, были добавлены в код для расчета времени использования дисковых квот. Формат XFS V4 объявлен устаревшим; пользователям рекомендуется перейти на формат V5, но для обновления еще достаточно времени, поскольку поддержка V4 будет продолжаться до 2030 года. XFS также изменила размер записи inode btree, что позволило увеличить количество проверок избыточности и ускорить время монтирования.

Для подсистемы FUSE реализована поддержка операций DAX для прямого доступа к файловой системе, минуя кеш страницы без устройства блокировки на уровне приложений, которое используется для предотвращения двойного кеширования, что обеспечивает организацию совместного доступа к гостевым системам, каталогам и файлам. Virtiofs также добавляет поддержку отдельного монтирования разделов с разными точками монтирования в хост-системе.

Файловая система F2FS добавляет новый режим сборки мусора ATGC (Age Threshold Garbage Collection) , улучшенную поддержку зонированных устройств NVMe и более быструю декомпрессию сжатых данных.

В файловых системах F2FS и Ext4 был переработан способ работы с регистронезависимыми именами файлов; было решено унифицировать реализацию обработки регистронезависимых имен файлов путем переноса соответствующего кода в общую библиотеку.

Еще одно важное изменение касается асинхронного интерфейса ввода-вывода io_uring, который добавляет возможность создания ограниченных колец , которые можно безопасно совместно использовать с недоверенным процессом. Эта функция позволяет базовому приложению выборочно ограничивать доступ только к своим отдельным файловым дескрипторам для использования сторонними приложениями через io_uring. Кроме того, в системный вызов pidfd_open() добавлен флаг PIDFD_NONBLOCK для создания неблокирующегося файлового дескриптора (аналогично O_NONBLOCK для pidfd).


Добавить в качестве предпочтительного источника в Google