内存容量饱和和轻微的页面错误



在USE Method: Linux Performance Checklist中提到

目标是内存容量饱和的度量——进程驱动系统超出其能力的程度(并导致分页/交换)。[…另一个可能达到类似目标的指标是按进程划分的小故障率,可以从/proc/pid/stat查看。

我不确定我是否理解小故障与内存饱和有什么关系。

引用维基百科

如果该页面在故障产生时已加载到内存中,但没有在内存管理单元中标记为已加载到内存中,则称为轻微或软页面故障.

认为这本书指的是以下操作系统行为,这些行为可能会使软页面错误随着内存压力的增加而增加。但是软页面故障还有其他原因(使用mmap(MAP_ANONYMOUS)分配新页面,然后再次释放它们;每次新页面的首次接触都会导致软页面故障,尽管对于一组连续页面的故障修复可以在迭代新的大分配时将其减少到每N个页面一个故障。


当接近内存压力限制时,Linux(像许多其他操作系统一样)将断开HW页表中的页面连接,以查看是否很快发生软页面故障。如果没有,那么它可能会从内存中驱逐该页1

但是如果它在被驱逐之前发生了软页错误,内核只需要将它连接回页表,就可以保存一个硬页错误。(以及I/O首先将其写出来)

Footnote 1:如果数据是脏的,将其写入磁盘,如果不是匿名的,可以在交换空间或文件支持的映射中;否则就丢掉它。内核可以启动这个磁盘I/O,同时等待查看它是否出现故障;IDK是否Linux做这个

最新更新