为什么`procmeminfo`显示32GB,而AWS实例只有16GB?

问题描述 投票:1回答:1

我想记录当前正在运行的实例的内存总量(或者说:当前进程已使用的内存和当前进程的可用内存),并使用了 "procmeminfo"。/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。为什么会出现这种情况?

(附带问题:应该如何做?)

linux amazon-web-services docker virtualization
1个回答
0
投票

我想记录当前正在运行的实例的大小。

你没有为你定义什么是实例。AFAIK它在AWS和Docker中有着不同的含义。

当前进程使用的内存

请定义什么是使用的内存.

阅读更多关于 虚拟地址空间. 那么 页面缓存 ?

当前进程的可用内存

请定义什么是可用内存. 你知道吗?寻呼 ? 怎樣?共享图书馆 ?

然后,阅读相关文件 采购(5).

你真的应该关心一下现在的 处理,而不是整个系统。读一个好的 操作系统 教科书和 高级Linux编程 册,并 https:/www.linuxatemyram.com

如果您关心当前的进程,请使用 采购(5) 到...为止 /proc/self/stat

如果你关心你的AWS实例,有一些专有的API用于查询它们的状态。

如果你正在自动化一些系统管理任务,你应该解释哪些任务以及为什么。

请注意 /proc/meminfo 提供全系统的信息,并涉及到 虚拟内存. AWS 正在增加 管理程序 层次,也是 Docker 你可以有一些 流程迁移 在某种虚拟层面。

© www.soinside.com 2019 - 2024. All rights reserved.