SSD-накопитель PATRIOT PYRO SE

Сергей Пахомов

Технические характеристики

Методика тестирования

Результаты тестирования

 

Наверное, уже не осталось производителя SSD-накопителей, который не представил бы модели на основе контроллера SandForce второго поколения с поддержкой интерфейса SATA 6 Гбит/с. В этой статье мы рассмотрим одну из таких новинок — SSD-накопитель PATRIOT PYRO SE.

Технические характеристики

В накопителе PATRIOT PYRO SE, как и в большинстве современных SSD-накопителей, используются 8-канальный контроллер SandForce SF-2281 и 25-нм чипы MLC NAND флэш­памяти компании Micron. Данный накопитель имеет формфактор 2,5 дюйма. Как и все SSD-накопители на базе контроллера SandForce SF-2281, он поддерживает команду TRIM, технологии DuraClass, DuraWrite для оптимизации срока службы, производительности, длительности хранения данных и энергопотребления. Кроме того, в нем реализованы расширенные функции выравнивания износа (Intelligent Block Management and Wear Leveling) и контроля энергопотребления. Также поддерживаются оптимизация повторного использования ячеек флэш­памяти и сбор мусора (Garbage Collection), что позволяет сохранять максимальную производительность в течение всего срока службы устройства. Контроллер SandForce SF-2281 также реализует в накопителе функцию SMART и технологию RAISE, которая позволяет обнаруживать и устранять почти в миллион миллиардов раз больше ошибок, чем при использовании других накопителей. К тому же контроллер SandForce SF-2281 поддерживает функцию шифрования данных.

 

SSD-накопитель PATRIOT PYRO SE

Накопители PATRIOT PYRO SE выпускаются емкостью 60, 120 и 240 Гбайт.

Согласно спецификации, при подключении по интерфейсу SATA 6 Гбит/с максимальная скорость последовательного чтения накопителей PATRIOT PYRO SE емкостью 120 и 240 Гбайт составляет 550 Мбайт/с, а максимальная скорость последовательной записи — 520 Мбайт/с. Для накопителя PATRIOT PYRO SE емкостью 60 Гбайт максимальная скорость последовательного чтения и записи равна 550 и 500 Мбайт/с соответственно.

В режиме случайной записи блоками по 4 Кбайт производительность, которая традиционно измеряется в количестве операций ввода­вывода в секунду (IOPS), составляет 85 000 IOPS для накопителей емкостью 120 и 240 Гбайт и 80 000 IOPS для накопителя емкостью 60 Гбайт.

Методика тестирования

В нашем распоряжении был SSD-накопитель PATRIOT PYRO SE емкостью 120 Гбайт. Для его тестирования мы использовали стенд следующей конфигурации:

  • процессор — Intel Core i7-3960Х;
  • системная плата — Intel DX79SI;
  • чипсет системной платы — Intel X79 Express;
  • диск с операционной системой — Western Digital WD3200AAKS;
  • режим работы SATA — AHCI;
  • драйвер дисков — Intel RST 10.6;
  • контроллер диска — интегрированный в чипсет контроллер SATA 6 Гбит/с.

В ходе тестирования использовалась операционная система Window 7 Ultimate (64 bit). Дополнительно устанавливался драйвер Intel RST 10.6, а SSD-накопитель PATRIOT PYRO SE подключался к порту SATA 6 Гбит/с, который был реализован через контроллер, интегрированный в чипсет. К еще одному SATA-порту подключался HDD-диск, на который устанавливались операционная система и все необходимые для тестирования приложения. Для всех SATA-портов задавался режим работы AHCI.

Для тестирования мы использовали утилиту IOmeter версии 2008.06.18, которая представляет собой очень мощный инструмент для анализа производительности накопителей (как HDD, так и SSD) и фактически является отраслевым стандартом для измерения производительности накопителей.

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

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

Во всех сценариях загрузки использовались запросы на передачу данных блоками следующих размеров: 512 байт, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 Кбайт, 1, 2, 4, 8, 16 и 32 Мбайт. Выравнивание устанавливалось по размеру блока.

Также отметим, что во всех перечисленных тестах мы задавали в настройках IOmeter глубину очереди задачи (# of Outstanding I/Os) равной 4, что типично для пользовательских приложений.

Отметим, что в ходе тестирования у данного накопителя был зафиксирован так называемый эффект старения, который заключается в том, что по мере эксплуатации производительность накопителя снижается. Этот эффект в SSD-накопителях давно известен, и в первых моделях он возникал всегда. Однако с появлением контроллеров SandForce и новых поколений прошивок об эффекте старения SSD-накопителей постепенно стали забывать. Что ж, самое время напомнить, почему производительность SSD-накопителей со временем может ухудшаться.

Причина старения SSD-накопителей заключается в том, что запись и чтение данных в них производятся страницами по 4 Кбайт, а удаление данных — только блоками по 512 Кбайт (то есть блоками по 128 страниц). Размер блока может быть и иным — это непринципиально. Казалось бы, что в этом такого? Но, как мы увидим в дальнейшем, именно в этом и кроется первопричина всех бед SSD-накопителей.

Вкратце напомним, каким образом происходит запись информации на SSD-накопитель. Во флэш­памяти данные преимущественно записываются последовательно, то есть порциями по 4 Кбайт в следующую по порядку свободную страницу флэш­памяти. При этом логический адрес записываемой страницы (LBA) сопоставляется с физическим адресом (PBA), то есть с адресом расположения во флэш­памяти. Соответствие логических и физических адресов (LBA-PBA mapping) фиксируется в специальной таблице, которая размещается в оперативной памяти SSD-накопителя.

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

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

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

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

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

Казалось бы, почему нельзя записывать новые данные в те страницы флэш­памяти, которые содержат устаревшие данные и помечены на удаление? Всё дело в том, что в архитектуре флэш­памяти для того, чтобы произвести запись данных в занятую страницу памяти, ее нужно предварительно очистить. Однако, как мы уже отмечали, если запись и чтение во флэш­памяти осуществляются страницами, то удаление возможно только блоками. И если нам нужно очистить какую-то страницу памяти, то придется стереть весь блок, в котором она находится. Однако данный блок может содержать как страницы, помеченные к удалению (страницы с устаревшими данными), так и страницы с актуальными данными, которые удалять нельзя.

Для того чтобы использовать блоки со страницами, помеченными к удалению, применяется метод переноса данных с помощью пустых и резервных блоков. Даже если пустых блоков в SSD-накопителе уже не осталось, всегда имеется определенное количество резервных блоков, используемых для переноса данных. Чтобы удалить страницу с устаревшими данными, прежде нужно переместить из соответствующего блока страницы с актуальными данными в резервный свободный блок и уже потом удалить весь блок, содержащий страницы с устаревшими данными. Соответственно мы получаем частично занятый блок с перемещенными данными, доступный для записи, и пустой блок, который становится резервным. Однако из-за такого перемещения данных приходится записывать на SSD-накопитель больше данных, чем требуется. К примеру, если нужно записать всего одну страницу (4 Кбайт) и для этого нет свободного блока, то прежде необходимо найти блок со страницами, помеченными к удалению. Если имеется блок, в котором помечена на удаление всего одна страница, то нужно переместить из этого блока в резервный блок остальные 127 страниц и дополнить его той одной страницей, которую нужно было записать. Затем блок со страницей, помеченной на удаление, стирается и становится резервным. Получается, что для записи всего одной страницы (4 Кбайт) приходится записывать 128 страниц (512 Кбайт), и это не считая того, что время тратится еще на чтение всего блока и его стирание. Именно поэтому скорость записи на новый накопитель (на который данные никогда не записывались) и на уже заполненный диск может различаться. Для того чтобы подчеркнуть принципиальную разницу в скорости записи на пустой и заполненный накопители, используется такой показатель, как коэффициент усиления записи (Write Amplification). Он отображает, во сколько раз больше данных приходится записывать, чем реально требуется. При записи на пустой диск коэффициент усиления записи равен единице, а при записи на заполненный диск он всегда больше единицы — его значение может колебаться от 2 до 25.

Рассмотренный пример несколько идеализирован: в реальности перемещение данных, то есть избавление от блоков со страницами, помеченными к удалению, происходит по мере заполнения диска, причем с помощью как пустых, так и резервных блоков. Эта процедура получила название «сбор мусора» (Garbage Collection).

Существуют различные алгоритмы процедуры Garbage Collection, и разница между ними заключается в том, каким именно образом выбирается блок, используемый для перемещения данных. Понятно, что это должен быть блок, содержащий как можно больше страниц памяти, помеченных к удалению. Именно в этом случае можно минимизировать количество операций записи и тем самым уменьшить показатель Write Amplification. Кроме того, учитывая, что количество циклов перезаписи ячеек флэш­памяти ограничено, процедура Garbage Collection с выбором блока с наибольшим количеством страниц, помеченных к удалению, позволяет продлить время жизни SSD-накопителя.

Казалось бы, что мешает просто выбрать блок с максимальным количеством страниц, помеченных к удалению? Но для этого нужно просмотреть всю таблицу соответствия LBA-PBA, а это довольно трудоемкая операция для контроллера, которая требует достаточно много процессорных циклов. Такой способ выбора блоков на удаление не оптимален и ведет к снижению производительности, поэтому используются алгоритмы окна, когда анализируются не все блоки, а лишь некоторая их часть (окно блоков), с наибольшей вероятностью содержащая блок с максимальным количеством страниц, помеченных к удалению.

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

Другое интересное явление заключается в том, что скорость последовательной и случайной записи на SSD-накопитель может различаться. Казалось бы, если данные записываются на SSD-накопитель преимущественно последовательно, то как вообще можно говорить о случайной записи? Но не всё так просто, как кажется. Представим себе последовательную (с точки зрения операционной системы) запись большого массива данных на пустой диск. То есть запись, при которой все логические LBA-адреса заполняются последовательно. В этом случае все физические блоки памяти будут заполняться последовательно, а если данные перезаписываются, то опять-таки будут образовываться блоки, целиком состоящие из страниц, помеченных к удалению. То есть при такой записи не требуется использовать технологию перемещения данных, поскольку если блок состоит только из страниц, помеченных к удалению, то его можно стереть целиком, не перемещая из него никаких данных. Понятно, что в таком случае (то есть при последовательной записи) коэффициент усиления записи равен 1 и достигается максимальная скорость записи.

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

Еще одно принципиальное различие между случайной и последовательной записью заключается в принципах формирования и оптимизации таблицы соответствия LBA-PBA. Строго говоря, речь идет не просто о таблице, а о гораздо более сложной структуре. Не вникая в детали, отметим, что данная таблица не содержит отдельных записей для каждого сектора, а оперирует блоками переменной длины и чем больше эти блоки, тем меньшее количество записей в таблице требуется. Более того, по мере заполнения такой таблицы начинается процедура ее оптимизации, что сильно отражается на производительности диска.

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

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

Рассмотренные нами явления «старения» SSD-накопителей и различия в скорости случайной и последовательной записи могут как проявляться в современных SSD-накопителях, так и нет. Здесь всё зависит от прошивки и контроллера SSD-накопителя, которые определяют логику его работы. Дело в том, что в качестве примера мы рассмотрели несколько идеализированную ситуацию. В реальной ситуации процедура перемещения данных может происходить постоянно, что позволяет избавиться от эффекта старения накопителя. Кроме того, в накопителях применяется процедура Wear Leveling, позволяющая повысить долговечность SSD за счет равномерного использование всех ячеек памяти. Смысл ее заключается в том, что контроллер накопителя отслеживает частоту использования различных блоков памяти и если какие­то блоки памяти используются реже остальных, то он принудительно повышает частоту их применения за счет перезаписывания неиспользуемых блоков данных в другие блоки.

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

И тот факт, что в накопителе PATRIOT PYRO SE скорость случайной записи зависит от того, идет ли речь о новом накопителе или о ранее использовавшемся, свидетельствует о недоведенной до ума прошивке.

Собственно, изменение производительности накопителя PATRIOT PYRO SE со временем порождает вопрос: а как ее вообще измерять? Действительно, можно измерять производительность SSD-накопителя, когда он новый (или приведен к состоянию ранее неиспользовавшегося), а можно измерять производительность ранее использовавшегося накопителя. Понятно, что для пользователя скоростные характеристики ранее использовавшегося накопителя важнее, поскольку со временем любой накопитель приходит к этому состоянию. Однако измерить производительность ранее использовавшегося накопителя не так­то просто, поскольку такой показатель, как скорость случайной записи, меняется со временем, а скорость последовательной записи вообще зависит от того, как именно ранее применялся накопитель. Более того, длительный тест на скорость последовательной записи меняет сценарий использования накопителя, что может выражаться даже в возрастании скорости последовательной записи.

Действительно, если на накопителе предварительно в течение долгого времени осуществлялись операции последовательной записи, то при последующей последовательной записи процедура перемещения данных (Garbage Collection) не должна повлиять на снижение скорости и результат не должен сильно отличаться от результата с новым накопителем. Если на накопителе предварительно в течение долгого времени осуществлялись операции случайной записи, то при последующей последовательной записи доминирующим фактором, отражающимся на скорости, станет процедура Garbage Collection, то есть процедура очистки блоков со страницами, помеченными к удалению. В то же время если процедуру последовательной записи проводить долго, то в конечном счете количество разрозненных страниц памяти, помеченных к удалению, станет небольшим, а показатель усиления записи приблизится к единице и скорость последовательной записи возрастет и станет практически такой же, как и в случае, если на диске предварительно в течение длительного времени осуществлялись операции последовательной записи.

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

Тем не менее производитель всегда указывает скоростные показатели для нового накопителя. А потому мы протестировали именно новый SSD-накопитель PATRIOT PYRO SE, а также построили график зависимости скорости случайной записи блоками по 4 Кбайт от времени (график старения накопителя).

Сразу оговоримся, что любой накопитель можно привести к состоянию нового. Для этого достаточно удалить на нем логический раздел (если он был создан), а затем вновь создать его и отформатировать.

Для того чтобы продемонстрировать процесс старения накопителя, мы использовали в утилите IOmeter операцию случайной записи блоками по 4 Кбайт в течение 10 часов с фиксацией результатов через каждую минуту. Это позволило нам построить график зависимости скорости случайной записи от времени (график старения накопителя).

Результаты тестирования

Сводные результаты тестирования SSD-накопителя PATRIOT PYRO SE представлены на рис. 1. Для нового накопителя максимальная скорость последовательного чтения составляет 542 Мбайт/с, что соответствует заявленной. Максимальная скорость последовательной записи равна 485 Мбайт/с, что немного ниже заявленного значения.

 

Рисунок

Рис. 1. Результаты тестирования ранее использовавшегося SSD-накопителя
PATRIOT PYRO SE

Характерно, что максимальные значения скорости последовательной записи и последовательного чтения достигаются при размере блока примерно в 256 Кбайт.

Максимальная скорость случайного чтения составляет 542 Мбайт/с и достигается при размере блока 1 Мбайт. Максимальная скорость случайной записи равна порядка 465 Мбайт/с и достигается при размере блока 1 Мбайт.

Прежде чем переходить к рассмотрению результатов тестирования SSD-накопителя PATRIOT PYRO SE, приведенного к состоянию нового, давайте рассмотрим процесс его старения (рис. 2). Как видите, в первый момент скорость случайной записи блоками по 4 Кбайт составляет 50 Мбайт/с, но в течение первого часа она снижается до 35 Мбайт/с. Через три с небольшим часа происходит скачкообразное падение производительности до 28 Мбайт/с, но на этом значении скорость стабилизируется. Таким образом, скорость случайной записи блоками по 4 Кбайт составляет 50 Мбайт/с для нового накопителя и 28 Мбайт/с для ранее использовавшегося. То есть со временем скорость случайной записи падает почти вдвое.

 

Рисунок

Рис. 2. График изменения скорости случайной записи блоками
по 4 Кбайт в зависимости от времени

 

В начало В начало

КомпьютерПресс 05'2012


Наш канал на Youtube

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует