我目前正在对服务器进行性能分析,发现应用程序每秒生成大量页面错误。检查页面读取次数/秒后,似乎这些都是软页面错误,而不是硬页面错误(没有磁盘活动)。
然后我在网上看到,大多数现代 CPU 可以处理大量的软页面错误,但我找不到大量的数字是多少......这个应用程序每秒的页面错误数量在 3000 到 7000 以上。
那么,对于每秒这么多的软页面错误,我需要担心吗?
这种级别的错误是否会对性能产生明显的影响?
我可以做些什么来优化它吗?
提前致谢
答案1
根据您提供的事实,我认为所提及的应用程序正在进行快速内存分配(例如 malloc() )。它似乎分配了一个块,可能释放了它,然后再次分配。通常,内存分配器会将释放的内存块保留在缓存中,但在您的情况下,可能是它被强制释放。
我认为您在这里能做的事情不多,因为我们处理的是应用程序行为,而不是内核或其他方面。但是,我认为可以使用不同的内存分配器来改变这种情况。尝试谷歌搜索“内存分配器”。例如,在 Linux 中,默认内存分配器是 ptmalloc。替代方案的示例如下:http://goog-perftools.sourceforge.net/doc/tcmalloc.html