首页 > 解决方案 > Python的resource.RLIMIT_VMEM(或resource.RLIMIT_AS)返回的两个数字是什么意思?

问题描述

Python 的资源模块允许获取和设置各种系统资源使用信息。特别是,进程使用的内存量可通过resource.RLIMIT_VMEM(或在某些系统上,resource.RLIMIT_AS根据此 StackOverflow答案)获得。

当我运行以下 Python 代码(使用 Python 3.7)来打印内存使用情况时,我看到一个包含两个值的元组:

import resource
print(resource.getrlimit(resource.RLIMIT_AS))

在 Ubuntu 18.04 上,它会打印(-1, -1)(我解释为这两个值都是无限的)。

在 Mac OS X 10.4 上,它会打印(9223372036854775807, 9223372036854775807)(大约是 1 EB 字节)。

我对此输出有两个问题:

  1. 第一个数字和第二个数字有什么区别?

  2. 应该如何解释报告的值9223372036854775807- 它们是字节数吗?(一个非常大的值是否只是一种设置内存限制的方法,它是如此之大以至于永远无法达到?)

标签: pythonmemory

解决方案


这两个值对应于系统调用的rlim_cur(“软限制”)和rlim_max(“硬限制”) 。getrlimit这记录在资源模块的库文档中

该值-1对应于resource.RLIM_INFINITY常数,这意味着没有设置限制。

的单位RLIMIT_AS被定义为字节,记录在这里

resource.RLIMIT_AS 进程可以占用的地址空间的最大区域(以字节为单位)。

getrlimit(2)您可以在手册页上找到有关这些值的含义的更多特定于 Linux 的信息。


推荐阅读