gpt4 book ai didi

linux - 在 linux 上,我应该如何根据/proc/mem 中的信息计算空闲内存量?

转载 作者:IT王子 更新时间:2023-10-29 01:02:30 29 4
gpt4 key购买 nike

/proc/mem 中有很多字段:我知道我不能只取“MemFree”,因为实际上缓存了很多内存。那么问题来了,如何计算可用内存量?

假设:

  • 系统配置没有交换空间。
  • 我对“空闲内存”的定义是当它达到零时 malloc 开始失败。

最佳答案

如果如您所说,系统配置为没有交换空间,则可以通过添加/proc/meminfo 中的“MemFree”、“Buffers”和“Cached”值来计算可用内存量。

这正是命令“free -m”在“-/+ buffers/cache”行的“free”下显示的内容。

在 Python 中,我将按如下方式实现:

 with open('/proc/meminfo', 'rt') as f:
vals = {}
for i in f.read().splitlines():
try:
name, val = i.split(':')
vals[name.strip()] = int(val.split()[0])
except:
pass

memfree = vals['MemFree'] + vals['Buffers'] + vals['Cached']

这将给出一个以千字节为单位的值。

正如其他人所说,malloc 永远不可能返回 null。 Linux 会过度分配,当您开始使用确实无法找到的页面时,OOM killer 就会启动。

关于linux - 在 linux 上,我应该如何根据/proc/mem 中的信息计算空闲内存量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1460248/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com