软脏(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 日

相关文章
|
1月前
|
机器学习/深度学习 存储 开发框架
【博士每天一篇文献-算法】NICE Neurogenesis Inspired Contextual Encoding for Replay-free Class Incremental Learn
NICE(Neurogenesis Inspired Contextual Encoding)是一种新型深度神经网络架构,旨在通过模拟生物神经系统的成熟过程来解决类别增量学习中的灾难性遗忘问题,无需重放旧样本即可实现有效的增量学习。
32 5
[paddle]多卡训练bug记录,ABORT,,,Out of all 4 trainers
[paddle]多卡训练bug记录,ABORT,,,Out of all 4 trainers
[paddle]多卡训练bug记录,ABORT,,,Out of all 4 trainers
|
存储 算法 关系型数据库
PostgreSQL 垃圾回收参数优化之 - maintenance_work_mem , autovacuum_work_mem
PostgreSQL 垃圾回收参数优化之 - maintenance_work_mem , autovacuum_work_mem
3480 1
|
存储 BI 数据库
Entgo 实现 软删除(Soft Delete)
软删除(Soft Delete)这种删除方式并不是真正地从数据库中把记录删除,而是通过特定的标记方式在查询的时候将此记录过滤掉。虽然数据在界面上已经看不见,但是数据库还是存在的。
1627 1
|
存储 缓存 并行计算
密码学系列之:memory-hard函数
密码学系列之:memory-hard函数
密码学系列之:memory-hard函数
|
存储 Java
小师妹学JVM之:Dirty cards和PLAB
小师妹学JVM之:Dirty cards和PLAB
小师妹学JVM之:Dirty cards和PLAB
|
机器学习/深度学习 算法 计算机视觉
一文详解SVM的Soft-Margin机制
一文详解SVM的Soft-Margin机制
442 0
一文详解SVM的Soft-Margin机制
|
C# C语言