Назад | Перейти на главную страницу

Значения fio numjobs и iodepth для моделирования рабочей нагрузки PostgreSQL базы данных?

Я пытаюсь протестировать массив ZFS RAID-10 твердотельных накопителей SATA, используя 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 вы рекомендуете?

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