gpt4 book ai didi

linux - 找出一个进程在 linux 中使用了多少额外的物理内存

转载 作者:太空宇宙 更新时间:2023-11-04 12:27:42 24 4
gpt4 key购买 nike

我想弄清楚一个程序需要多少内存。我需要运行该程序的多个实例,并且我想弄清楚我需要多少额外的 RAM。我做了一些研究并找到了我使用的内存量:top,它给了我以下内容

Mem:  32880876k total,  7573308k used, 25307568k free,   192956k buffers
Swap: 8241148k total, 0k used, 8241148k free, 4800560k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
27464 root 20 0 3107m 1.9g 19m S 99.6 6.0 0:37.78 krypton

RES,如果我理解正确的话是常驻内存,也就是驻留在实际 RAM 中的内存量。当我运行该程序的 2 个实例时,我注意到两者的 RES 字段都在 5Gb 左右,但使用的总内存(显示在顶部)并没有像我预期的那样增加 10Gb,而是增加了不到1Gb。

我对此做了一些研究,发现 RES 也包括共享内存。使用与上述相同的场景,我注意到每个共享内存 SHR 约为 4.7Gb。所以执行一个简单的减法会产生大约 0.3Gb,这是否意味着当我运行我的程序的 2 个实例时我需要 4.7Gb+(0.3Gb)*2=5.3Gb 的 RAM? SHR 内存是否也包括虚拟内存?

如果是这样,我是否需要从 SHR 中减去 VIRT 才能找出来自 RAM 的内存量?如果此内存使用量呈线性上升,那么运行 20 个实例是否会占用 4.7Gb+(0.3Gb)*20=10.7Gb 的 RAM?

最佳答案

你想检查/proc/pid/smaps。运行 2 个实例,然后查找 Private_* 字段。

关于linux - 找出一个进程在 linux 中使用了多少额外的物理内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44162975/

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