Практикум: влияние разметки диска на производительность SSD

Проблема неправильного форматирования SSD-дисков обсуждалась много раз с тех самых пор как эти накопители поступили в массовое производство. И хотя современные операционные системы Windows уже научились правильно работать с твердотельными дисками, при форматировании накопителей сторонними утилитами (либо в Windows XP) возможны проблемы с производительностью, о которых будет рассказано ниже.


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

Немного теории
Современные накопители представляются операционной системе и программам в виде памяти, разбитой на сектора размером 512 байт, тем не менее на физическом уровне размер каждого сектора диска в 8 раз больше и составляет 4 КБ. Для сохранения совместимости со старыми приложениями над всем этим создается еще одна прослойка, в которой каждый сектор также равен 4 КБ. Операционные системы Microsoft, выпущенные до Windows Vista, резервируют первые 63 сектора в начале диска для MBR (master boot record), и это приводит к тому, что логический (самый верхний) и физический (самый нижний) слои накопителя сдвигаются друг относительно друга, и следовательно, один логический сектор размещается сразу на двух физических. Из этого вытекает, что все операции ввода/вывода будут совершаться дважды, что не только снижает производительность SSD, но и быстрее расходует его ресурс (как известно, у SSD ограниченное количество циклов записи). Как можно догадаться, чтобы сектора на физическом и логическом уровне совпадали, сдвиг в самом начале диска должен быть кратен 4 КБ (4096 байт).

Как узнать, правильно ли сдвинут раздел на SSD
Как упоминалось выше, современные системы Windows умеют правильно сдвигать разделы при форматировании, однако если первоначальная разбивка была сделана в сторонней утилите или в Windows XP, то даже переформатирование в Windows 7 не исправит ситуации. В этом случае поможет либо полное удаление раздела(-ов) и создание нового, либо сдвиг всей области диска с помощью специальных утилит.
Чтобы узнать, а нужно ли вообще заниматься всем этим, необходимо запустить утилиту msinfo32, перейти в раздел Components->Storage->Disks (Компоненты->Запоминающие Устройства->Диски), и найти значение Partition Starting Offset для своего SSD диска.

Если при делении этого значения на 4096 получается не целое число, то первый раздел сдвинут некорректно. В нашем случае 32 256/4096 = 7,875, чего и следовало ожидать после форматирования диска под Windows XP.

Альтернативным способом получения той же информации является запуск следующей команды в командной строке:
wmic partition get BlockSize, StartingOffset, Name, Index

Как видно, на одном накопителе (SSD в нашем случае) первый раздел сдвинут некорректно, а на втором (HDD) – корректно, поскольку 1048576/4096 = 256 (целое число).

Как подвинуть раздел
Если на диске не хранится ничего важного, то быстрее всего исправить ошибку можно, удалив все разделы и создав их заново из-под Windows Vista/7. Простым форматированием здесь не обойтись, поскольку сдвига области при этом не происходит.
Если диск является загрузочным и описанные выше операции нежелательны, то следует заняться смещением раздела. Рассмотрим, как это делается с помощью бесплатной утилиты GParted.
1. Скачиваем загрузочный ISO-диск GParted (115 МБ) либо используем один из дистрибутивов Linux, в котором GParted может быть доступен в виде отдельной утилиты.
2. Записываем образ на компакт-диск или флешку и загружаемся с носителя.
3. Выбираем в GParted первый раздел SSD-накопителя и команду Resize/Move.
4. Снимаем галочку возле Round to cylinders, ставим «2» напротив Free space preceding, нажимаем Resize/Move и затем Apply.
5. Повторяем предыдущий пункт, но вместо «2» в Free space preceding ставим «1». Нажимаем Resize/Move и затем Apply.
6. Если на SSD имеется несколько разделов, то операции 3-5 необходимо повторить с каждым из них, что может занять несколько часов.
GParted выполняет операцию сдвига без удаления данных, однако при работе с жесткими дисками всегда рекомендуется сохранять важные файлы на другом носителе.

После перезагрузки система скорее всего откажется стартовать, но работоспособность Windows можно быстро вернуть, используя команду Repair Your Computer в первом же диалоге любого загрузочного диска с Windows 7.
После появления Рабочего Стола проверяем корректность выравнивания в Msinfo32:

2 097 152 / 4096 = 512 – раздел сдвинут правильно.

Производительность
Прежде чем непосредственно измерить быстродействие, была сделана попытка посчитать операции ввода/вывода до и после форматирования диска. Как утверждает справка Microsoft, параметры I/O Reads и I/O Writes в Диспетчере Задач Windows показывают количество соответствующих операций чтения или записи для каждого конкретного процесса.
Пять раз до использования GParted и пять раз после было произведено копирование одного и того же ISO-файла объемом 700 МБ на SSD-диске с помощью файлового менеджера Altap Salamander. В каждом случае количество операций чтения и записи составляло ровно 22,3 тыс. Отсутствие разницы, скорее всего, объясняется тем, что Менеджер Задач Windows работает только с верхним уровнем диска и не умеет отображать реальное количество операций на базовом уровне.
Для непосредственного измерения производительности использовались программы HD Tune и Crystal Disk Mark. SSD-накопитель Kingston HyperX SH100S3B/240G сначала тестировался на компьютере с SATA 2.0, а затем на платформе с поддержкой SATA 3.0, где ему удалось полностью раскрыть свой потенциал: быстродействие накопителя находится на уровне 500+ МБ/с, но при использовании SATA 2.0 упирается в 200+ МБ/c. Все измерения проводились 5 раз, а размер тестового файла в CrystalDiskMark составлял 1000 МБ.
В режиме Benchmark программы HD Tune измерялась лишь скорость чтения, поскольку для тестирования записи требовалось удаление всех разделов с диска (для прямого доступа утилиты к накопителю), а это разумеется лишало всю проверку смысла.

SATA 2.0
Скорости чтения и записи до и после выравнивания, МБ/с(Скорости чтения и записи до и после выравнивания, МБ/с)

Логично было бы предположить, что накопитель, производительность которого в 2,5 раза превышает пропускную способность SATA 2.0, просто упрется в возможности интерфейса и не продемонстрирует никакого прироста на устаревшей платформе, но это оказалось совсем не так. Рост, и довольно существенный, был зафиксирован даже в такой конфигурации тестовой системы.
Как хорошо видно на диаграмме, скорость чтения в режиме SATA 2.0 практически не менялась, и определяющим фактором здесь (за исключением двух последних тестов с небольшим размером блоков) стало «бутылочное горлышко» интерфейса.
Совершенно другая картина складывается в тестах на скорость записи, где в каждом случае была зафиксирована очевидная разница в быстродействии. Минимальный прирост производительности составил 12%, а максимальный – 450%.

SATA 3.0
Скорости чтения и записи до и после выравнивания, МБ/с(Скорости чтения и записи до и после выравнивания, МБ/с)

Этот режим позволил раскрыть весь потенциал накопителя, и он продемонстрировал в тестах именно те скорости, которые производитель указал на коробке (около 500 МБ/c в режиме чтения и записи).
Проверка чтения вновь не принесла особых сенсаций, разве что HD Tune в режиме Benchmarks как бы исправился за результат в предыдущем тесте, где вместо небольшого повышения производительности было зафиксировано незначительное, но все же странное снижение показателей. Также выделяется результат CrystalDiskMark (4K QD32), где разница в скорости составила не пару МБ, как в остальных тестах, а значительно больше.
Результаты записи также очень похожи на те, что были получены в режиме SATA 2.0. Прирост в каждом тесте (кроме первого и последнего) практически идентичен, и это легко объясняется тем, что производительность SSD в этих тестах не зависела от версии SATA интерфейса. Если сделать подсчеты, то минимальный прирост составил 18%, а максимальный – 310%.

Вывод
Результаты проверки оказались несколько неожиданными. Во-первых, в теории быстродействие накопителя должно было повыситься и при чтении, но очевидное улучшение в тестах было зафиксировано лишь при операциях записи. Во-вторых, до начала проверки ожидались куда более скромные показатели прироста (если ожидались вообще), но не смотря на это в некоторых тестах было получено 3-4 кратное увеличение скорости записи.
Поскольку проверка правильности сдвига разделов на SSD занимает буквально менее минуты, то рекомендуем всем обладателям таких накопителей на всякий случай проверить свой твердотельный диск и, в случае неправильного форматирования, настроить его корректным образом для получения максимальной производительности. Интересно, что неправильный сдвиг актуален и для обычных накопителей, и есть сведения о том, что негативное влияние этого фактора проявляется на R.A.I.D. массивах. Следовательно, обладателям таких систем хранения данных, особенно настроенных на максимальную скорость, а не на избыточную безопасность, также есть смысл оптимизировать свою систему.