Linux page cache与buffer cache优化

page cache的优化以及如何回收cache


page cache的优化 要优化page cache,需要关注两个操作系统参数:

当发生一个读操作,首先去pagecache里面去找,找到了就直接返回了,没有找到就去磁盘读取文件,然后再写入这个pagecache,然后再读取,最终返回需要的数据。

当写入只是将数据暂时存入pagecache,并且置为dirty标志,写入pagecache的数据会被定期,批量的保存在文件系统上面,这样就减少了对磁盘的操作次数,减少系统的开销。

  • vm.dirty_background_ratio:这个参数指定了当文件系统缓存脏页(Page Cache中的数据称为脏页数据)数量达到系统内存百分之多少时(默认10%)就会触发pdflush/flush/kdmflush等后台回写进程运行,将一定缓存的脏页异步地刷入磁盘。增减这个值是最主要的调优手段。
  • vm.dirty_ratio:这个参数则指定了当文件系统缓存脏页数量达到系统内存百分之多少时(默认20%),系统不得不开始处理缓存脏页(因为此时脏页数量已经比较多,为了避免数据丢失需要将一定脏页刷入磁盘);在此过程中很多应用进程可能会因为系统刷新内存数据到磁盘而发生IO阻塞。

vm.dirty_background_ratio 这个是将脏数据刷到内存的标准值

vm.dirty_ratio 这个是最大值

最好不要让vm.dirty_background_ratio达到vm.dirty_ratio值,那么刷新的过程当中会出现阻塞。

这两个系统参数对应的文件为:

vm.dirty_background_ratio:/proc/sys/vm/dirty_background_ratio vm.dirty_ratio:/proc/sys/vm/dirty_ratio

作为通用优化设置,建议将vm.dirty_background_ratio设置为5%,vm.dirty_ratio设置为10%。具体的设置根据不同环境,需要进行测试、再测试。(参考值,设置为这两个值效果还是不错的)

 

 

 

page cache的优化以及如何回收cache


如何回收cache linux提供了几个参数,用来释放cache,具体如下: 要释放page cache,可执行如下命令:     echo 1 >  /proc/sys/vm/drop_caches

要释放文件节点(inodes)缓存和目录项缓存(dentries),大部分缓存数据都是用的page cache,执行如下命令:(释放的是大部分的pagecache,不是所有的)     echo 2 >  /proc/sys/vm/drop_caches

要释放page cache、dentries和inodes缓存,执行如下命令:(释放了所有的pagecache,目录项缓存以及文件节点缓存)     echo 3 >  /proc/sys/vm/drop_caches 

执行上面这些的时候,最好执行一下sync,也就是将脏页数据刷到硬盘上面去,避免缓存当中的数据丢失。

 

 

关于swap的使用与优化 


swap交换分区的使用 创建交换空间所需的交换文件是一个普通的文件,但是,创建交换文件与创建普通文件不同,必须通过dd命令来完成,同时这个文件必须位于本地硬盘上。

[root@localhost ~]# dd if=/dev/zero of=/data/swapfile bs=1024 count=65536

要使用swap,首先要激活swap,通过mkswap命令指定作为交换空间的设备或者文件:

[root@localhost ~]#mkswap  /data/swapfile

最后,通过swapon命令激活swap:

[root@localhost ~]#/usr/sbin/swapon /data/swapfile 

swap的优化 swappiness的值的大小对如何使用swap分区是有着很大的联系的。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区。

[root@slave034 ~]# cat /proc/sys/vm/swappiness 60

默认值为60,意思是说,系统的物理内存在使用到100-60=40%的时候,就可以开始使用交换分区了。此参数设置了使用交换分区的可能性大小。

在/etc/sysctl.conf文件中修改,加上如下内容: vm.swappiness=10 然后执行命令: sysctl  -p,永久生效。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux内核中,Page CacheBuffer Cache都是用于缓存文件系统数据的机制,但它们的缓存对象和缓存方式不同。 Page Cache是用于缓存文件系统数据块的机制,它缓存的是文件系统中的整个页(通常为4KB)。当应用程序请求访问文件时,内核会首先在Page Cache中查找对应的页,如果找到了就直接返回给应用程序,避免了访问磁盘的开销。如果Page Cache中没有找到对应的页,则内核会从磁盘中读取相应的数据块,并将其缓存到Page Cache中。Page Cache的优点是能够加速对文件的访问速度,提高系统的性能。但是,它也会占用系统的内存资源,如果文件系统中的文件过多,Page Cache可能会占用大量的内存资源。 Buffer Cache是用于缓存块设备数据块的机制,它缓存的是块设备中的数据块(通常为512字节或4KB)。当应用程序请求访问块设备时,内核会首先在Buffer Cache中查找对应的数据块,如果找到了就直接返回给应用程序,避免了访问块设备的开销。如果Buffer Cache中没有找到对应的数据块,则内核会从块设备中读取相应的数据块,并将其缓存到Buffer Cache中。Buffer Cache的优点是能够加速对块设备的访问速度,提高系统的性能。但是,它也会占用系统的内存资源,如果块设备中的数据块过多,Buffer Cache可能会占用大量的内存资源。 因此,Page CacheBuffer Cache都是用于加速对文件系统或块设备的访问速度的机制,它们的区别在于缓存的对象和缓存的方式不同。Page Cache缓存的是文件系统的整个页,Buffer Cache缓存的是块设备的数据块。Page Cache的缓存方式是基于文件系统的,Buffer Cache的缓存方式是基于块设备的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值