LINUX.ORG.RU
ФорумAdmin

Systemd user.slice автозагрузка

 


0

1

Имеется user-16553.slice

└─user.slice
***
***
  └─user-16553.slice
    ├─user@16553.service
    │ └─init.scope
    │   ├─2478 /usr/lib/systemd/systemd --user
    │   └─2482 (sd-pam)
    └─session-c3.scope
      ├─ 2578 /usr/sap/ET2/HDB10/exe/sapstartsrv pf=/usr/sap/ET2/SYS/profile/ET2_HDB10_kvm-sap-sds -D -u et2adm
      ├─ 4396 sapstart pf=/usr/sap/ET2/SYS/profile/ET2_HDB10_kvm-sap-sds
      ├─ 4405 /usr/sap/ET2/HDB10/kvm-sap-sds/trace/hdb.sapET2_HDB10 -d -nw -f /usr/sap/ET2/HDB10/kvm-sap-sds/daemon.ini pf=/usr/sap/ET2/SYS/profile/ET2_HDB10_kvm-sap-sds
      ├─ 4422 hdbnameserver
      ├─ 4457 hdbstreamingserver -hdb:instance=10 -hdb:hostname=kvm-sap-sds -p/usr/sap/ET2/HDB10/streaming/cluster/et2/config/cluster.log.properties --config /usr/sap/ET2/HDB10/streaming/cluster/et2/
      ├─ 4460 hdbwebdispatcher
      ├─10730 /hana/shared/ET2/streaming/STREAMING-2_0/bin/streamingwebservice -c -e
      ├─10733 /hana/shared/ET2/streaming/STREAMING-2_0/bin/streamingwebworker -c -e
      ├─10734 /hana/shared/ET2/streaming/STREAMING-2_0/bin/streamingwebworker -c -e
      ├─10735 /hana/shared/ET2/streaming/STREAMING-2_0/bin/streamingwebworker -c -e
      ├─10736 /hana/shared/ET2/streaming/STREAMING-2_0/bin/streamingwebworker -c -e
******
Цель - ограничить потребление оперативной памяти для всего, что запускается под этим пользоавтелем. не знаю можно ли использовать session-c3.scope. Если использовать следующую команду, то все работает до перезагрузки
systemctl set-property user-16553.slice MemoryLimit=1024M
Как правильно организовать ограничение использования памяти даже после перезагрузки ОС? Пробовал создавать
vi /etc/systemd/system/user-16553.slice
[Unit]
Description=16553 user.slice
[Slice]
MemoryAccounting=true
MemoryLimit=3000M

systemctl daemon-reload
Но файл удаляется системой после перезагрузки. Я уже подумываю просто запустить скрипт в кронтаб, но это выглядит как то по кустарному. Как правильно организовать такие ограничения ? Заранее спасибо.


Это бага: https://github.com/systemd/systemd/issues/2556

Есть примерное решение: https://github.com/poettering/systemd/commit/2f3f86ab139e30edf5634380247278d8...

Но с ним у всех юзеров будет это ограничение. Если надо чтобы было только у одного - пинай Поттеринга, или шли PR. В обсуждении под 2556 Поттеринг написал что не видит элегантного способа это починить.

alex_the_v ★★★
()

выглядит как то по кустарному

Как что-то плохое.

echo 1G > /user.slice/user-16553.slice/memory.max

Куда-нибудь в автозагрузку или в крон

как-то так

anonymous
()

Как правильно организовать ограничение использования памяти даже после перезагрузки ОС?

Если тебе нужно применить ограничение к конкретному пользователю, попробуй написать drop-in:

cat >/etc/systemd/system/user-16553.slice.d/memory-limit.conf <<EOF
[Slice]
MemoryAccounting=true
MemoryLimit=3000M
EOF

Если нужно ко всем — то см. ответ @alex_the_v. Релевантный коммит приехал в systemd 243.

intelfx ★★★★★
()
Ответ на: комментарий от alex_the_v

Но с ним у всех юзеров будет это ограничение. Если надо чтобы было только у одного - пинай Поттеринга

drop-in к слайсу разве не будет работать? Только что проверил — будет.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

О, значит починили уже. Теперь бы еще в networkd починили race-condition при хотплаге интерфейсов.

Upd: проверил - оказывается, тоже починили. Ништяк.

alex_the_v ★★★
()
Последнее исправление: alex_the_v (всего исправлений: 1)
Ответ на: комментарий от intelfx

Я пробовал делать так

mkdir /etc/systemd/system/user-14003.slice.d 
touch /etc/systemd/system/user-14003.slice.d/50-MemoryLimit.conf 
vi /etc/systemd/system/user-14003.slice.d/50-MemoryLimit.conf 
[Slice] MemoryLimit=1073741824

systemctl daemon-reload
После ребута, весь каталог удаляется и настроек не остается /etc/systemd/system/user-14003.slice.d

systemctl --version systemd 228

Shinma
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.