我正在尝试使用 cgroup 在 CentOS 6 机器上使用扭矩队列管理器来管理 HPC 集群上的内存。只是为了测试我登录到运行作业的节点,其中我有:
pbs_mom(12184)─┬─sh(24312)───9809188.launchp(24339)───fcgene(24362)
├─{pbs_mom}(12190)
└─{pbs_mom}(12191)
我已经启动了 cgconfig 服务。然后我做
# cd /cgroup/memory
# mkdir jobMOM
# cd jobMOM
# echo 12184 > tasks
# cat cgroup.procs
12184
# cat memory.usage_in_bytes
81920
然后我在树中添加其他过程
# for f in 24312 12190 12191 24339 24362 ; do echo $f >> tasks ; done
但我发现内存使用率实际上下降了
# cat memory.usage_in_bytes
49152
但添加的进程总共使用超过 18GB 内存
# ps -eLo pid,fname,vsize,rss | egrep '^(12184|12190|12191|24312|24339|24362)'
12184 pbs_mom 48076 27432
12184 pbs_mom 48076 27432
12184 pbs_mom 48076 27432
24312 sh 114532 1716
24339 9809188. 106132 1248
24362 fcgene 16815264 16809768
所以看来我添加的新任务被忽略了。有人明白为什么吗?
当我删除这个 cgroup 并创建一个仅包含进程 24339 和 24362 的新 cgroup 时,我总是只得到 0 的 memory.usage_in_bytes 值。 memory.stat 中的所有内容也都是 0。