\section{Приоритезация ввода/вывода в Xen}

\subsection{Приоритеты для использования Disk I/O}
\subsubsection{ionice}
С выходом CFQ v3 в Linux 2.6.13 появилась возможность выставлять приоритеты использования дисковой подсистемы для процессов, чего раньше так не хватало. Подобно утилите nice для назначение приоритетов использования процессора появилась утилита ionice. 

Синтаксис команды прост:

\begin{verbatim}
ionice -c класс -n приоритет -p PID
\end{verbatim}

Класс:

\begin{itemize}
\item  3, Idle — Получает приоритет на использование жесткого диска только когда другие программы ничего не пишут. Приоритеты не используются.
\item  2, Best Effort — Класс по умолчанию. Доступные приоритеты [0-7].
\item  1, Real Time — Даёт преимущественный доступ к диску процессу, несмотря на другие процессы. Доступные приоритеты [0-7].
\end{itemize}

\subsubsection{Приоритеты гостевых доменов}
Теперь вернемся к самому Xen. 
После запуска гостевых систем по \textit{ps aux} можно видеть в квадратных скобках появившиеся драйвера блочных устройств xvd, после которых указан 
ID гостевого домена. Приоритеты для этих процессов можно устанавливать
с помощью \textit{ionice}, точно также как и для всех остальных.

\subsubsection{Эксперименты}
Проведем 2 эксперимента для операций чтения и записи.

Выставим одной гостевой системе класс \textit{Real Time}, а второй — \textit{Idle}.

Запустим одновременно \textit{dd} на обеих системах для записи небольшого файла. Конечно слово «одновременно» здесь весьма условно.
Для повышения точности лучше провести несколько измерений.

\begin{verbatim}
%# dd if=/dev/zero of=/root/file.txt bs=1024 count=10240000
\end{verbatim}

В результате средняя скорость в первой гостевой системе -- 40Mb/sec, во второй -- 20Mb/sec.

Другим экспериментом является операция тестирования скорости чтения диска с помощью \textit{hdparm}:

\begin{verbatim}
%# hdparm -t /dev/xvda
\end{verbatim}

В результате в первом гостевом домене скорость — 25Mb/sec, во втором — 2Mb/sec.

\subsubsection{Заключение}
Недостатком данного решения является отсутствие соответствующих опций в конфигурационном файле гостевых доменов Xen,
что означает, что при каждом старте домена необходимо устанавливаеть его приоритет заново.

Следует обратить внимание, что данная возможность доступна только для CFQ.

Проверьте, какой способ приоритезации используется:

\begin{verbatim}
cat /sys/block/ИМЯ_ДИСКА/queue/scheduler
\end{verbatim}

Активный sheduler должен быть в квадратных скобках.
Например:

\begin{verbatim}
$ cat /sys/block/sda/queue/scheduler 
noop anticipatory deadline [cfq]
\end{verbatim}

\subsection{Дополнительная информация}
\begin{itemize}
\item  Which is the fairest I/O scheduler of them all? (англ.)
\item  Планировщики ввода/вывода в Linux
\item  Choosing an I/O Scheduler for Red Hat® Enterprise Linux® 4 and the 2.6 Kernel (англ.) или на русском: Выбор планировщика ввода/вывода в Red Hat® Enterprise Linux® 4 и ядре версии 2.6
\item  CFQ IO Schedule и /proc/sys/{\dots} Или как уменьшить тормоза при интенсивной работе с диском
\end{itemize}

