gpt4 book ai didi

linux - Linux 是如何计算 MemFree 的

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

我正在尝试了解我的嵌入式 Linux 内存使用情况。

通过使用 top 实用程序和进程文件/proc/meminfo,我可以看到一个进程使用了​​多少虚拟内存,以及系统可以使用多少物理内存。但是对于任何给定的进程来说,虚拟内存似乎比使用的物理内存高得多。因为这是一个嵌入式系统,内存交换被禁用。(SwapTotal = 0)

linux 是如何计算空闲物理内存的?因为它似乎并没有考虑到虚拟内存空间中分配的所有内容。

最佳答案

/proc/meminfo 中的

MemFree 是伙伴分配器中有多少页空闲的计数。这个伙伴分配器是内核中物理内存分配的基本单元;然而,有很多方法可以在需要时将页面返回给伙伴分配器——例如,释放空的 SLAB、丢弃缓存/缓冲区 RAM(即使这意味着使正在运行的进程中的 PTE 无效),或者作为最后的手段, 交换东西。

事实上,MemFree 通常被控制为仅占总物理 RAM 的 5-10%,随着时间的推移,任何额外的空闲 RAM 都会被纳入缓存。因此,单独的 MemFree 是对整体内存情况的一个非常不完整的 View 。

至于给定进程的虚拟内存(VSIZE),这是指进程地址空间中所有映射内存段的大小总和。然而,并不是所有这些都会实际存在——有些可能是 paged in upon first access因此在实际使用之前不会注册为正在使用的内存。驻留大小 (RSIZE) 是一个更准确的 View ,因为它只注册映射到现在的页面 - 尽管如果给定页面映射到多个虚拟地址(这当您考虑多个进程时,这很常见——共享库将相同的物理 RAM 映射到使用该库的所有进程)

关于linux - Linux 是如何计算 MemFree 的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1407643/

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