如何处理Page Cache难以回收产生的load飙高问题

引发系统load飙高原因有以下几点:

  • 直接内存回收引起的 load 飙高;
  • 系统中脏页积压过多引起的 load 飙高;
  • 系统 NUMA 策略配置不当引起的 load 飙高。

1、直接内存回收:

观察:sar -B中pgscank/s、pgscand/s表示扫描的页面数量,前者表示kswapd扫描结果,后者表示直接扫描。需要让直接扫描越小越好。
解决:设置vm.min_free_kbytes,尽早开始后台回收。

2、脏页积压:

观察:sar -r中kbdirty即是脏页大小。
解决:设置vm/dirtyxxx控制脏页个数在合理范围内。

3、NUMA设置不合理:

观察:numactl --hardware查看是否还有一半内存空闲,但是还是频频发生direct reclaim。
解决:vm.zone_reclaim_mode = 0

# echo 0 > /proc/sys/vm/zone_reclaim_mode
# # 意味着关闭zone_reclaim模式,可以从其他zone或NUMA节点回收内存
# echo 1 > /proc/sys/vm/zone_reclaim_mode
# # 表示打开zone_reclaim模式,这样内存回收只会发生在本地节点内
# echo 2 > /proc/sys/vm/zone_reclaim_mode
# # 在本地回收内存时,可以将cache中的脏数据写回硬盘,以回收内存。
# echo 4 > /proc/sys/vm/zone_reclaim_mode
# # 可以用swap方式回收内存。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值