Из чего складывается величина IOPS отдельного диска?

Я в этом блоге уже несколько раз упоминал тот факт, что жесткий диск имеет определенную “конструктивно заданную” величину параметра IOPS – Input-Output Operations per Second – число операций ввода-вывода в секунду для random-операций. Отдельный жесткий диск имеет производительность в IOPS сравнительно небольшую. Так, для дисков SATA говорят о 75 IOPS, то есть отдельный диск может произвести за секунду 75 операций чтения или записи блока данных с “блинов”. Несколько производительнее диски SAS или FC, до 175 IOPS при скорости вращения 15000 оборотов в минуту. Это совсем не грандиозные объемы операций. Ну представьте, 75 операций ввода вывода (записи и чтения) в секунду. Всего лишь. Если у вас на компьютере работает примерно 30 процессов (программ и системных сервисов), то на каждый такой процесс приходится всего две с половиной операции чтения или записи в секунду.

Именно для повышения производительности в дисковых системах хранения данных используется множество дисков. Совсем не ради емкости, по крайней мере сегодня – как правило. Ведь чем на большее число физических дисков (на нашем птичьем языка-жаргоне прижилось калькированное с английского, и отдающее машинным маслом токарного станка словечко “шпиндель” (spindle), означающее физический жесткий диск) мы можем разложить наши данные, чем больше дисков задействовать для обслуживания ввода-вывода, по 75 (или 175) с каждого, тем выше получится суммарная производительность системы хранения на операциях random read/write.

Но откуда же берется это мистическое число “IOPS со шпинделя”, чем оно так жестко определяется?

На самом деле формула, определяющая эту величину довольно проста.

IOPS Estimated = 1 / ((seek time in ms / 1000) + (latency in ms / 1000))

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

Возьмем, для примера диск Seagate SATA 1TB, 7200RPM:

Estimated IOPS = 1 / ( ( (average read seek time+average write seek time) / 2) / 1000) + (average latency / 1000) )

или с указанными в спеках данных для данного диска:

Estimated IOPS = 1 / ( (9.00 / 1000) + (4.16 / 1000) ) = 1 / ( (0.009) + (0.00416) ) = 75.987 - ~ 75 IOPS

Или для диска Seagate SAS 600GB 15KRPM:

Estimated IOPS = 1 / ( (3.65 / 1000) + (2.0 / 1000) ) = 1 / ( (0.00365) + (0.002) ) = 176.99 - ~ 175 IOPS

8 комментариев

  1. Andrew Ivanov:

    Я бы только “1000″ вынес куда-нибудь наверх (или еще лучше размерность указать), а то некоторое время тупо смотрел на изначальную формулу, пока ниже не увидел что все времена в мс указаны :)

  2. EGarbuzov:

    Всегда было интересно, как получают “номинальные” IOPS’ы одного диска. Только фигня со скобками. Во всех четырёх формулах не хватает по одной-две :)

  3. panvartan:

    Еще один шаг в техпроцессе ssd и 10k&15k уйдут в историю - единственный их плюс - высокая маржа производителя). 15k они уже обогнали по емкости - http://servernews.ru/news/Hitachi-anonsirovala-proizvoditelniy-SSD-na-mikroshemah-pamyati-MLC. Интересно, этоха DataOntap = эпоха hdd?

  4. Интересно, я правильно понимаю что кроме очевидной разницы в IOPS между SATA 7200 и SAS 15k есть еще и разница во времни отклика.
    Т.е. SAS примерно в 2.5 раза больше операций делает, и при этом время отклика в 2,5 разм меньше чем у SATA.

  5. Pavel Kruchok:

    Несмотря на то, что в теории может быть некоторая разница во времени отклика между протоколами, на практике, как я понимаю, в основном решает RPM. То есть 15000 это в 2 с чутью раза быстрее доезжает сектор до головки, вот эти два раза и дают основную разницу между SAS 15K и SATA 7.2K

  6. Toka:

    В формулах есть определенная неточность. В знаменателе стоит 1 только когда расчитывается диск с 10K RPM. Однако, для диков 15K, в знаменателе правильнее будет поставить 1,5.т.е IOPS= 1,5/( (3.65 / 1000) + (2.0 / 1000) )= 265 IOPS. Также для дисков с 7200 оборотов, в знаменателе ставят 0,72. Так уже становится более понятно откуда берется большая разница в IOPS между 10K (max 150 IOPS) и 15K (250 IOPS) дисков.

  7. Toka:

    Поправка, не в знаменателе, а в числителе имелось в виду менять значения в зависимости от RPM.

  8. bbk:

    Напомните, правильно ли я понимаю, что получаемая величина “Estimated IOPS” соблюдается при условии оперирования случайными (не последовательными) операциями чтения/записи минимального зазмера в 4KB, с величиной латенси равной “average latency”?

Оставить комментарий

20/0.133

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

This content is not endorsed, sponsored or affiliated with NetApp, Inc. The views expressed in this blog are solely those of the author and do not represent the views of NetApp, Inc.