最近接了一个项目,分析内存的时候发现 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
@Lihuazhang @seveniruby @chenhengjie123
确实没有关联关系。只不过软缺页指标太高了,八成是有问题