需要帮助来解释free命令的输出

我很感激帮助解释下面’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 
  1. 如果我有近11GB的免费空间,为什么我看到交换使用。 不应该是0吗?
  2. 此外,’共享’值为7840.此内存是否可用于新应用程序?
  3. 只有’缓存’内存可用于新应用程序吗? 换句话说,“共享”和“缓冲”内存不适用于新应用程序?
  4. 我应该如何解释值为611的“可用”列? 这个价值是如何得出的?

它说,你的交换区域是16891 MB。 您分配了5289 MB,并且有11602 MB的可用交换区域。 总计=已使用+免费

共享 :tmpfs使用的内存(大部分)(/ proc / meminfo中的shmem)

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

缓存 :页面缓存和slab使用的内存(/ proc / meminfo中的缓存和SReclaimable)

可用 :估计可用于启动新应用程序的内存量,无需交换。 与缓存或空闲字段提供的数据不同,此字段考虑了页面缓存,并且由于正在使用的项目,并非所有可回收的内存块都将被回收。

你可以man free使用命令man free阅读更多内容

  1. 你有11GB的免费交换区域,而不是内存,所以你应该看到5289 MB交换使用。
  2. 可用于新应用程序的内存为611 MB,您可以在可用列下看到。
  3. 不,只有可用列显示应用程序的可用内存。
  4. 见上一个答案

编辑:找到有关free命令最近更改的主题 。 可以有用。

问题的简短回答…如果你正常运行时你的free -m输出是典型的…你的RAM用完了,开始使用30%+交换空间,系统将开始减速,因为磁盘(交换)速度比实际RAM速度慢。 系统速度较慢,磁盘I / O较多。

是的……你可以使用更多的内存。 添加内存主要取决于两件事……你的主板需要多少内存……以及你可以在更多内存上花多少钱。

有一个名为vm.swappiness的系统参数,用于设置如何使用RAM与交换,但有些人可能会争论如何设置它。 这是另一个讨论,但你可以在这里搜索AU以查看对话。

您当前的16G交换设置很好,即使您添加了更多内存。