
igor@0: \section{Приоритезация ввода/вывода в Xen}
igor@0: 
igor@0: \subsection{Приоритеты для использования Disk I/O}
igor@0: \subsubsection{ionice}
igor@0: С выходом CFQ v3 в Linux 2.6.13 появилась возможность выставлять приоритеты использования дисковой подсистемы для процессов, чего раньше так не хватало. Подобно утилите nice для назначение приоритетов использования процессора появилась утилита ionice. 
igor@0: 
igor@0: Синтаксис команды прост:
igor@0: 
igor@0: \begin{verbatim}
igor@0: ionice -c класс -n приоритет -p PID
igor@0: \end{verbatim}
igor@0: 
igor@0: Класс:
igor@0: 
igor@0: \begin{itemize}
igor@0: \item  3, Idle — Получает приоритет на использование жесткого диска только когда другие программы ничего не пишут. Приоритеты не используются.
igor@0: \item  2, Best Effort — Класс по умолчанию. Доступные приоритеты [0-7].
igor@0: \item  1, Real Time — Даёт преимущественный доступ к диску процессу, несмотря на другие процессы. Доступные приоритеты [0-7].
igor@0: \end{itemize}
igor@0: 
igor@0: \subsubsection{Приоритеты гостевых доменов}
igor@0: Теперь вернемся к самому Xen. 
igor@0: После запуска гостевых систем по \textit{ps aux} можно видеть в квадратных скобках появившиеся драйвера блочных устройств xvd, после которых указан 
igor@0: ID гостевого домена. Приоритеты для этих процессов можно устанавливать
igor@0: с помощью \textit{ionice}, точно также как и для всех остальных.
igor@0: 
igor@0: \subsubsection{Эксперименты}
igor@0: Проведем 2 эксперимента для операций чтения и записи.
igor@0: 
igor@0: Выставим одной гостевой системе класс \textit{Real Time}, а второй — \textit{Idle}.
igor@0: 
igor@0: Запустим одновременно \textit{dd} на обеих системах для записи небольшого файла. Конечно слово «одновременно» здесь весьма условно.
igor@0: Для повышения точности лучше провести несколько измерений.
igor@0: 
igor@0: \begin{verbatim}
igor@0: %# dd if=/dev/zero of=/root/file.txt bs=1024 count=10240000
igor@0: \end{verbatim}
igor@0: 
igor@0: В результате средняя скорость в первой гостевой системе -- 40Mb/sec, во второй -- 20Mb/sec.
igor@0: 
igor@0: Другим экспериментом является операция тестирования скорости чтения диска с помощью \textit{hdparm}:
igor@0: 
igor@0: \begin{verbatim}
igor@0: %# hdparm -t /dev/xvda
igor@0: \end{verbatim}
igor@0: 
igor@0: В результате в первом гостевом домене скорость — 25Mb/sec, во втором — 2Mb/sec.
igor@0: 
igor@0: \subsubsection{Заключение}
igor@0: Недостатком данного решения является отсутствие соответствующих опций в конфигурационном файле гостевых доменов Xen,
igor@0: что означает, что при каждом старте домена необходимо устанавливаеть его приоритет заново.
igor@0: 
igor@0: Следует обратить внимание, что данная возможность доступна только для CFQ.
igor@0: 
igor@0: Проверьте, какой способ приоритезации используется:
igor@0: 
igor@0: \begin{verbatim}
igor@0: cat /sys/block/ИМЯ_ДИСКА/queue/scheduler
igor@0: \end{verbatim}
igor@0: 
igor@0: Активный sheduler должен быть в квадратных скобках.
igor@0: Например:
igor@0: 
igor@0: \begin{verbatim}
igor@0: $ cat /sys/block/sda/queue/scheduler 
igor@0: noop anticipatory deadline [cfq]
igor@0: \end{verbatim}
igor@0: 
igor@0: \subsection{Дополнительная информация}
igor@0: \begin{itemize}
igor@0: \item  Which is the fairest I/O scheduler of them all? (англ.)
igor@0: \item  Планировщики ввода/вывода в Linux
igor@0: \item  Choosing an I/O Scheduler for Red Hat® Enterprise Linux® 4 and the 2.6 Kernel (англ.) или на русском: Выбор планировщика ввода/вывода в Red Hat® Enterprise Linux® 4 и ядре версии 2.6
igor@0: \item  CFQ IO Schedule и /proc/sys/{\dots} Или как уменьшить тормоза при интенсивной работе с диском
igor@0: \end{itemize}
igor@0: 




