Linux内核中clear_refs与userfaultfd两种机制哪一个被率先引入?
两种Linux内核脏位追踪机制的引入时间对比
基于/proc/clear_refs的软脏位追踪机制是率先被引入Linux内核的方案。
两种机制的具体合入版本和特性如下:
- 第一种
/proc/clear_refs相关脏位追踪功能:在Linux 2.6.38版本(2011年3月正式发布)合入主线。用户向/proc/$pid/clear_refs写入4后,内核会清除该进程所有页面的软脏位,后续访问这些页面时会触发缺页异常由内核重置脏位,用户可遍历/proc/pagemap收集已被访问的页面信息。 - 第二种userfaultfd机制:在Linux 4.3版本(2015年11月正式发布)合入主线。该机制支持用户自行处理缺页异常:用户首先请求内核对通过mmap分配的指定内存区域进行保护,之后任何访问该区域内页面的操作都会生成缺页异常,处理权将移交至用户侧,用户可选择请求内核允许或拒绝该访问,无需再通过pagemap即可获知哪些页面被访问。
软脏位特性是早期用户态实现内存访问监测、容器增量迁移等需求的核心依赖方案,userfaultfd发布后提供了更灵活、不需要轮询pagemap的替代实现。
内容的提问来源于stack exchange,提问作者S Bitchebe
相关产品推荐
相关产品推荐

