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
|