У меня есть сервер с большим аппаратным массивом RAID6, сконфигурированный с двумя томами, представленный Linux как sda
и sdb
(да, я знаю, но это арендованный коло, который был настроен таким образом, и, к сожалению, мне приходится с этим жить).
У меня есть процесс с интенсивным вводом-выводом, который использует sdb
. Я бегал с ionice -c3
, так как я хочу, чтобы он имел более низкий приоритет, чем что-либо еще. К сожалению, ionice
не знает, что два устройства фактически используют одну и ту же полосу пропускания массива. Когда этот процесс занят, ядро видит, что sdb
работает тихо и обеспечивает всю необходимую пропускную способность. Однако это может сделать sda
очень медленно, потому что (насколько я понимаю) ionice
работает для каждого устройства.
Есть ли способ заставить ядро балансировать дисковый ввод-вывод через все устройства?
Какой планировщик ввода-вывода вы используете?
cat /sys/block/<disk>/queue/scheduler
Он покажет вам, какой из них вы используете. Я бы попробовал noop (что в значительной степени означает «первым пришел - первым обслужен»), дедлайн и CFQ и посмотрю, что вам подходит.
CFQ - это значение по умолчанию для RHEL / SUSE, крайний срок для Ubuntu и noop ни для кого (но он должен позволять внутреннему устройству обрабатывать ваше планирование, а не пытаться сбалансировать его Linux.