微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决内存容量饱和和轻微页面错误

USE Method: Linux Performance Checklist中提到

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

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

引用维基百科以供参考

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

解决方法

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


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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。