Лучший размер блока выделения на флешке с exFAT, имеющим небольшие файлы
У меня есть много файлов, которые колеблются между 1 и 50 КБ на жестком диске, подключенном через USB SCSI. Что будет лучшим allocation unit size
выбрать при форматировании exFAT
?
Мне интересно, что было бы самым быстрым в чтении / письме. Я рассматриваю 64K, хотя 32K кажется лучше. Я надеюсь, что кто-то может помочь мне понять, какой самый умный ход сделать!
2 ответа
После некоторого тестирования (спасибо другу) я получил эти результаты:
После форматирования exFAT
с размером выделения, установленным на:
- По умолчанию: размер на диске составляет 5,8 ГБ
- 8192: размер на диске 4,26 ГБ
- 16 КБ: размер на диске составляет 4,47 ГБ
Итак, в заключение: 8192 (~ 8K) явно выигрывает, когда речь идет о небольших файлах и файлах, связанных с проектами Android.
Мы можем использовать спецификацию ExFAT для получения формулы, которая подскажет нам лучший размер распределения для данного использования.
Предположим, мы говорим о томе размера V , отформатированном с размером выделения (размером кластера) C , и мы намерены хранить файлы среднего размера S (все числа указаны в байтах).
Все файловые системы FAT, включая ExFAT, хранят 2 копии FAT (таблицы размещения файлов), каждая из которых содержит столько записей, сколько кластеров на диске, причем каждая запись занимает 4 байта. Это основной источник. Таким образом, пространство, выделенное (растраченное) для двух копий FAT, составляет примерно:
Кроме того, каждый файл будет тратить в среднем половину кластера, поэтому нам нужно знать, сколько файлов поместится на диске. Количество файлов среднего размера S, которые поместятся в оставшемся пространстве после выделения двух копий FAT, примерно равно:
Таким образом, общий объем потраченного впустую пространства или накладных расходов файловой системы равен:
Оптимальный размер кластера соответствует минимальному неиспользуемому пространству, поэтому мы вычисляем частную производную W по C:
И решаем производную относительно нуля, сохраняя положительный ответ:
Удивительно (или нет*), но оптимальный размер кластера не зависит от размера тома, а только от среднего размера файлов.
Если вы можете предсказать средний размер файлов, которые вы будете хранить на устройстве (просто возьмите существующий каталог с аналогичными данными и разделите его размер на количество содержащихся в нем файлов), вы можете извлечь квадратный корень из среднего размера файла и умножьте на 4 , чтобы получить оптимальный размер кластера для диска ExFAT.
(*) Если подумать, результат имеет смысл. Если вы удваиваете объем тома, сохраняя при этом постоянный размер кластера, вы удваиваете как пространство, выделенное для FAT, так и пространство, выделенное для файлов. Поэтому соотношение потраченного впустую и использованного пространства остается неизменным.