Автор: Алексей Федорчук
В предыдущей заметке, посвящённой оценке быстродействия SSD с файловой системой ext4, были описаны результаты, полученные при разметке диска и создании файловой системы средствами инсталлятора Anaconda. И оказались они несколько противоречивыми. Поэтому я, следуя совета резонных людей, решил выполнить некоторые оптимизирующие пассы, в частности, пресловутое выравнивание.
Что такое выравнивание (aligning) и зачем оно нужно, было описано в статье первого из упомянутых резонных людей, Теодора Тсо (Theodore Ts’o), к коей и отсылаю за подробностями (
Правда, чтение их оставляет противоречивые впечатления. Связано это, в первую очередь, с тем, что мало кто, кроме непосредственных производителей SSD-накопителей (точнее, используемых в них контроллеров), точно представляет себе механику процесса. Тем не менее, исходя из сугубо общих соображений, можно сделать вывод, что вреда от этого самого выравнивания быть не должно. Так что попробуем проделать эту процедуру, следуя рекомендациям Теодора, на примере Fedora 13.
Для этого следует отказаться от разметки диска средствами инсталлятора дистрибутива. А, загрузившись с установочного носителя или LiveCD (я использовал RFRemix в варианте GNOME Live CD), перейти в любую из доступных текстовых консолей и дать команду
# fdisk -H 224 -S 56 /dev/sd?
переопределяющую число головок (H) и секторов (S) накопителя (вместо стандартных значений 255 и 63, соответственно). После этого средствами того же fdisk создаются разделы, а затем, по выходе из него с сохранением, файловые системы на них — в моём случае это были два раздела по 15 Гбайт, с файловой системой ext4 на каждом.
Теперь можно возвращаться в инсталлятор и завершать установку обычным порядком. Разве что на стадии дисковых манипуляций новообразованных разделов не нужно задавать форматирование — достаточно указать точки их монтирования (в моём случае — / и /home).
Закончив установку, остаётся только повторить тесты и поглядеть на их результаты, приведённые в таблице (строка вторая), в сравнении с полученными ранее на невыравненной файловой системе (строка первая) и на традиционном HDD (строка третья).
Тест | Копирование | Удаление | |||
Ext4, ordered | Flac | Портежи | Avi | Iso | Портежи |
SSD, б/выравн. | 00:04 | 00:43 | 01:03 | 00:08 | 00:06 |
SSD, с/выравн. | 00:02 | 00:44 | 01:01 | 00:08 | 00:03 |
HDD | 00:10 | 00:15 | 01:44 | 00:19 | 00:04 |
Стандартно, средствами инсталлятора, файловая система ext4 монтируется в режиме по умолчанию (data=ordered), в котором и выполнены все измерения. Поскольку предыдущая заметка показала, что режим writeback никакого принципиального выигрыша в быстродействии для ext4 не даёт, от измерений при этой опции монтирования я со спокойным сердцем отказался.
Отступление: кстати, вопреки легендам, data=writeback не обеспечивал скорости файловых операций и для ext3 — в сравнении не только с data=ordered, но и с data=journal (см. здесь ). И вообще, у меня сложилось впечатление, что ext4 унаследовала от своей предшественницы полную непредсказуемость в плане быстродействия.
Из таблицы и первой диаграммы, отражающей копирование
можно видеть, что на этой операции быстродействие с переходом к выровненной файловой системе фактически не меняется.
Зато последняя отыгрывается на удалении дерева портежей
Таким образом, можно видеть, что выравнивание, не обеспечивая никаких фантастических выгод, маленькие плюсы в быстродействии всё-таки даёт. А поскольку считается, что оно служит ещё и продлению жизни SSD, то операция оказывается явно не вредной.
Ну, что же, похвально. На HDD с 4 кб секторами (новые WD) без выравнивания скорость падает почти в 3 раза. Если на SSD в похожем случае чуда не произошло, значит наиболее вероятная причина невысокой производительности в контроллере Indilinx (вероятно 1го поколения). Хотя у Теодора Тсо описано выравнивание на 4 кб, а блок стирания/перезаписи то 256 кб (на новых чипах уже 512 кб), поэтому правильно выравнивать на 512 кб, а лучше сразу на 1 мб, как в win7. Для этого в fdisk надо использовать параметр -u и на калькуляторе высчитывать нужное смещение для каждого раздела.
> Для этого в fdisk надо использовать параметр -u и на калькуляторе высчитывать нужное смещение для каждого раздела.
Заниматься этим онанизмом без крайней необходимости никто не будет.
А случаев, когда это действительно необходимо, я пока не вижу.
Так что остаётся вспомнить финальные слова из статьи Теодора: либо производители сами решат эту проблему прозрачно для пользователя, либо их продукция не получит широкого распространения. Второе, с учётом цены SSD, пока более вероятно.
> Заниматься этим… никто не будет
И не надо, 1 раз настроил и забыл. Никогда не поверю, что для линуксоида это так трудно.
> Второе, с учётом цены SSD, пока более вероятно
Я это понял когда в 2.6.32 (ядро с долговременной поддержкой) не включили поддержку TRIM для уже стабильной ext4, зато включили для сырой btrfs. SSD пока сам по себе нишевый продукт. Так же как WD Raptor, который наверное скоро уйдет на заслуженный покой.