软脏(soft-dirty) 【ChatGPT】

简介: 软脏(soft-dirty) 【ChatGPT】

软脏(soft-dirty)是一个位于 PTE(页表项)上的标志位,用于跟踪任务写入的哪些页面。为了进行这种跟踪,需要执行以下步骤:

  1. 清除任务的 PTE 中的软脏位。
    这可以通过向相关任务的 /proc/PID/clear_refs 文件写入“4”来完成。
  2. 等待一段时间。
  3. 从 PTE 中读取软脏位。
    这可以通过从 /proc/PID/pagemap 文件中读取数据来完成。64 位 qword 中的第 55 位是软脏位。如果设置了该位,表示自步骤 1 以来相应的 PTE 已被写入。

在内部实现中,当清除软脏位时,PTE 的可写位也会被清除。因此,在此之后,当任务尝试修改某个虚拟地址处的页面时,会触发页面故障(#PF),内核会在相应的 PTE 上设置软脏位。

需要注意的是,尽管在清除软脏位后,所有任务的地址空间都被标记为只读,但在此之后发生的页面故障会被快速处理。这是因为页面仍然映射到物理内存,因此内核只需发现这一事实,并在 PTE 上设置可写和软脏位。

虽然在大多数情况下,通过页面故障来跟踪内存变化已经足够,但仍存在一种情况会导致丢失软脏位,即任务取消映射先前映射的内存区域,然后在完全相同的位置映射一个新的内存区域。当调用取消映射时,内核会内部清除 PTE 值,包括软脏位。为了通知用户空间应用程序有关这种内存区域的更新,内核总是将新的内存区域(以及扩展的区域)标记为软脏。

这个功能被活跃地用于检查点恢复(checkpoint-restore)项目。您可以在 http://criu.org 上找到更多关于此功能的详细信息。

-- Pavel Emelyanov, 2013 年 4 月 9 日

相关文章
|
2月前
|
缓存 安全 Unix
Unreliable Guide To Locking 【ChatGPT】
Unreliable Guide To Locking 【ChatGPT】
20 10
|
2月前
|
存储 缓存 Linux
Linux下的Cache和TLB刷新 【ChatGPT】
Linux下的Cache和TLB刷新 【ChatGPT】
68 11
|
缓存 前端开发 rax
x86系统cache locking的原理
x86系统cache locking的原理
284 0
|
算法 搜索推荐
Learning algorithem the hard way begining (part 1)
10000 小时法则 根据《异类-不一样的成功启示录》一书中的描述,要想在任何一个领域当中称为专家,都必须经过 10000 小时的刻意练习。具体的方法包括: Chunk it up将待学习的领域切分为细化的知识点。
|
Unix 数据库 关系型数据库
IBM AIX下的lru_file_repage参数解释(转)
      AIX的内核参数的调整对数据库和应用的性能至关重要。一般来说,在部署阶段,我们必须对内核参数做适当的调整,上线以后,也需要对内核的某些参数做出微调。最近,收到一个case,发现errpt里面有大量的”NIM thread blocked”事件,老外抱怨前端应用很慢,通过nmon收集信息,发现有大量的page in/out。
1187 0