Light-electric.com

IT Журнал
9 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Ssd garbage collection

SSD: TRIM, garbage collection и режимы энергосбережения

Доброго времени суток, дорогие друзья! Не так давно, у меня возникла мысль провести апгрейд дисковой подсистемы своего MacBook’а и Mac Pro. После мучительного выбора между покупкой нового быстрого жесткого диска или покупкой SSD (эту часть я пропущу, чтобы не занимать ваше драгоценное время), выбор пал на последний, что побудило меня к изучению массы дополнительного материала, касающегося дальнейшей оптимизации операционной системы для быстрой и, главное, долговечной работы установленного SSD.

На тему оптимизации системы написано огромное количество статей с рекомендациями, смысл которых сводится к изменению ряда настроек операционной системы. Рекомендации эти однотипны, их перечень Вы увидите чуть ниже: проблема лишь в том, что некоторые из них мне показались сомнительными. В частности, в список «неблагонадежных» попали рекомендации по отключению режимов энергосбережения дисковой подсистемы компьютера. Об этом я и хочу сегодня поговорить.

Оптимизация операционной системы для работы с SSD

Приведу список, который в той или иной форме можно найти на большинстве сайтов. Для Mac OSX, например, он будет выглядеть следующим образом:

1. Активация технологии TRIM (советую почитать про эту команду, например, в Википедии);

2. Отключение кеширования в веб-браузерах;

3. Переключение режима сна (гибернации) компьютера;

4. Отключение Spotlight;

5. Отключение функции «перевод SSD накопителя в режим сна»;

6. Отключение функции noatime (запись времени последнего доступа к файлу);

7. Отключение файла подкачки;

8. Последующая чистка загрузочного кеша.

P.S. Следует уточнить, что для других операционных систем этот список будет таким же с небольшими вариациями.

Если с пунктами 1-4, 6-8 все более-менее понятно (хотя пункты 2, 4 и 7 у меня тоже вызывают большие сомнения), пункт «Отключение перевода SSD накопителя в режим сна» привел меня в легкое замешательство.

Я, конечно, понимаю, что работающий твердотельный накопитель потребляет очень мало электроэнергии (от 0.06 Вт в простое до 0.15 Вт в активном режиме) и отключение этой функции энергосбережения ни как не скажется на общем энергопотреблении компьютера (или, в случае ноутбука, на времени работы от аккумулятора). Но как, например, быть если в компьютере/ноутбуке вместе с SSD установлен еще и обычный жесткий диск? (если Вы, вдруг, не знаете: второй жесткий диск можно установить практически в любой ноутбук вместо родного комбо-привода, для этого существуют специальные переходники). Ведь, если отключить функцию «перевод дисков в режим сна» второй HDD тоже не будет засыпать, а это уже довольно ощутимо скажется на времени автономной работы ноутбука, да и постоянно «молотящие» жесткие диски стационарного компьютера мало кого обрадуют.

Тут стоит немного остановиться и уточнить: функция «по возможности переводить диски в режим сна» (именно так она называется в Mac OSX) позволяет «усыплять» накопители компьютера в те моменты, когда к ним нет обращений операционной системы. Блины диска перестают вращаться, головки паркуются — жесткий диск «спит». Как только к диску происходит обращение, он просыпается и начинает считывать/записывать информацию. Такой алгоритм работы позволяет существенно уменьшить энергопотребление и шум системы в целом.

Естественно, после глубокого понимания всего вышеописанного, у меня и возник вопрос: «А зачем вообще отключать эту функцию при установке в компьютер SSD?».

Зачем отключать функцию «перевод дисков в режим сна»

Быстро найти внятный ответ на этот вопрос не удалось и пришлось обращаться к первоисточникам, а именно посетить сайты крупнейших мировых производителей твердотельных накопителей. И вы не поверите: я нашел ответ!

Вот что, в частности, пишут на форуме поддержки пользователей сайта crucial.com:

«Since not all operating systems support TRIM, Crucial SSDs have a special feature called Active Garbage Collection. Active Garbage Collection is a process that helps an SSD maintain optimal performance by freeing up memory sectors that are no longer in use. Garbage collection is part of the SSD itself and thus not dependent on your computer’s operating system. Since garbage collection is part of the SSD’s firmware, it works regardless of which operating and filing systems your computer is using.

Note: Garbage collection only works when your Crucial SSD is idle, so make sure to configure your system so it doesn’t go to sleep when it’s idling. Garbage Collection takes time to do its job, but as long as it gets time to idle every now and then, your Crucial SSD will maintain its high level of performance over time…»

Здесь я привел только заключительную часть с непосредственным ответом на мой вопрос, полный текст статьи смотрите в статье: «TRIM and SSD performance: why is it important?». Сайт компании Crucial взят для примера, аналогичные материалы можно легко найти и на веб-ресурсах других производителей SSD.

Вольный перевод на русский язык даст нам следующее:

«Поскольку не все операционные системы поддерживают TRIM, твердотельные накопители Crucial имеют специальную функцию под названием Active Garbage Collection (далее — самоочистка, уборка мусора). Active Garbage Collection это процесс, который помогает SSD поддерживать оптимальную производительность за счет высвобождения секторов, которые больше не используются. Active Garbage является частью внутренней прошивки SSD и работает независимо от используемой операционной системы.

Функция уборки мусора работает только, когда Crucial SSD находится в режиме ожидания, так что не забудьте настроить систему так, чтобы она не переходила в режим сна, когда SSD бездействует…»

Вот и ответ на мой вопрос: микропрограммы контролеров современных SSD имеют встроенную функцию самоочистки (эдакий внутренний аналог TRIM’а, очень приближенно конечно). Работает она сама по себе, не зависимо от установленной операционной системы и выполняет функции аналогичные TRIM. Для эффективной работы этого внутреннего механизма необходимо, чтобы во время бездействия накопителя, операционная система не переводила SSD в режим сна и сам компьютер не спал.

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

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

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

Почему не нужен TRIM в серверах

Для начала стоит разобраться с тем, как работает SSD, что такое сборка мусора, как работает TRIM и главное — почему он не нужен в серверах.
SSD отличается от HDD не только ограниченным ресурсом ячеек. Есть еще множество архитектурных особенностей.

Размеры секторов

Стандартный размер сектора для большинства блочных устройств (жестких дисков и систем хранения данных) равен 512 байт (на некоторых SAS/SCSI дисках возможны 520/528 байт для дополнительного контроля целостности данных). Последние несколько индустрия пытается перейти на секторы 4096 байт (4 КиБ), т.н. Advanced Format. Продвигается процесс медленно, все пока что остановилось на 512e, т.е. дисках с 4K-секторами внутри, но с эмуляцией 512 байт секторов для хоста. На дисках 512e могут возникать проблемы с производительностью: при необходимости записать блок данных размером меньше 4 КиБ контроллеру диска приходится считывать сектор, менять в нем данные и только потом записывать обратно. Для SSD ситуация с записью небольших блоков еще сложнее:

Контроллер SSD по-прежнему вынужден прикидываться блочным устройством с 512 байт сектором. Но внутри все сложнее: ячейки объединены в страницы размером, как правило, 4-8 КиБ, т.е. это минимально доступный для чтения или записи объем. Записать данные в ячейку/страницу просто так нельзя, для этого нужно предварительно выполнить операцию стирания, а стереть можно только целый блок, состоящий из нескольких десятков (например, 64 или 128, в зависимости от архитектуры SSD) страниц, т.е. минимально доступный для стирания блок может оказаться размером, например, в 512 КиБ.

Write amplification (усиление записи)

Данный термин означает соотношение между объемом данных, который фактически приходится записывать на флеш-память, и объемом, который пишет хост. Предположим, что у нас есть блок 512 КиБ с данными и нужно поменять небольшой фрагмент. Для модификации сектора в 512 байт контроллеру SSD приходится делать несколько операций (ситуация напоминает write penalty для RAID-5/6):

  • прочитать весь блок в буфер
  • модифицировать содержимое буфера
  • стереть весь блок
  • записать новое содержимое буфера

Т.е. для размера транзакции в 512 байт на SSD с размером блока страниц в 512 КиБ получаем write amplification = 1024 раза. Это не самым лучшим образом сказывается а) на производительности и б) ресурсе, который по-прежнему составляет несколько тысяч циклов перезаписи для MLC SSD.

Читать еще:  Утилиты для работы с ssd

Copy on write

Проблема усиления записи имеет простое решение: нужно стараться записывать данные в уже предварительно стертые блоки. На помощь приходит классический алгоритм copy-on-write, разновидности которого используются для оптимизации записи в RAID-DP у Netapp или в ZFS (только слоем выше — на уровне файловой системы).

Суть алгоритм copy-on-write заключается в записи в «выгодные» участки носителя, т.е. в случае SSD — на чистые (стертые) блоки. В нижеприведенном примере модифицируется содержимое страницы «B». Вместо чтения/стирания/записи всего большого блока достаточно лишь прочитать содержимое страницы, модифицировать ее и записать в другое место. При этом необходимо поменять указатель, чтобы те же LBA указывали на новое физическое место размещения данных.

В качестве дополнительного средства борьбы с write amplification большинство современных контроллеров SSD используют сжатие данных.

Где взять чистые блоки?

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

Как быть, если после непрерывной записи чистых блоков уже не осталось? Для можно каким-либо образом узнать, где на SSD находятся пользовательские данные, а где размещены невалидные данные, оставшиеся после удаления файлов. Собственно, этим и занимается TRIM. SSD, как и любое другое блочное устройство, ничего не знает, о том, какие именно данные на нем хранятся. ОС может взаимодействовать как со слоем файловой системы, так и с блочным устройством, т.е. после удаления файла ОС передает на SSD вместе с командой TRIM (или UNMAP для SCSI) список LBA, по которым находились удаленные данные. SSD получает в распоряжение блоки с невалидными данными, и эти блоки можно в дальнейшем использовать для записи.

Background garbage collection (фоновая сборка мусора)

Второй очевидный способ обнаружения невалидных данных — повторные запросы на запись от хоста по тем же LBA. Для хоста это выглядит, как перезапись одних и тех же секторов, но SSD все время старается писать в разные блоки. В вышеприведенной иллюстрации работы copy-on-write актуальные данные содержатся в новой странице «B'», после чего в исходной странице остаются невалидные данные.

Области с невалидными данными могут быть сильно фрагментированы, т.е. содержать ячейки с нужными данными. Остается последний шаг — дефрагментировать эти области, получив набор целых свободных блоков и выполнить их стирание.

Собственно, за все это и отвечает сборка мусора. «Правильные» SSD, рассчитанные на интенсивную запись, имеют достаточный over-provisiong (резервную область) в качестве «пространства для маневра» и эффективный контроллер с достаточным объемом кэша (разумеется, защищенного конденсаторами) для размещения метаданных и буферизации чтения/записи. Если контроллер не успевает быстро подготовить место для быстрой записи, то это неминуемо отразится на производительности, будет периодический рост задержек в несколько раз относительно среднего значения, как на данной картинке с www.storagereview.com:

TRIM и реальность

Для работы TRIM помимо выполнения множества условий (поддержка со стороны ОС и файловой системы) необходимо разобраться с другими слоями абстракции, например, RAID. Пересчитать адреса пришедшие на с TRIM на контроллер от хоста и раскидать их по отдельным дискам теоретически возможно, но никто (ни LSI, ниAdaptec by PMC) не торопится с реализацией. Причина проста — за пределами домашних систем или рабочих станций такая простая вещь, как удаление файла встречается крайне редко. В серверах, как правило, встречаются совершенно другие нагрузки, к которым TRIM не может иметь никакого отношения:

  • Виртуализация. На физическом диске или томе RAID-контроллера лежит одна файловая система (VMFS/NTFS/XFS), а на ней — виртуальный диск в виде файла (который никуда не удаляется и даже не меняется в размере, если диск не тонкий), а внутри виртуального диска — другая ФС. Как, от кого и кому передавать TRIM в такой ситуации — совершенно непонятно.
  • Предоставление блочного доступа. Это добавляет несколько уровней абстракции. Том->Раздел (или ФС + файл)->Таргет->Файловая система
  • Файловый доступ. В организациях, как правило, никто не удаляет регулярно большое количество файлов. Такой сценарий встречается разве что при хранении временного медиа-контента, например, при рендеринге или перекодировании видео, а SSD тут совершенно не нужны. Файл-сервер обычно используется для долговременного хранения информации.
  • Базы данных. Файл, который, опять-таки не удаляется, а лишь модифицируется и растет.

Заключение

Используйте совместимые с вашим контроллером SSD, выбирайте их с учетом ожидаемой нагрузки на запись и не волнуйтесь о TRIM.

Ssd garbage collection

Инструкция по SSD-накопителям | Обсуждение SSD

Сообщение отредактировал KOT-BE3DEXOD — 21.11.16, 14:32

Что такое SSD-накопитель.

SSD – это твердотельный накопитель. То есть, устройство хранения, основанное на полупроводниковых элементах. Накопители SSD состоят из контроллера и микросхем памяти, при этом накопитель не содержит движущихся частей, это кстати одно из важных преимуществ перед HDD. Существуют два вида SSD накопителей — это SSD накопитель использующие флеш память и RAM память.
Если говорить в двух словах то SSD накопители с использованием RAM памяти являются самыми быстрыми и самыми дорогими накопителями.

Сообщение отредактировал Мрачный — 23.11.13, 12:54

Твердотельные накопители бывают внешние и внутренние, различных форм-факторов и предназначенные для разных целей. Бывают принципиальные отличия в работе/требованиях к компьютеру.

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

SSD PCI-E
Некоторые производительные устройства имеют формат карт расширения и устанавливаются непосредственно в слоты материнской платы, подобно контроллерам, видеокартам, и тому подобных. Такие SSD, возможно, потребуют дополнительных драйверов еще на этапе установки на них операционных систем, и в целом, более «капризны» в работе, хотя их скоростные характеристики нередко превышают таковые на стандартных твердотельных носителях информации.

SSD Mini PCI-E
В современных ноутбуках с диагональю менее 16” редко встречается возможность установить сразу две системы хранения, а емкие SSD дорого стоят, поэтому иногда используются mini PCI Express устройства. Эти твердотельные накопители ничем не отличаются от других, но они предназначены для установки в соответствующий слот материнской платы ноутбука. Таким образом, удается достичь и быстрой работы системы, размещенной на SSD и использовать обычный жёсткий диск в качестве крупного хранителя информации.

SSD Внешние
Также можно встретить внешние SSD, рассчитанные на подключение через интерфейсы USB 2.0 USB 3.0, eSATA, и другие. Среди них редко встречаются действительно эффективные модели, тем не менее, при использовании быстрого интерфейса передачи данных они будут работать быстрее внешних моделей жестких дисков.

Сообщение отредактировал Мрачный — 02.12.13, 11:01

Какие преимущества даёт SSD.

У твердотельного накопителя нет движущихся частей, тем меньше вероятность поломки, что нельзя сказать о жестком диске. А еще благодаря этому, системный блок работает беззвучно. SSD более устойчив к механическим повреждениям, практически не чувствителен к электромагнитным полям и у него более широкий диапазон рабочих температур. Такого вида накопители требуют меньше энергии, именно поэтому портативные компьютеры с ними работают намного дольше от батареи. Также малые размеры и вес делают его еще более удобным и дают возможность использовать их в тех же портативных аппаратах. Скорость работы твердотельного накопителя в разы превосходит скорость работы винчестера, время считывания файлов, не зависимо от его расположения, остается наименьшим. Потому «холодный» старт Windows в разы превышает старт на HDD по времени.

Но у SSD есть и свои минусы, поэтому он не затмил обычный винчестер. Один из главных минусов твердотельного накопителя — это ограниченное количество циклов перезаписи. Второй, немаловажный минус — это несовместимость со старыми версиями Windows. Проблема в том, что OC Windows работают с SSD, так же как и с обычными винчестерами. Именно поэтому, если на вашем ноутбуке или нетбуке стоит SSD, то вам нужно, либо отключить файловые операции, которые рассчитаны на жёсткие диски, либо установить OC Windows 7/8/8.1: она оптимизирована специально для твердотельных накопителей. Еще один минус — это высокая цена на твердотельный накопитель. Цена за 1гб SSD на много превышает цену за один гигабайт HDD. А так же цена за SSD растет прямо пропорционально объему, а цена обычного винчестера растет медленнее, так как она зависит не от объема, а от количества пластин.

Сообщение отредактировал Мрачный — 02.12.13, 11:02

Что такое SLC, MLC, TLC.

Это три разных типа памяти NAND, главным технологическим отличием между которыми является количество битов, хранящихся в ячейке памяти. SLC является самой старой из трех технологий, и вы вряд ли найдете современный SSD с такой NAND. На борту большинства накопителей сейчас MLC, а TLC – это новое слово на рынке памяти для твердотельных накопителей.

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

Читать еще:  Disabled перевод в биосе

Сообщение отредактировал Мрачный — 17.11.13, 18:12

Что такое TRIM, GC, ITGC.

TRIM – команда контроллеру со стороны операционной системы, указывающая на удаленные данные на уровне файловой системы. Не всегда поддерживается в RAID-массивах. Для проверки состояния TRIM необходимо ввести (с повышенными привилегиями) команду:
fsutil behavior query DisableDeleteNotify
Если ответ: DisableDeleteNotify = 0 — поддержка TRIM включена; DisableDeleteNotify = 1 — поддержка TRIM отключена.
Включить TRIM: fsutil behavior set disabledeletenotify 0

Список ОС, поддерживающих TRIM:

  • Windows 7, Windows Server 2008 R2
  • Linux 2.6.33 — Поддерживается с февраля 2010
  • OpenSolaris — Поддерживается с июля 2010
  • FreeBSD 8.1 — С июля 2010 поддерживается только для низкоуровневого форматирования, полная поддержка предлагается в версии 9.0
  • Mac OS X — Поддерживается (на данный момент — только для SSD, входящих в комплект поставки компьютера) с версии 10.6.6 с соответствующим обновлением.

Garbage Collection (GC) – дословно «сбор мусора», очистка, функция контроллера SSD по возвращению освобожденных от пользовательских данных ячеек в исходное состояние, соответствующее их максимальной производительности.
Как правило, эта функция инициируется по запросу пользователя извне, фирменным софтом для конкретного контроллера. Например, для Indilinx это Wiper, для Intel это Intel SSD ToolBox.
Ни одна GC-утилита не сможет работать с накопителями, входящими в состав массива.
Idle Time Garbage Collection (ITGC) – то же, что GC, но инициируется автоматически самими контроллером во время, когда диск находится в режиме простоя.
Очень полезная функция, особенно качественно работает в накопителях Intel второго поколения, реализована даже в составе массива.

Сообщение отредактировал Мрачный — 15.11.13, 18:24

Какие бывают производители.

A-Data, Asus, Corsair, Crucial, Goodram, Intel, Kingston, LaCie, OCZ, Plextor, Samsung, SanDisk, Seagate, Silicon Power, Toshiba, Transcend.
Но качество и надёжность итогового изделия будет зависеть от используемого внутри него контроллера, типа памяти и версии прошивки устройства.

Сообщение отредактировал Мрачный — 15.11.13, 18:30

Распространённые типы контролеров.

SandForce – выпускается во многих модификациях. SF-1200 и SF-1500 по производительности разницы нет. Этот контроллер отличается отсутствием «внешней» кэш-памяти, отлично переносит многопоточное чтение/запись, имеет наиболее высокие (заявленные!) на сегодняшний день скорости и чтения, и записи. Производительность в линейных последовательных тестах и тестах случайного чтения/записи падает почти на треть на занятых областях и уже не восстанавливается после удаления данных.
Один из последних и весьма распространённых — SF-2281, применяется в накопителях Corsair Force 3/GT 120GB, OCZ Agility 3 240GB, OCZ Vertex 3 Max IOPS 240GB, Patriot Wildfire 120GB и др. Что особенного в контроллерах SandForce, и нужно ли их избегать

Marvell 88SS9174 — применяется в накопителях Crucial C300 (32nm NAND), M4/C400 (25nm NAND), Plextor (по статистике использования один из самых быстрых и сравнительно недорогих накопителей) и др.

Intel – контроллер, отлично зарекомендовавший себя в серверном применении, где Intel традиционно на высоте. Неплох и в сценариях рабочей станции. Недостаток – низкая скорость записи, что фактически не заметно на повседневных задачах.
Часто продаются под маркой Kingston, который лепит свою наклейку – внутри все то же самое. Отличить переименованные диски от Intel можно по объему (40, 80, 120 или 160ГБ, в будущем и 320)
Рекомендуются для активной работы с диском, особенно с файлами мелкого и среднего размера (до нескольких мегабайт).

JMicron – контроллер первого поколения SSD, мало приспособлен для работы с флэш-памятью, имеет низкую производительности и всего 16КБ кэш-памяти (что приводит к ее переполнению в случае возрастания нагрузки на диск и система виснет на минуту-другую, ожидая очистки буфера).
Единственное достоинство накопителей на этом контроллере – сравнительно низкая цена. Если диск не системный или не единственный, то это вариант, иначе лучше поискать что-то поновее.
На этом контроллере основаны диски OCZ Core, OCZ Soild, OCZ Apex (пара контроллеров в массиве) и масса малоизвестных недорогих дисков.

Indilinx – контроллер, адаптированный для SSD и не имеющий недостатков Jmicron. Отличная производительность записи – его главное свойство. Сбалансированная производительность (почти одинаковая скорость чтения и записи) позволяют рекомендовать накопители на этом контроллере для работы с крупными файлами (видео и т.п.). Поддержка чистки имеется, но работает менее эффективно чем в случае с Intel. Производительность сильно зависит от объема накопителя. В настоящее время Indilinx является дочерним предприятием OCZ Technology.
На этом контроллере основаны диски OCZ Agility, OCZ Vertex и некоторые накопители других производителей.

Samsung – корейский контроллер, разработанный с учетом недостатков JMicron. Несмотря на большой объем кэша, достойной альтернативы Indilinx не получилось. Система уже не зависает, производительность последовательных чтения/записи на уровне Indilinx и иногда даже выше, но проблема с непоследовательной записью, скорость которой не высока.
Из новинок стоит отметить Samsung 830 256GB, показывающего весьма неплохие результаты.
Более подробно в статье Кто есть кто в мире производителей контроллеров для SSD

Сообщение отредактировал Мрачный — 15.11.13, 18:34

Какую ОС можно ставить на SSD.

Лучше всего использовать Windows 7 начиная с SP 1 и последующие версии ОС. В Windows XP и ниже нет механизмов сбора мусора и инструкции TRIM. В ОС Microsoft TRIM поддерживается начиная с Windows 7. В Windows Vista и XP нужны костыли в виде стороннего ПО. Для более углублённого изучения вопроса — http://www.outsidethebox.ms/15016/

Сообщение отредактировал KOT-BE3DEXOD — 21.11.16, 18:59

Как устанавливать ОС на SSD-накопитель.

Установка Windows на SSD ничем не отличается от установки на обычный жёсткий диск. Но есть пара нюансов. Если вы собираетесь использовать, кроме твердотельного накопителя, ещё и HDD, то на время установки лучше отключите все винчестеры.
Переносить Windows с HDD на SSD не рекомендуется. Лучше ставить с нуля.

Сообщение отредактировал Мрачный — 24.11.13, 10:47

Как проверить скорость работы SSD.

Скорость работы вашего SSD можно проверить обычной программой — AS SSD Benchmark.
Популярная программа бенчмарк, для тестирования скорости чтения/записи SSD накопителей. AS SSD Benchmark стала фактически стандартом, при тестировании твердотельных накопителей, благодаря своим синтетическим тестам на скорость чтения и записи, а так же системы скоринга. Программа распространяется бесплатно.

Как устроен «твердотельный накопитель»? [Версия для технических переводчиков (ИТ), с ликбезом и терминами]

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

Сначала давайте разберемся, что такое контроллер [controller] и флеш-память NAND [NAND flash memory] . Вместе с парой других компонентов они расположены на печатной плате [printed circuit board (PCB)] внутри корпуса и составляют твердотельный накопитель, или SSD (solid-state drive) .

Контроллер

Контроллер в SSD — это встроенный процессор, который соединяет компоненты флеш-памяти с компьютером. Он выполняет коды из микропрограммы (встроенного ПО) [firmware] в SSD, чтобы обрабатывать запросы с компьютера. Работа и функции SSD зависят от контроллера.

Обычно контроллер отвечает за следующие функции:

запись [writing] ,
чтение [reading] ,
стирание [erasing] ,
проверка ошибок [error checking] ,
шифрование [encryption] ,
сборка мусора [garbage collection] ,
выравнивание износа [wear-leveling]
резервирование по технологии over-provisioning (подробности ниже).

Флеш-память NAND

Во всех современных стандартных SSD используется флеш-память NAND — интегральная схема для хранения информации. В корпоративных SSD обычно это SLC NAND (single-layer cell — одноуровневая, или однобитная, ячейка), а в потребительских устройствах — MLC NAND ( multiple-layer cell — многоуровневая ячейка). SLC быстрее и долговечнее, но зато гораздо дороже.

Когда мы записываем данные на SSD, контроллер программирует ячейки памяти. В двух словах, однобитная ячейка памяти имеет два состояния — либо у нее есть заряд, либо нет, так что она хранит данные в двоичном формате. В реальности запись данных на SSD — это процесс очень сложный. Зато читать с SSD просто, и контроллеру не приходится сильно напрягаться.

У ячеек NAND есть пара интересных особенностей. Во-первых, их можно программировать ограниченное число раз. Каждая ячейка может выдержать определенное количество циклов «программирование-стирание», или циклов перезаписи [program-erase, P/E cycle] . Контроллер пытается бороться с этой бедой с помощью выравнивания износа [wear-leveling] . Он старается не записывать данные в одни и те же ячейки, а распределять нагрузку по всем ячейкам в памяти равномерно.

Во-вторых, в отличие от жестких дисков, в NAND-памяти невозможно записать данные поверх уже имеющихся. Сначала нужно стереть старые данные, и только потом записать новые.

В-третьих, эти данные так просто не сотрешь. В SSD ячейки памяти объединяются в страницы [page] (по 4 КБ), а страницы группируются в блоки [block] (обычно по 512 КБ, то есть 128 страниц). Записывать данные можно на отдельные страницы, а вот стирать — только блоками.

Если мы удаляем с SSD данные, мы ничего не стираем, даже если чистим корзину. Мы просто сообщаем памяти, что эти данные нам не нужны. Стирание происходит, когда мы записываем на накопитель новые данные.

Читать еще:  Парагон миграции на ssd

Из-за выравнивания износа и сборки мусора данные постоянно перезаписываются из одного места в другое. Это приводит к одному неприятному явлению — усилению записи [write amplification] .

Усиление записи

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

Парадокс в том, что усиление записи возникает как раз в попытке продлить срок службы SSD и оптимизировать его производительность. Контроллер просто выбирает из двух зол меньшее.

Сборка мусора

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

Выравнивание износа

Контроллер следит за тем, чтобы операции стирания и перезаписи распространялись по SSD равномерно. Если бы весь удар принимали на себя, скажем, несколько первых блоков, они быстро израсходовали бы весь свой запас циклов перезаписи. Некоторые алгоритмы выравнивания износа, например, статическое выравнивание износа [static wear-leveling] , даже периодически переносят неизменяемые данные (ОС или программы), чтобы записывать в эти блоки с низкой нагрузкой часто изменяемые данные. В итоге блоки на SSD тратят свои циклы перезаписи равномерно, и накопитель служит дольше.

Усиление записи требует свободного пространства, поэтому не вся емкость будет заполнена нашими данными. Обычно SSD для оптимальной работы надо хотя бы 20% свободного пространства, если только он не использует область резервирования [over-provisioning, OP] .

Резервная область (OP)

OP означает, что какой-то объем SSD зарезервирован для контроллера и недоступен пользователю. Контроллер будет использовать это пространство для выравнивания износа, сборки мусора или других функций оптимизации производительности.

Обычно для OP резервируется от 7 до 28% емкости накопителя. Поэтому SSD с функцией OP имеют непривычную емкость, например 120, 240 или 480 ГБ вместо стандартных 128, 256 или 512. В некоторых SSD пространство для OP могут выбирать сами пользователи.

Предполагается, что OP должна повышать производительность SSD (ведь тогда контроллеру не будет требоваться буферная память [buffer space] ), однако в действительности такого не происходит.

В целом, недостатки SSD видны только на этапе записи данных.

Некоторые важные понятия тематики SSD

TRIM : Операционная система посылает команду TRIM контроллеру SSD с указанием страниц памяти, которые содержат устаревшие данные [stale data] (недействительные или помеченные к удалению данные). Это позволяет контроллеру отслеживать страницы с устаревшими данными во время сборки мусора, что снижает количество операций записи. Таким образом, TRIM уменьшает усиление записи и повышает производительность накопителя.

RAISE : Технология RAISE встроена только в контроллеры SandForce. RAISE расшифровывается как Redundant Array of Independent Silicon Elements (избыточный массив независимых кремниевых элементов). Прежде всего технология RAISE применяется для SSD накопителей корпоративного уровня, а не клиентского.

IOPS : IOPS (Input/Output Operations Per Second) – количество операций ввода/вывода. Измеряемой величиной IOPS является операция произвольного доступа [random access] . Произвольный доступ (ПД)– это возможность случайного доступа (чтения/записи) к данным из разных областей носителя. ПД обычно ассоциируется с передачей данных небольшого объема.

Произвольный доступ, а также значения его задержек [latency] (обычно низкие на SSD) показывают, за какое время может быть получен доступ к данным, что отражается на времени начальной загрузки [boot time] , времени запуска приложения [application launch time] и общей производительности. На жестких дисках [hard drives] скорость произвольного доступа обычно низкая и колеблется в пределах от 75 до 250 IOPS, а на SSD накопителях – от 50 000 IOPS до 100 000 IOPS, и это не предел.

Перевели и адаптировали:
Марина Попович, технический англо-русский переводчик, бюро переводов «Альянс ПРО»;
Дарья Головачева, технический англо-русский переводчик-стажёр, бюро переводов «Альянс ПРО».

Ssd garbage collection

Read the second part of our series of articles on the topic of SSD testing. Some time ago we’ve been discussing flash memory in general. You can read the first part here >>

In today’s article we’ll discuss how to handle the situation when your SSD is starting to run out of free pages. Read on and learn!

Garbage collection

The modification of data saved on SSDs is more difficult than it is for HDD where it can be simply overwritten. Basically, when an SSD is asked for modification of a particular page it actually doesn’t modify that page because it would have to clear it – which is not possible without clearing whole block. To overcome this, the modified page is saved on another page that is available, and the page that is supposed to be modified is marked as stale. As long as an SSD has free pages, this way of writing data to a new place and marking an old page as stale is possible. But at some point, the SSD will run out of free pages. In order to avoid this situation, a process called garbage collection is executed by SSDs. This is hard work performed by the SSD controller that is by itself a separate computer with CPU and memory. This controller is actually responsible for the whole data management on the SSD flash memory.

The host operating system is usually unaware of what is happening “under the hood”, it simply asks for writing data into some logical place on a disk. Actual data placement is performed by the SSD controller. The only thing that modern operating systems do is sending a TRIM command to the SSD in order to notify it that a particular piece of data was removed. This command simplifies the garbage collection process a bit because the SSD is more aware about which pages are no longer valid. During the garbage collection process, the SSD controller is clearing blocks to make some free pages available. But it isn’t possible to just clear any blocks because some pages may have valid data saved to them that can’t just be deleted. Also, it isn’t possible to simply search for blocks that contain only stale pages to clear them. That is because it would be possible to run out of such blocks in scenarios where each block on a disk would contain at least one valid page.

What the SSD actually does during garbage collection is rewriting all valid pages from a particular block to a new one. The next block from which pages were copied can be cleared. Usually the SSD selects the blocks that have no free pages left for the garbage collection. It’s different when garbage collection is actually performed because in some cases it happens only during the modification of data, in other cases also in the background when the SSD is not used. It depends on the controller when a garbage collection is performed and in some cases it’s known only to the controller manufacturer. Usually, Enterprise SSDs perform garbage collection only during writes, and background garbage collection is available for regular consumer SSDs. Enterprise SSDs usually don’t support background garbage collection in order to avoid potentially unnecessary writes (when copying blocks) which increases the longevity of a disk. It is designed that way because flash memory has a limited number of writes before it becomes unusable. Background garbage collection in an Enterprise environment is also not suitable because in many cases the device won’t get any time to perform this process. Consumer SSDs on the other hand are not exposed to the same high load as their Enterprise counterparts, and in some cases manufacturers decide to include background garbage collection in order to make device work potentially faster.

We briefly explained the garbage collection process on SSDs because it has an important impact on the performance. When an SSD has to run garbage collection during writes it works significantly slower, especially when lots of blocks have to be rewritten in order to complete the write. In some cases, a disk has to write much more data than the operating system has sent to it because many blocks need to be rearranged during garbage collection.

That’s not all! We have scheduled two more articles in this series – keep your eyes open for the next one!

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector
×
×