问答 Minor Page Fault 为什么这么高?

飞天小子的性能课堂 · 2020年10月08日 · 最后由 飞天小子的性能课堂 回复于 2020年10月09日 · 4940 次阅读

提问

最近接了一个项目,分析内存的时候发现 Minor Page Fault(软缺页)特别高,最高到了 27000 多。
软缺页是不走 IO 的,所以会是什么原因呢?百思不得其解

linux 上也能看到,完全没有 Major Page Fault(硬缺页)

各位大神给点思路,拜托

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
最佳回复

必应找到两篇文章,介绍软缺页以及 linux 内存管理机制的,不知道是否可以解答?
https://liam.page/2017/09/01/page-fault/
https://blog.csdn.net/wangquan1992/article/details/105036282

对于标题的软缺页为何高,可以参考下第二篇文章里的一些解答,仅供参考,我目前也还没遇到过这方面的问题,没深入研究过。另外,硬缺页不高和软缺页高不高,个人理解应该没有关联关系(一个只需要建立映射,另一个还需要挪数据位置)?不明白为何楼主分析会关注硬缺页的数据。

minor page fault 也称为 soft page fault, 指需要访问的内存不在虚拟地址空间,但是在物理内存中,只需要 MMU 建立物理内存和虚拟地址空间的映射关系即可。
当一个进程在调用 malloc 获取虚拟空间地址后,首次访问该地址会发生一次 soft page fault。
通常是多个进程访问同一个共享内存中的数据,可能某些进程还没有建立起映射关系,所以访问时会出现 soft page fault

共收到 3 条回复 时间 点赞

必应找到两篇文章,介绍软缺页以及 linux 内存管理机制的,不知道是否可以解答?
https://liam.page/2017/09/01/page-fault/
https://blog.csdn.net/wangquan1992/article/details/105036282

对于标题的软缺页为何高,可以参考下第二篇文章里的一些解答,仅供参考,我目前也还没遇到过这方面的问题,没深入研究过。另外,硬缺页不高和软缺页高不高,个人理解应该没有关联关系(一个只需要建立映射,另一个还需要挪数据位置)?不明白为何楼主分析会关注硬缺页的数据。

minor page fault 也称为 soft page fault, 指需要访问的内存不在虚拟地址空间,但是在物理内存中,只需要 MMU 建立物理内存和虚拟地址空间的映射关系即可。
当一个进程在调用 malloc 获取虚拟空间地址后,首次访问该地址会发生一次 soft page fault。
通常是多个进程访问同一个共享内存中的数据,可能某些进程还没有建立起映射关系,所以访问时会出现 soft page fault

确实没有关联关系。只不过软缺页指标太高了,八成是有问题

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册