WiredTiger系列2:Eviction详解

本文深入探讨WiredTiger的Eviction机制,包括内部和外部Evict,以及Evict Pass策略和Evict Page过程。Eviction通过LRU队列淘汰内存中的pages,以释放内存空间。内部Evict涉及线程扫描和淘汰,外部Evict在用户操作触发时进行。此外,介绍了评分系统如何保证内部页面的优先保留。
摘要由CSDN通过智能技术生成

Eviction

Evict的实质主要是将内存中的page淘汰出内存,简单来说,当cache里面的“脏页”达到一定比例或cache使用量达到一定比例时,wt就会触发相应的evict page线程来将pages(包含干净的pages和脏pages)按一定的算法(LRU队列)淘汰出去,以便腾挪出内存空间,保障后面新的插入或修改等操作。

这个流程中存在两个淘汰队列分别为待淘汰的填充队列(evict_fill_queue)和当前淘汰队列(evict_current_queue),evict会不断地将符合淘汰条件的page交替待淘汰queue,然后会从淘汰队列中将page淘汰出内存。待淘汰queue和当前淘汰queue角色会进行切换。

Evict有两种触发方式,一种是WiredTiger内部线程触发,另一种为用户操作(search/insert等)触发,这里我们将两者分别称为内部evict与外部evict,本文主要介绍内部evict。

首先来了解一下cache所管理的空间。
WT cache管理的空间就是内存page的内存空间,page的内存分为几部分:

  1. 从磁盘上读取到的已经刷盘的数据,即前文描述的dsk内存缓存。
  2. Page在内存中新增的修改事务数据。
  3. Page基本的数据结构所有的内存空间。

WT维护了每个page的内存总量,总的内存使用量mem_size,以及增删改造成的脏页数据总量dirty_mem_size。每次对页进行载入、增删改、分裂和销毁时对上面的数据做原子增加或者减少计数,这样可以精确计算到当前系统中WT引擎内存占用量。

那么结合cache所管理的空间,这里简要介绍page eviction相关的几个参数:

参数名称 默认配置值 含义
eviction_target 80 当cache使用量达到该百分比时触发内部evict,能够淘汰clean page
eviction_trigger 90 当cache使用量达到该百分比时触发内部或外部evict,能够淘汰clean page
eviction_dirty_target 5 当cac
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值