Найти в Дзене
Борис Державец

Новые исправления оптимизируют онлайн-дефрагментацию EXT4 для повышения производительности

Сегодня в список рассылки по ядру Linux был опубликован набор из 13 исправлений для оптимизации обработки онлайн-дефрагментации драйвером ядра EXT4. Улучшения онлайн-дефрагментации для EXT4 могут обеспечить значительный прирост производительности и значительное улучшение в различных сценариях. Инженер Huawei Чжан И опубликовал исправления в почтовой рассылке ядра Linux, направленные на улучшение обработки онлайн-дефрагментации файловой системы EXT4. Кроме того, компания работает над преобразованием буферизированного кода ввода-вывода EXT4 для обычных файлов в инфраструктуру IOmap. Чжан И объяснил в серии патчей LKML: «В настоящее время онлайн-дефрагментация ext4 в основном реализована посредством операции перемещения экстентов в ядре. Это перемещение экстентов выполняется с гранулярностью PAGE_SIZE, итеративно выполняя операции обмена экстентов и перемещения данных, что весьма неэффективно. Особенно с учётом того, что ext4 теперь поддерживает большие объемы I/O Итерации с гранулярност

Сегодня в список рассылки по ядру Linux был опубликован набор из 13 исправлений для оптимизации обработки онлайн-дефрагментации драйвером ядра EXT4. Улучшения онлайн-дефрагментации для EXT4 могут обеспечить значительный прирост производительности и значительное улучшение в различных сценариях.

Инженер Huawei Чжан И опубликовал исправления в почтовой рассылке ядра Linux, направленные на улучшение обработки онлайн-дефрагментации файловой системы EXT4. Кроме того, компания работает над преобразованием буферизированного кода ввода-вывода EXT4 для обычных файлов в инфраструктуру IOmap. Чжан И объяснил в серии патчей LKML:

«В настоящее время онлайн-дефрагментация ext4 в основном реализована посредством операции перемещения экстентов в ядре. Это перемещение экстентов выполняется с гранулярностью PAGE_SIZE, итеративно выполняя операции обмена экстентов и перемещения данных, что весьма неэффективно.

Особенно с учётом того, что ext4 теперь поддерживает большие объемы I/O Итерации с гранулярностью PAGE_SIZE больше нецелесообразны и не позволяют использовать преимущества больших объемов I/O. Кроме того, текущая реализация тесно связана с buffer_head, что делает невозможным поддержку буферизованных процессов ввода-вывода после преобразования в инфраструктуру iomap.

Этот набор патчей (основанный на версии 6.17-rc7) оптимизирует процесс перемещения экстентов, отменяет поддержку старого интерфейса move_extent_per_page() и вводит новый интерфейс mext_move_extent().

Новый интерфейс итерирует и копирует данные на основе экстентов исходного файла, вместо PAGE_SIZE и поддерживает большие объемы I/O. Логика обработки данных в этой итерации в целом соответствует предыдущим версиям, без дополнительных оптимизаций или изменений.

Кроме того, основная цель этого набора исправлений — подготовить преобразование процесса буферизованного ввода-вывода для обычных файлов в инфраструктуру iomap. Эти исправления отделяют buffer_head от основного процесса перемещения экстентов, ограничивая его использование только вспомогательными функциями mext_folio_mkwrite() и mext_folio_mkuptodate(), которые обрабатывают обновление и помечают страницы в кэше подкачки как «грязные». Общий стиль кодирования процесса перемещения экстентов соответствует инфраструктуре iomap, закладывая основу для поддержки онлайн-дефрагментации после внедрения инфраструктуры iomap.

Бенчмарки, входящие в серию исправлений, весьма заманчивы:

Смотри детально https://lore.kernel.org/lkml/20250923012724.2378858-1-yi.zhang@huaweicloud.com/
Смотри детально https://lore.kernel.org/lkml/20250923012724.2378858-1-yi.zhang@huaweicloud.com/