内核参数调优(vm.extra_free_kbytes)——内存换页导致的RT飙高

Olap router由于historical节点内存换页导致的RT突然飙高问题排查:

https://www.cnblogs.com/panfeng412/p/drop-caches-under-linux-system-2.html

一、现象描述

收到上层业务调用超时报警,

 

二、问题分析

内存的去向主要有3个:1. 进程消耗。 2. slab消耗 3.pagetable消耗。

pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB)

pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB)

fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)

majflt/s:每秒钟产生的主缺页数.

pgfree/s:每秒被放入空闲队列中的页个数

pgscank/s:每秒被kswapd扫描的页个数

pgscand/s:每秒直接被扫描的页个数

pgsteal/s:每秒钟从cache中被清除来满足内存需要的页个数

%vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比

1.分析10:16:01 PM时的内存情况:

1.主缺页(majflt/s)为0,说明没有从磁盘(swap)读数据到内存;

2.pgpgin/s是0,说明没有产生到磁盘或swap空间到内存的输入/输出。

3.最后pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff的输出都是0,说明物理内存够用,而系统没有必要对cache进行清理,以释放空间和对swap扫描以置换空间.

2.分析10:18:01 PM时的内存情况:

pgsteal/s是317/s,说明系统的空闲内存已经无法满足程序对内存的请求,开始回收cache所占用的内存空间给当前程序,同时对swap和物理内存进行扫描,以获得更多的内存。

所以这里pgscank/s涨到93/s,pgscand/s涨到231/s,回收cache和系统需求的比率为97%,说明物理内存已经不能满足需要。

pgfree/s代表已经释放到空闲队列的内存总量.

3.内核参数vm.vfs_cache_pressure讲解

增大这个参数设置了虚拟内存回收directory和inode缓冲的倾向,这个值越大。越易回收

该文件表示内核回收用于directory和inode cache内存的倾向;缺省值100表示内核将根据pagecache和swapcache,把directory和inode cache保持在一个合理的百分比;降低该值低于100,将导致内核倾向于保留directory和inode cache;增加该值超过100,将导致内核倾向于回收directory和inode cache。

参考文档:http://blog.itpub.net/23721637/viewspace-1056735/

三、解决方法

对内存的内核参数进行调整,执行命令变更内核参数:

sudo sysctl -w vm.extra_free_kbytes=1024000
sudo sysctl  -w vm.vfs_cache_pressure=10000

这个sysctl -w vm.extra_free_kbytes=1024000需要根据业务场景调整大小,我们的Druid historical节点由于数据量大,我们调整到了10240000,才解决问题。意思就是预留10G的空闲内存。调整的依据是根据sar -r命令查看到RT高时,释放了多少内存决定的。

调整前后空闲内存如下图,有所增加。

四、使用说明

这类调整适合数据量特别大,且需要缓存在内存的场景。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值