Задержка ввода-вывода не является проблемой для большинства операций. Чтение почти гарантированно завершаются относительно последовательно, если у вас есть приличный контроллер. Точно так же последовательные записи очень предсказуемы и, как правило, являются наиболее простым вариантом для оптимизации. Вы увидите различия между накопителями при взгляде на чтение и задержку последовательной записи, но, честно говоря, различия не будут такими существенными. На приведенной ниже диаграмме показано, насколько постоянная производительность произвольного чтения на Intel SSD 710 со временем:
Это очень случайные рабочие нагрузки записи, которые действительно сбивают с толку большинство контроллеров. Вы должны правильно сопоставить случайные LBA с физическими местоположениями NAND и регулярно дефрагментировать NAND, чтобы гарантировать, что производительность всегда останется высокой. Всё это происходит в режиме реального времени, и в то время как объемы данных (и фрагменты) расположены на накопителе. Накопитель должен сбалансировать текущие потребности в высокой производительности и будущие потребности и не оставлять NAND в плохом состоянии, а также сохранять износ даже во всех матрицах NAND. Это требует быстрого контроллера, хорошей базовой архитектуры прошивки и опыта.
В течение последних нескольких лет мы использовали производительность произвольной записи 4 КБ как показатель того, насколько продвинутым является контроллер. Большие многопользовательские (или виртуализированные) корпоративные рабочие нагрузки почти всегда выглядят полностью случайными, поэтому мы используем стационарную производительность произвольной записи в качестве ключевого показателя. Приведённые ниже результаты генерируются часами для каждого накопителя и действительно являются показателем стабильной производительности при случайной записи 4 КБ (100% пространства LBA):
Большинство современных корпоративных накопителей отлично справляются с этой задачей. Накопители, выпущенные несколько лет назад, не справлялись с длительными рабочими нагрузками случайной записи, но последние контроллеры не имеют проблем с поддержанием высокой скорости передачи двузначных или даже трёхзначных цифр при объёмных случайных записях 4 КБ. На приведенном выше графике показана производительность в стабильном состоянии, что, честно говоря, неплохо для многих из этих корпоративных накопителей. SSD DC S3700 от Intel, очевидно, очень хорошо справляется с этой задачей, но, взглянув только на этот график, он действительно не справляемся с этой задачей.
Следующая диаграмма показывает максимальную задержку ввода-вывода во время этой постоянной нагрузки с произвольной записью 4KB:
Мне пришлось удалить P400e Micron из этого графика, потому что задержка в худшем случае была слишком высокой, чтобы использовать её без логарифмической шкалы. 710 на самом деле может иметь большую максимальную задержку, чем даже механический жесткий диск 15K RPM! Если вспомнить действительно плохие накопители JMicron, выпущенные 5 лет назад, они обеспечат максимальную задержку в течение 1 секунды при гораздо меньших нагрузках. Существуют значительные различия между накопителями, если вы посмотрите на задержку в худшем случае, но средняя задержка для большинства из этих накопителей, как правило, в порядке:
Причина, по которой мы не беспокоились о максимальной задержке ввода-вывода в прошлом, заключается в том, что вы видите выше. Средние значения задержки все довольно приличные, что указывает на то, что, несмотря на случайные операции ввода-вывода с высокой задержкой, всё обычно работает довольно гладко. По сравнению с жёстким диском, даже несмотря на то, что некоторые из этих максимальных задержек могут даже сделать SSD временно более медленным, чем жёсткий диск, общее впечатление от SSD всё ещё достаточно, чтобы оправдать его работу. Приведенные выше графики дают нам пару точек данных, но мы не имеем чёткого представления о том, насколько отличается поведение S3700 с течением времени. Как обычно бывает при больших изменениях в архитектуре SSD, нам нужен новый взгляд на определённые вещи.
Чтобы сгенерировать данные, приведенные ниже, я взял недавно защищенный стертый SSD и заполнил его последовательными данными. Это гарантирует, что все доступные для пользователя LBA имеют связанные с ними данные. Затем я начал рабочую нагрузку с произвольной записью 4 КБ с глубиной очереди 32 с использованием несжимаемых данных. Я проводил тест чуть более получаса, и там, где мы проводим наши тесты в устойчивом состоянии, было мало данных, но этого было достаточно, чтобы дать мне возможность хорошо рассмотреть поведение накопителя после того, как все свободные участки заполнились.
Я записывал мгновенные IOPS каждую секунду на протяжении всего теста. Затем я построил график зависимости IOPS от времени и создал графики рассеяния ниже. Каждый набор графиков имеет одинаковый масштаб. Первые два набора используют логарифмическую шкалу для простого сравнения, в то время как последний набор графиков использует линейную шкалу, которая достигает 40 тыс. Операций ввода-вывода в секунду для лучшей визуализации различий между дисками.
Первый набор графиков показывает данные о производительности за весь 2000-й период испытаний. На этих графиках вы заметите ранний период очень высокой производительности, за которым следует резкий спад. В этом случае вы видите, как диск распределяет новые блоки из своей резервной области, а затем использует все свободные блоки и вынужден выполнять чтение-изменение-запись для всех последующих записей (усиление записи возрастает, производительность падает) ,
Второй набор графиков увеличивает масштаб до начала установившегося режима работы привода (t = 1400 с). Третий набор также рассматривает начало работы в стационарном режиме, но в линейной шкале производительности. Нажмите кнопки под каждым график для переключения исходных данных.
Здесь мы сразу почувствуем, как ведут себя все эти накопители/контроллеры при интенсивной случайной записи. Хотя почти все приводы здесь являются отличными средними показателями, вариативность среди некоторых чрезвычайно высока. Чем больше изменчивость, тем менее надежный алгоритм дефрагментации / сборки мусора на диске. Если вы нажмете на Intel SSD 710, вы почувствуете, что происходит на этих контроллерах.
710 имеет очень четко выраженную динамику производительности. Вы видите значительную кластеризацию точек данных вокруг того, что в итоге приводит к средней производительности накопителя с течением времени. Производительность хороша и невелика с самого начала, в то время как 710 пережевывает огромную запасную область, но даже в этом случае вы можете иногда наблюдать падение производительности ввода-вывода. Это не супер часто, но бывает достаточно, чтобы быть заметным. Каждая из тех точек, которые появляются значительно ниже большинства точек данных, относится к моменту, когда контроллер Intel должен был отключиться и выполнить дефрагментацию диска (и / или таблицы косвенного обращения), чтобы сохранить высокую производительность. Вы можете сказать, что контроллер Intel всегда работает, что помогает поддерживать некоторую кластеризацию производительности, но со временем контроллер, кажется, откусывает больше, чем может прожевать, и, следовательно, производительность падает.
Старый X25-E выглядит здесь почти согласованно, но отчасти потому, что его производительность по современным стандартам очень низкая. Другая половина истории X25-E заключается в том, что его производительность более стабильна, чем у большинства других накопителей. SLC NAND, особенно в поколении 50 нм, имел очень низкие задержки программирования / стирания.
Обратите внимание, что Intel SSD 330 на базе SandForce отлично справляется с этой задачей. Я использовал несжимаемые данные как для начального заполнения, так и для случайной рабочей нагрузки, однако, если вы посмотрите на хвостовую часть кривой 330-х годов, вы начнете видеть, что накопитель теряет свою холодность. Контроллер SandForce успешно справляется со своей задачей.
Двигаясь вниз по списку, контроллер SAS компании Toshiba на самом деле неплохо справляется с работой – еще раз, в частности, благодаря использованию SLC NAND. Обращаясь к P400e Микрона, однако, у нас есть другой конец спектра. Если посмотреть на общую кривую производительности, то количество операций ввода-вывода в секунду очень плотное, поскольку P400e способен быстро прожигать чистые блоки в своей свободной области. Поскольку для большинства рабочих нагрузок не требуется несколько минут непрерывной произвольной записи с высокой глубиной очереди, подход Micron обеспечивает высокую производительность для всех остальных. Контроллер, по-видимому, не выполняет большую часть очистки, поэтому он попадает в рабочую стену, когда вся свободная область используется. Производительность после этой точки сильно варьируется. Некоторые транзакции завершаются по приемлемым ценам, в то время как другие эффективно доставляют десятки IOPS.
SSD 840 Pro от Samsung, хотя и является клиентским диском высокого класса, дает нам хорошее представление о корпоративных накопителях Samsung следующего поколения. Распределение производительности 840 Pro далеко не так плохо, как у P400e, но разница между наихудшим и лучшим случаем по крайней мере на порядок меньше при выполнении нашего теста. Я подозреваю, что добавление большего количества запасного NAND к этой проблеме очень помогло бы 840 Pro.
Наконец мы добрались до нового диска Intel. Хотя шкала на этом графике хорошо отображает картину для многих накопителей на высоком уровне, один взгляд на твердотельный накопитель Intel S3700 показывает все это в перспективе. В то время как все диски показывают график IOPS, S3700 проводит линию. Если ваш опыт работы с твердотельными накопителями большой, за исключением случайного падения производительности, похоже, что S3700 не знает, как икнуть. На высоком уровне мы видим такое же поведение здесь, как и другие диски. Производительность начинается очень высоко, когда запасная область заполнена, производительность S3700 резко снижается, так как S3700 настраивается на новое состояние (без большого пула чистых блоков), но как только мы движемся к устойчивому состоянию, производительность S3700 совершенно предсказуема.
Следующий набор диаграмм рассматривает устойчивую (для большинства дисков) часть кривой. Здесь мы получим лучшее представление о том, как все будут работать в долгосрочной перспективе.
Исходные данные одинаковы, мы просто фокусируемся на другой части графика. И снова сюжет S3700 – это линия. Остальные накопители, в том числе Intel SSD 330, действительно показывают, насколько их производительность может варьироваться от одной транзакции к другой.
Последний набор графиков полностью отказывается от лог-шкалы и просто смотрит на линейный масштаб, который достигает 40 тыс. Операций ввода-вывода в секунду. Мы также рассматриваем только стабильную (или близкую к этому) производительность здесь:
В этом масштабе мы можем видеть количество отклонений, с которыми приходится иметь дело S3700. Наибольшее значение за этот период для S3700 составляет 34865 IOPS, а наименьшее значение – 29150, разница чуть более 17%. Корпорация Intel утверждает, что в таблицах данных вы увидите отклонение только на 10-15%. Мы немного выше этого, но не намного. Глядя на график S3700, вы можете точно определить частоту и продолжительность больших процедур дефрагментации / GC нового контроллера.
Примерно каждые 150 секунд происходит ощутимое падение производительности, когда контроллер проводит некоторые циклы, реорганизуя свои данные в физическом пространстве. Продолжительность очистки коротка, примерно 30-40 секунд. Эти времена, вероятно, будут меняться в зависимости от рабочей нагрузки. По сравнению с этим 710 выглядит совершенно беспорядочно. Нет четкого периода очистки, что, вероятно, связано с тем, что дефрагментация как таблицы косвенного обращения, так и физического NAND гарантирует, что контроллер всегда пытается восстановить производительность. 330 выглядит так же, как болтунья. Фактически, ни один из других накопителей не имеет согласованности, которую обеспечивает S3700. Я не собираюсь говорить о том, что новый контроллер Intel – единственный, с таким хорошим поведением, но, по крайней мере, по сравнению с этим небольшим набором контроллеров и накопителей, его производительность выглядит совершенно уникальной.
Последствия для корпоративных пользователей и пользователей
Очевидное влияние производительности S3700 на предприятии заключается в том, что в больших массивах RAID поведение диска должно быть намного лучше. С отклонением <20% между минимальным и максимальным IOPS в условиях устойчивого состояния (по сравнению с промежутками 2x – 10x для более старых накопителей) общая производительность должна просто улучшиться. Сильно виртуализированные среды, как правило, выглядят совершенно случайными по своей природе, и они увидят большие улучшения при переходе на S3700. Даже в средах с одним диском поведение будет намного лучше, если рабочая нагрузка будет произвольной записи
На стороне клиента улучшения, предлагаемые новым контроллером S3700, более тонкие. Intel сказала мне, что она должна была отказаться от максимальной производительности для достижения согласованности. Мы увидим это немного, если вы посмотрите на наши ориентированные на клиента комплекты Storage Bench. Samsung SSD 840 Pro сохраняет общий предел производительности (по общему признанию, микропрограмма Intel S3700 более оптимизирована для рабочих нагрузок предприятия), но когда дело доходит до согласованности ввода-вывода, S3700 не может быть лучше. Для модели использования клиента (например, в настольном компьютере или ноутбуке) влияние всего этого будет меньше икоты при нормальном использовании. Небольшие рабочие нагрузки, скорее всего, не принесут никакой пользы, особенно если они в основном читают много, но опытные пользователи многозадачности в аудитории, скорее всего, оценят постоянство. По личному опыту я знаю, что часто сталкиваюсь с неожиданно высокой задержкой ввода-вывода, по крайней мере, несколько раз в день на своем персональном компьютере (Samsung SSD 830). Я был бы готов бросить немного производительности, чтобы получить более последовательный опыт. Хотя S3700 не предназначен для клиентских систем, вполне вероятно, что будущая версия будет поставляться с не-HET 25-нм MLC NAND (аналогично Intel SSD 710 против 320). Учитывая, что HET-версия накопителя стоит 2,35 долл. США за ГБ, вполне вероятно, что мы увидим цены на Intel SSD 320 (или, возможно, немного выше) для версии с меньшим ресурсом.