Bra*_*ore 16 python resources limits pam ulimit
在运行带有2.6.32-22通用内核的Ubuntu 10.04的计算机上会出现以下问题:设置进程的驻留集大小(RSS)的限制似乎没有任何影响.我目前使用以下代码在Python中设置限制:
import resource
# (100, 100) is the (soft, hard) limit. ~100kb.
resource.setrlimit(resource.RLIMIT_RSS, (100, 100))
memory_sink = ['a']*10000000 # this should fail
Run Code Online (Sandbox Code Playgroud)
列表memory_sink每次都成功.当我使用top检查RSS使用情况时,我可以轻松地使用1gb的RAM进程,这意味着限制无效.RSS限制不适用于此内核或发行版吗?如果有帮助,resource.RLIMIT_NPROC(用户进程限制)确实有效.
Jus*_* L. 20
您可以使用cgroups完成此操作.长版本在我的博客上,但是短版本(在Ubuntu 11.04上测试)是:
安装cgroup-bin包.
编辑/etc/cgconfig.config并创建内存有限的组.例如,我补充说:
group limited {
memory {
memory.limit_in_bytes = 50M;
}
}
Run Code Online (Sandbox Code Playgroud)跑
$ sudo restart cgconfig $ sudo chown -R jlebar /sys/fs/cgroup/memory/limited $ cgexec -g memory:limited your/program
当我要求它只使用50M时,我用93M的RSS观察了我的过程,但这对我来说不是问题,因为我的目标只是让程序进入页面.
cgclassify允许您对正在运行的进程附加限制.RSS注意这仅适用于限制生效后分配的内存.
Mad*_*ist 13
形成getrlimit联机帮助页:
Run Code Online (Sandbox Code Playgroud)RLIMIT_RSS Specifies the limit (in pages) of the process's resident set (the number of virtual pages resident in RAM). This limit only has effect in Linux 2.4.x, x < 30, and there only affects calls to madvise(2) specifying MADV_WILLNEED.
看起来这在Linux内核2.6上是不受支持的.
| 归档时间: |
|
| 查看次数: |
9526 次 |
| 最近记录: |