gpt4 book ai didi

linux - 当AWS实例只有16GB时,为什么 `/proc/meminfo`显示32GB?

转载 作者:行者123 更新时间:2023-12-02 18:07:01 26 4
gpt4 key购买 nike

我想记录当前正在运行的实例的内存总量(或者:当前进程使用的内存和当前进程可用的内存),并使用/proc/meminfo:

info = {
i.split()[0].rstrip(":"): int(i.split()[1])
for i in open("/proc/meminfo").readlines()
}
total_m = info["MemTotal"]

当我在本地运行它时,它会达到我的期望。当我在Docker容器中的16GB AWS实例上运行它时,它显示为32GB。为什么会这样?

(旁边的问题:这应该怎么做?)

最佳答案

I wanted to log the size of the currently running instance



您没有为您定义什么实例。 AFAIK在AWS和Docker中具有不同的含义。

used memory by the current process



请定义已使用的内存

阅读有关 virtual address space的更多信息。那 page cache呢?

available memory for the current process



请定义可用的内存。您知道 paging吗?那 shared libraries呢?

然后,阅读与 proc(5)相关的文档。

您确实应该关心当前的 process,而不是整个系统。阅读一本好的 operating system教科书和 Advanced Linux Programming书,然后阅读 https://www.linuxatemyram.com/

如果您关心当前的过程,请使用 proc(5)/proc/self/stat
如果您关心您的AWS实例,则可以使用一些专有的API查询其状态。

如果要自动执行某些系统管理任务,则应说明哪些任务以及原因。

请注意, /proc/meminfo提供了系统范围的信息,并与 virtual memory相关。 AWS将添加 hypervisor图层,而 Docker也将添加图层,您可以在某个虚拟级别添加一些 process migration

关于linux - 当AWS实例只有16GB时,为什么 `/proc/meminfo`显示32GB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61498709/

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