【Cache、Buffer】
1. 在linux中通过free命令查看系统的整体内存占用情况。
total:总内存;
used: 占用内存;
free: 空闲内存;
available: 从程序角度看可用的内存,包括free和buff/cache中可以释放的内存;
buff/cache: 列显示被 buffer 和 cache 使用的物理内存大小。
shared:列显示被共享使用的物理内存大小。
Swap 行(第三行)是交换空间的使用情况。
free 命令取自: /proc/meminfo 文件,可以通过cat /proc/meminfo 查看,buffer和我们看到free命令的buffer一样。cache为meminfo中的cache+SReclaimable,SReclaimable 表示内核使用的分配内存slab中可以被回收的部分,SUnreclaim表示其中的不可回收的部分;slab 是内核分配内存的一种机制,可以理解为高级语言的对象池,内核在运行过程中,需要经常分配小对象,比如为一次tcp连接分配的TCP,为任务分配的task_struct,可以通过slabinfo命令查看。
2. Buffer是对磁盘块的缓存,不大一般20MB左右,主要用在写磁盘上,将多次IO合并成一次,提升写入性能和减少写入磁盘次数,也会用在读请求中;Cache 是读取的文件的页缓存,也会用在写操作中,以读为主。
对每个进程进行分析的时候,可以通过cat /proc/pid/smaps 查看每个进程的段信息。
3. 通过vmstat 可以实时查看cache和buffer的实时变化。
4. 有些人对free内存比较小比较恐慌,其实在linux中,是采用尽量用内存的方式,空闲内存多数被用来做缓存,放着浪费了不是,如果想让free变大,则需要调大:vm.min_free_kbytes:
1) 临时修改:sysctl -w vm.min_free_kbytes=4194304
2)永久修改:vim /etc/sysctl.conf填入值:vm.min_free_kbytes=4194304 ,在通过sysctl -p生效,需要注意的是增加这个值会空闲更多内存,申请内存速度会更快,但是有些内存会被浪费掉,相反这个值小,则更多内存被利用作为缓存,那就可能在申请内存的时候,需要先进行回收,所以申请内存的响应可能会慢一些。
#程序员#
#linux#
#内核#
本文暂时没有评论,来添加一个吧(●'◡'●)