? ? 在日常使用过程中,我们使用free查看系统内存使用率情况时,经常可以发现cache被使用的比较大,这种现象其实是linux内核的高速IO处理机制,在RHEL 4,5,6,7操作系统中,页高速缓存是动态调整的, 并没有特定的内核参数可以直接调整其大小;然而,通过调整虚拟内存的一些参数,可以间接影响页告诉缓存的大小。本文主要对影响cache的这些参数进行介绍和优化推荐。
通过调整sysctl中的一些参数来控制页高速缓存的大小:
场景一:Oracle数据库和TT数据库主机
开启hugepage大页,使热数据常驻内存,不占用cache空间
参数 | 默认值 | 建议值 |
vm.dirty_background_bytes | 0 | |
vm.dirty_background_ratio | 10 | 3 |
vm.dirty_bytes | 0 | |
vm.dirty_ratio | 20 | |
vm.dirty_expire_centisecs | 3000 | |
vm.dirty_writeback_centisecs | 500 | |
vm.swappiness | 30 | 10 |
场景二:redis、memcache等菲关系型内存数据库
对cache依赖较大,一般尽量减少数据刷
参数 | 默认值 | 建议值 |
vm.dirty_background_bytes | 0 | |
vm.dirty_background_ratio | 10 | 50 |
vm.dirty_bytes | 0 | |
vm.dirty_ratio | 20 | 50 |
vm.dirty_expire_centisecs | 3000 | |
vm.dirty_writeback_centisecs | 500 | 360000 |
vm.swappiness | 30 | 10 |
场景三:对数据文件读写频繁的应用
参数 | 默认值 | 建议值 |
vm.dirty_background_bytes | 0 | |
vm.dirty_background_ratio | 10 | 50 |
vm.dirty_bytes | 0 | |
vm.dirty_ratio | 20 | 80 |
vm.dirty_expire_centisecs | 3000 | |
vm.dirty_writeback_centisecs | 500 | |
vm.swappiness | 30 | 10 |
场景四:对数据文件读写不频繁的应用
参数 | 默认值 | 建议值 |
vm.dirty_background_bytes | 0 | |
vm.dirty_background_ratio | 10 | 5 |
vm.dirty_bytes | 0 | |
vm.dirty_ratio | 20 | 10 |
vm.dirty_expire_centisecs | 3000 | |
vm.dirty_writeback_centisecs | 500 | |
vm.swappiness | 30 | 10 |
场景五:分布式消息中间件
参数 | 默认值 | 建议值 |
vm.dirty_background_bytes | 0 | |
vm.dirty_background_ratio | 10 | 50 |
vm.dirty_bytes | 0 | |
vm.dirty_ratio | 20 | 50 |
vm.dirty_expire_centisecs | 3000 | |
vm.dirty_writeback_centisecs | 500 | 360000 |
vm.swappiness | 30 | 1 |