Лучший размер блока выделения на флешке с 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, так и пространство, выделенное для файлов. Поэтому соотношение потраченного впустую и использованного пространства остается неизменным.

Другие вопросы по тегам