美文网首页
linux内存 free命令 buffer cache作用

linux内存 free命令 buffer cache作用

作者: _简_述_ | 来源:发表于2019-03-05 22:39 被阅读0次

    总有人爱问buffer cache什么区别,通常我的回答百度一下就出来了,今天就彻底百度下,总结总结。以后就说:“去看小鹏的笔记去,这都不知道。”

    free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中,free命令是最经常使用的命令之一。

    1.命令格式:
    free [参数]
    2.命令功能:
    free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略
    3.命令参数:
    -b  以Byte为单位显示内存使用情况。 
    -k  以KB为单位显示内存使用情况。 
    -m  以MB为单位显示内存使用情况。
    -g   以GB为单位显示内存使用情况。 
    -o  不显示缓冲区调节列。 
    -s<间隔秒数>  持续观察内存使用状况。 
    -t  显示内存总和列。 
    -V  显示版本信息。 
    
    虚拟机free命令截图

    标题解释
    total:总计物理内存的大小。
    used:已使用多大。
    free:可用有多少。
    Shared:多个进程共享的内存总额。
    Buffers/cached:磁盘缓存的大小。

    • 第一行的输出时从操作系统(OS)来看的。也就是说,从OS的角度来看,计算机上一共有:

    total:1004348KB(缺省时free的单位为KB)物理内存;
    used:在这些物理内存中有485308KB被使用了;
    free:519040KB是可用的;
    buffer:59424表示被OS buffer住的内存。
    cache:257760表示被OS cache的内存。
    公式:total=used+free
    也就是说buffer是用于存放要输出到disk(块设备)的数据的,而cache是存放从disk上读出的数据。这二者是为了提高IO性能的,并由OS管理。看下面图示

    buffer和cache作用
    free -m
    • 第二行是从一个应用程序的角度看系统内存的使用情况。

    -buffers/cache,表示一个应用程序认为系统被用掉多少内存;
    +buffers/cache,表示一个应用程序认为系统还有多少内存;
    基于应用角度考虑(计算已使用内存时减去buffers/cache,计算可使用内存时加上buffers/cache)的内存情况,也可理解为真实的内存使用情况
    这里的话我系统可用内存实际为:可用823M,已使用156M,而不是513M和467M.
    这里还用两个等式:
    156 =used(467) - buffers(58) - cached(251)
    823 = free(513) + buffers(58) + cached(251)

    • 第三行是交换分区SWAP的,也就是我们通常所说的虚拟内存。

    Linux内核为了提高读写效率与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存变少。当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。

    相关文章

      网友评论

          本文标题:linux内存 free命令 buffer cache作用

          本文链接:https://www.haomeiwen.com/subject/fwdauqtx.html