最近准备项目上线,做了大量的压测工作,发现了在有些机器上会出现大量的页面错误,这些错误会导致内存中断。
然而实际的测试数据来看,分两种情况,有大量中断不影响性能和有大量中断影响性能。
经过调查发现:大部分的文章中只提及的page fault会导致系统从硬盘中获取内存,导致效率下降。
而实际上内存中断分为软中断和硬中断。
软中断:内存实际还在物理内存中,但是已经移出working set。只需从standby list中重新获取该内存页。速度较快,基本不影响性能
硬中断:内存不在物理内存中,需要从硬盘的page file中读取对应的内存页,这个是需要硬盘I/O,对性能影响较大。
我们可以通过任务管理和资源监视器中查看对应的信息。
任务管理器
资源监视器
通过这两个工具观察,因为页面错误不断增加,而硬中断一直是0,新增的页面错误触发的都是软中断。
参考文章:
https://blogs.msdn.microsoft.com/ntdebugging/2007/10/10/the-memory-shell-game/