Вопрос: Связь между дисковыми IOPS и sar tps


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

В соответствии с википедия Дисковод SATA должен выполнять 75-100 операций ввода-вывода. интеграция похоже, подтверждает это для теста с произвольным доступом:

# ./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, производимые сэром, намного выше (/ 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?


11
2017-12-01 19:56


Источник


Я считаю, что вы видите более высокие IOPS в значении TPS из-за дискового кэша. - ceejayoz
Хорошо, я попробовал 10-гигабайтный файл через dd с блоком 256 кБ, чтобы фактически заполнить кеш, и после ~ 90 секунд tps упадет до ~ 200, так что, возможно, вы правы. Но все же 80 и 200 - это отличная разница ... Возможно ли, что чтение и запись IOPS отличаются? И есть ли способ вычислить требуемые IOPS из этого значения? - pystole
Можете ли вы описать, почему вы находитесь после IOPS? читать и писать - это совершенно разные пары туфель, которые попадают в один и тот же банк. - Nils
Причина в том, что мне нужно описать минимальные требования к HW. У меня есть сервер, который получает данные по сети (мы можем предположить постоянный битрейт здесь) и записывать полученные данные на диск. Данные записываются в файлы последовательно, но из них могут быть сотни (например, 800) из них параллельно. Я выяснил, что, когда число клиентов достигает некоторой точки, я начинаю получать большие iowaits. Фактическая пропускная способность диска, которую я могу достичь, составляет около 25 МБ / с, что довольно мало, меньше клиентов с более высоким битрейтом могут делать 35 МБ / с, чистые последовательные около 130 МБ / с. Поэтому я думаю, что IOPS имеет значение здесь ... - pystole


Ответы:


Транзакции - это одиночные IO-команды (блок / блок записи выборки), которые записываются на RAW-диск (в вашем примере dm-0). Ядро linux пытается упорядочить эти команды в лучшую последовательность или пытается сжать их в более эффективные команды (например: сразу получить два блока, а не получить один блок и получить следующий блок сразу после этого). Это транзакции, которые выходят на диск-контроллер (tps для sda).

У хороших контроллеров migth есть своя логика, которые уменьшают реальное количество транзакций.

Транзакцией может быть команда SCSI «записать 2 ГБ в crontoller 1 target 2 lun 3, начиная с сектора 22). Как вы можете видеть, это невозможно привести к прямой корреляции с номерами пропускной способности.

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

  • клиент-соединение: если в сети есть Gigabit, у вас никогда не будет входа более 100 МБ / с
  • Дисковый контроллер: если это контроллер 3 ГБ, у вас никогда не будет более 300 МБ / с пропускной способности
  • диск: найдите ценность производителей для постоянной производительности записи
  • Файловая система: есть небольшие накладные расходы, так как ОС необходимо обрабатывать данные - проверьте, что в RAM-диске ...

Моя догадка для вашей системы: получите хороший аппаратный RAID-контроллер, способный совершать рейды 10 или 5 и получить как минимум 6 быстрых (15k) дисков.

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


4
2017-12-02 12:38



Хорошо, вы правы. IOPS не имеет смысла писать, поскольку есть много кешей, переупорядочивания и слияния. Закрытие ... Спасибо. - pystole


Также имейте в виду, что TPS значение представляет собой чтение и запись, вы можете использовать -x переключатель для расширенного просмотра, где считываются и записываются записи (r / s = чтение IOPS, w / s = запись 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

3
2017-12-02 07:30



Да, ты прав. Но в моем случае почти 100% записей, чтений почти нет. - pystole