Пользователь
0,0
рейтинг
29 декабря 2012 в 08:35

Администрирование → IOPS — что это такое, и как его считать из песочницы

iopsIOPS (количество операций ввода/вывода – от англ. Input/Output Operations Per Second) – один из ключевых параметров при измерении производительности систем хранения данных, жестких дисков (НЖМД), твердотельных диски (SSD) и сетевых хранилища данных (SAN).

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

Значит, для определения IOPS надо знать скорость и размер блока при операции чтения / записи. Параметр IOPS равен скорости, деленной на размер блока при выполнении операции.

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


Основными измеряемыми величинами являются операции линейного (последовательного) и произвольного (случайного) доступа.

image

Под линейными операциям чтения/записи, при которых части файлов считываются последовательно, одна за другой, подразумевается передача больших файлов (более 128 К). При произвольных операциях данные читаются случайно из разных областей носителя, обычно они ассоциируются с размером блока 4 Кбайт.

Ниже приведены основные характеристики:
Параметр
Описание
Всего IOPS (Total IOPS)
Суммарное число операций ввода/вывода в секунду (при выполнении как чтения, так и записи)
IOPS произвольного чтения (Random Read)
Среднее число операций произвольного чтения в секунду
IOPS произвольной записи (Random Write)
Среднее число операций произвольной записи в секунду
IOPS последовательного чтения (Sequential Read)
Среднее число операций линейного чтения в секунду
IOPS последовательной записи (Sequential Write)
Среднее число операций линейной записи в секунду

Приблизительные значения IOPS


Приблизительные значения IOPS для жестких дисков.

Устройство

Тип

IOPS

Интерфейс

7,200 об/мин SATA-диски

HDD

~75-100 IOPS

SATA 3 Гбит/с

10,000 об/мин SATA-диски

HDD

~125-150 IOPS

SATA 3 Гбит/с

10,000 об/мин SAS-диски

HDD

~140 IOPS

SAS

15,000 об/мин SAS-диски

HDD

~175-210 IOPS

SAS

Приблизительные значения IOPS для SSD.

Устройство

Тип

IOPS

Интерфейс

Intel X25-M G2 MLC

SSD

~8 600 IOPS

SATA 3 Гбит/с

OCZ Vertex 3

SSD

~60 000 IOPS (Произвольная запись 4K)

SATA 6 Гбит/с

OCZ RevoDrive 3 X2

SSD

~200 000 IOPS (Произвольная запись 4K)

PCIe

OCZ Z-Drive R4 CloudServ

SSD

~1 400 000 IOPS

PCIe

RAID пенальти


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

В RAID 1 чтобы данные записались на диск, происходит две операции на запись (по одной записи на каждый диск), и следовательно RAID 1 имеет два пенальти.

В RAID 5 чтобы записать данные происходит 4 операции (Чтение существующих данных, четность RAID, Запись новых данных, Запись новой четности) тем самым пенальти в RAID 5 составляет 4.

В этой таблице приведено значение пенальти для более часто используемых RAID конфигурации.
RAID
I/O Пенальти
RAID 0
1 (Edited by Reader)
RAID 1
2
RAID 5
4
RAID 6
6
RAID 10
2

Характеристика рабочих нагрузок


Характеристика рабочей нагрузки в основном рассматривается как процент операции чтений и записей, которые вырабатывает или требует приложение. Например, в среде VDI процентное соотношение IOPS рассматривается как 80-90% на запись и 10-20% на чтение. Понимание характеристики рабочей нагрузки является наиболее критическим фактором, поскольку от этого и зависит выбор оптимального RAID для среды. Приложения которые интенсивно используют операции на запись являются хорошими кандидатами для RAID 10, тогда как приложения которые интенсивно используют операции на чтение могут быть размещены на RAID 5.

Вычисление IOPS


Есть два сценария вычисления IOPS-ов.
Один из сценариев это когда есть определенное число дисков, и мы хотим знать, сколько IOPS эти диски выдадут?
Второй сценарий, когда мы знаем сколько нам IOPS-ов надо, и хотим вычислить нужное количество дисков?

Сценарий 1: Вычисление IOPS исходя из определенного кол-ва дисков

Представим что у нас есть 20 450GB 15к RPM дисков. Рассмотрим два сценария Рабочей нагрузки 80%Write-20%Read и другой сценарий с 20%Write-80%Read. Также мы вычислим количество IOPS как для RAID5 и RAID 10.

Формула для расчета IOPS:

Total Raw IOPS = Disk Speed IOPS * Number of disks
Functional IOPS =(((Total Raw IOPS×Write %))/(RAID Penalty))+(Total Raw IOPS×Read %)

Есть определение Raw IOPS и Functional IOPS, как раз токи Functional IOPS-ы и есть те IOPS-ы которые включают в себя RAID пенальти, и это и есть “настоявшие” IOPS-ы.

А теперь подставим цифры и посмотрим что получится.

Total Raw IOPS = 170*20 = 3400 IOPS (один 15K RPM диск может выдать в среднем 170 IOPS)

Для RAID-5

Вариант 1 (80%Write 20%Read) Functional IOPS = (((3400*0.8))/(4))+(3400*0.2) = 1360 IOPS
Вариант 2 (20%Write 80%Read) Functional IOPS = (((3400*0.2))/(4))+(3400*0.8) = 2890 IOPS

Для RAID-1

Вариант 1 (80%Write 20%Read) Functional IOPS = (((3400*0.8))/(2))+(3400*0.2) = 2040 IOPS
Вариант 2 (20%Write 80%Read) Functional IOPS = (((3400*0.2))/(2))+(3400*0.8) = 3100 IOPS

Сценарий 2: Подсчет кол-ва дисков для достижения определенного кол-ва IOPS

Рассмотрим ситуацию где нам надо определить тип RAID-а и количества дисков для достижения определенного количества IOPS-ов 5000 и с определенными рабочими нагрузками, например 80%Write20%Read и 20%Write80% Read.

Опять же для начала формула по которой и будем считать:

Total number of Disks required = ((Total Read IOPS + (Total Write IOPS*RAID Penalty))/Disk Speed IOPS)

Total IOPS = 5000

Теперь подставим цифры.

Заметка: 80% от 5000 IOPS = 4000 IOPS и 20% от 5000 IOPS = 1000 IOPS с этими цифрами и будем оперировать.

Для RAID-5

Вариант 1 (80%Write20%Read) – Total Number of disks required = ((1000+(4000*4))/170) = 100 дисков.
Вариант 2 (20%Write80%Read) – Total Number of disks required = ((4000+(1000*4))/170) = 47 дисков приблизительно.

Для RAID-1

Вариант 1 (80%Write20%Read) – Total Number of disks required = ((1000+(4000*2))/170) = 53 диска приблизительно.
Вариант 2 (20%Write80%Read) – Total Number of disks required = ((4000+(1000*2))/170) = 35 дисков приблизительно.

Понимание и подсчет IOPS, RAID пенальти, и характеристик рабочих нагрузок очень критичны аспект при планировании. Когда нагрузка более интенсивна на запись луче выбирать RAID 10 и наоборот при нагрузках на чтение RAID 5.

Программы для измерения IOPS


IOmeter — тест IOPS
IOzone — тест IOPS
FIO — тест IOPS
CrystalDiskMark — тест IOPS
SQLIO — набор тестов для расчета производительности (IOPS, MB, Latency) под сервера БД
wmarow — калькулятор RAID групп по производительности IOPS
Антон Балашов @Korang
карма
7,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Администрирование

Комментарии (11)

  • +9
    Хорошая статья от amarao про производительность дисков.
  • +2
    В RAID 5 чтобы записать данные происходит 4 операции (Чтение существующих данных, четность RAID, Запись новых данных, Запись новой четности) тем самым пенальти в RAID 5 составляет 4.

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

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

    Это почему же не подвергаются? Какие полезные данные вы получаете с дисков, хранящие четность в RAID-5 или RAID-6? Или даже более наглядный пример — RAID-4, который использует выделенный диск под хранение четности.
  • +13
    Дожил хабр. Картинками показываем разницу между последовательным и произвольным доступом.

    Ну а дальше вообще детский сад:
    Под линейными операциям чтения/записи, при которых части файлов считываются последовательно, одна за другой, подразумевается передача больших файлов (более 128 К).

    Да что вы говорите. Большие файлы, стало быть. И это исключает возможность чтения из разных областей накопителя. Ну-ну.

    не подвергаются никакому пенальти

    имеет два пенальти


    Велик и могуч русский язык. Грамматика, орфография и пунктуация смотрят на вас с негодованием. Плюс куча совершенно диких опечаток.

    Понимание характеристики рабочей нагрузки является наиболее критическим фактором, поскольку от этого и зависит выбор оптимального RAID для среды.

    Это изречение устарело на несколько лет минимум (в части выбора RAID).

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

    Значит, для определения IOPS надо знать скорость и размер блока при операции чтения / записи. Параметр IOPS равен скорости, деленной на размер блока при выполнении операции.

    А это что такое было? Почему вы игнорируете размер блока, который по вашим словам так важен, при подсчете IOPS? Functional IOPS вы для какого размера блока считали? Зачем ружье в начале статьи повесили? По законам жанра оно должно стрелять.

    Ну и вообще, зачем вы копипастите википедию? Расскажите о значении задержек, о том, что оценка в «лоб» IOPS уже давно не актуальна, о том что различные уровни RAID во многих массивах практически не отличаются по производительности, о том что существуют иные уровни RAID, кроме привычных и т.д и т.п
    • –1
      С википедии взял значения iops для разных дисков, и картинку. Оценка в «лоб» IOPS давно не актуальна — простите, а как Вы тогда рассчитываете СХД под базы данных или запас производительности сервера БД, различными benchmark'ами, или просто используете Fusion-IO или ZeusIOPS® SSD? То, что различные уровни RAID во многих массивах практически не отличаются по производительности — тут я с Вами согласен. Недавно сравнивал RAID5, RAID6, RAID10 на одной СХД с одинаковым количеством дисков. Показатели по производительности практически одинаковые, только стоит учесть, что при вылете диска из RAID6 производительность упадет на порядок ниже, чем при вылете диска из RAID 10. Все остальные замечания запомнил на будущее, и постараюсь их не допускать.
      • 0
        Недавно сравнивал RAID5, RAID6, RAID10 на одной СХД с одинаковым количеством дисков. Показатели по производительности практически одинаковые

        Не напишете конфигурацию СХД и методику замера?
        На LSI CTS2600 с 24 дисками производительность R6, R10 и DDP заметно отличается, как в иопсах, так и в latency. DDP на 25% быстрее R6, а R10 на 30% быстрее DDP при R/W=67/33 и 4КБ блоках.
        • 0
          В качестве тестового стенда выступали сервер IBM System x3550 M3 с ОС Windows 2008 R2 (2х Xeon 5675 @ 3.07Ghz, 96Gb RAM) и СХД Hitachi Unified Storage (HUS-110, набитый 24 2,5" дисками по 600Gb со скорость 10k).

          Тестирование проводилось в 3 этапа:

          3RG-8D(7D+1P) — 3 рейд группы по 8 дисков (7 дисков + 1 диск четности) собранные в RAID5.
          2RG-12D(10D+2P) — 2 рейд группы по 12 дисков (10 дисков + 2 диска четности) собранные в RAID6.
          1RG-24D(22D+2P) — 1 рейд группа из 24 дисков (22 диска + 2 хотспара) собранные в RAID10.
          Диски четности или диски хотспара СХД создает самостоятельно.

          Тестирование проводилось утилитами SQLIO и IOMETER с 500Gb файлом.

          Параметры SQLIO во время тестирования: Test with 6 threads using mask 0x0 6 threads reading / writing for 600sec using 8/64KB random/sequential IOs enabling multiple I/Os per thread with 4 outstanding buffering set to use hardware disk cache (but not file cache) using size 512000MB for file test.

          Параметры IOMETER во время тестирования: Transfer request size 64k, Percent of access spetification 100%, Percent distribution 45% sequential 55% random, Percent distribution 60% write 40% read, Transfer delay 0ms, Burst length 1 I/Os, Test time 2h.

          Результат по IOPS:
          image
          По latency R6 и R10 одинаковы, за исключением Write Random 8k и 64k. Тут R10 несколько быстрее R6.
          В IOMETER примерно тоже самое, R10 немного быстрее R6.
          • 0
            Я в этом деле новичок, но тестовый файл не маловат для хранилища с 6-10 ТБ usable space?

            Сейчас под рукой есть лишь измерения для 4 КБ блоков на 100% поверхности голого луна и там разница видна невооруженным глазом:

      • +1
        С википедии взял значения iops для разных дисков, и картинку.

        Для начала давайте проясним, вы Юрий Семенихин или Антон Балашов? Потому что если вы Антон Балашов, то получается, что текст статьи цельнотянут отсюда. Ну а картинка да, с википедии.

        Оценка в «лоб» IOPS давно не актуальна — простите, а как Вы тогда рассчитываете СХД под базы данных или запас производительности сервера БД, различными benchmark'ами, или просто используете Fusion-IO или ZeusIOPS® SSD?

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

        RAID6 производительность упадет на порядок ниже, чем при вылете диска из RAID 10

        Когда делаете такие утверждения — указывайте пожалуйста конкретный массив, потому что лично я знаю несколько контр-примеров.
        • –1
          Используемые источники: citrix.pp.ru (большая часть), wikipedia.org (картинки и таблицы iops дисков), и aboutnetapp.ru.
          Что же касается утверждений, то вот 2 массива, IBM DS3524(dual controller + Turbo Perfomance) и LSI MegaRAID 9280-8e (with BBU). На этом СХД и RAID-контроллере столкнулся с деградацией производительности на личном опыте года полтора назад.
          • 0
            Т.е. вы не господин Семенихин? А как вы объясните тот факт, что этот ваш топик и вот эта статья от января 2011 года совпадают дословно? Вплоть до ржачного "(Edited by Reader)" в таблице? На citrix.pp.ru хотя бы источник копипасты указывают.
  • +1
    Сначала приводится таблица различающая IOPSы по произвольности/последовательности, а потом следом бац таблица где просто IOPS :) и судя по числам, там имелись ввиду IOPS случайного доступа…

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.