Руководство по тюнингу файловых систем Linux для Flash-накопителей
Тим Берд (Tim Bird), инженер компании Sony и участник группы разработки встраиваемых систем в Linux Foundation, опубликовал подробное руководство (PDF, 550 Мб) по тюнингу производительности файловых систем Ext4, Btrfs и F2FS с учётом выбора планировщиков ввода/вывода, для достижения оптимальной производительности на накопителях eMMC/SSD. В статье досконально проанализированы доступные опции и представлены тесты производительности, демонстрирующие эффект, достигнутый при использовании каждой опции. В частности, изучен эффект от монтирования с такими опциями, как «mount -o noatime», «mount -o discard», «tune2fs -O ^has_journal», «mount -o data=writeback», «mount -o nobarrier», «mount -o stripe=, mkfs -E stripe-width=», «mount -o ssd», «mount -o ssd_spread». Оценено влияние выбора планировщиков ввода/вывода noop, deadline, cfq, row. В итоге, правильный выбор планировщика и опций монтирования позволил увеличить производительность при выполнении некоторых тестов от 20% до 400%.
При этом универсального набора опций не найдено, для каждого типа носителя и типа нагрузки эффективным оказывался свой вариант тюнинга. При однотипной нагрузке (только чтение или только запись) влияние опций оптимизации и типа планировщка менее заметно, чем при смешанном характере нагрузки. В общем виде скорость чтения в основном упирается в пропускную способность накопителя. На скорость операций случайной записи положительно влияет размер кэша ФС.
Среди общих наблюдений: ФС Btrfs демонстрировала заметный рост производительности при включении режима SSD для накопителей с поддержкой операции TRIM. Оптимальная производительность Ext4 достигается при ипользовании опций noatime и nojournal в сочетании с планировщиком CFQ. Для Ext4 также наблюдается небольшой рост производительности при использовании на накопителях eMMC, даже без поддержки TRIM, при включенной опции discard. F2FS работает отлично при использовании настроек по умолчанию и при включении noatime. Наилучшие показатели продемонстрировал планировщик CFQ, от которого немного отстал ROW.
Интерес также представляют тесты живучести систем при экстренном выключении питания. Наиболее устойчивой к внезапному отключению оказалась ФС Ext4 (с включенным журналом, вне зависимости от опции nobarrier): до вывода fsck предупреждения о появлении автоматически невосстановимой ошибки было произведено 1406 циклов выключений питания в процессе работы. В случае Btrfs тест провалился всего лишь после нескольких выключений питания, в том числе и при использовании ориентированных на надёжность настроек по умолчанию. Результаты F2FS оказались ещё печальнее, чем Btrfs, в процессе ручной проверки выявлялись ошибки незамеченные ФС при монтировании, что усугубилось отсутствием утилиты fsck. В связи с этим авторы исследования не рекомендуют использовать Btrfs и F2FS в конфигурациях с ненадёжным питанием.
Полный текст статьи читайте на OpenNet