Linux内存、Swap、Cache、Buffer详细解析

1、通过free命令看Linux内存

 

 

  • total:总内存大小。

  • used:已经使用的内存大小(这里面包含cached和buffers和shared部分)。

  • free:空闲的内存大小。

  • shared:进程间共享内存(一般不会用,可以忽略)。

  • buffers:内存中写完的东西缓存起来,这样快速响应请求,后面数据再定期刷到磁盘上。

  • cached:内存中读完缓存起来内容占的大小(这部分是为了下次查询时快速返回)。

-/+ buffers/cache看做两部分:

  • -buffers/cache:正在使用的内存大小(注意不是used部分,因为buffers和cached并不是正在使用的,组织和人民需要是它们是可以释放的),其值=used-buffers-cached。

  • +buffers/cache:可用的内存大小(同理也不是free表示的部分),其值=free+buffers+cached。

Swap:硬盘上交换分区的使用大小。

设计的目的就是当上面提到的+buffers/cache表示的可用内存都已使用完,新的读写请求过来后,会把内存中的部分数据写入磁盘,从而把磁盘的部分空间当做虚拟内存来使用。

 

在Linux系统内部有一个守护进程会定期清空Buffer中的内容,将其写入硬盘内,当手动执行sync命令时也会触发操作。

 

2、手动清理Swap和buffers/cache

(1) 清理Swap 

数据不会丢失

swapoff -a && swapon -a

(2) 清理buffers/cache:

执行echo 1、2、3 至 /proc/sys/vm/drop_caches, 达到不同的清理目的.

sync; sync; sync;&& echo 3 >/proc/sys/vm/drop_caches  -->修改drop_caches的值为3,默认为0,改为3系统会清理缓存的内容;

sleep 2

echo 0 > /proc/sys/vm/drop_caches  --> 改回默认值

3、总结

swap如果被频繁调用,bi,bo长时间不为0,则才是内存资源是否紧张的依据。通过free看资源时,实际主要关注-/+ buffers/cache的值就可以知道内存到底够不够了。

posted @ 2021-04-14 10:34  请叫我德华  阅读(325)  评论(0编辑  收藏  举报