目录
PAGE_SOFT_DIRTY 原理
PAGE_SOFT_DIRTY 的应用
PAGE_SOFT_DIRTY 使用场景
PAGE_SOFT_DIRTY 原理
在 Linux 页表里存在这样一个标志位 PAGE_SOFT_DIRTY, 用于跟踪自上次清除以来哪些页已被写入。这个标志的主要用途是为了更好地支持增量检查点和内存页面的快照。这对于某些形式的虚拟化技术、用户态检查点/恢复工具(如 CRIU,即 Checkpoint/Restore In Userspace)以及某些类型的性能监视工具来说非常有用. 具体来说,PAGE_SOFT_DIRTY 使得系统能够跟踪页面在上次清理后是否被修改过,而不必不断地重置硬件页表条目的脏位。当页面被写入时,脏位会在硬件级别被设置,通常需要在页面被备份或清理时被重置。但是这个硬件脏位的重置可能会导致性能问题,因为它要求页表条目的更新.
PAGE_SOFT_DIRTY 标志位可能在不同的硬件架构的位置不同,但 Linux 为了屏蔽硬件差异,统一使用 _PAGE_SOFT_DIRTY 标志位表示. 例如在 X86/I386 中 PAGE_SOFT_DIRTY 位于页表的 BIT11.