Приоритезация ввода/вывода в Xen
Материал из Xgu.ru
Автор: Андрей Авраменко (liks AT altlinux.ru)
Короткая ссылка: http://xgu.ru/wiki/xen/io
Содержание |
[править] Приоритеты для использования Disk I/O
[править] ionice
С выходом CFQ v3 в Linux 2.6.13 появилась возможность выставлять приоритеты использования дисковой подсистемы для процессов, чего раньше так не хватало. Подобно утилите nice, предназначенной для назначения приоритетов использования процессора, появилась утилита ionice, назначает для процессов приоритеты ввода/вывода.
Синтаксис команды прост:
ionice -c класс -n приоритет -p PID
Класс:
- 3 (Idle) — Получает приоритет на использование жесткого диска только когда другие программы ничего не пишут. Приоритеты не используются.
- 2 (Best Effort) — Класс по умолчанию. Доступные приоритеты [0-7].
- 1 (Real Time) — Даёт преимущественный доступ к диску процессу, несмотря на другие процессы. Доступные приоритеты [0-7].
Подробнее: man ionice
[править] Приоритеты ввода/вывода гостевых доменов Xen
После запуска гостевых систем по ps aux можно видеть в квадратных скобках появившиеся драйвера блочных устройств xvd, после которых указан ID гостевого домена. Приоритеты для этих процессов можно устанавливать с помощью ionice, точно также как и для всех остальных.
$ ps aux | grep xvd root 616 0.0 0.0 0 0 ? S< 16:05 0:00 [xvd 1 07:00] igor 773 0.0 0.0 3892 764 pts/0 R+ 16:08 0:00 grep xvd
Изменение приоритета ввода/вывода нужно выполнять для процесса 616.
Аналогичным образом можно выполнять и приоритезацию ввода/вывода для HVM-доменов, только для этого нужно применять ionice к процессам qemu-dm, работающим в домене 0.
$ ps aux | grep qemu-dm root 645 8.3 0.1 27272 2400 ? Sl 16:05 0:09 /usr/lib/xen-3.2-1/bin/qemu-dm -d 2 -domain-name winxp-hdd ... igor 769 0.0 0.0 3888 764 pts/0 R+ 16:07 0:00 grep qemu-dm
[править] Эксперименты
Проведем 2 эксперимента для операций чтения и записи.
Выставим одной гостевой системе класс Real Time, а второй — Idle.
Запустим одновременно dd на обеих системах для записи небольшого файла. Конечно слово «одновременно» здесь весьма условно. Для повышения точности лучше провести несколько измерений.
%# dd if=/dev/zero of=/root/file.txt bs=1024 count=10240000
В результате средняя скорость в первой гостевой системе - 40Mb/sec, во второй - 20Mb/sec.
Другим экспериментом является операция тестирования скорости чтения диска с помощью hdparm:
%# hdparm -t /dev/xvda
В результате в первом гостевом домене скорость — 25Mb/sec, во втором — 2Mb/sec.
[править] Заключение
Недостатком данного решения является отсутствие соответствующих опций в конфигурационном файле гостевых доменов Xen, что означает, что при каждом старте домена необходимо устанавливаеть его приоритет заново.
Следует обратить внимание, что данная возможность доступна только для CFQ.
Проверьте, какой способ приоритезации используется:
cat /sys/block/ИМЯ_ДИСКА/queue/scheduler
Активный sheduler должен быть в квадратных скобках. Например:
$ cat /sys/block/sda/queue/scheduler noop anticipatory deadline [cfq]
[править] См. также
[править] Дополнительная информация
- Which is the fairest I/O scheduler of them all? (англ.)
- Планировщики ввода/вывода в Linux
- Choosing an I/O Scheduler for Red Hat® Enterprise Linux® 4 and the 2.6 Kernel (англ.) или на русском: Выбор планировщика ввода/вывода в Red Hat® Enterprise Linux® 4 и ядре версии 2.6
- CFQ IO Schedule и /proc/sys/... Или как уменьшить тормоза при интенсивной работе с диском
|
---|