Когда у меня впервые появился твёрдотельный накопитель Intel DC S3700, я начал изучать согласованность задержки ввода-вывода – область, в которой контроллер Intel специально предназначался для значительного улучшения. Я использовал методологию которую нашёл в Интернет и применил её к текущему ассортименту потребительских накопителей высокого класса. Поскольку я считаю, что улучшение согласованности ввода-вывода является хорошей практикой оптимизации для всех твердотельных накопителей, но все мы надеемся, что мы увидим улучшения в этой области как на клиентских, так и на корпоративных дисках.
SSD S3700 имеет 264 ГБ NAND на плате, но только 186 ГБ (заявленная ёмкость 200 ГБ) представляет собой хранилище, доступное для пользователя, остальное используется в качестве резервной области для повышения производительности, согласованности и выносливости. С другой стороны, большинство клиентских дисков имеют только около 7% их общей ёмкости NAND, выделенной в качестве резервной области (256 ГБ NAND, 238 ГБ пользовательского хранилища). Очевидная гипотеза состоит в том, что большая часть (если не все?) преимущества S3700 в постоянстве производительности обусловлена большим количеством свободной области.
Мы уже давно поняли связь между запасной областью и усилением записи. Я позаимствовал приведенную ниже таблицу из статьи, опубликованной исследовательской лабораторией IBM, в которой показана взаимосвязь между усилением записи и резервной областью для различных рабочих нагрузок:
С большой запасной областью усиление записи ниже. Контроллер имеет больше места и, следовательно, гибкость при запуске алгоритмов дефрагментации и сбора мусора. Сценарий чтения-изменения-записи запускается реже, так как меньше места, благодаря дополнительной резервной области. Если вы тестируете в сценарии с полным приводом, просто меньше данных, которые нужно отслеживать, когда у вас есть больше NAND, выделенных в качестве резервной области. Это уменьшает размеры внутренних структур данных по умолчанию, что также повышает производительность.
Именно из-за этой взаимосвязи между усилением записи и резервной областью мы всегда рекомендуем устанавливать 10–20% вашего SSD и не заполнять его полностью. Большинство современных контроллеров будут работать нормально, если вы разделите диск и оставите последние 10 – 20% нетронутыми. С поддержкой TRIM даже шаг разделения не является действительно необходимым, но он помогает с точки зрения управления данными. Реальный вопрос заключается в том, какова взаимосвязь между резервной областью и стабильностью ввода-вывода/производительности.
Чтобы выяснить это, я взял накопители на 240/256 ГБ и заполнил их до различного процента их ёмкости, и выполнил тест согласованности ввода-вывода с идентичным диапазоном LBA. Цель состояла в том, чтобы смоделировать согласованность ввода-вывода в наихудшем случае с учётом большего процента свободной площади.
Тесты
Для этого исследования я выбрал пару самых интересных современных контроллеров SSD: контроллер Samsung MDX от SSD 840 Pro, контроллер Link8 Media Devices LM87800 от Corsair Neutron и Barefoot 3 от OCZ Vector. Для всех этих накопителей я использовал ёмкость 256 ГБ. За исключением Neutron, все накопители имели ~ 7% емкости NAND в качестве резервной области. Нейтрон – это накопитель на 240 ГБ и него ~ 12% свободного места.
Методология тестирования высокого уровня остаётся неизменной из нашего обзора S3700. Но, в отличие от предыдущих обзоров, я варьировал процентом заполненного/протестированного накопителя в зависимости от количества свободной области, которую я пытался смоделировать. Все накопители помечены в соответствии с заявленной ёмкостью производителем, если поставщик твёрдотельных накопителей решил использовать этот конкретный объём свободной области. Если вы хотите повторить это самостоятельно, всё, что вам нужно сделать, это создать раздел, меньший, чем общая ёмкость накопителя, и оставить оставшееся пространство неиспользованным, чтобы имитировать больший объем свободной области. Шаг разделения не является абсолютно необходимым в каждом случае, но это простой способ убедиться, что вы никогда не превысите выделенную запасную область. И хорошей идеей будет сделать это с самого начала (например, безопасное стирание, раздел, затем установить Windows), но если вы работаете в обратном направлении, вы всегда можете создать раздел резервной области, отформатировать его в TRIM, а затем удалить раздел. Наконец, этот метод создания резервной области работает на дисках, которые я здесь тестировал, но не все контроллеры могут вести себя одинаково.
В нашем обзоре Intel SSD DC S3700 я представил новый метод характеристики производительности: отслеживание времени задержки отдельных операций. S3700 обещал непревзойденный уровень производительности, и в результате потребовалось провести дополнительное тестирование, чтобы продемонстрировать это. Причина, по которой у нас нет постоянной задержки ввода-вывода с твердотельными накопителями, заключается в том, что все контроллеры неизбежно должны выполнять определенную часть дефрагментации или сборки мусора, чтобы продолжить работу на высоких скоростях. Когда и как твердотельный накопитель решает запустить свои процедуры дефрагментации и очистки, напрямую влияет на взаимодействие с пользователем. Частая (пограничная агрессивная) очистка обычно приводит к более стабильной производительности, а задержка может привести к более высокой пиковой производительности за счет гораздо меньшей производительности в худшем случае. Приведенные ниже графики многое говорят нам об архитектуре этих SSD и о том, как они справляются с внутренней дефрагментацией.
Чтобы сгенерировать данные, приведенные ниже, я взял недавно защищенный стертый SSD и заполнил его последовательными данными. Это гарантирует, что все доступные для пользователя LBA имеют связанные с ними данные. Затем я запустил рабочую нагрузку произвольной записи 4 КБ во всех LBA с глубиной очереди 32 с использованием несжимаемых данных. Я провел тест чуть более получаса, и там, где мы проводим наши тесты в устойчивом состоянии, было мало, но этого было достаточно, чтобы дать мне возможность хорошо рассмотреть поведение диска после того, как все свободные участки заполнятся.
Я записывал мгновенные IOPS каждую секунду на протяжении всего теста. Затем я построил график зависимости IOPS от времени и создал графики рассеяния ниже. Каждый набор графиков имеет одинаковый масштаб. Первые два набора используют логарифмическую шкалу для простого сравнения, в то время как последний набор графиков использует линейную шкалу, которая достигает 40 тыс. Операций ввода-вывода в секунду для лучшей визуализации различий между дисками.
Первый набор графиков показывает данные о производительности за весь 2000-й период испытаний. На этих графиках вы заметите ранний период очень высокой производительности, за которым следует резкий спад. В этом случае вы видите, как диск распределяет новые блоки из своей резервной области, а затем использует все свободные блоки и вынужден выполнять чтение-изменение-запись для всех последующих записей (усиление записи возрастает, производительность падает) ,
Второй набор графиков увеличивает масштаб до начала установившегося режима работы привода (t = 1400 с). Третий набор также рассматривает начало работы в стационарном режиме, но в линейной шкале производительности. Нажмите кнопки под каждым графиком, чтобы переключить исходные данные.
Я запустил большинство данных на Samsung SSD 840 Pro, так как он, вероятно, будет самым популярным из приводов здесь. Если вы щелкнете по различным смоделированным емкостям / запасным точкам, вы увидите, что согласованность производительности накопителя значительно улучшится, когда вы попадете на 25% запасной области. Последовательность ввода-вывода диска переходит от разбросанного беспорядка к чему-то, что напоминает густо нарисованную линию на графике. При запасе в 50%, 840 Pro начинает терять этот первоначальный обрыв производительности и вместо этого развивает более плоскую кривую. По сравнению с S3700 все еще есть некоторые очевидные изменения в задержке ввода-вывода (и, следовательно, производительности), но он гораздо более управляемый, чем в конфигурации по умолчанию.
Вектор OCZ ведет себя аналогично. Отдельные операции ввода-вывода в векторе с 25% запасной площадью сгруппированы более плотно, чем на 840 Pro в целом, но вы можете увидеть периодическую процедуру дефрагментации OCZ с регулярными всплесками, которые отклоняются ниже кривой.
Нейтрон на основе LAMD на самом деле удивительно устойчив даже в конфигурации по умолчанию. Изначально я не включал Neutron, но Кристиан предположил, что опыт LAMD в области бизнеса может послужить здесь интересным назначением данных. Он был прав. Neutron остается одним из наиболее стабильных твердотельных накопителей без каких-либо дополнительных выделений для контроллера. Даже по сравнению с Samsung SSD 840 Pro на 225 ГБ, Neutron обеспечивает более стабильную производительность. Кривая Нейтрона сжимается на 25% запасной области, но все еще есть большая разница. Процедуры дефрагментации LAMD не выглядят такими предсказуемыми / периодическими, как мы видели на других дисках, включая S3700. Интересно, контроллер делает что-то более динамичное?
Следующий набор диаграмм рассматривает устойчивую (для большинства дисков) часть кривой. Здесь мы получим лучшее представление о том, как все будут работать в долгосрочной перспективе.
Шкала здесь не отличается, но мы лучше рассмотрим согласованность в устойчивом состоянии. Neutron продолжает впечатлять, выглядя почти идентично S3700, если вы отдаете 25% NAND накопителя в свободное место. Samsung также очень хорошо справляется с 25% запасных площадей, там просто огромное улучшение.
Окончательный набор графиков полностью покидает логарифмический масштаб и просто смотрит на линейный масштаб, который достигает 50 тыс. Операций ввода-вывода в секунду. Мы также рассматриваем только стабильную (или близкую к этому) производительность здесь:
Увеличение и просмотр в линейном масштабе действительно показывает нам, что одной дополнительной резервной области недостаточно, чтобы обеспечить степень согласованности, которую предлагает Intel S3700. Решение действительно должно быть комбинацией контроллера и резервной области. Также вполне возможно, что контроллер, который отдает приоритет согласованности ввода-вывода, сможет компенсировать потребность в значительной резервной области. Это определенно имеет место с Neutron от Corsair, и я предполагаю, что будущие производные Intel S3700 со стандартным MLC и меньшим запасным пространством будут вести себя аналогично. Для большинства потребителей это, вероятно, не будет иметь значения, так как минимальная производительность существенно улучшится, когда вы достигнете 25% свободного места для этих дисков, но корпоративные клиенты с несколькими, если не дюжинами SSD в массиве RAID, все равно выиграют от архитектуры S3700.
Заключительные слова
Обеспечение постоянной производительности является важной частью улучшения взаимодействия с пользователем. Как показали Intel SSD DC S3700 и Corsair Neutron, стабильная производительность возможна благодаря контроллеру, который отдает приоритет эффективной и агрессивной дефрагментации. Я действительно считаю, что поставщикам контроллеров важно уделять первостепенное внимание согласованности ввода-вывода в своих конструкциях контроллеров и микропрограмм.
Для приводов, представленных сегодня на рынке, которые ещё не отдают приоритет согласованному вводу-выводу, можно добиться значительного улучшения согласованности ввода-вывода за счет увеличения запасной области. Оба устройства OCZ Vector и Samsung SSD 840 Pro обеспечивают гораздо лучшую согласованность ввода-вывода, если просто выделить 25% от общей емкости NAND в качестве резервной области. Потребительские цены на твердотельные накопители наконец-то достаточно низки, и мы больше не вынуждены покупать минимальную емкость для своих нужд. Какой бы диск вы ни купили, планируйте использовать только около 75% его емкости, если вы хотите получить хороший баланс между стабильностью производительности и емкостью.