如何查看父母和孩子之间的cgroups资源控制遗产过程

systemd-cgls的层次结构为例:

└─user.slice ├─user-1000.slice │ ├─[email protected] │ │ └─init.scope │ │ ├─3262 /lib/systemd/systemd --user │ │ └─3263 (sd-pam) │ └─session-3.scope │ ├─3260 sshd: user1 [priv] │ ├─3362 sshd: user1@pts/1 │ ├─3363 -bash │ └─3378 ssh-agent -s └─user-0.slice ├─session-1.scope │ ├─3151 sshd: root@pts/0 │ ├─3252 -bash │ ├─3625 systemd-cgls 

如果我设置了user.slice的限制,例如5M的内存,Memory行清楚地报告它:

 systemctl status user.slice ● user.slice Loaded: loaded (/etc/systemd/system/user.slice; static; vendor preset: enabled) Active: active since Mon 2016-08-22 11:32:13 CEST; 52min ago Tasks: 12 Memory: 3.1M (limit: 5.0M) CPU: 1.275s CGroup: /user.slice ... 

用户1000切片有应用限制,如果我用这个用户强调系统,我可以看到它。 但状态不报告在这个孩子片的限制:

 systemctl status user-1000.slice ● user-1000.slice - User Slice of user1 Loaded: loaded (/run/systemd/transient/user-1000.slice; transient; vendor preset: enabled) Transient: yes Active: active since Mon 2016-08-22 11:32:42 CEST; 1h 8min ago Tasks: 6 (limit: 12288) Memory: 856.0K CPU: 521ms 

按照proc的方式,我可以看到user-1000进程属于用户片:

 # cat /proc/3260/cgroup 10:memory:/user.slice/user-1000.slice ... 

并直接在/ sys /中检查:

 root@server1:/sys/fs/cgroup/memory/user.slice# cat memory.limit_in_bytes 5242880 root@server1:/sys/fs/cgroup/memory/user.slice# cd user-1000.slice/ root@server1:/sys/fs/cgroup/memory/user.slice/user-1000.slice# cat memory.limit_in_bytes 9223372036854771712 

如何知道subprocess/切片是否在父cgroup中定义了一个限制?