Практикум: влияние разметки диска на производительность 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. массивах. Следовательно, обладателям таких систем хранения данных, особенно настроенных на максимальную скорость, а не на избыточную безопасность, также есть смысл оптимизировать свою систему.


  • ViBray

    Интересная статейка. Лично об этом еще ничего не читал, потому для меня было полезно. Думаю, не менее интресно будет и для других. Автору спасибо!

  • genius1981

    Да, спасибо. С ССД еще плотно не работал (но в ближайшем будущем предстоит). Мне статья однозначно полезна.

  • Опять винда лажает! Да  сколько гемора с ССД выходит, а сколько на практике при обычном использовании живет SSD может кто-то сказать адекватный ответ?

  • Антон Письменный

    А как потом вернуть к жизни Вин ХП?

    • Если есть загрузочный диск с Windows 7/Vista, использовать его. Или, если не путаю, в загрузочном диске Win XP использовать пункт Repair with Recovery Console и выполнить команду fixmbr.

  • Есть ли смысл в сдвиге разделов на SSD у которого скорость чтения и записи упирается в 160Мб/сек из-за чипсета?

    • Прироста в скорости может и не будет, но в теории жизнь накопителя должна продлиться из-за уменьшения количества операций вводы/вывода.

      • d1mma

        Кстати а само изменение количества операций ввода/вывода и как следствие увеличение срока службы в статье не проиллюстрировано. Неужели кроме Диспетчера Задач нечем это протестировать?

        • Предложите например чем.

          • EMOPLAYA

            IOMeter?

          • Спасибо. Жаль до теста утилита не пришла на ум.

  • Сколько же с этими ссд мороки. Купив себе ссд его еще настраивать нужно неделю, а потом ухаживать за ним аки тамагочи.

  • Егор Майданик

    Спасибо за статью. Хотелось бы видеть еще результаты тестов на диске (например) 128 GB, из которых размечено 128, 112, 96 и 80 GB. В последнем случае производительность и время жизни диска должно увеличится.

    • EMOPLAYA

      ну.. время жизни уж точно будет затруднительно проверить ))) а вот скорость записи, действительно должна быть выше, из-за большего количества зарание «очищенных» ячеек. На скорость чтения, ИМХО, это никак не влияет

  • EMOPLAYA

    Спасибо за интересную статью!
    Хотелось бы уточнить:
    1. Какие еще сторонние программы проводят выравнивание «по дефолту» во время разбивки диска? например Acronis Disk Director? 
    2. «Для сохранения совместимости со старыми приложениями над всем этим создается еще одна прослойка» — О какой совместимосте идет речь? Насколько я помню, стандартный BIOS имел огрничения, из-за чего приходилось использовать эмуляцию 4к, но ведь теперь уже есть UFEI, где эта проблема должна быть решена, или нет?
    3. Было бы очень интересно увидеть результаты работы еще и команды TRIM в будущих обзорах! ))) К тому же, на разных контроллерах она действует по-разному… 
    4. Я неоднократно сталкивался с обзорами, где указывалось, что перед началом тестирования была проведена команда TRIM, но нигде и никогда не находил, как ее принудительно запустить в необходимый момент, исключительно можно только проверить, задействована она или нет. Каким образом можно ее принудительно задать?
    5. Существуют ли вспомагательные утилиты, от изготовителя ССД для выравнивания разделов? Может, лучше пользоваться ими? например, ocz toolbox для дисков OCZ?
    6. Необходимо смотреть на смещение каждого раздела или только раздела 0? Если у меня там указано 512, что это значит? ))
    7. «Логично было бы предположить, что накопитель, производительность которого в 2,5 раза превышает пропускную способность SATA 2.0» 500Mb/s vs 300Mb/s ~ 1.5 раза. Если бы он превышал в 2,5 раза, ему бы не хватило и SATA 3 — 600Mb/s)))))))

    • 1. Тут руководствуясь только шестым чувством могу предположить, что все виндовые программы, выпущенные не более ~2 лет назад делают правильную разметку. Со всякими Linux/BSD/непонятными загрузочными дистрибутивами могут быть варианты.
      6. Каждый раздел может быть неправильно сдвинут, поэтому очень вероятна ситуация, что поправлять нужно не только первый, но и все последующие разделы. Что значит 512 (если это бит) сложно сказать. Лучше в лоб сделать все как в инструкции с каждым разделом, чтобы наверняка все правильно подогнать.
      7. Там все-таки 500 vs 200 (max 220).

      На остальные вопросы либо нет быстрого короткого ответа, либо они уже не совсем по теме обзора.

      • EMOPLAYA

        7. Там все-таки 500 vs 200 (max 220).

        Тут уж позвольте с Вами не согласиться. Раз уж сказано: «… в 2,5 раза превышает пропускную способность SATA 2.0» (Кстати, респект за правильное написание стандарта ;))
        то надо всё-таки отталкиваться от пропускной способности  SATA 2.0. А она состаляет 300Mb/s, и совсем не важно по какой причине ССД выдает там 220Mb/s. Будь то особенности материнской платы, ее чипсета, ее связки с процессором или контроллер ССД, который работает в режиме совместимости со старым стандатром. Он ведь всё-таки ориентировался на   SATA 3.0 в первую очередь. Ведь с другими котроллерами в некоторых тестах я встречал цифры и 240 и даже 270Mb/s для SATA 2.0 ССД на соответственных контроллерах )) Это к тому, что максимальная практическая пропускная способость ближе к 270

        • Согласен, моя ошибка. В какой-то момент попутал пропускную способность интерфейса со скоростью, показанной накопителем.

          • EMOPLAYA

            Кстати, может кому-то будет полезно. Уточнил на счет Acronis Disk Director 2011. Он действительно автоматом разбивает винчестер уже с учетом выравнивания 4к. Поэтому, если разделы создавались именно этой програмулиной, то беспокоится нечего ))
            Еще один совет по поводу быстрого выравнивания прочитал в мануале — необходимо просто клонировать винчестер на любой другой (произойдет автоматическое выравнивание), а потом клонировать обратно. Лично для меня это самое элементарное решение :) Правда если нет проблем с пустым винтом для клонирования.. :)
            З.Ы. а если у кого есть материнка с UEFI то необходимо просто задать схему разбиения диска GPT вместо MBR (т. к. GPT вообще не использует адресации Цилиндр — Головка — Сектор (CHS)), и проблема выравнивания вас больше не коснется ) Зато вы сможете использовать диски сверх 2,2 Tб одним разделом (до 16 Экзабайт) и создавать до 128 основных томов вместо 4 (для любителей тестировать большое количество ОС)))

  • Virtual_Man

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

    • пуск-выполнить-cmd-
      wmic partition get BlockSize, StartingOffset, Name, Index

  • O Mio

    в наличии RAID 1 c такими параментрами:

    Partition Disk #0, Partition #0 (резервный)
    Partition Size 101,94 MB (106 896 384 bytes)
    Partition Starting Offset 32 256 bytes

    Partition Disk #0, Partition #1 (системный)
    Partition Size 78,13 GB (83 886 080 000 bytes)
    Partition Starting Offset 106 954 752 bytes

    Partition Disk #0, Partition #2 (данные)
    Partition Size 387,43 GB (416 004 702 208 bytes)
    Partition Starting Offset 83 993 034 752 bytes

    нецелое число только на резервном, который создается при установке Вин7, — имеет ли смысл что-то исправлять?

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

      Теперь по теме. Из контекста сложилось впечатление, что прирост будет заметен только на рейдах типа 0 и других, заточенных конкретно под производительность. То есть на RAID 1 разница скорее всего заметна не будет.

      • O Mio

        спасибо
        вопрос возник потому, что вы упоминали рейды, говорили о системных дисках, но ни разу не упомянули о самой разметке и системной резервной области
        собственно, влияет ли разметка системной резервной области на быстродействие винчестера?

  • d3frager

     http://www.paragon.ru/home/partition-alignment/   теже яица, только в профиль)
    качаю портабле, попробую на обычной старенькой 120ке

  • EMOPLAYA

    Я уже наверно всем надоел, но у меня возникли еще парочка вопросов )))) А цiкавiсть — це шлях у майбутне! )))
    Каким образом Вы получили первоначально невыровнянные разделы? Ведь все современные дисковые менеджеры выравнивают по дефолту ) Тесты проводились на Windows 7 или XP? Просто один скриншот с ХР а второй с 7 )) причем на скриншоте явно видно признаки того, что система работает в режиме эмулятора. Вы тестировали невыровнянный ССД в режиме эмулятора или это просто скриншот, не имеющий отношения к тестовой машине?

    З.Ы. Было бы очень хорошо, если бы Вы где-то упоминали о тестовой системе, конфигурации, о первоначальных настройках и условиях тестирования.. Если тестирование происходило в разных ОС, то это разные драйвера, что значительно могло повлиять на результаты, а если использовался эмулятор , то это вообще отдельная тема.. Может я что-то и упустил из статьи, а может и вправду это следовало бы упомянуть? Не сочтите за придирки, мне просто хочется чтобы статьи на моем любимом ресурсе были самые-самые )))

    • Сначала мы тренировались на кошках. Форматирировали винт в виртуальной машине, смотрели где оно происходит правильно, где нет, и так далее. Скриншот действительно из WinXP в VM остался.

      Тестирование проводилось в Windows 7 во всех случаях. Для SATA 2.0 это была материнка P43 (точное название сейчас не вспомню), Intel Q9550@3,5 ГГц, 6 ГБ памяти. SATA 3.0 тестировался на чем-то еще более производительном в редакции, но тестовую конфигурацию не назову.

      Сергей Светличный написал, что буквально сегодня его знакомый купил такой же SSD как у него самого, и переносил на него винду с помощью Paragon, а потом удивлялся почему скорость в 2 раза ниже чем должна быть. Статья помогла — справедливость и скорость востановлены.

  • Guest

    Спасибо за статью. Не нашел ответа на вопрос, а каково же влияние подобной «неправильной» разметки на скорость работы механических дисков?

  • Главный вопрос у меня: а у всех ли SSD блоки по 4K? И как это проверить, если на сайте производителя это явно не указано? Например вот что пишут на сайте OCZ по поводу моего диска:

    Random Write 4KB (Aligned): 50,000 IOPS

    По-моему это не значит что физически размер блока равен 4КВ. Это всего лишь скорость случайной записи на диск блоками по 4КВ. С другой стороны зачем указывать «Aligned»?

    • Во всех изученных перед обозором источниках указывается, что сдвиг должен быть кратным 4 KB.

  • Алекс Арт

    Господи! У всех чтоль SSD это OCZ Vertex3 120Gb?

  • не прошло и 4 года :D
    На новых ХДД это критично, особенно там где сектор 4кб. Большие диски в общем https://ru.wikipedia.org/wiki/Advanced_Format