通过free命令查看linux内存的使用情况

total:系统总内存大小。used:已使用的内存大小(包括cached和buffers以及shared部分)。free:空闲的内存大小。shared:进程间共享的内存(通常可以忽略)。buffers:用于缓存已写入内容的内存大小,以便快速响应请求,后续数据会定期刷新到磁盘。cached:用于缓存已读取内容的内存大小,以便下次查询时快速返回。-/+ buffers/cache分为两部分:- buffers/cache:实际正在使用的内存大小(不包括buffers和cached部分,因为这些部分可以被释放),其值为used - buffers - cached。+ buffers/cache:可用的内存大小(不仅仅是free部分),其值为free + buffers + cached。Swap:硬盘上的交换分区使用情况。当+buffers/cache表示的可用内存用完时,新请求会将内存中的部分数据写入磁盘,从而将磁盘空间用作虚拟内存。
Buffer和Cache介绍

Cache(缓存)主要是为提高CPU和内存之间的数据交换速度而设计的。Buffer(缓冲)是为了提高内存和硬盘(或其他I/O设备)之间的数据交换速度而设计的。
Cache主要针对读操作设计。CPU内部有一级、二级、三级缓存,用于存储常用指令和数据。由于CPU处理速度远高于内存速度,缓存可以防止CPU资源闲置。大部分缓存数据占用的是内存空间,即上文提到的Cached部分。
Buffer主要针对写操作设计,具体来说是针对内存和硬盘之间的写操作。它将写操作集中起来进行,减少磁盘碎片和硬盘的反复寻址过程,从而提高性能。Linux系统中有一个守护进程会定期清空Buffer中的内容,将其写入硬盘。手动执行sync命令也会触发此操作。
常见症状
症状一:在Linux中频繁存取文件,物理内存很快用光,而cached一直在增长。
解释:Linux会将每次请求过的数据缓存起来,CPU处理速度远高于内存速度,因此可以从缓存中快速命中结果返回。
症状二:Swap被占用。
解释:内存可能不够用了,才会占用Swap。因此,Swap的使用情况可以作为服务器监控的一项指标。
手动清理Swap和buffers/cache
清理Swap:
swapoff -a && swapon -a
操作说明:如果已经使用了Swap,且当前清空后+buffers/cache还有空间,执行swapoff -a操作时,会将Swap中的内容交换到内存中,数据不会丢失。
清理buffers/cache:
sync; sync; sync; && echo 3 > /proc/sys/vm/drop_cachessleep 2echo 0 > /proc/sys/vm/drop_caches
操作说明:
sync:将缓存的内容写入硬盘。echo 3 > /proc/sys/vm/drop_caches:将drop_caches的值改为3,系统会清理缓存内容,默认值为0。sleep 2:等待一段时间,防止上一步未执行完毕。echo 0 > /proc/sys/vm/drop_caches:将drop_caches的值改回默认值。
总结
通过上述分析可知,当空闲物理内存不多时,不一定表示系统运行状态不佳,因为cache和buffer部分可以随时被重用,某种程度上,这两部分内存也可以视为额外的空闲内存。
如果Swap被频繁调用,bi和bo长时间不为0,才是判断内存资源是否紧张的依据。通过free命令查看资源时,主要关注-/+ buffers/cache的值即可判断内存是否足够。
以上就是一文解释Linux 的内存、Swap、Cache、Buffer的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/22683.html
微信扫一扫
支付宝扫一扫