了解linux`free -m`中的缓冲区/缓存

use*_*925 1 linux memory caching free-command

只是寻找关于free -mLinux输出的一些快速帮助.这是我的一台服务器上的示例:

  $free -m
               total       used       free     shared    buffers     cached
  Mem:         14881      14813         68          0        262        883
  -/+ buffers/cache:      13667       1213
  Swap:         4095        240       3855
Run Code Online (Sandbox Code Playgroud)

我知道内核可以并将使用可用内存进行磁盘缓存来加速系统.

通常情况下,我会查看"免费"列中的第二个值,在上面的例子中它是1213.它通常比这要高很多.

我想我想了解' - /+ buffers/cache'旁边的两个输出是什么意思.从我所看到的,系统内存确实很低(只有1213MB可供应用程序使用),操作系统实际需要 13GB用于缓存?

小智 14

在serverfault中得到解答.以下是相关摘录:

total= used+free

  • shared/ buffers/ cached:这显示为特定目的的内存使用情况,这些值包括在该值used.

第二行给出了第一行调整值.它给出了used 减去总和buffers+cached的原始值和free 加上总和的原始值buffers+cached,因此它的标题.这些新值通常比第一行更有意义.

[摘录结束]

专注于你的情况,

  • 14813(已用内存) - 262(缓冲) - 883(缓存)= 13668(由应用程序使用).

如果应用程序需要更多内存,可以从空闲内存或缓存/缓冲中获取,因此:

  • 262(缓冲)+ 883(缓存)+ 68(根本不使用)= 1213(可供应用程序使用).

对于缓存和缓冲区,系统实际上并不需要 262 + 883 = 1145(不是13GB),但由于它存在,它需要它(但如果应用程序需要更多,则将其返回).看看Linux吃了我的RAM吧!页.

您还可以使用top(我个人更喜欢htop)查看内存状态以及哪些应用程序占用大部分RAM.

作为一个例子,这里是我在RaspberryPi中运行的htop的截图和free -h执行:

在此输入图像描述

raspberry ~ # free -h
             total       used       free     shared    buffers     cached
Mem:          183M       178M       5,3M         0B        63M        42M
-/+ buffers/cache:        72M       111M
Swap:           0B         0B         0B
Run Code Online (Sandbox Code Playgroud)