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 |