Библиотека сайта rus-linux.net
Ошибка базы данных: Table 'a111530_forumnew.rlf1_users' doesn't exist
Оптимизация жестких дисков под Linux: Настройка и планирование (часть 2)
Оригинал: "Linux Hard Drive Optimization: Tuning and Scheduling (part 2)"Автор: Paul Rubens
Дата публикации: May 15, 2009
Перевод: Н.Ромоданов
Дата перевода: январь 2010 г.
Конфигурирование планировщиков
В первой статье этой серии мы рассмотрели, какую роль планировщики играют при оптимизации ввода/вывода. Но как реально вы можете выбрать и настроить планировщик с тем, чтобы на практике улучшить характеристики ввода/вывода?
Обычно первый вопрос, на который нужно ответить, следующий: Какой планировщик следует использовать? Это обманчиво сложный вопрос, и ответ зависит от многих взаимосвязанных факторов, в том числе от работающих приложений, размера файлов, которые вы будете читать и записывать, частоты чтения и записи ваших файлов, характера операций этого чтения и записи. Единственное, что можно сказать с большой уверенностью, что если вы не используете твердотельный жесткий диск или RAM диск, на которых доступ ко всем файлам можно получить одинаково быстро, - выбор планировщика noop будет худшим решением. Для обычных вращающихся дисков любой другой активный планировщик будет лучше, чем планировщик noop.
Имеются подтверждения, что когда множество приложений различного вида делают разнородные запросы на чтение и запись, планировщик deadline обеспечит лучшую усредненную производительность, но, в конце концов, лучший способ, вероятно, испытать все три активных планировщика и выбирать тот, который дает лучшие результаты.
Итак, поскольку вы выбираете некоторый планировщик для проверки, то как сказать системе использовать именно его? Имеется два основных способа сделать это: во время загрузки системы с помощью конфигурационного файла, либо во время работы системы из командной строки. Примеры, которые мы здесь используем, были проверены для дистрибутива Red Hat Enterprise Linux, но они должны работать аналогично и на других дистрибутивах, которые вы будете использовать.
Для того, чтобы задать планировщик, выбираемый во время загрузки системы, отредактируйте следующий файл
/boot/grub/grub.conf
Добавьте
elevator=
в конце строки, в которой специфицируется ядро. В качестве имени планировщика можно использовать следующие: "noop", "cfq", "deadline" и "as" (для anticipatory).
Либо для того, чтобы во время работы системы задать планировщик, например, для диска hda, просто откройте окно терминала и наберите:
echo /sys/block/hda/queue/scheduler
Для того, чтобы проверить, какой планировщик используется, наберите следующее:
cat /sys/block/hda/queue/scheduler
Вы можете увидеть нечто, похожее на следующее:
noop anticipatory 'deadline' cfq
что должно означать, что в текущий момент используется планировщик deadline.
Как только вы выбрали и установили планировщик, вы можете настроить его на оптимальную работу с вашей системой при помощи изменения для этого различных параметров. Параметры для каждого планировщика различны. Исключением является планировщик noop, у которого нет настраиваемых параметров.
Настройка параметров
Параметры сохраняются в файлах, размещенных в директориях:
/sys/block/ /queue/iosched/
Например, параметр read_expire для устройства hda хранится в файле:
/sys/block/hda/queue/iosched/read_expire
С помощью следующей команды для этого параметра можно установить значение 80 (миллисекунд)
echo 80 > /sys/block/hda/queue/iosched/read_expire
Планировщик Deadline
В этом планировщике имеются следующие пять настраиваемых параметров:
- read_expire - наиболее важный параметр для планировщика deadline, он определяет максимальное время, которое запрос на чтение может ожидать, прежде чем будет обслужен.
- write_expire - максимальное время, которое запрос на запись может ожидать перед тем, как он будет обслужен.
- fifo_batch - число запросов в каждом пакете, который будет послан на немедленное обслуживание в случае, если время обслуживание истекло.
- writes_starved - с помощью этого параметра меняется приоритет, который запрос на операцию чтения имеет над запросом на операцию записи. Поскольку необслуженная операция чтения влияет на характеристики сильнее, чем необслуженная операция записи, обычно операции чтения имеют приоритет над операциями записи.
- front_merges - с помощью этого параметра изменяется значение, установленное по умолчанию, и равное 1, указывающее сколько запросов в начале очереди могут быть объединены вместе, в отличие о запросов, находящихся в конце очереди.
Планировщик Anticipatory
В дополнение к параметрам read_expire и write_expire, планировщик anticipatory имеет также следующие параметры:
- read_batch_expire - время, потраченное на обслуживание запроса на чтение, перед обслуживанием отложенного запроса на запись.
- write_batch_expire - обратное предыдущему.
- antic_expire - время в миллисекундах, в течение которого планировщик будет находиться в паузе, пока он ожидает следующего запроса от приложения перед тем, как перейдет к обслуживанию следующего запроса.
Планировщик cfq
- quantum - количество внутренних очередей, запросы из которых берутся за один цикл и перемещаются в очередь диспетчера для обработки. Планировщик cfq может иметь 64 внутренние очереди, но он перемещает запросы в очередь диспетчера только при посещении первых восьми внутренних очередей, а затем — следующие восемь в следующем цикле, и т.д..
- queued - максимальное число запросов, допустимое в данной внутренней очереди.
Хотя нет никаких жестких и быстро применимых правил, разумной стратегией, вероятно, будет измерение производительности с использованием различных планировщиков ввода / вывода с настройками их параметров по умолчанию, а затем выбор наиболее подходящего планировщика и попытки выполнить более точную настройку параметров с учетом рекомендаций, относящихся к конкретным приложениям.
Не забывайте, что процесс планирования не в состоянии выполнить всю оптимизацию ввода / вывода. На эффективность могут повлиять такие факторы, как упреждение операций, емкость диска, скорость вращения его шпинделя (поскольку оно влияет на скорость поиска) и даже файловая система, которую вы выберете для данного диска. Одно можно сказать наверняка: независимо от того, какие характеристики у вас имеются в настоящий момент, вы, почти определенно, сможете их улучшить, если у вас есть на это время, желание и знания.