python - 驻留集大小 (RSS) 限制无效

标签 python resources limits pam ulimit

以下问题在运行 Ubuntu 10.04 和 2.6.32-22-generic 内核的机器上发生:设置进程的驻留集大小 (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

列表 memory_sink 每次都成功。当我用 top 检查 RSS 使用情况时,我可以很容易地让进程使用 1gb 的 RAM,这意味着限制不起作用。 RSS 限制不适用于此内核或发行版吗?如果有帮助,resource.RLIMIT_NPROC(用户进程限制)确实有效。

最佳答案

您可以使用 cgroups 完成此操作。长版在我的blog ,但短版(在 Ubuntu 11.04 上测试)是:

  • 安装 cgroup-bin 包。

  • 编辑 /etc/cgconfig.config 并创建一个内存有限的组。为了 例如,我补充说:

    group limited {
      memory {
        memory.limit_in_bytes = 50M;
      }
    }
    
  • 运行

    $ sudo restart cgconfig
    $ sudo chown -R jlebar /sys/fs/cgroup/memory/limited
    $ cgexec -g memory:limited your/program
    

当我要求它只使用 50M 时,我观察到我的进程的 RSS 为 93M,但这对我来说不是问题,因为我的目标只是让程序进入页面。

cgclassify 也允许您将限制附加到正在运行的进程。注意 RSS 仅适用于限制生效后分配的内存。

关于python - 驻留集大小 (RSS) 限制无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3043709/

相关文章:

java - 在任何机器上查找连接限制的可靠方法

python - 根据符号变化创建列表

.net - 我的资源隐藏在哪里?

Spring MVC :resources access to outside folder

java - 资源目录可以是maven中源的子目录吗?

R使用限制在数据框中查找数据

r - 在不删除数据的情况下限制ggplot2轴(外部限制):缩放

python - 如何使用 Black 格式化程序自动中断 Python 代码中的长字符串常量?

python - scikit-learn, linearsvc - 如何从经过训练的 SVM 中获取支持向量?

python - 如果行等于 python 中的值,则打印列名