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

问题描述

USE Method: Linux Performance Checklist中提到

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

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

引用维基百科以供参考

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

解决方法

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


当接近内存压力限制时,Linux(像许多其他操作系统一样)将取消连接硬件页表中的一个页面,以查看是否很快就会发生软页面错误。如果不是,那么它实际上可能会从内存中驱逐该页面1

但是如果它在被驱逐之前执行了软页面错误,内核只需将它重新连接到页表,从而保存了一个硬页面错误。 (以及首先将其写出的 I/O。)

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...