我将非常感激能够帮助解释下面“free -m”的输出。
-bash-4.2$ free -m
total used free shared buff/cache available
Mem: 15793 7112 88 7840 8591 611
Swap: 16891 5289 11602
- 如果我有近 11GB 的可用空间,那为什么我会看到交换使用情况。难道不应该是 0 吗?
- 此外,“共享”值为 7840。此内存是否可用于新应用程序?
- 是否只有“缓存”内存可供新应用程序使用?换句话说,“共享”内存和“缓冲”内存不可供新应用程序使用?
- 我应该如何解释值为 611 的“可用”列?这个值是如何得出的?
答案1
它显示,您的交换区域为 16891 MB。您分配了 5289 MB,并且有 11602 MB 可用交换区域。总计 = 已用 + 可用
共享:tmpfs 使用的内存(/proc/meminfo 中的 Shmem)
缓冲区:内核缓冲区使用的内存(/proc/meminfo 中的缓冲区)
缓存:页面缓存和 slab 使用的内存(/proc/meminfo 中的缓存和 SReclaimable)
可用的:估计有多少内存可用于启动新应用程序(无需交换)。与缓存或空闲字段提供的数据不同,此字段考虑了页面缓存,并且考虑到并非所有可回收内存块都会因正在使用的项目而得到回收。
您可以使用命令阅读更多man free
- 您有 11GB 的可用交换区域,而不是内存,因此您应该看到 5289 MB 的交换使用情况。
- 可用于新应用程序的内存为 611 MB,如您在可用列中看到的。
- 不,只有可用列显示应用程序可用的内存。
- 参见上一个答案
编辑:找到了话题关于最近指挥部的变化free
。可能会有用。
答案2
这个问题的简短回答是……如果您free -m
在正常运行时的输出是典型的……那么您的 RAM 已经用完了,开始使用 30% 以上的交换空间,并且系统将开始变慢,因为磁盘(交换)速度比实际 RAM 速度慢。系统速度变慢,磁盘 I/O 增多。
是的,就是你可以使用更多内存。添加内存主要取决于两个因素... 您的主板将占用多少 RAM... 以及您可以花多少钱购买更多 RAM。
有一个名为的系统参数,vm.swappiness
用于设置 RAM 与交换空间的使用方式,但有些人可能会对如何设置它有争议。这是另一个讨论,但您可以在 AU 上搜索以查看对话。
即使您添加更多内存,当前的 16G 交换设置也是没问题的。