Краткий ликбез по SSD

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

Итак, SSD это хранилище с настоящим random доступом к данным. Здесь нет никаких движущихся головок, так что latency чтения не зависит от физического расположения страниц данных. Для HDD используется специальная техника называемая IO Scheduling предназначенная для оптимизации движения головки диска. Для SSD порядок чтения страниц неважен. Кроме того, при повышении количества потоков одновременно считывающих данные, общая пропускная способность SSD растет при постоянной latency. В тестах, где потоки последовательно читают страницы по 4 KiB, пропускная способность достигает своего пика при ~100 потоках после чего начинает медленно падать.

Latency операции на чтение равняется приблизительно 135us + 5us*NumOfBlocks где NumOfBlocks количество считываемых 4 KiB страниц. Чем больше размер считываемого файла тем выше пропускная скорость. Так для больших файлов скорость составляет 600-650 MiB/s. Технология SLC показывает скорость чтения на несколько процентов выше чем MLC.

Суммируя два вышеназванных факта, можно сказать, что SSD идеальны для приложений с большим количеством random-access операций чтения. Таких как современные базы данных.

Скорость записи варьируется и зависит от Сборщика мусора. Это связано с тем, что перед тем как перезаписать страницу она должна быть очищена. Но в связи с физическими ограничениями технологии NAND очистить можно только лишь большими блоками, обычно 256 KiB. Предположим, что нам надо перезаписать одну лишь страницу. Для этого контроллер производит следующие действия:

  • Прочитать данные со всех активных страниц блока
  • Очистить весь блок (256 KiB)
  • Записать данные активных страниц, включая новые данные для перезаписываемой страницы. При этом страницы где ранее хранились неактивные данные доступны теперь для записи.

Эта операция (известная как write amplification) замедляет процесс записи в случае если привод долгое время не форматировался.

Для свежеотформатированного привода скорость записи составляет ~480 MiB/s для SLC, ~280 MiB/s для Intel MLC, ~260 MiB/s для Samsung MLC. При эффективности сборщика мусора в 50% (то есть 50% блоков требуется очистить перед записью) скорость записи SLC снижается до ~130 MiB/s (то есть в 3.5 раза).

Надежность. Ошибки происходят при записи страницы и при ее чтении. Если контроллер не может записать страницу (например выработан ресурс ячеек) – то страница маркируется как испорченная. При ошибках чтения сложнее. Так современные SSD используют коррекцию ошибок основанная на кодировке Соломона-Рида и контроллер может восстановить до 6 ошибочных бит на каждые 256 байт. Подобное корректирование ошибок происходит прозрачно для приложения. При большем количестве непрочитанных бит – страница маркируется как испорченная. Тесты для Micron MLC показали, что отказ чтения страницы составляет ~6.8e-15 что примерно соответствует показателю HDD.

Износ. У HDD ресурс определяется количеством часов работы. Это связано с тем что самым слабым звеном являются движущиеся части (подшипники, считывающая головка). Для современных HDD это число является порядка миллиона часов. Для SSD износ определяется тем сколько раз можно записать в ячейку. Ресурс ячейки сильно зависит от технологии Multi-level cell vs Single-level cell.

Ожидаемое количество циклов записи следующее для технологий:
SLC – 100,000
Intel MLC – 5,000
Samsung MLC – 1,500

Данные цифры предоставлены мне нашими “железячниками”, в то же время wikipedia говорит что у MLC ресурс равен 10,000. Так что цифры требуют подтверждения.

При нагрузке записи в 100 MiB/s на привод размером в 480 GiB ожидаемое время жизни
SLC – 15 лет
Intel MLC – 9 месяцев
Samsung MLC  – 3 месяца

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

Advertisements

2 responses to this post.

  1. Posted by teenytiny on June 10, 2011 at 14:02

    я правильно понимаю, что для надежности нужно выбирать накопители на базе slc, а от их контроллера зависит эффективность уборки мусора?
    в декабре поставил первый onyx на 64Гб, а сейчас уже одна smart utility показывает, что removed bad sectors 23532
    пытаюсь понять, сколько ему еще суждено продержаться, когда настанет пора его менять, и на что лучше поменять (
    другая утилита – smartreader пишет, что все ок
    в системе тоже написано “Статус SMART: проверен”

    Reply

  2. @teenytiny

    >> правильно понимаю, что для надежности нужно выбирать накопители на базе slc, а от их контроллера зависит эффективность уборки мусора?

    Правильно. SLC более надежные но и более дорогие.

    >> пытаюсь понять, сколько ему еще суждено продержаться, когда настанет пора его менять, и на что лучше поменять (

    Сложно сказать. Надежных статистических данных по домашним SSD еще нет. Будут только лишь через год-два когда будет достаточно сломанных дисков.

    Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: