Bunu yapmanın resmi olarak desteklenen bir yolu yok gibi görünüyor. (Bu yanlıştır. Aşağıya bakınız)
Resmi olarak cesareti kırılmış bir yol (çünkü grubu yönettiği için) aşağıdaki gibidir:
Aşağıdaki dosyayı şu şekilde yapın: /etc/systemd/system/user@.service.d/set-memhigh.conf
[Service]
Type=simple
ExecStartPost=+/root/set-memoryhigh.sh %i
Sonra aşağıdaki dosyayı "/root/set-memoryhigh.sh" olarak yapın
#!/bin/bash
exec >>/var/tmp/log.txt 2>&1 # for logging
set -x # for logging
for d in /sys/fs/cgroup /sys/fs/cgroup/user.slice /sys/fs/cgroup/user.slice/user-$1.slice; do
echo "+memory" >>${d}/cgroup.subtree_control
done
/bin/echo "24G" >> /sys/fs/cgroup/user.slice/user-$1.slice/memory.high
Çalışıp çalışmadığını görebilirsiniz
cat /sys/fs/cgroup/user.slice/user-${UID}.slice/memory.high
"/Sys/fs/cgroup/user.slice" yoksa, birleştirilmiş grup hiyerarşisi etkinleştirilmez. Https://unix.stackexchange.com/a/452728/297666 olarak etkinleştirmemiz gerekiyor.
Çalışmasına rağmen, bunu beğenip beğenmediğinizden emin değilim ...
25 Temmuz ilave Not: Aşağıdaki dosyası oluşturma /etc/systemd/system/user-1000.slice
için her (kullanıcının UID ile 1000 değiştirilmesi), kullanıcı, bu kullanıcı üzerinde bir bellek sınırlama getirmektedir. Ben ubuntu 18.04 üzerinde systemd 237 ve streç backport yüklü systemd 237 ile Debian strecth doğruladı :
[Slice]
Slice=user.slice
MemoryHigh=24G
Rahatsızlık, her kullanıcı için yukarıdaki dosyayı yapmamız gerektiğidir . 239 systemd ile , yukarıdaki dosyayı şu şekilde yapabiliriz ve /etc/systemd/system/user-.slice.d/memory.conf
her kullanıcıya bellek sınırlaması uygulanır. Ancak 239 systemd'de bir hata var (bu hata 240'da düzeltildi) ve amaçlandığı gibi çalışmıyor. Hatayı gidermek için aşağıdaki dosyayı şu şekilde yapın user-0.slice
ve çalıştırın systemctl enable user-0.slice
. Her kullanıcı için aşağıdaki dosyayı yapmak zorunda değiliz .
[Unit]
Before=systemd-logind.service
[Slice]
Slice=user.slice
[Install]
WantedBy=multi-user.target