Я пытаюсь протестировать массив 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 вы рекомендуете?
На этот вопрос нет хорошего ответа - вам, вероятно, придется профилировать свою базу данных (на уровне системного ввода-вывода) и создать что-то подходящее (если вы не можете организовать помощь поставщика базы данных).