Главная / Статьи / Накопители / SSD диск Intel X25-M (Gen 2) емкостью 160 Гбайт

Относительно недавно компания Intel представила новые SSD диски Intel X25-M второго поколения (Gen 2). В этой статье мы подробно рассмотрим технические характеристики этого диска, а также обсудим результаты его тестирования.

SSD диск Intel X25-M (Gen 2) емкостью 160 Гбайт

Относительно недавно компания Intel представила новые SSD диски Intel X25-M второго поколения (Gen 2). В этой статье мы подробно рассмотрим технические характеристики этого диска, а также обсудим результаты его тестирования.

Особенности работы SSD дисков

Прежде чем переходить к рассмотрению диска Intel X25-M, напомним основные особенности работы современных SSD-дисков.
Во всех SSD-дисках используется флэш-память с организацией по типу NAND. Элементарные ячейки, объединенные в массив, вмещающий 4 Кбайт данных, называются страницей памяти, а 128 таких страниц образуют блок памяти размером 512 Кбайт. Страница флэш-памяти подобна сектору в жестком диске и представляет собой минимальный размер данных, с которым работает флэш-память. Однако между сектором жесткого диска и страницей флэш-памяти существует принципиальная разница при выполнении операций чтения, записи и удаления. Так, если в жестком диске сектор можно прочитать, записать и удалить, то во флэш-памяти операции чтения и записи возможны страницами по 4 Кбайт, а стирание данных — только блоками по 512 Кбайт. И самое главное заключается в том, что как только информация записана на страницу, она не может быть перезаписана до тех пор, пока не будет очищена (удалена). Собственно, это обстоятельство приводит, к некоторым особенностям работы SSD-дисков, которые необходимо учитывать.
К примеру, производительность SSD-дисков меняется со временем, а скорости последовательного и выборочного доступа к флэш-памяти отличаются друг от друга. Для того чтобы объяснить эти явления, рассмотрим более подробно процессы записи на HDD- и SSD-диски.
Для адресации секторов на HDD-диске используется метод LBA (Logical Block Addressing), при котором каждый блок, адресуемый на жестком диске, имеет свой порядковый номер — целое число, начиная с нуля.
Если данные записываются, к примеру, в блок LBA c определенным номером, то это означает, что они будут размещаться в определенном месте (на определенном цилиндре, дорожке и секторе) на диске. И сколько бы раз не перезаписывался этот блок, данные всегда будут помещаться в одно и то же физическое место на диске, соответствующее номеру блока LBA.
Если же данные удаляются, то есть пользователь удаляет файл на уровне операционной системы, то на самом деле они не удаляются с HDD-диска, а просто соответствующие данным логические LBA-адреса на уровне операционной системы помечаются как свободные и могут в дальнейшем использоваться (данные могут перезаписываться). Важно, что контроллер самого HDD-диска ничего об этом не знает, однако для HDD-диска это не проблема, поскольку переписать LBA-блоки для HDD-диска не составляет труда.
В случае SSD-диска всё совсем по-иному. Дело в том, что в SSD-дисках нет однозначного соответствия между логическим номером записываемой порции данных (страницы) и ее физическим расположением во флэш-памяти.
Во флэш-памяти данные преимущественно записываются последовательно, то есть они всегда записываются порциями по 4 Кбайт в следующую по порядку свободную страницу флэш-памяти. При этом логический адрес записываемой страницы (LBA) сопоставляется с физическим адресом (PBA), то есть с адресом расположения во флэш-памяти.
Для соответствия между логическими и физическими адресами (LBA-PBA mapping) предназначена специальная таблица соответствия логических и физических адресов. Эта таблица размещается в оперативной памяти SSD-диска.
При получении запроса на запись контроллер выделяет соответствующее число свободных страниц и заносит в таблицу соответствие между LBA- и PBA-адресами. Если же данные перезаписываются (то есть требуется записать данные с логическими адресами, которые уже заняты), то контроллер SSD-диска выделяет следующие свободные страницы памяти, а в таблице соответствия логических и физических адресов помечает страницы, в которые эти данные были записаны ранее, как содержащие устаревшую информацию. Важно, что при этом реально страницы с устаревшими данными не перезаписываются (как в HDD дисках) и не удаляются.
Если же данные удаляются, то есть пользователь удаляет файл на уровне операционной системы, то, как и в случае HDD-диска, данные не удаляются с диска, а просто соответствующие данным логические LBA-адреса на уровне операционной системы помечаются как свободные и в дальнейшем могут быть использованы (данные могут перезаписываться). Важно, что контроллер самого SSD-диска ничего об этом не знает и считает соответствующие страницы памяти занятыми. То есть соответствующие страницы памяти не помечаются к удалению в таблице соответствия LBA- и PBA-адресов (за исключением случаев, когда при удалении используется команда TRIM, о которой мы расскажем далее). Запись на SSD-диск в основном происходит последовательно, поэтому существует большая разница между записью на новый диск (на который данные еще не записывались) и на уже заполненный диск. Отметим, что заполненный диск с точки зрения пользователя может быть пустым, поскольку удаление данных с диска на уровне операционной системы еще не означает их реального удаления из флэш-памяти.
При случайной записи на пустой (или частично занятый) SSD-диск всё происходит очень просто. Все данные пишутся последовательно в страницы памяти, заполняя тем самым блоки памяти. Причем даже в том случае, если производится перезапись данных, они последовательно записываются в следующие по порядку свободные страницы памяти, а в таблице соответствия логических и физических адресов те страницы, в которые эти данные были записаны ранее, помечаются как содержащие устаревшие данные (помечаются к удалению).
Естественно, при таком последовательном алгоритме записи неизбежна ситуация, когда весь диск будет заполнен, то есть на нем не останется блоков со свободными страницами, а будут лишь блоки, содержащие заполненные страницы с актуальными данными, и страницы, помеченные к удалению.
Казалось бы, почему нельзя записывать новые данные в те страницы флэш-памяти, которые содержат устаревшие данные и помечены к удалению? Всё дело в том, что в архитектуре флэш-памяти для того, чтобы произвести запись данных в занятую страницу памяти, ее нужно предварительно очистить. Однако, как мы помним, если запись и чтение во флэш-памяти осуществляются страницами, то удаление возможно только блоками. И если нам нужно очистить какую-то страницу памяти, то придется стереть весь блок, в котором находится эта страница. Однако данный блок может содержать и страницы, помеченные на удаление (страницы с устаревшими данными), так и страницы с актуальными данными, которые удалять нельзя.
Для того чтобы использовать блоки со страницами, помеченными к удалению, применяется метод переноса данных с помощью пустых и резервных блоков. Даже если пустых блоков в SSD-диске уже не осталось, всегда имеется определенное количество резервных блоков, используемых для переноса данных. Чтобы удалить страницу с устаревшими данными, прежде нужно переместить из соответствующего блока страницы с актуальными данными в резервный свободный блок и уже потом удалить весь блок, содержащий страницы с устаревшими данными. Соответственно мы получаем частично занятый блок с перемещенными данными, доступный для записи, и пустой блок, который становится резервным. Однако в результате такого перемещения данных получается, что на SSD-диск приходится записывать больше данных, чем требуется. Именно поэтому скорость записи на новый диск (на который данные никогда не записывались) и на уже заполненный диск может кардинально различаться. Для того чтобы подчеркнуть принципиальную разницу в скорости записи на пустой и заполненный диски, используется такой показатель, как коэффициент усиления записи (Write Amplification), который показывает, во сколько раз больше данных приходится записывать, чем реально требуется. При записи на пустой диск коэффициент усиления записи равен единице, а при записи на заполненный диск он всегда больше единицы — его значение может колебаться от 2 до 25.
Рассмотренный пример является несколько идеализированным — в реальности механизм перемещения данных, то есть избавления от блоков со страницами, помеченными к удалению, используется по мере заполнения диска, причем с помощью как пустых, так и резервных блоков. Эта процедура получила название сбора «мусора» (Garbage Collection).
Существуют различные алгоритмы процедуры Garbage Collection, и разница между ними заключается в том, каким именно образом выбирается блок, используемый для перемещения данных. Понятно, что это должен быть блок, содержащий как можно больше страниц памяти, помеченных к удалению. Именно в этом случае можно минимизировать количество операций записи и, тем самым, уменьшить показатель Write Amplification. Кроме того, учитывая, что количество циклов перезаписи ячеек флэш-памяти ограничено, процедура Garbage Collection с выбором блока с наибольшим количеством страниц, помеченных к удалению, позволяет продлить время жизни SSD-диска.
Казалось бы, а что мешает просто выбирать блок с максимальным количеством страниц, помеченных к удалению. Но для этого нужно просмотреть всю таблицу соответствия LBA-PBA, однако, это достаточно трудоемкая операция для контроллера, которая требует достаточно много процессорных циклов. Такой способ выбора блоков на удаление не оптимален и ведет к снижению производительности, поэтому используются алгоритмы окна, когда анализируются не все блоки, а лишь некоторая их часть (окно блоков) с наибольшей вероятностью содержащая блок с максимальным количеством страниц, помеченных к удалению.
Теперь нужно пояснить, откуда берутся те самые резервные блоки, которые применяются для перемещения данных. Если имеется SSD-диск, емкость которого составляет 160 Гбайт, то реально для записи доступно 160 десятичных, а не двоичных Гбайт. То есть реально емкость диска, доступная для записи, составит 160 000 000 000 байт, а не 171 798 691 840 байт, как в двоичной интерпретации (в двоичной интерпретации 1 Кбайт = 1024 байт). Разница между емкостью диска в двоичной и десятичной интерпретации как раз и составляет резерв блоков для перемещения данных (резервная область). В случае SSD-диска размером 160 Гбайт резервная область равна 11 798 691 840 байт, или примерно 11 Гбайт в двоичной интерпретации. Важно отметить, что резервная область диска — это не какой-то выделенный участок блоков памяти. Резервные блоки как бы «размазаны» по всему диску, более того — их расположение динамически меняется во времени. Любой блок памяти может быть и резервным, и доступным для записи.
Итак, мы рассмотрели первый феномен SSD-дисков, заключающийся в том, что скорость записи на новый и ранее использовавшийся диски может заметно различаться. Есть и другой феномен: разница в скорости последовательной и случайной записи. Казалось бы, если данные записываются на SSD-диск преимущественно последовательным образом, то как вообще можно говорить о случайной записи? Однако не будем спешить с выводами. Представим себе последовательную (с точки зрения операционной системы) запись большого массива данных на пустой диск, то есть запись, при которой все логические LBA адреса заполняются последовательно.
В этом случае все физические блоки памяти будут заполняться последовательно, а если данные перезаписываются, то опять-таки будут образовываться блоки, целиком состоящие из страниц, помеченных к удалению. В этом случае не требуется использовать технологию перемещения данных, поскольку если блок состоит только из страниц, помеченных к удалению, то его можно стереть целиком, не перемещая из него никаких данных. Понятно, что в таком случае (то есть в случае последовательной записи) коэффициент усиления записи равен 1 и достигается максимальная скорость записи.
В случае случайной записи даже на пустой диск, хотя данные и записываются преимущественно последовательным образом пока не будет заполнено всё доступное пространство диска, неизбежно возникают операции перезаписи данных мелкими порциями, и в результате блоки данных содержат как страницы с нужными данными, так и страницы, помеченные к удалению. Это как раз та ситуация, которая была рассмотрена ранее, то есть по мере заполнения диска начинает использоваться механизм перемещения данных и коэффициент усиления записи становится больше единицы. Таким образом, за счет эффективного использования технологии перемещения данных скорость случайной записи всегда ниже скорости последовательной записи.
Существует еще одна принципиальная разница между случайной и последовательной записью, заключается в принципах формирования и оптимизации таблицы соответствия LBA-PBA. Строго говоря, речь идет не просто о таблице, а о гораздо более сложной структуре. Не вникая в детали, отметим, что данная таблица не содержит отдельных записей для каждого сектора, а оперирует блоками переменной длины, и чем больше эти блоки, тем меньшее количество записей в таблице требуется. Более того — по мере заполнения такой таблицы начинается процедура ее оптимизации, что сильно отражается на производительности диска.
Процесс оптимизации, по сути, состоит из объединения разрозненных маленьких фрагментов в один непрерывный сегмент. Одно такое объединение позволяет заменить несколько тысяч записей в таблице на одну запись. Объединение делается путем считывания разрозненных фрагментов и последовательной их записи в новый сегмент. Физические блоки, где эти фрагменты ранее размещались, помечаются как неиспользуемые.
При последовательной записи фактически создается один большой фрагмент. Поэтому записей в таблице будет очень мало и оптимизировать ее не надо. Если же запись производится случайным образом, то необходимость постоянной оптимизации таблицы приводит к тому, что производительность диска резко падает.
Кроме рассмотренных ранее специфических особенностей, SSD-диски имеют и другие отличия от HDD-дисков. В частности, для того чтобы обеспечить равномерное использование всех ячеек памяти и тем самым повысить долговечность SSD, применяется механизм Wear Leveling. Он заключается в том, что контроллер SSD-диска отслеживает частоту использования различных блоков памяти, и если какие-то блоки памяти применяются реже остальных, то он принудительно повышает частоту их использования. Рассмотрим, к примеру, ситуацию, когда записывается большой архив фотографий, занимающий половину диска. Понятно, что архивные фотографии не будут перезаписываться, и получается, что, будучи один раз записанными, блоки памяти, соответствующие этому архиву, больше не используются, в то время как остальные блоки памяти эффективно применяются, а следовательно, быстрее изнашиваются. Для того чтобы уравнять частоту использования всех блоков памяти и тем самым увеличить время жизни SSD-диска, механизм Wear Leveling принудительно перезаписывает неиспользуемые блоки данных в другие блоки, высвобождая их для применения.

Технические характеристики SSD диска Intel X25-M (Gen 2)

Intel X25-M (Gen 2) представляет собой 2,5-дюймовый SSD-диск на основе NAND флэш-памяти c MLC-ячейками (каждая ячейка памяти является четырехуровневой и может хранить два бита информации). Емкость этого диска составляет 160 Гбайт. Напомним, что в SSD-дисках доступная для использования емкость указывается не в двоичных, а в десятичных гигабайтах. Поэтому емкость этого диска, доступная для использования, составляет примерно 150 двоичных Гбайт, ну а размер резервной области равен 11 Гбайт (двоичных)
Диски Intel X25-M второго поколения (Gen 2) выполнены на основе 34-нм микросхем NAND флэш-памяти. Напомним, что в предыдущем поколении SSD-дисков Intel использовались 50-нм микросхемы памяти. Впрочем, изменение техпроцесса производства микросхем NAND флэш-памяти — это не единственное различие между дисками первого и второго поколений. Куда более значительные изменения связаны с самим контроллером SSD-диска, на который ориентированы новые прошивки (Firmware). Благодаря применению нового контроллера и прошивки диск Intel X25-M второго поколения имеет более высокие скоростные показатели в сравнении с дисками первого поколения. Так, в табл. 1 представлены данные результатов теста IOmeter, приводимые в спецификации на диски Intel X25-M. Как видите, в дисках второго поколения увеличена скорость последовательной и выборочной записи. Остальные характеристики дисков практически не отличаются друг от друга, если не считать того обстоятельства, что у новых дисков на порядок снижена частота возникновения ошибки чтения.

Таблица 1. Сопоставление заявленных характеристик дисков Intel X25-M 160 GB первого и второго поколений

Параметры

Intel X25-M 160 GB Gen 2

Intel X25-M 160 GB Gen1

Выборочное чтение (4 Кбайт, IOmeter Queue Depth 32), IOPS

35000

35000

Выборочная запись (4 Кбайт, IOmeter Queue Depth 32), IOPS

8600

3300

Последовательное чтение, Мбайт/с

250

250

Последовательная запись, Мбайт/с

100

70

Задержка чтения, мкс

65

85

Задержка записи, мкс

85

115

Энергопотребление (Active/Idle), мВт

150/75

150/60

Время наработки на отказ (MTBF), ч

1 200 000

1 200 000

Частота возникновения ошибки чтения (Read Error Rate)

1 сектор на 1016 считанных битов

1 сектор на 1015 считанных битов

Еще одно важное различие между дисками первого и второго поколений заключается в том, что диски Intel X25-M второго поколения поддерживают команду TRIM, в то время как диски первого поколения — нет.
Смысл команды TRIM заключается в том, что при удалении некоторого файла с диска операционная система посылает контроллеру диска специальную команду TRIM и дает ему знать, что данные из определенного набора страниц могут быть перезаписаны, то есть соответствующие страницы памяти помечаются к удалению и могут применяться в процедуре Garbage Collection. Важно отметить, что сама по себе команда TRIM не приводит к физическому удалению данных. Преимущество команды TRIM заключается в том, что с ее помощью можно увеличить количество блоков, содержащих страницы, отмеченные к удалению, и тем самым повысить эффективность процедуры Garbage Collection при выборе блока с наибольшим количеством страниц, отмеченных к удалению. Тем самым, команда TRIM способствует увеличению производительности диска, минимизируя избыточную запись при перемещении данных. Кроме того, использование команды TRIM позволяет снизить число перемещений данных в процедуре Wear Leveling.
Команда TRIM реализована в операционной системе Windows 7, а также в ядре Linux, начиная с ревизии 2.6.28. Что касается поддержки команды TRIM в драйверах контроллера на системной плате, то она имеется в стандартном драйвере Microsoft, а также в драйвере Intel RST 9.6 (в случае использования чипсетов Intel), но с тем ограничением, что в RAID-массиве команда TRIM не поддерживается.
Поддержка команды TRIM контроллером SSD-диска зависит от его прошивки. Отметим, что в некоторых случаях обновление прошивки диска позволяет воспользоваться преимуществами команды TRIM, а в некоторых — нет. В частности, для дисков Intel X25-M первого поколения нет и не будет прошивки с поддержкой команды TRIM, а вот для дисков второго поколения поддержка TRIM реализована в прошивке. Попутно отметим, что мы тестировали диск Intel X25-M (Gen 2) с последней (на момент тестирования) версией прошивки 2CV102HD. Немаловажно подчеркнуть, что для дисков Intel X25-M предусмотрена очень простая процедура обновления прошивки контроллера с помощью специальной утилиты перепрошивки, которую можно скачать с сайта Intel.

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

После обзора диска Intel X25-M Gen 2 можно перейти к анализу результатов его тестирования, но сначала расскажем о том, как именно оно проводилось.
При тестировании диска Intel X25-M Gen 2 мы не ставили себе задачу сравнить его по производительности с другими SSD-дисками. Главной целью нашего тестирования было изучение зависимости скоростных характеристик диска от различных условий.

Конфигурация стенда

Для тестирования использовался стенд следующей конфигурации:

  • процессор — Intel Core i7-965 EE;
  • системная плата — Gigabyte GA-EX58-UD4;
  • чипсет системной платы — Intel X58 Express (южный мост ICH 10R);
  • BIOS системной платы — F10;
  • диск с операционной системой — Seagate Barracuda ST31500341AS (7200 RPM, 1,5 Тбайт);
  • режим работы SATA — AHCI;
  • драйвер дисков — Intel RST 9.6;
  • версия прошивки тестируемого диска — 2CV102HD;
  • контроллер диска — интегрированный в чипсет Intel X58 Express контроллер.

При тестировании применялась операционная система Window 7 Ultimate (32 bit). Дополнительно устанавливался драйвер Intel RST 9.6, а сам диск Intel X25-M подключался к SATA-порту, реализованному через контроллер, интегрированный в южный мост чипсета Intel X58 Express. К еще одному SATA-порту подключался HDD-диск, на который устанавливалась операционная система и все необходимые для тестирования приложения. В настройках BIOS для всех SATA-портов задавался режим работы AHCI.
Для тестирования мы использовали утилиту IOmeter версии 2008.06.18 (последняя версия на момент тестирования), которая представляет собой очень мощный инструмент для анализа производительности накопителей.
Утилита IOmeter позволяет работать как с дисками, на которых создан логический раздел, так и с дисками без логического раздела. Мы проводили тестирование SSD-диска с созданным логическим разделом, поскольку данная ситуация более приближена к реальности.
Как мы уже отмечали, производительность SSD-диска зависит от того, новый он или нет. Под новым мы будем понимать SSD-диск, не содержащий никаких данных, то есть диск, у которого все физические страницы памяти свободны. Причем отсутствие, с точки зрения операционной системы, на диске файлов еще не означает, что страницы памяти диска не содержат данных. Контроллер самого диска при этом может считать, что страницы памяти диска заполнены данными.
Под ранее использовавшимся диском мы будем понимать диск, все страницы памяти которого уже были заполнены данными как минимум один раз.
Собственно, именно поэтому при тестировании SSD-диска мы применяли сценарии нагрузки как с новыми дисками, так и с ранее использовавшимися. Естественно, возникает вопрос: а как получить новый диск? Ведь уже после первого теста он будет не совсем новым.
Для того чтобы привести использовавшийся SSD-диск к состоянию нового или «диска из коробки» (out of box), можно использовать достаточно простую процедуру: удалить логический раздел, а затем создать его вновь и отформатировать. Дело в том, что при форматировании в операционной системе Windows 7 все данные на диске помечаются к удалению с использованием команды TRIM и фактически мы получаем такой же диск, как и новый.
Для того чтобы получить использованный диск, то есть диск, в котором все страницы памяти уже записаны данными, с помощью утилиты IOmeter проводилась случайная запись блоками по 64 Кбайт в течение такого времени, чтобы суммарный объем записанных на диск данных в 1,5 раза превышал его размер.
Процесс тестирования проводился в три этапа. На первом этапе исследовалась зависимость скорости выполнения операций последовательного и случайного чтения, а также последовательной записи от размера блока запроса на передачу данных. В этих тестах использовались следующие сценарии нагрузок:

  • последовательное чтение диска;
  • случайное чтение диска;
  • последовательная запись нового диска;
  • последовательная запись использовавшегося ранее диска.

Во всех перечисленных сценариях загрузки применялись запросы на передачу данных блоками следующих размеров: 512 байт, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 Кбайт и 1 Мбайт. Выравнивание устанавливалось по размеру блока.
Понятно, что результаты операций последовательного и случайного чтений не могут различаться для нового и уже использовавшегося дисков. Поэтому для операций чтения тест проводился только для уже использовавшегося диска (с таким же успехом этот тест можно было осуществлять на базе нового диска).
Для операций последовательной записи тест проводился как для нового диска, так и для ранее использовавшегося.
В перечисленных сценариях нагрузки время теста с каждым запросом на передачу блока данных составляло 5 мин. Также отметим, что во всех перечисленных тестах мы задавали в настройках IOmeter глубину очереди задачи (# of Outstanding I/Os) равной 4, что типично для пользовательских приложений.
Второй и третий этапы тестирования были посвящены операциям случайной записи. Дело в том, что, в отличие от всех остальных тестов, скорость случайной записи меняется со временем. Поэтому на втором этапе тестирования мы исследовали изменение скорости выполнения случайной записи от времени. Данный тест выполнялся следующим образом. С каждым размером блока запроса на передачу данных тест запускался на протяжении четырех часов с фиксацией результатов через каждую минуту (утилита IOmeter позволяет создать подобный сценарий загрузки). После этого для каждого размера блока строился график зависимости скорости передачи данных от времени.
В тесте использовались следующие размеры запросов на передачу блоков данных: 4, 8, 16, 32, 64 и 128 Кбайт. Выравнивание устанавливалось по размеру блока.
Теоретически скорость выполнения операций случайной записи должна зависеть от количества свободных страниц памяти и от размера резервной области, поскольку пустые страницы памяти, а также страницы памяти резервной области применяются в процедуре перемещения данных, и чем их больше, тем выше скорость выполнения операций случайной записи. Поэтому на третьем этапе тестирования мы измеряли зависимость скорости выполнения операций случайной записи от размера резервной области.
Данный тест проводился только с запросами на передачу данных блоками по 4 Кбайт. Напомним, что любой диск имеет резервную область, недоступную для использования. Размер резервной области можно увеличить, если создать на диске логический раздел с меньшим размером, чем размер диска. В этом случае всё неиспользуемое пространство автоматически будет задействоваться как резервная область.
В тесте измерения зависимости скорости выполнения операций случайной записи от размера резервной области мы задавали размер логического раздела в процентах от максимального: 100% (149 Гбайт), 75% (111,8 Гбайт), 50% (74,5 Гбайт) и 25% (37,3 Гбайт).

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

Последовательное и случайное чтение
Результаты тестирования в режиме последовательного и случайного чтения показаны на рис. 1. Как видите, максимальная скорость последовательного и случайного чтения составляет 260 Мбайт/с. Отметим, что это даже немного выше, чем заявляет в спецификации производитель. При этом максимальное значение скорости чтения достигается при размере блока в 64 Кбайт.
Отметим, что зависимость скорости случайного чтения от размера блока запроса существенно отличается от аналогичной зависимости последовательного чтения. Мы не можем объяснить, чем именно это обусловлено, поскольку видимых причин для разницы между последовательным и случайным чтением в SSD дисках нет. Что ж, остается лишь констатировать обнаруженный факт.

Зависимость скорости передачи данных при случайном чтении диска

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

Зависимость скорости передачи данных при последовательной записи для нового и ранее использовавшегося диска

Случайная запись
Пожалуй, анализ результатов именно случайной записи диска вызывает наибольший интерес, поскольку со временем меняется скорость выполнения только этих операций. Как правило, в качестве главной причины, приводящей к падению скорости осуществления операций случайной записи, указывается уменьшение со временем количества свободных страниц памяти и, как следствие, возрастание показателя усиления записи. Однако давайте попробуем проанализировать изменение скорости передачи данных при случайной записи для диска Intel X25-M (Gen 2). Результаты тестирования для случайной записи показаны на рис. 3.
В первые несколько минут теста (зависит от размера блока) наблюдается очень резкое падение производительности. К примеру, при размере блока 4 Кбайт скорость передачи данных за первые три минуты теста уменьшается с 60 до 2 Мбайт/с. Давайте посмотрим, может ли такое падение производительности быть вызвано уменьшением количества свободных страниц памяти. Как показывают расчеты, при размере блока 4 Кбайт с учетом изменения скорости передачи данных за первые три минуты всего на диск записывается порядка 7 Гбайт данных, то есть занимается не более 5% пространства диска. Понятно, что ни о каком уменьшении количества свободных страниц памяти речи пока не идет, а значит, такое падение производительности не может быть следствием уменьшения числа свободных страниц памяти.
При случайной записи, кроме уменьшения числа свободных страниц памяти, есть еще одна причина, приводящая к падению производительности. Речь идет об оптимизации таблицы размещения, которая включает записи, сопоставляющие логические адреса (LBA) физическим адресам (PBA). Важно, что эта таблица не содержит отдельных записей для каждого 512-байтного сектора, а оперирует блоками переменной длины. Чем больше блоки, тем меньшее количество записей в таблице требуется. Строго говоря, это не просто таблица, а более сложная структура. При коротких блоках данных первых нескольких минут вполне достаточно, чтобы таблица размещения выросла до размеров оперативной памяти контроллера SSD, в которой, собственно, она и расположена. И с этого момента уже требуется постоянно оптимизировать таблицу, что сказывается на производительности. Процесс оптимизации, по сути, состоит из объединения разрозненных маленьких фрагментов в один непрерывный сегмент. Одно такое объединение позволяет заменить несколько тысяч записей в таблице на одну запись. Объединение делается путем считывания разрозненных фрагментов и записи их последовательно в новый сегмент. Физические блоки, где эти фрагменты ранее размещались, помечаются как неиспользуемые.
Поэтому, основная причина, по которой наблюдается резкое падение производительности при операциях случайной записи – это постоянная оптимизация таблицы размещения. Понятно, что если тест остановить на некоторое время (достаточное для оптимизации таблицы размещения), а потом вновь его продолжить, то скорость случайной записи резко вырастет, но опять-таки начнет резко уменьшаться с течением времени.

Зависимость скорости передачи данных от времени при случайной записи

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

Зависимости скорости выполнения операций случайной записи от размера логического раздела

О

проверьте также

Обзор внешнего твердотельного накопителя ADATA Elite SE760

ADATA Elite SE760 – это быстрый твердотельный накопитель большой емкости, который легко положить в карман. …

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

WP2Social Auto Publish Powered By : XYZScripts.com