Почему IOPS имеет значение?

32

Я понимаю, что такое IOPS и пропускная способность. Пропускная способность измеряет поток данных как МБ / с, а IOPS сообщает, сколько операций ввода / вывода происходит в секунду.

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

Почему IOPS имеет значение? Почему AWS в основном показывает свои условия хранения в IOPS? Где IOPS важнее, чем пропускная способность (МБ / с)?


РЕДАКТИРОВАТЬ:

Некоторые люди рассматривают этот вопрос так, как будто я спросил, что такое произвольный доступ и как он влияет на производительность или как работают жесткие диски и твердотельные накопители ... хотя я думаю, что эта информация полезна для людей, плохо знакомых с поведением хранилищ, большое внимание уделяется к этому, и это не является целью вопроса, вопрос в том, «Какую новую информацию я получаю, когда вижу число IOPS, которое я не получаю, увидев число пропускной способности (МБ / с)?»

mFeinstein
источник
3
Если вы хотите переместить большие данные, вы заботитесь о пропускной способности. Если вам нужно перечитать много маленьких данных, вам нужно больше IOPS. eg1 Если есть одна операция, которая может считывать МБ данных с устройства, тогда вам нужна только 1 операция, чтобы получить высокую пропускную способность. eg2 Если вам нужно прочитать десятки атрибутов файла, вы не каждый раз просматриваете большой объем данных, но вам нужно выполнить много операций для извлечения небольших битов данных. Пропускная способность будет низкой, но вам потребуется много операций.
TafT

Ответы:

32

пропускная способность

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

IOPS

IOPS обычно определяют размер каждого пакета данных. Например, AWS gp2 может выполнить 10000 операций ввода-вывода в секунду с размером полезной нагрузки 16 КиБ . Это умножается на 160 МБ / с. Однако маловероятно, что вы будете использовать полный размер полезной нагрузки все время, поэтому фактическая пропускная способность, вероятно, будет ниже. Примечание: KiB - 1024 байта, KB - 1000 байтов.

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

Сценарии

Рассмотрим эти сценарии:

  • Загрузка вашего ПК. Подумайте о разнице между твердотельным накопителем и вращающимся диском в вашем компьютере, с чем многие люди сталкиваются из первых рук. При использовании вращающегося диска время загрузки может составлять минуту, а при использовании SSD - до 10–15 секунд. Это связано с тем, что более высокий IOPS приводит к снижению задержки при запросе информации. Пропускная способность вращающегося диска довольно хорошая, 150 МБ / с, хотя SSD, вероятно, выше, но не потому, что он быстрее - это меньшая задержка для возврата информации.
  • Запуск обновления ОС. Это идет по всему диску, добавляя и исправляя файлы. Если бы у вас был низкий IOPS, он был бы медленным, независимо от пропускной способности.
  • Запуск базы данных, например, выбор небольшого количества данных из большой базы данных. Он будет читать из индекса, читать из нескольких файлов, а затем возвращать результат. Опять идет по всему диску, чтобы собрать информацию.
  • Играя в игру на вашем компьютере. Вероятно, он загружает большое количество текстур со всего диска. В этом случае IOPS и пропускная способность, вероятно, требуются.

LTO Tape

Рассмотрим на мгновение систему резервного копирования на ленту. LTO6 может делать 400 МБ / с, но (я предполагаю здесь), вероятно, не может даже сделать один случайный IOP, он может составлять всего несколько секунд на IOP. С другой стороны, он может выполнять много последовательных операций ввода-вывода в секунду, если IOPS определяется как чтение или запись пакета данных на ленту.

Если вы попытаетесь загрузить ОС с магнитной ленты, это займет много времени, если оно вообще сработает. Вот почему IOPS часто более полезен, чем пропускная способность.

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

AWS

Обратите внимание, что AWS публикует на этой странице как показатели IOPS, так и показатели пропускной способности для всех типов хранилищ . SSD общего назначения (gp2) может выполнять 10000 операций ввода-вывода 16 КБ, что дает максимум 160 МБ / с. Предоставляемый IOPS (io1) составляет 20 000 16 КБ IOPS, что дает максимум 320 МБ / с.

Обратите внимание, что с томами gp2 вы получаете 30IOPS на ГБ, поэтому для получения 10000 IOPS вам нужен том 333,33 ГБ. Я не помню, если у томов io1 было подобное ограничение (прошло много времени с тех пор, как я сдавал вспомогательные экзамены, на которых тестировались подобные вещи), но я подозреваю, что они есть, и если это так, то, вероятно, это 60IOPS на ГБ.

Вывод

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

Тим
источник
Я понимаю, что IOPS измеряет производительность произвольного доступа, но на самом деле он не показывает, насколько быстро вы выполняете какие-то действия ... вы можете делать 10000 IOPS, но это может быть что-то медленное или быстрое, единственный способ узнать, это знать, сколько МБ / с, операция потребляет.
mFeinstein
IOPS обычно указывает размер полезных данных. AWS говорит 16 КБ. Таким образом, 10 000 операций ввода-вывода в секунду при скорости 16 КБ / с дают вам 160 МБ / с.
Тим
2
10000 IOPS при 16 КБ не будут переводиться в 20000 IOPS при 8 КБ, хотя (возможно, ~ 11000). Это означает, что нужно знать как IOPS, так и пропускную способность, чтобы оценить диск / рабочую нагрузку.
boot4life
4
Просто чтобы быть педантичным, это все еще 1 IOP, а не 1 IOP. С не множественное число
Мэтью
1
Я не могу думать ни о каких других. Большинство вещей с высоким IOPS имеют достаточно высокую пропускную способность, но в большинстве случаев полезны из-за IOPS, а не пропускной способности. Другим примером может быть реляционная база данных, хотя это не устройство хранения, а программное обеспечение. Я не уверен, что еще вы хотите от этого вопроса, я думаю, что концепция была подробно объяснена вам. Что-то с большим временем поиска или задержкой, вероятно, имеет низкий IOPS, но пропускная способность может быть отсоединена и в некоторых случаях может быть высокой.
Тим
57

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

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

Потоковое порно от одного из моих серверов для наших клиентов (или загрузок на наш CDN) является более последовательным в природе , и вы будете видеть влияние пропускной способности там.

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

Возможно, мне понадобится 2000 IOPS, чтобы иметь возможность работать с базами данных при пиковой нагрузке, но на уровне диска может наблюдаться пропускная способность только 30 МБ / с из-за типа активности. Диски имеют скорость 1200 МБ / с, но IOPS являются ограничением в среде.

Это способ описания потенциала емкости системы хранения. SSD может иметь пропускную способность 80000 IOPS и 600 МБ / с. Вы можете получить такую ​​пропускную способность с 6 обычными дисками SAS 10 тыс., Но это даст только около 2000 IOPS.

ewwhite
источник
Не могли бы вы привести пример, где IOPS даст мне представление о производительности моей системы, где МБ / с не будут полезны?
mFeinstein
@mFeinstein См порно пример выше.
Ewwhite
33
+1 за порно например лол
mFeinstein
2
Кроме того, операционная система, вероятно, делает несколько небольших случайных обращений. Пропускная способность Seq не поможет. Это причина для запуска ОС на SSD, по крайней мере, на ПК.
Судо
3
Я часто вижу полностью загруженные диски со скоростью ~ 2 МБ / с. Это потому, что это 100% случайный ввод-вывод. Иногда невероятный выигрыш в производительности возможно при последовательном размещении данных на диске (например, удаление фрагментации, индексация в базах данных).
boot4life
6

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

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

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

SATA HDD Результаты:

Пропускная способность последовательного чтения: ~ 100 МБ / с
Пропускная способность непоследовательного чтения (2 тыс. Блоков, IIRC): ~ 1 МБ / с

PCIe-подключенный SSD Результаты:

Пропускная способность последовательного чтения: ~ 700 МБ / с
Пропускная способность непоследовательного чтения (2 тыс. Блоков, IIRC): ~ 125 МБ / с

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

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

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

reirab
источник
Разве вы не измеряли IOPS?
mFeinstein
3

Для выполнения операции ввода-вывода привод (ы) должен пройти ряд операций. Для механического жесткого диска им нужно.

  1. Найдите правильный путь и выберите правую голову.
  2. Подождите, пока блюдо повернется в правильное положение.
  3. На самом деле передать данные.

Время, необходимое для 3, зависит от размера блока данных, но время, необходимое для 1 и 2, не зависит от размера запроса.

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

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

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

Питер Грин
источник
2

Существует два типа узких мест, которые вы можете испытать на IO-томах (или IO в целом).

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

стоимость единицы * размер + накладные расходы. уравнение прямой.

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

Вы можете провести простой эксперимент самостоятельно, создать каталог с несколькими файлами по 1 ГБ (или что-то еще практичное, достаточно большое, чтобы прочитать / записать его, требуется несколько секунд), а затем создать папку с миллионами 100-байтовых файлов. (обратите внимание, это 0,1 ГБ данных), а затем посмотрите, что произойдет с вашей пропускной способностью, когда вы начнете пытаться переместить все эти вещи, скажем, между различными разделами / дисками - вы получите производительность, уменьшенную пропускной способностью для больших файлов, и уменьшенную с помощью количество файлов для мелочи.

Я бы предположил, что Amazon знает обе модели зарядки и просто обнаружил, что одна лучше отражает возможности их инфраструктуры.

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

Амазонка рассказывает о IOPS и стоимости, а также о «экономии», которую они передают через оптимизацию.

Характеристики ввода-вывода и мониторинг

Не читайте все это, но это выглядит интересно, если вам интересно об этой области.

Иэн Прайс
источник
2

Отвечая на ваш вопрос

«Какую новую информацию я получаю, когда вижу число операций ввода-вывода в секунду, что я не вижу числа пропускной способности (МБ / с)?»

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

IOPS * размер файла = пропускная способность

Тесты хранилища могут генерировать различное количество IOPS в зависимости от размера файла и глубины очереди. При глубине очереди = 1 или 2 контроллер не будет использовать преимущества кэширования, в то время как при глубине очереди 32, 256, 512 число увеличивается в несколько раз и практически не изменяется. При размере файла 128 КБ число операций ввода-вывода в секунду может быть ниже, чем у файлов размером 4 КБ, но при этом - выше.

Лучший способ оценить производительность хранилища - это выполнить IOPS и тесты пропускной способности с несколькими различными размерами блоков и глубиной очереди.

Евгений
источник
Я полагаю, что вы, возможно, путаете IOPS с пропускной способностью немного ... Пропускная способность - это не синоним непрерывного доступа, а общее количество МБ / с, которое хранилище смогло обработать в данный момент времени ... Так что, когда вы говорите, жесткий диск SSD будет иметь ту же пропускную способность, что и для непрерывного доступа ... Так как пропускная способность есть и для произвольного доступа ... Просто намного меньше для жестких дисков в целом из-за времени поиска.
mFeinstein
Таким образом, вы должны включить в свой ответ, что вы имеете в виду непрерывный доступ в начале и произвольный доступ в конце, поскольку IOPS также не является синонимом произвольного доступа ... Как раз тогда, когда более целесообразно использовать IOPS как измерение
mFeinstein
@mFeinstein Я отредактировал ответ, посмотри.
Евгений
1

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

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

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

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

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

Ксавье Николет
источник
1

Я буду отвечать и на свой собственный вопрос, потому что я думаю, что большинство ответов были не по теме, и ответ мог бы быть намного проще:

Если вы посмотрите только на пропускную способность ваших устройств хранения данных, вы можете пропустить, что происходит ... Если есть низкая пропускная способность (низкие МБ / с), у вас может быть медленное устройство ИЛИ большое количество произвольного доступа на жестком диске или каком-либо другом устройстве. это не обрабатывает произвольный доступ хорошо.

Изучая IOPS и зная размер порции каждой операции ввода-вывода, вы можете узнать, какой объем доступа может обработать устройство хранения и какова пропускная способность этих IOPS (размер блока * IOPS).

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

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

mFeinstein
источник
IOPS = входы / выходы в секунду, речь идет не о множественном числе, и конечный S не следует опускать. :)
Евгений
1
Речь идет не о множественном числе, я видел, как некоторые люди называют IOP сокращением от «I / O OPeration», как это звучит ... Но да, это может привести к путанице, поэтому я заменю ее, спасибо
mFeinstein