Я понимаю, что такое IOPS и пропускная способность. Пропускная способность измеряет поток данных как МБ / с, а IOPS сообщает, сколько операций ввода / вывода происходит в секунду.
Чего я не понимаю, так это того, что многие сервисы хранилища просто показывают IOPS, которые они предоставляют. Я действительно не вижу ни одного сценария, в котором я предпочел бы знать IOPS вместо пропускной способности.
Почему IOPS имеет значение? Почему AWS в основном показывает свои условия хранения в IOPS? Где IOPS важнее, чем пропускная способность (МБ / с)?
РЕДАКТИРОВАТЬ:
Некоторые люди рассматривают этот вопрос так, как будто я спросил, что такое произвольный доступ и как он влияет на производительность или как работают жесткие диски и твердотельные накопители ... хотя я думаю, что эта информация полезна для людей, плохо знакомых с поведением хранилищ, большое внимание уделяется к этому, и это не является целью вопроса, вопрос в том, «Какую новую информацию я получаю, когда вижу число IOPS, которое я не получаю, увидев число пропускной способности (МБ / с)?»
источник
Ответы:
пропускная способность
Пропускная способность полезна, когда вы делаете такие вещи, как копирование файлов. Когда вы делаете почти все остальное, это случайное чтение и запись на диск, что ограничит вас.
IOPS
IOPS обычно определяют размер каждого пакета данных. Например, AWS gp2 может выполнить 10000 операций ввода-вывода в секунду с размером полезной нагрузки 16 КиБ . Это умножается на 160 МБ / с. Однако маловероятно, что вы будете использовать полный размер полезной нагрузки все время, поэтому фактическая пропускная способность, вероятно, будет ниже. Примечание: KiB - 1024 байта, KB - 1000 байтов.
Потому что 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.
Потоковое порно от одного из моих серверов для наших клиентов (или загрузок на наш CDN) является более последовательным в природе , и вы будете видеть влияние пропускной способности там.
Но для поддержания базы данных, каталоги порно и отслеживается активность пользователя через сайт собирается быть случайным характер, и ограничиваются числом мелких операций ввода / вывода / секундой, что лежащее в основе хранение способно.
Возможно, мне понадобится 2000 IOPS, чтобы иметь возможность работать с базами данных при пиковой нагрузке, но на уровне диска может наблюдаться пропускная способность только 30 МБ / с из-за типа активности. Диски имеют скорость 1200 МБ / с, но IOPS являются ограничением в среде.
Это способ описания потенциала емкости системы хранения. SSD может иметь пропускную способность 80000 IOPS и 600 МБ / с. Вы можете получить такую пропускную способность с 6 обычными дисками SAS 10 тыс., Но это даст только около 2000 IOPS.
источник
Хотя ответ ewwhite является полностью правильным, я хотел предоставить более конкретные цифры, чтобы помочь понять, почему разница имеет значение в перспективе.
Как уже правильно сказано, большинство не потоковых приложений в основном выполняют непоследовательные дисковые операции, поэтому IOPS имеет значение в дополнение к теоретической пиковой пропускной способности.
Когда мы с коллегой впервые установили твердотельные накопители в наши системы разработки для замены ранее использовавшихся жестких дисков, мы провели некоторые измерения производительности на них, которые действительно показали, почему это важно:
SATA HDD Результаты:
Пропускная способность последовательного чтения: ~ 100 МБ / с
Пропускная способность непоследовательного чтения (2 тыс. Блоков, IIRC): ~ 1 МБ / с
PCIe-подключенный SSD Результаты:
Пропускная способность последовательного чтения: ~ 700 МБ / с
Пропускная способность непоследовательного чтения (2 тыс. Блоков, IIRC): ~ 125 МБ / с
Как ясно видно из примера, просто указание максимальной пропускной способности для каждого устройства дало бы крайне неточную картину их сравнения. При последовательном чтении больших файлов скорость SSD всего в 6-7 раз выше, чем у жесткого диска, но при чтении небольших фрагментов данных из разных частей диска скорость увеличивается в 100 раз. Конечно, в случае с жесткими дисками это ограничение в значительной степени связано с тем, что жесткие диски должны физически перемещать ч / б головку на нужную дорожку, а затем ждать, пока нужные данные вращаются под головкой, в то время как твердотельные накопители не имеют физических частей для перемещения.
Наши времена компиляции улучшились гораздо более значительно, чем можно было бы предположить путем простого сравнения максимальной производительности. Сборки, которые раньше занимали более 30 минут, теперь завершаются примерно за минуту, поскольку дисковый ввод-вывод во время большой сборки состоит из чтения и записи множества отдельных исходных файлов, которые по отдельности не очень велики и могут физически разбросываться по всему диску. ,
Предоставляя как пропускную способность, так и числа IOPS, вы можете получить гораздо лучшее представление о том, как данная нагрузка будет работать на данном устройстве хранения. Если вы просто передаете большие объемы данных, которые не фрагментированы, вы приблизитесь к максимальной пропускной способности. Однако, если вы выполняете много небольших операций чтения и / или записи, которые не сохраняются последовательно на диске, вы будете ограничены IOPS.
источник
Для выполнения операции ввода-вывода привод (ы) должен пройти ряд операций. Для механического жесткого диска им нужно.
Время, необходимое для 3, зависит от размера блока данных, но время, необходимое для 1 и 2, не зависит от размера запроса.
Заголовок пропускной способности и цифры IOPs представляют крайние случаи. Значения заголовка заголовка представляют случай, когда каждая операция включает в себя большой блок данных, поэтому накопитель тратит большую часть своего времени на перемещение данных.
Рисунок IOP заголовка представляет случай, когда блоки данных очень малы, поэтому большую часть времени тратится на поиск головок и ожидание вращения пластин.
Для многих рабочих нагрузок блоки достаточно малы, поэтому количество передаваемых блоков гораздо важнее, чем размер блоков.
источник
Существует два типа узких мест, которые вы можете испытать на IO-томах (или IO в целом).
Фактическая производительность действительно измеряется, чтобы включать компонент, основанный на объеме перемещаемых данных, масштабируемом по доступной полосе пропускания или аналогичном размере единицы стоимости *, но с запросами также связаны накладные расходы, которые являются постоянными, будь то диск, сеть или множество других вещей.
стоимость единицы * размер + накладные расходы. уравнение прямой.
Если единичная стоимость велика или размер велик, то имеет смысл взимать плату, основанную на этих объемах, таких как сети мобильной связи, с другой стороны, иногда накладные расходы гораздо более критичны.
Вы можете провести простой эксперимент самостоятельно, создать каталог с несколькими файлами по 1 ГБ (или что-то еще практичное, достаточно большое, чтобы прочитать / записать его, требуется несколько секунд), а затем создать папку с миллионами 100-байтовых файлов. (обратите внимание, это 0,1 ГБ данных), а затем посмотрите, что произойдет с вашей пропускной способностью, когда вы начнете пытаться переместить все эти вещи, скажем, между различными разделами / дисками - вы получите производительность, уменьшенную пропускной способностью для больших файлов, и уменьшенную с помощью количество файлов для мелочи.
Я бы предположил, что Amazon знает обе модели зарядки и просто обнаружил, что одна лучше отражает возможности их инфраструктуры.
Существует ограничение на размер IOP, которое в целом связано с суммой, которую хранилище в любом случае может быть передано в «цикле», поэтому большие запросы все равно в конечном итоге обойдутся вам в несколько IOPS.
Амазонка рассказывает о IOPS и стоимости, а также о «экономии», которую они передают через оптимизацию.
Характеристики ввода-вывода и мониторинг
Не читайте все это, но это выглядит интересно, если вам интересно об этой области.
источник
Отвечая на ваш вопрос
непосредственно, это то, сколько операций ввода-вывода с заданной глубиной очереди и размером файла может выполнять хранилище в секунду . Вы можете рассчитать пропускную способность при данных условиях по следующей формуле:
IOPS * размер файла = пропускная способность
Тесты хранилища могут генерировать различное количество IOPS в зависимости от размера файла и глубины очереди. При глубине очереди = 1 или 2 контроллер не будет использовать преимущества кэширования, в то время как при глубине очереди 32, 256, 512 число увеличивается в несколько раз и практически не изменяется. При размере файла 128 КБ число операций ввода-вывода в секунду может быть ниже, чем у файлов размером 4 КБ, но при этом - выше.
Лучший способ оценить производительность хранилища - это выполнить IOPS и тесты пропускной способности с несколькими различными размерами блоков и глубиной очереди.
источник
Вообще говоря, IOPS получить сложнее, чем пропускную способность. Если у вас много операций ввода-вывода в секунду, большую часть времени вам будет достаточно пропускной способности.
В классических жестких дисках количество осей является вашим ограничивающим фактором, так как головка должна физически перемещаться на каждом диске: и это очень медленно. Твердотельные накопители имеют гораздо лучшую емкость IOPS.
Если у вас есть только один пользователь, копирующий один большой файл в сеть, у вас может быть только дюжина попыток получить данные, а остальные будут только потоковыми с диска.
Однако, если вы работаете с базой данных или у вас много одновременно работающих пользователей, вам придется получать доступ к разным частям вашего хранилища одновременно со стремительным взлетом IOPS.
Простое обновление 10 строк параллельно в реляционной базе данных может закончиться генерацией сотен операций ввода-вывода: чтение индексов, чтение данных, добавление файла журнала, обновление индексов и данных. Большинство операционных систем и баз данных очень стараются ограничить количество операций ввода-вывода, кэшируя и задерживая / группируя операции ввода-вывода, когда это возможно.
источник
Я буду отвечать и на свой собственный вопрос, потому что я думаю, что большинство ответов были не по теме, и ответ мог бы быть намного проще:
Если вы посмотрите только на пропускную способность ваших устройств хранения данных, вы можете пропустить, что происходит ... Если есть низкая пропускная способность (низкие МБ / с), у вас может быть медленное устройство ИЛИ большое количество произвольного доступа на жестком диске или каком-либо другом устройстве. это не обрабатывает произвольный доступ хорошо.
Изучая IOPS и зная размер порции каждой операции ввода-вывода, вы можете узнать, какой объем доступа может обработать устройство хранения и какова пропускная способность этих IOPS (размер блока * IOPS).
Итак, взглянув на высокие IOPS, вы можете сделать вывод, что ваше устройство хранения данных обрабатывает много произвольного доступа, даже если это происходит с низкой пропускной способностью .... или, возможно, вы смотрите на низкие IOPS, которые имеют такую же низкую пропускную способность, что означает, что ваше устройство просто холостой ход.
Таким образом, просматривая IOPS, мы можем получить представление о том, что на самом деле означает пропускная способность, они оба дополняют друг друга.
источник