xg-scale

annotate xen/io.tex @ 0:4730a0d07d88

Исходники курса после первого прочтения.
Правки (которых должно быть много),
ещё пока не вносились.
author Igor Chubin <igor@chub.in>
date Tue Jul 01 16:16:44 2008 +0300 (2008-07-01)
parents
children 75853b740e5a
rev   line source
igor@0 1 \section{Приоритезация ввода/вывода в Xen}
igor@0 2
igor@0 3 \subsection{Приоритеты для использования Disk I/O}
igor@0 4 \subsubsection{ionice}
igor@0 5 С выходом CFQ v3 в Linux 2.6.13 появилась возможность выставлять приоритеты использования дисковой подсистемы для процессов, чего раньше так не хватало. Подобно утилите nice для назначение приоритетов использования процессора появилась утилита ionice.
igor@0 6
igor@0 7 Синтаксис команды прост:
igor@0 8
igor@0 9 \begin{verbatim}
igor@0 10 ionice -c класс -n приоритет -p PID
igor@0 11 \end{verbatim}
igor@0 12
igor@0 13 Класс:
igor@0 14
igor@0 15 \begin{itemize}
igor@0 16 \item 3, Idle — Получает приоритет на использование жесткого диска только когда другие программы ничего не пишут. Приоритеты не используются.
igor@0 17 \item 2, Best Effort — Класс по умолчанию. Доступные приоритеты [0-7].
igor@0 18 \item 1, Real Time — Даёт преимущественный доступ к диску процессу, несмотря на другие процессы. Доступные приоритеты [0-7].
igor@0 19 \end{itemize}
igor@0 20
igor@0 21 \subsubsection{Приоритеты гостевых доменов}
igor@0 22 Теперь вернемся к самому Xen.
igor@0 23 После запуска гостевых систем по \textit{ps aux} можно видеть в квадратных скобках появившиеся драйвера блочных устройств xvd, после которых указан
igor@0 24 ID гостевого домена. Приоритеты для этих процессов можно устанавливать
igor@0 25 с помощью \textit{ionice}, точно также как и для всех остальных.
igor@0 26
igor@0 27 \subsubsection{Эксперименты}
igor@0 28 Проведем 2 эксперимента для операций чтения и записи.
igor@0 29
igor@0 30 Выставим одной гостевой системе класс \textit{Real Time}, а второй — \textit{Idle}.
igor@0 31
igor@0 32 Запустим одновременно \textit{dd} на обеих системах для записи небольшого файла. Конечно слово «одновременно» здесь весьма условно.
igor@0 33 Для повышения точности лучше провести несколько измерений.
igor@0 34
igor@0 35 \begin{verbatim}
igor@0 36 %# dd if=/dev/zero of=/root/file.txt bs=1024 count=10240000
igor@0 37 \end{verbatim}
igor@0 38
igor@0 39 В результате средняя скорость в первой гостевой системе -- 40Mb/sec, во второй -- 20Mb/sec.
igor@0 40
igor@0 41 Другим экспериментом является операция тестирования скорости чтения диска с помощью \textit{hdparm}:
igor@0 42
igor@0 43 \begin{verbatim}
igor@0 44 %# hdparm -t /dev/xvda
igor@0 45 \end{verbatim}
igor@0 46
igor@0 47 В результате в первом гостевом домене скорость — 25Mb/sec, во втором — 2Mb/sec.
igor@0 48
igor@0 49 \subsubsection{Заключение}
igor@0 50 Недостатком данного решения является отсутствие соответствующих опций в конфигурационном файле гостевых доменов Xen,
igor@0 51 что означает, что при каждом старте домена необходимо устанавливаеть его приоритет заново.
igor@0 52
igor@0 53 Следует обратить внимание, что данная возможность доступна только для CFQ.
igor@0 54
igor@0 55 Проверьте, какой способ приоритезации используется:
igor@0 56
igor@0 57 \begin{verbatim}
igor@0 58 cat /sys/block/ИМЯ_ДИСКА/queue/scheduler
igor@0 59 \end{verbatim}
igor@0 60
igor@0 61 Активный sheduler должен быть в квадратных скобках.
igor@0 62 Например:
igor@0 63
igor@0 64 \begin{verbatim}
igor@0 65 $ cat /sys/block/sda/queue/scheduler
igor@0 66 noop anticipatory deadline [cfq]
igor@0 67 \end{verbatim}
igor@0 68
igor@0 69 \subsection{Дополнительная информация}
igor@0 70 \begin{itemize}
igor@0 71 \item Which is the fairest I/O scheduler of them all? (англ.)
igor@0 72 \item Планировщики ввода/вывода в Linux
igor@0 73 \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 74 \item CFQ IO Schedule и /proc/sys/{\dots} Или как уменьшить тормоза при интенсивной работе с диском
igor@0 75 \end{itemize}
igor@0 76