Суть оптимизации
Разработчик Matheus Alves de Almeida внес изменения в драйвер файловой системы FAT32, которые были приняты в основную ветку Linux 7.4 через pull-запрос Andrew Morton'а. Ключевая проблема заключалась в неэффективном пути аллокации: при использовании флага FALLOC_FL_KEEP_SIZE (предварительное выделение места без изменения видимого размера файла) система выполняла множество отдельных запросов на выделение одного кластера.
Новый патч, занимающий всего несколько строк кода, переключает логику на пакетное выделение нескольких кластеров за один вызов. Это радикально снижает накладные расходы на системные вызовы и управление памятью.
Результаты бенчмарков
Тестирования, проведенные автором патча, демонстрируют колоссальный прирост производительности. Ниже приведены ключевые метики улучшения скорости работы файловой системы FAT32:
| Метрика / Параметр | Результат |
|---|---|
| Максимальный прирост скорости | До 265x (в 265 раз) |
| Версия ядра | Linux 7.4 |
| Используемый флаг | FALLOC_FL_KEEP_SIZE |
| Механизм изменения | Пакетная аллокация кластеров вместо поштучной |
Почему это важно
Файловая система FAT32 остается стандартом де-факто для съемных носителей, флеш-накопителей и встроенных систем. Несмотря на возраст, она повсеместно используется благодаря совместимости. Оптимизация пути аллокации критически важна для сценариев, где файлы активно расширяются или предварительно резервируют место (например, при записи больших объемов данных или работе с виртуальными машинами на внешних дисках).
Технические детали
Изменения были интегрированы в рамках non-MM pull request. Патч затрагивает минимальное количество кода, что снижает риск регрессий, но при этом обеспечивает максимальную эффективность. Для пользователей это означает значительно более быструю запись данных на устройства с файловой системой FAT32 при использовании современных инструментов работы с файлами.
Источник: Phoronix ↗
