Я пытаюсь провести тестирование массива 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
вы рекомендуете?
Существует одна большая проблема с заданием, как описано выше, с ZFS : ZFS в Linux не всегда будет реализовывать O_DIRECT
асинхронно на данный момент, потому что в настоящее время она реализует O_DIRECT
через (минимально) буферизованный ввод-вывод. Это означает, что libaio
может фактически стать блокирующим до достижения iodepth
...
Можно ли интерпретировать numjobs как количество одновременных подключений к базе данных от клиентов?
Не совсем...Один клиент может инициировать несколько операций ввода-вывода в зависимости от запрашиваемого запроса. Мы также не знаем, что делает ваша база данных.
И можно ли интерпретировать iodepth как количество одновременных/ожидающих/поставленных в очередь запросов к базе данных в каждом соединении с базой данных?
Опять же не совсем так, потому что сопоставление будет зависеть от выбора внутреннего кода вашей базы данных. Некоторые базы данных могут быть настроены для использования потоков, процессов, AIO или даже некоторой смеси всего этого...
Какой диапазон значений iodepth и numjobs вы рекомендуете?
На этот вопрос нет хорошего ответа — вы вероятно, придется профилировать вашу базу данных (на уровне системного ввода-вывода) и создать что-то, что соответствует (если вы не можете договориться с поставщиком базы данных, чтобы помочь вам).