资讯专栏INFORMATION COLUMN

Linux free输出详解

IT那活儿 / 3194人阅读
Linux free输出详解

点击上方“IT那活儿”,关注后了解更多精彩内容!!!


最近经常被问到当前Linux的内存使用情况,free输出也不太懂啊等等,今天我们就来总结一下。

话不多说,先看下图:
这里 total / used /free比较简单没有什么问题,而后面的shared / buff/cache /available几列多多少少存在些许疑问,今天我们就来探索一下这几列。
有疑问肯定需要先查帮助:
一番检查可以看到shared指向/proc/meminfo 的shmem指标 顾名思义为共享内存段,buffers 来自/proc/meminfo 的 Buffers指标,cache 由/proc/meminfo的Cached和Slab指标共同组成。Available比较好理解,就是当前可用内存总量,因为【包含部分可回收cache】,也就是说当前系统可用内存需要注意这个指标而不是free指标。
这里buffers与cache并没有详细解释,我们继续查阅文档:
文档描述Buffers 是对裸设备的临时存储,也就是用来缓存裸设备相关的信息,通常不会特别大。Cached是从磁盘读取文件的缓存.Slab包含SReclaimable可回收部分和SUnreclaim不可回收这2部分,注意可回收部分包含部分caches。到这里我们了解了这几个指标的定义,还是有点疑问,这里buffer既没有描述是写入缓存还是读取缓存,cache也没有描述清楚是否包含写入缓存。我们来做几个实验观察一下:
使用dd写文件:
这里首先使用dropcache清理cache,可以看到cache从上文的1045M降到80M,这80M就是不可回收的Slab cache,注意这里我们可以主动触发回收cache,实际当linux可用内存不足时也会自动回收cache。此时观察free 由上文6758M加上释放的cache.上升到了7528M.而available波动不明显的原因就是Linux内部认为释放的这部分cache本身已计算到了available中,这就是上面说到的Linux实际可用内存是avaliable指标而不是free指标的原因。
当dd 写入200M文件观察,cache增长了200M左右,也就证明cache实际包含了文件系统的写缓存。
使用dd读写裸设备:
可以看到对裸设备的读写基本上没有产生较大的buff值,也就是前文说的通常该指标不会很大,相当于裸设备读写都是直接路径IO基本上没有去主动缓存大量的block。测试期间vmstat输出中大量的block io而不是page io也可以侧面证实。到这里我们就基本搞清楚了Linux free输出的指标意义了,注意这里available指标出现在kernel3.14也就是rhel7的版本中,本文就到此为止。

END


更多精彩干货分享

点击下方名片关注

IT那活儿

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129735.html

相关文章

  • CentOS7之常用命令

    摘要:查看信息查看信息查看内存信息查看磁盘信息输出详解根据不同的习惯常用的有以下两种用户名轮训时间占用比内存利用比当前进程父进程虚拟内存大小物理内存大小控制终端开始运行时间累计利用时间如下列表无法唤醒深眠通常为执行中 查看Linux信息? cat /proc/versionshowImg(https://segmentfault.com/img/bVFUYe?w=1296&h=110); u...

    Taste 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<