Рейтинг:1

Ограничение использования подкачки для службы systemd в Ubuntu 18.04

флаг ng
tuk

Я пытаюсь ограничить использование подкачки процесса, используя ПамятьSwapMax как упоминалось в документ с Убунту 18.04.

Среда

ubuntu@vrni-платформа:/usr/lib/systemd/system$ uname -a
Linux vrni-platform 4.15.0-143-generic #147-Ubuntu SMP Среда, 14 апреля, 16:10:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

ubuntu@vrni-платформа:/usr/lib/systemd/system$ systemctl --version
системд 237
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid

Мой файл модуля systemd выглядит следующим образом:

[Ед. изм]
Описание=Мой сервис
После=network.target
Стартлимитинтервалсек=0
[Оказание услуг]
Тип=простой
Перезапустить = всегда
Рестартсек=1
Пользователь=поддержка
Макс. Память=2000M
KillMode=процесс
ПамятьАкаунтинг=истина
OOMScoreAdjust=1000
ПамятьСвапМакс=0
ExecStart=/usr/bin/java -cp /home/support -XX:NativeMemoryTracking=summary -Xmx10000m MemoryConsumer 100 200 1

Я попытался отключить своп для этого процесса, указав 0 для ПамятьSwapMax. Но, кажется, что-то было проблема в systemd, который исправлен в systemd 239.

Поэтому я также попытался установить ПамятьSwapMax=1M. Но это также, похоже, не ограничивает использование памяти подкачки для этой службы systemd.

Документация для ПамятьSwapMax заявляет об этом

Этот параметр поддерживается, только если используется единая иерархия групп управления и отключает MemoryLimit=.

Может кто-нибудь сообщить мне, как я могу узнать, использует ли systemd единая иерархия групп управления используется в моей настройке или что еще может быть проблемой, которая не позволяет ПамятьSwapMax вступить в силу?

РЕДАКТИРОВАТЬ

Как упоминалось в этом отвечать Я вижу cgroup2 включено

ubuntu@vrni-platform:/tmp/debraj$ sudo mount -t cgroup2 нет /tmp/debraj
ubuntu@vrni-платформа:/tmp/debraj$ ls -l /tmp/debraj/
всего 0
-r--r--r-- 1 root root 0 2 июля 17:13 cgroup.controllers
-rw-r--r-- 1 root root 0 2 июля 17:13 cgroup.max.depth
-rw-r--r-- 1 root root 0 2 июля 17:13 cgroup.max.descendants
-rw-r--r-- 1 root root 0 30 июня 14:42 cgroup.procs
-r--r--r-- 1 root root 0 2 июля 17:13 cgroup.stat
-rw-r--r-- 1 root root 0 2 июля 17:13 cgroup.subtree_control
-rw-r--r-- 1 root root 0 2 июля 17:13 cgroup.threads
drwxr-xr-x 2 root root 0 30 июня 14:42 init.scope
drwxr-xr-x 87 root root 0 2 июля 15:05 system.slice
drwxr-xr-x 7 root root 0 30 июня 15:22 user.slice
ubuntu@vrni-платформа:/tmp/debraj$ sudo umount /tmp/debraj
Michael Hampton avatar
флаг cz
В последний раз, когда я проверял, Ubuntu явно отключил поддержку единой иерархии групп управления, также известной как cgroup v2. Возможно, вы захотите найти другой дистрибутив. См. [здесь] (https://unix.stackexchange.com/q/471476/20805), чтобы проверить, доступен ли он в любой данной системе.
флаг ng
tuk
Спасибо за ответ. Я обновил свой вопрос, кажется, он включен в моей настройке. Но я все еще не уверен, почему `MemorySwapMax` не работает в моей установке.
Рейтинг:2
флаг ng
tuk

На этот вопрос ответили в списке рассылки systemd.

Ссылка1

Повторная публикация соответствующих частей.

Похоже, ваша версия Ubuntu использует «гибридный» режим cgroup. По умолчанию. Cgroup v2 действительно включено в вашем ядре, но не обязательно в использовании - в гибридном режиме systemd по-прежнему монтирует все контроллеры ресурсов (процессор, память и т. д.) в режиме v1 и устанавливает только свои собственные отслеживание процессов в дереве v2. Видеть найти.

Вы можете загрузиться с ядром systemd.unified_cgroup_hierarchy=1. возможность переключить все на cgroups v2, но если вы используете контейнерное программное обеспечение (docker, podman) убедитесь, что это cgroups v2-совместимый.

Ссылка2

Привет Дебрадж.

В четверг, 08 июля 2021 г., в 17:10:44 +0530, Дебрадж Манна написал:

Linux vrni-platform 4.15.0-143-generic #147-Ubuntu SMP Среда, 14 апреля, 16:10:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux [...] GRUB_CMDLINE_LINUX="audit=1 rootdelay=180 nousb net.ifnames=0 biosdevname=0 fsck.mode=force fsck.repair=yes ipv6.disable=1 systemd.unified_cgroup_hierarchy=1"

Даже после внесения этих изменений MemorySwapMax не вступает в силу.

Вам также необходимо добавить swapaccount=1, учет свопов включается по умолчанию только начиная с ядра v5.8.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.