??з чего складывается величина 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”?

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