专业的编程技术博客社区

网站首页 > 博客文章 正文

Cache、Buffer】 1(buffer是什么意思)

baijin 2024-08-10 13:35:29 博客文章 17 ℃ 0 评论

【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#

#内核#

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表