通过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_caches sleep 2 echo 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的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号