Ядро
Після двох місяців розробки Лінус Торвальдс оголосив про випуск нової версії ядра 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
Серед основних змін ми виявили, що для ext4 було додано режим fast_commit , який значно зменшує затримки в багатьох файлових операціях завдяки швидшому скиданню метаданих на диск під час виконання виклику fsync(). За нормальних обставин виконання fsync() синхронізує надлишковий набір метаданих. У режимі fast_commit до реєстру переносяться лише метадані, необхідні для відновлення файлової системи у разі збою, що пришвидшує виклики fsync() та покращує продуктивність операцій, які активно маніпулюють метаданими.
Поки за Btrfs включає важливі оптимізації продуктивності, пов'язані з операціями fsync (). Зменшення кількості суперечок в журналі мьютексу призвело до 4% збільшення продуктивності та 14% зменшення затримки під час запуску тесту dbench з 32 клієнтами. Виключення додаткових комітів для посилань та змін імен збільшило пропускну здатність на 6% та зменшило затримку на 30%. Обмеження fsync до очікування лише при перезаписі збільшило продуктивність на 10-40%.
Крім того, Реалізація Btrfs прямого вводу-виводу (direct io) перенесена у структуру 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).