Чому IOPS має значення?


32

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

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

Чому IOPS має значення? Чому AWS в основному відображає положення про зберігання в IOPS? Де IOPS більш релевантний, ніж пропускна здатність (МБ / с)?


Редагувати:

Деякі люди розглядають це запитання так, ніби я запитав, що таке випадковий доступ і як це впливає на продуктивність або як працюють жорсткий диск і SSD ... хоча я думаю, що ця інформація корисна для людей, які не знаходяться в поведінці зберігання, багато уваги приділяється до цього, і це не мета питання, питання полягає в тому, що "Яку нову інформацію я отримую, коли бачу номер IOPS, що я не побачив би кількість пропускної здатності (МБ / с)?"



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

Відповіді:


32

Пропускна здатність

Пропускна здатність корисна, коли ви робите такі речі, як копіювання файлів. Коли ви робите майже все інше, це випадкове зчитування та запис на диску, що обмежить вас.

IOPS

Зазвичай IOPS визначає розмір кожного пакету даних. Наприклад, AWS gp2 може робити 10 000 IOPS з розміром корисної навантаження в 16 KiB . Це збільшується до 160 Мбіт / сек. Однак, мабуть, малоймовірно, що ви будете використовувати повний розмір корисного навантаження весь час, тому фактична пропускна здатність, ймовірно, буде нижчою. NB KiB - 1024 байт, КБ - 1000 байт.

Оскільки IOPS визначає розмір пакету, який також дає вам загальну пропускну здатність. Тоді як висока пропускна здатність не означає, що у вас є високий показник IOPS.

Сценарії

Розглянемо такі сценарії:

  • Завантаження комп'ютера. Розглянемо різницю між SSD та прядильним диском у вашому комп’ютері, з чим багато людей мають досвід з перших рук. За допомогою спінінг-диска час завантаження може становити хвилину, тоді як при SSD це може знизитися до 10 - 15 секунд. Це пояснюється тим, що більш висока IOPS призводить до зниження затримки при запиті інформації. Пропускна здатність обертового диска досить хороша, 150 МБ / с, хоча SSD, ймовірно, вище, але це не тому швидше - це менша затримка повернення інформації.
  • Запуск оновлення ОС. Він проходить по всьому диску, додаючи та виправляючи файли. Якщо у вас низький показник IOPS, це було б повільно, незалежно від пропускної здатності.
  • Запуск бази даних, наприклад вибір невеликої кількості даних з великої бази даних. Він буде читати з індексу, читати з ряду файлів, а потім повертати результат. Знову він збирається по всьому диску для збору інформації.
  • Гра в гру на вашому ПК. Ймовірно, завантажується велика кількість текстур з усього диска. У цьому випадку, швидше за все, потрібні IOPS та пропускна здатність.

LTO стрічка

Розгляньте на мить систему резервного копіювання стрічки. LTO6 може робити 400 МБ / сек, але (я думаю, тут), ймовірно, навіть не може зробити один випадковий ВГД, він може бути таким же низьким, як секунди на ВГД. З іншого боку, це, ймовірно, може зробити багато послідовних IOPS, якщо IOPS визначено як читання або запис пакетів даних на касету.

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

Щоб зрозуміти запам'ятовуючий пристрій, напевно, ви хочете знати, чи це випадкові або послідовні IOPS, і розмір IO. З цього можна отримати пропускну здатність.

AWS

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

Зауважте, що при томах gp2 ви отримуєте 30IOPS за ГБ, тому для отримання 10 000 IOPS вам потрібен обсяг 333,33 Гб. Я не пригадую, чи є обсяги io1 подібні обмеження (минуло деякий час, коли я робив іспити на асоційовані випробування, де тестується така річ), але я підозрюю, що вони є, і якщо так, то, мабуть, 60IOPS на ГБ.

Висновок

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


Я розумію, що IOPS вимірює продуктивність довільного доступу, але це насправді не показує, наскільки швидко ви робите речі ... ви можете робити 10000 IOPS, але це може бути щось повільне або швидке, єдиний спосіб знати, це знати, скільки Мб / с операція вимагає великих витрат.
mFeinstein

Зазвичай IOPS визначає розмір корисної навантаження даних. AWS каже 16KiB. Тож 10000 IOPS при швидкості 16 Кбіт / с дає вам 160 МБ / сек.
Тім

2
10000 IOPS на 16 КБ не переводить на 20000 IOPS на 8 КБ, хоча (можливо, ~ 11000). Це означає, що потрібно знати як IOPS, так і пропускну здатність для оцінки приводу / навантаження.
boot4life

4
Щоб бути педантичним, це все-таки 1 IOPS, а не 1 IOP. Це не множина
Matthew Steeples

1
Я не можу думати ні про кого іншого. Більшість речей з високим IOPS мають досить високу пропускну здатність, але в більшості випадків корисні, оскільки IOPS не є пропускною здатністю. Іншим прикладом може бути реляційна база даних, хоча це не запам'ятовуючий пристрій, а це програмне забезпечення. Я не впевнений, що ви ще хочете від цього питання, я думаю, що концепція вам була докладно роз'яснена. Що-небудь з високим часом або затримкою на пошук, ймовірно, має низький коефіцієнт IOPS, але пропускна здатність в деяких випадках може бути від'єднана та бути високою.
Тім

57

Це відбувається тому, що послідовна пропускна здатність не є тим, як відбувається більшість активностей вводу / виводу.

Випадкові операції читання / запису є більш репрезентативними для звичайної системної діяльності, і це, як правило, пов'язане IOPS.

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

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

Мені може знадобитися 2000 IOPS, щоб мати змогу запускати бази даних при максимальному використанні, але може бачити пропускну здатність лише 30 Мб / с на рівні диска через тип діяльності. Диски здатні до 1200 МБ / с, але IOPS є обмеженням у навколишньому середовищі.

Це спосіб опису потенціалу ємності системи зберігання. SSD може мати можливість робити 80 000 IOPS і пропускну здатність 600 МБ / с. Ви можете отримати таку пропускну спроможність за допомогою 6-ти звичайних 10k SAS-дисків, але це дасть лише близько 2000 IOPS.


Чи можете ви надати мені приклад, коли IOPS дасть мені уявлення про продуктивність моєї системи, коли MB / s не буде корисним?
mFeinstein

@mFeinstein Дивіться приклад порно вище.
ewwhite

33
+1 для порно-прикладу lol
mFeinstein

2
Крім того, операційна система, ймовірно, робить купу невеликих випадкових доступів. Пропускна здатність послідовності не допоможе. Це причина для запуску ОС на SSD, принаймні, на ПК.
судо

3
Я часто бачу повністю використані диски, які роблять ~ 2 Мб / сек. Це тому, що це 100% випадковий IO. Іноді, неймовірні вигоди від парфу, можливо, послідовно викладаючи дані на диск (наприклад, видаляючи фрагментацію, індексуючи в базах даних).
boot4life

6

Хоча відповідь ewwhite цілком правильна, я хотів надати кілька конкретніших цифр, щоб допомогти зрозуміти, чому різниця має значення в перспективі.

Як уже сказано в ewwhite, більшість нестримуючих додатків в основному виконують не послідовні дискові операції, тому IOPS має значення на додаток до теоретичної пікової пропускної здатності.

Коли ми з колегою вперше встановили SSD в наші системи розробки, щоб замінити жорсткі диски, які ми раніше використовували, ми здійснили деякі вимірювання продуктивності на них, які дійсно підкреслили, чому це має значення:

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

Послідовна швидкість читання: ~ 100 Мб / с
Непослідовна пропускна здатність (2 к блоки, IIRC): ~ 1 Мб / с

Результати SSD, що додаються до PCIe:

Послідовна пропускна здатність: ~ 700 Мб / с
Непослідовна пропускна здатність (2 к блоки, IIRC): ~ 125 Мб / с

Як видно з прикладу, просто перерахування максимальної пропускної здатності для кожного пристрою дасть надзвичайно неточну картину їх порівняння. SSD лише приблизно в 6-7 разів швидший, ніж HDD, коли послідовно читає великі файли, але він швидше, ніж 100 разів, коли читає невеликі шматки даних з різних частин диска. Звичайно, для жорстких дисків це обмеження значною мірою пов’язане з тим, що жорсткі диски повинні фізично переміщати головну г / ш до потрібної доріжки, а потім чекати, поки потрібні дані крутяться під головою, тоді як на SSD немає фізичних частин, які рухаються.

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

Забезпечивши як пропускну здатність, так і номери IOPS, ви можете набагато краще уявити, як буде виконуватися певне робоче навантаження на даному пристрої зберігання даних. Якщо ви просто передаєте велику кількість даних, які не фрагментовані, ви отримаєте досить близьку до максимальної пропускної здатності. Однак якщо ви робите багато невеликих читань та / або записів, які не зберігаються послідовно на диску, вас обмежить IOPS.


Ви також не вимірювали IOPS?
mFeinstein

3

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

  1. Перейдіть до правильного шляху та виберіть потрібну голову.
  2. Зачекайте, поки блюдо повернеться в потрібне положення.
  3. Фактично передайте дані.

Час, відведений на 3, залежить від розміру блоку даних, але час, витрачений на 1 і 2, не залежить від розміру запиту.

Цифри пропускної здатності заголовка та ІОП представляють надзвичайні випадки. Цифри заголовок передачі заголовка представляють випадок, коли кожна операція включає великий блок даних, тому накопичувач витрачає більшу частину свого часу на фактично переміщення даних.

Заголовок ІОП представляє випадок, коли блоки даних дуже малі, тому більша частина часу витрачається на пошук головок і очікування обертання блюд.

Для багатьох навантажень блоки достатньо малі, що кількість блоків для передачі набагато важливіше, ніж розмір блоків.


2

Є два типи вузьких місць, які ви можете відчути на обсягах вводу-виведення (або взагалі-то IO).

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

одиниця витрат * розмір + накладні витрати. рівняння прямої.

Якщо вартість одиниць велика або розмір великий, то має сенс стягувати плату на основі цих обсягів, таких як мережі мобільних телефонів, з іншого боку, іноді накладні витрати набагато критичніші.

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

Я б припустив, що Amazon знає як моделі зарядки, так і просто знайшов, що краще відображає можливості їх інфраструктури.

Існує обмеження щодо розміру IOP, яке пов язане із сумою, яку магазин може перенести за "цикл" у будь-якому випадку, тому великі запити все-таки коштують вам декількох IOPS.

Тут є приємний фрагмент від самих Amazon про IOPS та витратах, і «економію», яку вони передають за допомогою оптимізації

Характеристика та моніторинг вводу / виводу

Не все читайте, але це виглядає цікаво, якщо вам цікаво про цю область.


2

Відповідаючи на ваше запитання

"Яку нову інформацію я отримую, коли бачу номер IOPS, щоб я не побачив номер пропускної здатності (МБ / с)?"

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

Розмір файлу IOPS * = Пропускна здатність

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

Найкращий спосіб оцінити продуктивність пам’яті - це пошук IOPS та пропускної спроби з кількома різними розмірами блоку та глибиною черги.


Я вважаю, що ви можете трохи заплутати IOPS з пропускною спроможністю ... Пропускна здатність не є синонімом постійного доступу, але загальний Мб / с, який зберігання вдалося обробити за певний час .... Отже, коли ви говорите про жорсткий диск і SSD мав би таку ж пропускну здатність, це для постійного доступу ... Оскільки пропускна здатність є і для випадкового доступу ... Просто набагато менше для жорстких дисків взагалі через час пошуку.
mFeinstein

Отже, ви повинні вказати у своїй відповіді, що ви маєте на увазі безперервний доступ на початку та випадковий доступ у кінці, оскільки IOPS також не є синонімом випадкового доступу ... Просто коли має сенс використовувати IOPS як вимірювання
mFeinstein

@mFeinstein Я відредагував відповідь, подивіться.
Євген

1

Взагалі кажучи, IOPS важче отримати, ніж пропускну здатність. Якщо у вас багато IOPS, вам буде достатньо пропускної здатності більшу частину часу.

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

Якщо у вас є лише один користувач, який копіює один великий файл у мережу, у вас може бути лише десяток запитів, щоб отримати дані, а решта буде лише потоково передаватися з диска.

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

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


1

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

Якщо ви дивитесь лише на пропускну здатність своїх пристроїв зберігання даних, ви можете пропустити те, що відбувається ... Якщо низька пропускна здатність (низький МБ / с), у вас може бути повільний пристрій АБО у вас багато довільного доступу на жорсткому диску або іншому пристрої що не обробляє випадковий доступ добре.

Заглянувши в IOPS і знаючи розмір шматка кожної операції вводу / виводу, ви можете дізнатися, скільки доступу до пристрою зберігання даних здатний обробляти і яка пропускна здатність цих IOPS (розмір шматка * IOPS).

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

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


IOPS = Входи / Виходи на секунду, мова не йде про множину, а проміжок S не слід опускати. :)
Євген

1
Справа не в множині, я бачив, як деякі люди посилаються на IOP як коротке слово "Операція вводу / виводу", як це звучить ... Але так, це може призвести до плутанини, тому я заміню його, дякую
mFeinstein
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.