Добавлено примечание об устаревании resource-control

This commit is contained in:
nnz1024
2017-10-28 02:02:11 +03:00
parent 938136327a
commit 84989d6277

77
s4a.tex
View File

@@ -3958,7 +3958,27 @@ Resource Limits}.
В этой статье я попробую рассказать о методах управления механизмами В этой статье я попробую рассказать о методах управления механизмами
распределения ресурсов между службами systemd. Эта функциональность присутствует распределения ресурсов между службами systemd. Эта функциональность присутствует
в systemd уже долгое время, и давно пора рассказать о ней пользователям и в systemd уже долгое время, и давно пора рассказать о ней пользователям и
администраторам. администраторам\footnote{Прим. перев.: Дальнейшее содержимое этой главы
устарело и сохраняется лишь из исторических соображений (ну и для тех, кто
администрирует системы со старыми версиями ядра и systemd). Практически все
описанные в ней настройки объявлены устаревшими в ходе миграции с
\href{https://www.kernel.org/doc/Documentation/cgroup-v1/cgroups.txt}{cgroup v1}
на \href{https://www.kernel.org/doc/Documentation/cgroup-v2.txt}{cgroup v2},
произведенной в версиях 230--232. В частности, директива +CPUShares=+
заменена на +CPUWeight=+, +MemoryLimit=+~--- на +MemoryMax=+,
+BlockIOWeight=+~--- на +IOWeight=+/+IODeviceWeight=+,
+BlockIOReadBandwidth=+~--- на +IOReadBandwidthMax=+ и т.д. Смысл остается
тем же, поменялись лишь некоторые тонкости, связанные с работой cgroups.
Например, допустимые значения для +CPUShares+ лежали в диапазоне от 2 до 262144,
а для +BlockIOWeight+~--- от 10 до 1000, в то время как новые <<весовые>>
настройки имеют стандартный диапазон 1--10000. Также, добавлены новые настройки,
например, +CPUQuota=+ для деления процессора по долям, +MemorySwapMax=+ для
ограничения использования подкачки. В любом случае, лучше внимательно
ознакомиться с актуальной версией страницы руководства
\href{https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html}%
{systemd.resource-control(5)}. Кстати, используемый в статье механизм директив
+.include+ тоже устарел~--- вместо них нужно использовать фрагменты конфигов
(см. прим.~\ref{ftn:frag}).}.
В свое время я В свое время я
\href{http://0pointer.de/blog/projects/cgroups-vs-cgroups.html}{пояснял}% \href{http://0pointer.de/blog/projects/cgroups-vs-cgroups.html}{пояснял}%
@@ -4037,31 +4057,32 @@ CPUShares=1500
умолчанию, сделанными разработчиками Apache или его сопровождающими в вашем умолчанию, сделанными разработчиками Apache или его сопровождающими в вашем
дистрибутиве (если это включение не~указать явно, данный файл будет дистрибутиве (если это включение не~указать явно, данный файл будет
проигнорирован). Далее, мы указываем тот параметр, который хотим проигнорирован). Далее, мы указываем тот параметр, который хотим
изменить\footnote{Прим. перев.: В новых версиях systemd, начиная со 198, можно изменить\footnote{\label{ftn:frag}Прим. перев.: В новых версиях systemd, начиная
поступить проще: вместо того, чтобы создавать свой юнит-файл в каталоге +/etc+ и со 198, можно поступить проще: вместо того, чтобы создавать свой юнит-файл в
включать в него содержимое штатного (из +/usr+), достаточно просто создать каталоге +/etc+ и включать в него содержимое штатного (из +/usr+), достаточно
каталог +/etc/systemd/system/httpd.service.d/+ и поместить в него файл просто создать каталог +/etc/systemd/system/httpd.service.d/+ и поместить в него
+my_resource_limit.conf+ (суффикс +.conf+ обязателен), в котором указываются файл +my_resource_limit.conf+ (суффикс +.conf+ обязателен), в котором
только те настройки, которые необходимо изменить (последние две строки указываются только те настройки, которые необходимо изменить (последние две
вышеприведенного листинга). Это никак не~отменяет основного конфигурационного строки вышеприведенного листинга). Это никак не~отменяет основного
файла юнита (который может находиться в +/usr+ или +/etc+), однако настройки из конфигурационного файла юнита (который может находиться в +/usr+ или +/etc+),
+.d+-каталогов имеют более высокий приоритет и могут перекрывать настройки однако настройки из +.d+-каталогов имеют более высокий приоритет и могут
основного файла. Все вышесказанное относится и к другим примерам из этого перекрывать настройки основного файла. Все вышесказанное относится и к другим
раздела.}. Сохраняем файл, приказываем systemd перечитать конфигурацию, и примерам из этого раздела.}. Сохраняем файл, приказываем systemd перечитать
перезапускаем Apache, чтобы настройки вступили в силу\footnote{Прим. перев.: конфигурацию, и перезапускаем Apache, чтобы настройки вступили в
systemd версий до 197 (включительно) не~имел штатного механизма для изменения силу\footnote{Прим. перев.: systemd версий до 197 (включительно) не~имел
параметров контрольных групп <<на лету>> (без перезапуска службы). Если у вас штатного механизма для изменения параметров контрольных групп <<на лету>> (без
все же возникнет такая необходимость, вы можете узнать контрольную группу службы перезапуска службы). Если у вас все же возникнет такая необходимость, вы можете
командой +systemctl show -p ControlGroup имя_службы.service+, и выполнить узнать контрольную группу службы командой
требуемые настройки напрямую через запись значений в псевдофайлы cgroupfs +systemctl show -p ControlGroup имя_службы.service+, и выполнить требуемые
(разумеется, при следующем запуске службы к ней будут применены параметры, настройки напрямую через запись значений в псевдофайлы cgroupfs (разумеется, при
указанные в конфигурационном файле). В версиях systemd со 198 по 204, следующем запуске службы к ней будут применены параметры, указанные в
программа +systemctl+ поддерживала команды +set-cgroup-attr+, конфигурационном файле). В версиях systemd со 198 по 204, программа +systemctl+
+unset-cgroup-attr+ и +get-cgroup-attr+, позволявшие манипулировать настройками поддерживала команды +set-cgroup-attr+, +unset-cgroup-attr+ и +get-cgroup-attr+,
контрольных групп. Начиная с systemd 205, они были заменены командой позволявшие манипулировать настройками контрольных групп. Начиная с systemd 205,
+set-property+, работающей с параметрами конфигурации юнитов. Установленные они были заменены командой +set-property+, работающей с параметрами конфигурации
через +systemctl+ настройки сохраняются во вспомогательных конфигурационных юнитов. Установленные через +systemctl+ настройки сохраняются во
файлах, которые размещаются в +.d+-каталогах (см. примечание выше).}: вспомогательных конфигурационных файлах, которые размещаются в +.d+-каталогах
(см. примечание выше).}:
\begin{Verbatim} \begin{Verbatim}
systemctl daemon-reload systemctl daemon-reload
systemctl restart httpd.service systemctl restart httpd.service
@@ -5727,7 +5748,7 @@ exit
уничтожается после завершения конвейера): уничтожается после завершения конвейера):
\begin{Verbatim} \begin{Verbatim}
# cat some-file.txt | systemd-run --pipe --property=DynamicUser=1 sort -u | \ # cat some-file.txt | systemd-run --pipe --property=DynamicUser=1 sort -u | \
grep -i foobar > some-other-file.txt grep -i foobar > some-other-file.txt
\end{Verbatim} \end{Verbatim}
\item Сочетая технологию динамических пользователей и экземпляров \item Сочетая технологию динамических пользователей и экземпляров
служб\footnote{Прим перев.: Более подробно работа с экземплярами служб\footnote{Прим перев.: Более подробно работа с экземплярами
@@ -6980,7 +7001,7 @@ systemctl --root=/ enable debug-shell.service
+debug-shell.service+\footnote{Прим. перев.: Надо полагать, речь идет о +debug-shell.service+\footnote{Прим. перев.: Надо полагать, речь идет о
чем-то вроде <<\texttt{systemctl add-wants kbrequest.target чем-то вроде <<\texttt{systemctl add-wants kbrequest.target
debug-shell.service}>>.}~--- тогда отладочная оболочка будет запускаться debug-shell.service}>>.}~--- тогда отладочная оболочка будет запускаться
по запросу (ALT$\uparrow$ из tty). Указанные проблемы с безопасностью по запросу (ALT--$\uparrow$ из tty). Указанные проблемы с безопасностью
при этом остаются, но оболочка хотя бы не~будет работать постоянно. при этом остаются, но оболочка хотя бы не~будет работать постоянно.
\item[Проверка параметров ядра] Для корректной загрузки системы необходимо, \item[Проверка параметров ядра] Для корректной загрузки системы необходимо,