четверг, 11 августа 2011 г.

Производительность СХД. Часть первая.

Мощность процессоров в серверах за последние 10 лет выросла в десятки раз, количество оперативной памяти тоже, тогда как у жёстких дисков производительность растёт строго линейно и весьма медленно. И если с процессорами и памятью всё просто и понятно – чем больше, тем лучше, то с дисками всё намного сложнее. И чаще всего производительность дисков и СХД является узким местом виртуальной инфраструктуры из-за неправильного сайзинга. 

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


Введение в принципы работы жёстких дисков.

Итак, какие параметры больше всего влияют на производительность? Во-первых, мы должны изучить параметры жёстких дисков, чтобы по возможности максимально нивелировать задержки, а для этого нам необходимо учитывать типы запросов к диску. Во-вторых, нужно правильно выбрать размер блока на RAID массиве, выбор которого зависит от типа запросов к диску. И, наконец, поговорим о выравнивании – очень важном моменте, суть которого многие до сих пор не понимают.

Задержки и латентность.

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

* Время позиционирования магнитной головки на дорожке
* Задержка чтения данных из-за вращения диска
* Время пересылки данных

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

Хорошо, нужную дорожку нашли, но поскольку пластина вращается, то к моменту готовности под головкой может оказаться совершенно любой блок данных. И здесь мы начинаем говорить о задержке чтения данных из-за вращения диска - времени, через которое под головкой окажется требуемый блок данных. Это время в среднем равно половине оборота пластины и напрямую зависит от скорости вращения пластин. Да-да, тех самых 7200, 10000 или 15000 rpm.

Кстати, вы заметили, что емкости дисков за 10-12 лет выросли более чем в тысячу раз, а вот скорость вреащения осталась прежней? Все те же жалкие 15 тысяч оборотов в минуту. Все дело в том, что здесь жесткие магнитные диски исчерпали свой физический ресурс, и скорости движения уже достигают скорости звука.

Таким образом, мы получаем следующее:

Общее время позиционирования = время позиционирования головки + задержка из-за вращения диска.

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

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

Размер пакетов ввода-вывода.

Давайте рассмотрим баланс между размером пакетов ввода-вывода и пропускной способностью. К сожалению, большая часть людей не смотрят на оба параметра сразу – некоторые меряют только IOPS (количество операций ввода-вывода за секунду), а некоторые (на самом деле большинство) только пропускную способность (мегабайты за секунду). Но, оба эти параметра связаны между собой фактором, который известен как размер пакета ввода-вывода. Возьмём, к примеру, стандартный SATA диск со скоростью 7200 оборотов в минуту. Его производительность достигает в пике 120MB/s и 70 IOPS (операций ввода-вывода в секунду). Но если взять ситуацию, когда надо обработать много-много маленьких файлов, то с точки зрения физического диска это будет выглядеть как пакеты в 4kB, и соотв. 70 IOPS х 4kB = 0.28MB/s. Что разумеется может очень удивить, если не понимать как все работает.

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

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

Твердотельные диски.

Как бы смешно это не звучало, но жёсткие диски – самый медленный компонент дисковой системы. Новым словом здесь стали твердотельные или SSD диски. В SSD дисках нет магнитной головки, которую необходимо перемещать, и нет задержки из-за вращения диска. Что в общем-то логично нет никаких механических элементов. Как итог - SATA диск способен выдать около 70 IOPS, тогда как SSD – 2500-4000.

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

4 комментария:

  1. Некоторые вещи очевидны, или уже были где-то освещены, но вот про размеры блоков и IOPS неплохое напоминание. :) В целом, жду часть 2 :)

    ОтветитьУдалить
  2. Не спорю, но я их оставил, скажем так, для полноты картины. Плавность чтения, так сказать :)

    ОтветитьУдалить
  3. Странно, рассуждать о конечных носителях в терминах СХД. Лучше поговорить на тему когерентного кеширования и его отравления виртуализацией.

    ОтветитьУдалить