Деградация производительности SSD и методы борьбы с ней.

  • Автор:

SSD-degrade-000.jpg

Твердотельные диски (SSD) сравнительно новый и все еще довольно дорогой вид накопителя, поэтому принимая решение о приобретении SSD нужно учесть все особенности данной технологии, чтобы максимально использовать преимущества новых дисков и, по возможности, минимизировать влияние недостатков.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

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

Почему так происходит? Для этого вспомним, каким образом организовано хранение данных в современных системах. Эволюция жестких дисков привела к тому, что операционная система ничего не знает о физической структуре диска, которая еще на уровне BIOS преобразуется в логическую структуру с которой уже взаимодействует драйвер контроллера дисков. Фактически все взаимодействие ОС и накопителя заканчивается на уровне файловой системы. Все что находится глубже остается для ОС неким черным ящиком. С одной стороны это правильно, так как обеспечивает обратную совместимость и дает возможность старым ОС эффективно использовать новые накопители. Но в случае использования принципиально иной технологии хранения данных подобный подход добавил только новые проблемы.

Особенность используемой в SSD флеш-памяти типа NAND состоит в том, что запись может производиться только в свободные блоки, если блок уже содержит данные, то происходит считывание данных из него в кэш накопителя (или ОЗУ) - очистка блока - замена старых данных новыми - запись. Нетрудно заметить, что занятый блок увеличивает количество операций при записи с одной до четырех. На практике высокая скорость записи доступна до тех пор пока на SSD есть свободные блоки, по мере заполнения диска данными такие блоки заканчиваются и производительность на операциях записи начинает существенно падать.

Теперь вспомним, о чем мы говорили чуть ранее. ОС не знает какие блоки SSD свободны, а какие нет, поэтому все операции с диском отдаются на откуп файловой системы у которой свои понятия о методах хранения информации. При удалении файла современные файловые системы не спешат физически удалять файл с диска, они просто помечают соответствующие блоки в таблице расположения файлов как свободные. Реально удаленные данные присутствуют на диске до тех пор, пока не будут перезаписаны новыми. При использовании механических жестких дисков такой подход полностью оправдан, так как позволяет избежать лишних обращений к механике диска (время произвольного доступа - главное больное место HDD), в тоже время разницы между записью в свободный и содержащий данные сектор у механических дисков нет.

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

Что касается дисков, то здесь вопрос на сегодняшний день закрыт, все актуальные модели поддерживают TRIM, а для ранее выпущенных моделей существую новые прошивки. С операционными системами не все так радужно, TRIM на сегодняшний день поддерживают:

  • Windows 7
  • Windows Server 2008 R2
  • Linux c ядром 2.6.33 и выше
  • FreeBSD 8.1, ограниченная поддержка только для низкоуровневого форматирования, полная поддержка ожидается в FreeBSD 9.

Сегодня наше теоретическое отступление оказалось неожиданно обширным, самое время проверить как обстоят дела на практике. После нашего тестирования SSD в феврале этого года мы решили подвергнуть один из дисков OCZ Agility 2 <OCZSSD2-2AGTE60G> продолжительному испытанию. Мы установили его в качестве дополнительного диска в сервер под управлением Windows Server 2003 и разместили на нем базы 1С:Предприятие 7.7 с суммарной нагрузкой в 30 пользователей. В начале этой недели мы сняли этот диск. Все последующие операции производились на Windows 7 SP1 64-бита.

Основной интерес для нас представляли два параметра: степень износа SSD и уровень производительности после продолжительной работы в системе без поддержки TRIM. Так как SSD имеет конечное количество циклов перезаписи, многие испытывают вполне обоснованные опасения по поводу пригодности SSD для высоконагруженных дисковых подсистем. Данный показатель можно узнать из S.M.A.R.T. таблицы накопителя. Для этого мы воспользовались удобной утилитой CrystalDiskInfo:

SSD-degrade-001.jpg

Как видим, по поводу ресурса можно не беспокоиться, отработав 4 месяца в режиме активного использования диск по прежнему имеет это значение на уровне 100% и, как показывает практика, диск будет заменен как морально устаревший ранее чем выработает свой ресурс.

Теперь перейдем к производительности, в наших февральских тестах диск показал следующие результаты:

SSD-test-002.png

Посмотрим, что он покажет теперь:

SSD-degrade-002.jpg

Результат работы без TRIM налицо: производительность операций записи снизилась на 15-40%, что весьма существенно. Внимательный читатель заметит, что тестирование мы проводили в ОС которая поддерживает TRIM, однако производительность так и осталась низкой. Все правильно, ОС не знает какие блоки свободны, а какие нет, поэтому наличие TRIM будет действовать только для вновь удаляемых данных.

Однако на практике все гораздо хуже. Ни быстрое, ни полное форматирование, ни заполнение диска нулями при помощи специальных утилит не привели к желаемому результату:

SSD-degrade-003.jpg

Да, есть от чего прийти в отчаяние, светлое будущее SSD перестает казаться таким светлым и заставляет задуматься о правильном вложении средств. Сегодня единственным реально работающим способом вернуть SSD былую производительность является использование фирменных утилит, однако это связано с полным уничтожением данных на диске. Мы воспользовались утилитой OCZ Toolbox, а именно функцией Secure Erase.

SSD-degrade-004.jpg

После использования данной функции нужно перезагрузить ПК и заново создать раздел на SSD (текущий будет автоматически удален), форматирование нового раздела, несмотря на установленный флажок "Быстрое форматирование", займет довольно продолжительное время, в итоге SSD будет полностью очищен. Проверим производительность:

SSD-degrade-005.jpg

Ну, наконец то! Производительность вернулась к исходным показателям.

Выводы:

Что можно сказать по этому поводу? Практического смысла в приобретении SSD для систем не поддерживающих TRIM нет, лучше потратьте эти деньги на создание производительного RAID массива из SATA / SAS дисков. При использовании бывших в эксплуатации SSD обязательно произведите очистку диска фирменной утилитой и не забудьте проверить оставшийся ресурс диска. В остальном остается пожелать вам благоразумия и использовать SSD только в тех случаях, когда это действительно имеет смысл.

Дополнительные материалы:

  1. Можно ли эффективно использовать SSD без поддержки TRIM?

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments