Linux 7.4 FAT32

Расширение файлов на FAT32 в тесте Linux 7.4-rc2 ускорилось в 162 раза

Операционные системы

В основную ветку ядра Linux приняли оптимизацию FAT32 для версии 7.4-rc2. В самом удачном тесте разработчика Матеуса Алвеса де Алмейды расширение 16 файлов заняло 0,362 секунды вместо 58,66 секунды. Результат 162,15× получен в виртуальной машине на разделе с кластерами по 512 байт, смонтированном с параметром sync.

Как изменили выделение места на FAT32

При увеличении файла драйвер FAT выделял кластеры небольшими порциями. При синхронном монтировании такие операции особенно затратны из-за частого обновления таблицы размещения файлов. После патча fat_cont_expand() заранее резервирует нужные кластеры через новую функцию fat_preallocate(). Её использует и fat_fallocate() с флагом FALLOC_FL_KEEP_SIZE, который позволяет резервировать место без изменения видимого размера файла.

Что показали тесты FAT32 с параметром sync

Разработчик опубликовал замеры для QEMU/KVM с виртуальным блочным устройством virtio-blk и параметром cache=none. Ниже приведено среднее время выполнения операции для 16 файлов с целевым размером 1 МиБ при синхронном монтировании.

ОперацияРазмер кластераДо патчаПосле патчаУскорение
ftruncate()512 Б58,66 с0,362 с162,15×
fallocate()512 Б61,36 с0,390 с157,15×
ftruncate()4096 Б9,294 с0,111 с84,06×
fallocate()4096 Б8,710 с0,110 с79,36×

В сценариях без параметра sync ускорение составило от 1,13 до 1,79 раза. Автор измерял время изменения размера файла и резервирования места. Чтобы оценить эффект при обычном копировании на USB-накопитель, нужны отдельные замеры.

Откуда взялась цифра 265×

В более раннем патче тот же разработчик ускорил пакетное выделение кластеров для fallocate() с флагом FALLOC_FL_KEEP_SIZE. В том тесте резервировали по 16 МиБ для 16 файлов. Время сократилось с 92,489 до 0,348 секунды, то есть в 265,4 раза. У нового результата 162,15× другой сценарий: расширение файлов через ftruncate().

Патч вошёл в пакет изменений для 7.4-rc2. На 6 ноября последним опубликованным кандидатом на выпуск оставался Linux 7.4-rc1.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x