fio numjobs & iodepth Values to Simulate Database PostgreSQL Workload?

Я пытаюсь провести тестирование массива ZFS RAID-10 из SATA SSD с помощью fio с настройками, которые в некоторой степени соответствуют нагрузкам базы данных, например, PostgreSQL.

Например, для случайных чтений:

fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=randread.fio --bs=4k --iodepth=4 --numjobs=16 --size=10G --readwrite=randread

Однако я не уверен, какие значения iodepth и numjobs должны быть установлены, и что они могут представлять с точки зрения рабочей нагрузки базы данных.

Можно ли numjobs интерпретировать как количество одновременных подключений к базе данных от клиентов? И можно ли iodepth интерпретировать как количество одновременных/отложенных/очередных запросов к базе данных в каждом соединении базы данных?

Какой диапазон значений iodepth и numjobs вы рекомендуете?

0
задан 26 March 2020 в 06:39
1 ответ

Существует одна большая проблема с заданием, как описано выше, с ZFS : ZFS в Linux не всегда будет реализовывать O_DIRECT асинхронно на данный момент, потому что в настоящее время она реализует O_DIRECT через (минимально) буферизованный ввод-вывод. Это означает, что libaio может фактически стать блокирующим до достижения iodepth...

Можно ли интерпретировать numjobs как количество одновременных подключений к базе данных от клиентов?

Не совсем...Один клиент может инициировать несколько операций ввода-вывода в зависимости от запрашиваемого запроса. Мы также не знаем, что делает ваша база данных.

И можно ли интерпретировать iodepth как количество одновременных/ожидающих/поставленных в очередь запросов к базе данных в каждом соединении с базой данных?

Опять же не совсем так, потому что сопоставление будет зависеть от выбора внутреннего кода вашей базы данных. Некоторые базы данных могут быть настроены для использования потоков, процессов, AIO или даже некоторой смеси всего этого...

Какой диапазон значений iodepth и numjobs вы рекомендуете?

На этот вопрос нет хорошего ответа — вы вероятно, придется профилировать вашу базу данных (на уровне системного ввода-вывода) и создать что-то, что соответствует (если вы не можете договориться с поставщиком базы данных, чтобы помочь вам).

0
ответ дан 3 April 2020 в 15:09

Теги

Похожие вопросы