Я запускаю процесс, используя systemd , и этот процесс порождает 10 дочерних процессов.
Я явно указал внутри
/ и т.д. / Systemd / система / myservice.service.d / 10-limits.conf
[Service]
MemoryMax=40M
MemoryLimit=40M
Надеясь, что это ограничит совокупное использование всех процессов, запущенных под этой службой, до 40M.
после выполнения
systemctl status myservice
Я вижу
● myservice.service - LSB: Start and stop myservice
Loaded: loaded (/etc/rc.d/init.d/myservice; bad; vendor preset: disabled)
Drop-In: /etc/systemd/system/myservice.service.d
└─10-limits.conf
Active: active (running) since Fri 2019-01-04 03:44:07 PST; 14min ago
Docs: man:systemd-sysv-generator(8)
Process: 18236 ExecStop=/etc/rc.d/init.d/myservice stop (code=exited, status=0/SUCCESS)
Process: 18355 ExecStart=/etc/rc.d/init.d/myservice start (code=exited, status=0/SUCCESS)
Memory: 99.9M (limit: 40.0M)
CGroup: /system.slice/myservice.service
├─18382 one
├─18421 two
├─18422 three
├─18423 four
└─18513 ten
Под Memory: 99.9M (limit: 40.0M)
Я вижу, что 40M отражает, но общее потребление памяти составляет около 100M.
Я вижу, что ~ 100M исходит от /sys/fs/cgroup/memory/system.slice/myservice.service/memory.limit_in_bytes
который имеет 104857600
.
Как /sys/fs/cgroup/memory/system.slice/myservice.service/memory.limit_in_bytes
получает 104857600
?
и как мне убедиться, что все, что я передаю в /etc/systemd/system/myservice.service.d/10-limits.conf
, имеет приоритет?