22

在 linux 系统上,使用“free”时,以下是值:

         total      used      free    shared  buff/cache   available
Mem:  26755612    873224    389320    286944    25493068    25311948
Swap:        0         0         0

总价值、使用价值和自由价值不会相加。我期待总计 = 已使用 + 免费。

问题: 我在这里缺少什么?

4

2 回答 2

21

对于主内存,内存的实际大小可以计算为used+free+buffers+cacheORused+free+buffers/cache因为buffers/cache = buffer+cache.

free亮点的手册页usedUsed memory (calculated as total - free - buffers - cache)

正如免费的手册页所说: -

total 总安装内存(/proc/meminfo 中的 MemTotal 和 SwapTotal)

used 已用内存(按总计 - 空闲 - 缓冲区 - 缓存计算)

释放 未使用的内存(/proc/meminfo 中的 MemFree 和 SwapFree)

tmpfs 使用的(大部分)共享内存(/proc/meminfo 中的 Shmem,在内核 2.6.32 上,如果不可用,则显示为零)

buffers 内核缓冲区使用的内存(/proc/meminfo 中的缓冲区)

cache 页面缓存和slab使用的内存(/proc/meminfo中的Cached和Slab)

buff / cache 缓冲区和缓存的总和

available 估计有多少内存可用于启动新应用程序,无需交换。与缓存或空闲字段提供的数据不同,该字段考虑了页面缓存,并且由于正在使用的项目,并非所有可回收的内存块都会被回收(MemAvailable in /proc/meminfo,可在内核 3.14 上使用,在内核 2.6.27+,否则与免费相同)

在你的情况下,


873224(已使用)+ 389320(免费)+ 25493068(buff/cache)= 26755612(总计)


于 2015-06-11T05:58:17.443 回答
13

Linux 喜欢缓存它打开的每个文件。每次打开文件进行读取时,Linux 都会缓存它,但如果它需要内存用于更重要的事情——比如当系统上的进程想要分配更多内存时,它会丢弃这些缓存。当重复使用相同的文件时,内存中的这些缓存只会使 Linux 更快。而不是每次它想读取文件时都去磁盘,它只是从内存中获取它,而且内存比磁盘快得多。这就是为什么您的系统显示 25493068 在 buff/cache 中使用但也显示 25311948 可用。如果系统需要,可以释放大部分缓存数据。

于 2015-06-11T06:15:29.617 回答