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

Планировщик ввода-вывода Linux для баз данных с RAID

У меня есть сервер базы данных linux (MySQL) (Dell 2950) с 6-дисковым массивом RAID 10. Планировщик ввода-вывода по умолчанию на нем - CFQ. Однако из того, что я читал и слышал, нет необходимости в планировщике, таком как CFQ, когда переупорядочивание / планирование также выполняется нижележащим контроллером RAID; наоборот, поскольку он не учитывает базовую конфигурацию RAID, производительность может фактически ухудшиться с CFQ. Основная задача - уменьшить использование ЦП и повысить пропускную способность. Кроме того, я видел рекомендации по использованию планировщика ввода-вывода «noop / deadline» для баз данных в первую очередь из-за характера их доступа для чтения / записи.

Итак, вопрос в том, следует ли в этих обстоятельствах использовать планировщик noop или deadline вместо CFQ.

Каждая рабочая нагрузка индивидуальна. Так что на этот вопрос нет универсального ответа. Чтобы усложнить задачу, у большинства планировщиков ввода-вывода есть настройки. Так что лучшее, что вы можете сделать, - это протестировать с тестами, максимально приближенными к реальным рабочим нагрузкам. Пока тест можно повторять, он должен работать.

Вы можете изменять планировщики ввода-вывода на лету без перезагрузки, что упрощает эксперименты с планировщиками io. Для этого используйте такую ​​команду echo anticipatory | sudo tee /sys/block/sdb/queue/scheduler замена упреждающего на выбранный планировщик и sdb на правильное блочное устройство. Вы также можете сделать echo anticipatory > /sys/block/sdb/queue/scheduler если вы вошли в систему как root. Я использую тройник, поэтому могу просто использовать sudo.

Как и Минаев, мне очень повезло с Deadline на загруженных файловых серверах. У нас не было никакой базы данных, так как в основном это была обработка изображений с помощью вычислительного кластера. Но они насыщали 2 канала GigE и загружали этот сервер на 48 часов за раз.

Я также использовал NOOP при работе с внешними массивами RAID. Под внешним я подразумеваю то, что RAID-контроллер самодостаточен во внешнем шасси, и сервер воспринимает его как диск SCSI. Если RAID-контроллер находится на сервере, я думаю, вы все равно хотите избежать NOOP. Но вы сможете выяснить, что лучше всего подходит для вас, с помощью некоторых тестов.

Не уверен, что это поможет, но вот интересная статья из журнала Red Hat: «Выбор планировщика ввода-вывода для Red Hat® Enterprise Linux® 4 и ядра 2.6». Я обычно устанавливаю планировщик на крайний срок, и он работает нормально на моих серверах, но я должен признать, что у меня нет цифр, которые доказывали бы, что крайний срок действительно лучше.