Производительность HDD- и SSD-дисков

Дисковое устройство

С самого начала эволюции компьютеров требовалось где-то хранить данные вне оперативной памяти, которая при выключении питания обнулялась. Кроме того, хранить данные требовалось не только между включениями компьютера, но и во время его работы — ведь оперативная память не безгранична, поэтому нужно где-то размещать промежуточные данные или окончательный результат их обработки.

В течение продолжительного периода для долговременного хранения данных использовали жёсткие магнитные диски (HDD, Hard Disk Drive) и магнитные ленты (МТ, Magnetic Tape). Первые — обеспечивают произвольный доступ к данным и, поэтому, высокую скорость операций с ними. Вторые — записывают и считывают данные последовательно, поэтому их скорость доступа к данным невысока, зато себестоимость хранения данных на лентах чрезвычайно низкая.

В последнее десятилетие бурно развиваются носители нового типа — на базе полупроводниковой энергонезависимой памяти, в быту: «флэш-памяти». Для совместимости с прежними системами её стали выпускать в корпусах и с разъёмами, совместимыми с корпусами и разъёмами жёстких дисков. В результате, их стали тоже называть дисками, но твёрдотельными (SSD, Solid-State Drive), хотя, конечно, никаких подвижных частей в них нет. Их правильное русское название — твёрдотельный накопитель.

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

Что требуется?

Чего мы ожидаем от дисковой подсистемы компьютера? — Очевидно, чтобы запись и чтение данных выполнялись быстро!

От чего зависит скорость этих операций?

Дисковая операция включает в себя несколько фаз: 1) выдачу команды на операцию (чтения или записи); 2) обработку данных контроллером дискового устройства; 3) передачу данных через интерфейс дисковой подсистемы (при записи данных фазы 2 и 3 меняются местами).

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

 

Схема дисковых операций

 

Как устроены диски?

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

HDD

Жесткие диски (HDD, Hard Disk Drive). Данные на носители этого типа записываются путём намагничивания микроскопических областей ферромагнитного материала, нанесённого тонким слоем на поверхность алюминиевого диска.

Намагничивание производится специальной головкой, расположенной на специальном поворотном коромысле. Диск вращается, головка перемещается в радиальном, относительно диска, направлении.

 

Контроллер диска

 

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

На эти действия уходит, хоть и небольшое, но вполне измеримое время. Время позиционирования на нужную дорожку называется временем поиска (Seek Time), а время поворота диска — временем ожидания, или задержкой (Rotational Latency).

Иногда все временны́е характеристики суммируют, объединяют в одну, которую называют просто задержкой (Latency).

SSD

Твёрдотельные накопители (SSD, Solid-State Drive). В них нет механических частей. Данные записываются в энергонезависимые ячейки памяти. Энергонезависимость означает то, что состояние ячеек памяти при отключении электропитания сохраняется. Быстродействие носителей этого типа намного выше быстродействия механических дисков. Электроны и дырки перемещаются в полупроводнике быстрее магнитной головки над поверхностью жёсткого диска.

 

Энергозависимые ячейки памяти

 

Из-за особенностей устройства полупроводниковой памяти операции записи и чтения могут занимать в ней разное время: запись проходит немного медленнее. Но в отличии от механических дисков в твёрдотельных накопителях нет потери времени на позиционирование магнитной головки и ожидание поворота диска.

Общее

Блоки данных

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

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

На минимальные порции данные делятся на двух уровнях: на уровне физического носителя минимальная порция данных — сектор в 512 байтов (в случае HDD) или страница в 4 килобайта (в случае SSD). На уровне файловой системы минимальной порцией данных является кластер, который объединяет в себе несколько соседних секторов или страниц.

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

Выбор правильного размера кластера — задача не совсем простая.

Если установить размер кластера очень большим, операции с данными ускорятся, но в результате, на диске будет образовываться много пустых, не занятых полезными данными, участков. Впрочем, бесполезные зоны большего или меньшего размера всегда образуются в «хвостах» кластеров и на HDD, и на SSD, так как длина файлов всегда меньше суммарного размера выделенных для него кластеров. — Это неизбежное следствие выравнивания выделяемого дискового пространства по кратности.

Если кластер сделать слишком маленьким, в файловой системе придётся хранить больше данных о месте размещения файлов.

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

Файловая система

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

Отсюда первый вывод: на скорость дисковых операций существенно влияют особенности файловой системы (FAT, ext, NTFS, ReFS, …).

Второй, тоже достаточно очевидный, вывод: большие файлы удельно обрабатываются быстрее, чем множество небольших файлов такого же суммарного объёма. Ведь во втором случае потребуется большее число обращений к файловой системе.

Фрагментированность файлов

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

 

Схема фрагментов

 

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

Контроллеры

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

На прикладном уровне речь идёт о файлах, на уровне дисковых операций — о блоках данных (кластерах, секторах, страницах). Контроллеры выполняют действия трёх типов:

  1. принимают данные от операционной системы или передают их ей;
  2. обрабатывают передаваемые данные;
  3. записывают данные непосредственно на физический носитель или читают их с него.

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

Интерфейсы

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

Очень долго использовались жёсткие диски с интерфейсами IDE, который обеспечивал скорость передачи данных до 133 МБ/с, и SCSI со скоростью до 640 МБ/с.

Интерфейс SATA поднял максимальную скорость до 750 МБ/с. Уже появляются модели с пропускной способностью контроллера до 1 500 МБ/с.

Интерфейс SAS имеет такую же максимальную скорость, но у сопоставимых моделей дисков он обеспечивает лучшие скоростные показатели. Кроме того, у него выше надёжность. Его протокол передачи данных является развитием протокола SCSI.

Следует различать скорость чтения-записи данных в отношении физического носителя и максимальную скорость передачи данных через интерфейс контроллера. В настоящее время скорость физических операций на дисках HDD достигает 200–300 МБ/с, а на дисках SSD — 600–700 МБ/с.

Интерфейс имеет более высокую пропускную способность, что позволяет контроллеру кэшировать и буферизировать обрабатываемые данные.

Здесь перечислены основные на сегодняшний день интерфейсы. Существуют контроллеры и с другими аппаратными и программными интерфейсами, но они имеют меньшее распространение, чем указанные.

Интеллектуальность

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

Какие методы оптимизации применяются?

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

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

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

Массивы дисков

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

Показатели производительности

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

Задержка

Как было сказано ранее, в общее время задержки можно включить разные фазы дисковых операций. Однако для операционной системы и приложений важен общий временной интервал между моментом отправки команды на выполнение дисковой операции и моментом начала получения её результата.

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

В значительной степени время задержки характеризует физические особенности носителя. В среднем, задержка дисковых операций с SSD существенно меньше задержки дисковых операций с HDD.

У современных дисков в штатном режиме время задержки составляет единицы миллисекунд или даже доли миллисекунд.

Скорость передачи данных

Для замера скорости также требуется временной интервал между какими-то событиями. В качестве пары таких событий логично выбрать начало передачи данных и её окончание.

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

В первую очередь, скорость передачи данных характеризует возможности контроллера, его пропускную способность. Это особенно относится к SSD-дискам.

Число дисковых операций

Во время реальной эксплуатации дисков редко бывает, что на них только записывают или с них только читают данные. Обычно запись и чтение постоянно чередуются между собой. Поэтому в качестве характеристики общей прикладной производительности диска был предложен такой показатель как число операций ввода-вывода в единицу времени: IOPS (Input/output Operations Per Second).

Для правильного сравнения дисков по этой характеристике нужно, чтобы тестовые замеры на каждом из дисков производились с одинаковыми порциями (блоками) данных. Сейчас в качестве таких «стандартных» порций для бытовых компьютеров часто используют блоки размером в 4 килобайта, а для серверов — в 32, 64 и даже 128 килобайтов.

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

Другое важное обстоятельство. Как было отмечено при обсуждении скорости передачи данных контроллером диска, в реальности операции записи и чтения перемешаны между собой. — Но… в какой пропорции?

Однозначного ответа этот вопрос нет и быть не может. В одних системах данные чаще записывают, чем читают; в других — наоборот. Например, при видеохостинге данные, в основном, читают; в системах протоколирования (log-данные), видеонаблюдения или резервного копирования — записывают; в корпоративных информационных системах — и записывают, и читают.

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

Для правильного тестирования дисковых подсистем нужно моделировать нагрузку

Заключение

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

Существует довольно много факторов, влияющих на скорость работы дисковой подсистемы. Частью из них можно управлять, другие изменить нельзя, но их тоже нужно принимать в расчёт.

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

 

P. S. О чём ещё мы пишем в блоге 1cloud: