Співвідношення між IOPS диска та sar tps


13

Я намагаюся оцінити вимоги IOPS мого додатка, що працює на 32-бітному CentOS 6.2. Я почав робити деякі вимірювання на машині з дисками SATA, і я дуже збентежений різницею між IOPS і tps, виміряними sar.

Згідно з wikipedia SATA диск повинен виконувати 75-100 IOPS. Імовірна утиліта, схоже, підтверджує це для тесту на випадковий доступ:

# ./ioping -R /dev/sda
--- /dev/sda (device 931.0 Gb) ioping statistics ---
279 requests completed in 3.0 s, 92 iops, 371.3 kb/s
min/avg/max/mdev = 2.7 ms / 10.8 ms / 130.8 ms / 7.9 ms

Але значення tps, вироблені sar, значно вищі (/ dev / sda):

# iostat 1
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
       0.17    0.00    2.02   14.86    0.00   82.96

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda             559.00         0.00    142600.00          0     142600
dm-0          18433.00         0.00    147464.00          0     147464
dm-1              0.00         0.00         0.00          0          0
dm-2              0.00         0.00         0.00          0          0

Не дуже важливо, якщо це завантаження є послідовним (dd з різними розмірами блоків) або випадковим доступом (ioping), значення все одно те саме. Я подумав, що tps насправді є IOPS, і я би очікував, що це знизиться з більшими шматками, переданими.

Отже, що саме означає значення tps? І як це стосується IOPS?


2
Я вважаю, ви бачите більш високі IOPS у значення TPS через кеш диска.
ceejayoz

1
Гаразд, я спробував файл 10 Гб через dd з блоком 256 КБ, щоб насправді заповнити кеш, і через ~ 90 секунд tps падає до ~ 200, тому, можливо, ти маєш рацію. Але все-таки 80 і 200 - це зовсім різниця ... Чи можливо, що читання та запис IOPS відрізняється? І чи є спосіб визначити необхідний IOPS з цього значення?
пістола

1
Чи можете ви описати, чому ви після IOPS? читати і писати - це зовсім інша пара взуття, яку сюди кидають у той же горщик.
Нільс

Причина полягає в тому, що мені потрібно описати мінімальні вимоги до ТВ. У мене є сервер, який приймає дані по мережі (тут ми можемо припустити постійний бітрейт) і записує отримані дані на диск. Дані записуються у файли послідовно, але їх може бути сотні (наприклад, 800) паралельно. Я зрозумів, що коли кількість клієнтів досягає певної точки, я починаю отримувати великі очікування. Фактична пропускна здатність диска, яку я можу досягти, становить приблизно 25 Мб / с, що є досить низьким, менша кількість клієнтів з більш високим бітрейтом може робити 35 МБ / с, чиста послідовна близько 130 МБ / с. Тож я думаю, що тут важливі IOPS ...
пістолія

Відповіді:


6

Транзакції - це поодинокі команди вводу-виводу (блок отримання / запис), які записуються на RAW-диск (у вашому прикладі dm-0). Linux-ядро намагається впорядкувати ці команди в кращій послідовності або намагається стиснути їх на більш ефективні команди (наприклад: отримати відразу два блоки замість одного блоку та отримати інший блок відразу після цього). Це транзакції, які виходять на диск-контролер (tps для sda).

Хороші контролери мають міркування власної логіки, що ще більше зменшує реальну кількість транзакцій.

У транзакції може бути команда SCSI "запишіть 2 ГБ в кротоллер 1 ціль 2 проміжок 3, починаючи з сектора 22). Як ви бачите, це не може бути приведене в пряму кореляцію з числами пропускної здатності.

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

  • підключення до клієнта: Якщо мережа є Gigabit, ви ніколи не матимете більше 100 Мб / с вводу
  • диск-контролер: якщо це контролер 3 Гб, ви ніколи не матимете більше 300 Мб / с пропускної здатності
  • диск: Знайдіть значення виробників для стабільної продуктивності запису
  • Файлова система: невеликі накладні витрати, оскільки ОС повинна обробляти дані - перевірити, що це на RAM-диску ...

Я здогадуюсь для вашої системи: Отримайте хороший апаратний-рейдовий контролер, який здатний робити рейд 10 або 5 та отримати як мінімум 6 швидких (15 К) дисків.

Для професійного використання використовуйте SAS замість SATA.


Гаразд, ви праві, що IOPS не має сенсу для запису, оскільки тут багато кеш-пам'яті, переупорядкування та злиття. Закриття ... Дякую.
пістолія

5

Будь ласка, майте на увазі, що TPSзначення представляє читання і запис, ви можете використовувати -xперемикач для розширеного перегляду, де читання і запис розділені (r / s = read IOPS, w / s = write IOPS):

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
vda               0.07    24.65    0.30   18.95    30.65   330.22    18.74     0.07    3.61   0.98   1.89

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