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