Оптимальный размер кластера для случайного ввода-вывода
Меня особенно интересует ответ для хранилища NAND (SD-карты, карты памяти).
У меня есть ноутбук с Windows 7, на котором я запускаю 2 виртуальные машины внутри VMWare, а также несколько программ в основной операционной системе. Доступ к диску виртуальной машины очень случайный, и у меня получилось отличное улучшение производительности моей системы благодаря использованию карты памяти емкостью 16 ГБ с ReadyBoost. Я отформатировал флэш-память с помощью exFAT, чтобы можно было выделить файл sfcache размером 16 ГБ. Я использовал размер кластера 32 МБ, но я не уверен, что это оптимально.
Мое понимание размера кластера заключается в том, что большие размеры кластера приводят к потере места для файлов меньшего размера, но к увеличению скорости чтения и меньшему использованию файлов, если у вас в основном большие файлы. Однако я понял, что ReadyBoost помогает только для случайного ввода-вывода, а не для последовательного ввода-вывода. Это заставило меня задуматься, будет ли меньший размер кластера лучше для случайного ввода-вывода, а большой размер кластера лучше для последовательного ввода-вывода.
Я провел несколько тестов ввода-вывода на флэш-накопителе объемом 16 ГБ.
Изображения показывают результаты для размеров кластера: 1 КБ, 4 КБ, 8 КБ, 32 МБ.
У 1k была худшая скорость случайного ввода-вывода, в то время как у 4k была лучшая (только немного медленнее, чем 8k для последовательного ввода-вывода, возможно, в пределах погрешности). Не уверен, как интерпретировать эти результаты. Возможно ли, что производители оптимизировали свое устройство под размер блока выделения Windows по умолчанию?
2 ответа
Я лично не стал бы беспокоиться, так как отклонения от стандартного форматирования почти всегда вызывали у меня проблемы в будущем, если не сразу с точки зрения надежности и поддержки. Отклонение от стандарта должно быть хорошо рассмотрено, поскольку пути кода для такого типа вещей не обязательно проверяются так же хорошо, как и для стандартного общего случая.
Если бы у вас не было реальной необходимости, я бы не стал экспериментировать, особенно если вы хотите сохранить данные на длительный срок.
Если файлы, которые вы создаете, создаются после форматирования и впоследствии не меняют размер , у вас все в порядке с настройками по умолчанию. Но если у вас не так много файлов и папок и они сжимаются или увеличиваются в размерах , лучше использовать значения немного выше значений по умолчанию (8K или 16K). Помните, что папки и файлы , размер которых меньше размера кластера , занимают размер кластера в пространстве.
Всегда лучше поэкспериментировать со значениями кластера для FAT32 , exFAT и NTFS в зависимости от предполагаемого использования раздела, чтобы вы могли извлечь максимальную производительность из своего хранилища. Я настоятельно рекомендую настроить это значение как можно ближе к значению по умолчанию . Не забудьте принять во внимание минимальный запрос ввода-вывода для жестких дисков и твердотельных накопителей: обычно жесткие диски имеют размер 512 байт , а твердотельные накопители — 4096 байт .
Приведу пример: у меня установлена Windows 10 на SSD SATA III емкостью 480 ГБ . У меня есть жесткий диск емкостью 500 ГБ , который я использую для хранения магазинов игр и самих игр , поэтому я решил выделить разделы для этих разных целей.
- 16 ГБ NTFS @ размер кластера 8 КБ — все игровые магазины (Origin, Steam, Epic, Uplay)
- 384 ГБ NTFS @ размер кластера 16 КБ . Храните игры, которые все еще получают обновления.
- 64 ГБ exFAT @ размер кластера 32 КБ — храните старые игры, которые больше не меняются.
Размер кластера по умолчанию для NTFS — 4096. Обратите внимание, что при превышении этого значения вы потеряете сжатие, если это для вас важно.
Чем больше кластер, тем меньше фрагментация может возникнуть, если файлы сильно изменяются в размере или удаляются и воссоздаются с разными размерами . В реальном мире не всегда выполняются случайные или последовательные операции . Реальный мир неоднозначен . Но таким образом мы можем сделать смешанные операции менее случайными и более последовательными . Как мы знаем, многие мелкие операции хуже, чем менее крупные .