Оптимальный размер кластера для случайного ввода-вывода

1402
Jim

Меня особенно интересует ответ для хранилища NAND (SD-карты, карты памяти).

У меня есть ноутбук с Windows 7, на котором я запускаю 2 виртуальные машины внутри VMWare, а также несколько программ в основной операционной системе. Доступ к диску виртуальной машины очень случайный, и у меня было отличное улучшение производительности моей системы от использования карты памяти на 16 ГБ с ReadyBoost. Я отформатировал флэш-память с помощью exFAT, чтобы я мог выделить файл 16 ГБ sfcache. Я использовал размер кластера 32 МБ, но я не уверен, что это оптимально.

Насколько я понимаю, размер кластера заключается в том, что большие размеры кластера приводят к потере места для файлов меньшего размера, но к увеличению скорости чтения и меньшему использованию файлов, если у вас в основном большие файлы. Однако я понял, что ReadyBoost помогает только для случайного ввода-вывода, а не для последовательного ввода-вывода. Это заставило меня задуматься, будет ли меньший размер кластера лучше для случайного ввода-вывода, а большой размер кластера лучше для последовательного ввода-вывода.

Я провел несколько тестов ввода-вывода на флэш-накопителе объемом 16 ГБ.

Изображения показывают результаты для размеров кластера: 1 КБ, 4 КБ, 8 КБ, 32 МБ.

enter image description here

enter image description here

enter image description here

enter image description here

У 1k была худшая скорость случайного ввода-вывода, в то время как у 4k была лучшая (только немного медленнее, чем 8k для последовательного ввода-вывода, возможно, в пределах погрешности). Не уверен, как интерпретировать эти результаты. Возможно ли, что производители оптимизировали свое устройство под размер блока выделения Windows по умолчанию?

4

1 ответ на вопрос

1
mdpc

Я лично не стал бы беспокоиться, так как отклонения от стандартного форматирования почти всегда вызывали у меня проблемы в будущем, если не сразу с точки зрения надежности и поддержки. Отклонение от стандарта должно быть хорошо рассмотрено, поскольку пути кода для такого типа вещей не обязательно проверяются так же хорошо, как и для стандартного общего случая.

Если бы у вас не было реальной необходимости, я бы не экспериментировал, особенно если вы хотите сохранить данные в течение длительного времени.

Я не беспокоюсь о долгосрочном хранении, я просто хочу оптимизировать один вариант использования: произвольный доступ. Также было любопытно о разных результатах. Jim 10 лет назад 0

Похожие вопросы