128GB内存的页面错误

我在AMD opteron服务器(4CPU,每个12个核心,128GB RAM)上运行一个CPU和内存大量的3D重build应用程序(如果相关的话需要www.3dsurvey.si)。 我注意到,由于(我相信)页面错误,CPU没有按预期使用。 处理时每秒处理100k以上的页面错误,而内存使用率只有50%左右。 平均处理器利用率约为10%-20%。 我也尝试禁用页面文件(这是没有改进的),没有改善和相同的页面错误率。 软件通常使用普通PC上的所有处理器。

使问题适用于他人

  • 为什么我们有大量内存仍然可用的页面错误?
  • 如何减less页面错误的数量?

页面错误可以分为主要次要错误

当您的程序或其数据被换出到磁盘并且现在需要磁盘换入时,发生重大页面故障。 这些故障被标记为“主要”,因为与CPU速度相比,从磁盘换出/从磁盘取出非常慢。 由于您拥有大量的可用内存(大约50%),并且禁用交换完全不会带来任何性能,所以我认为您的问题与重大故障无关。

当CPU尝试访问不在其小的快速TLB高速caching中的虚拟存储器地址时,发生轻微页面​​错误,结果,它必须查找存储在已知DRAM地址中的较大(较慢)的映射表。 偶尔运行程序和/或访问大量内存时,预计会出现大量小页面错误。 与非NUMA感知的程序一起使用时,可能会由多插槽NUMA拓扑(与Opteron相同)来加剧此问题。

如果您的程序不支持NUMA, 小页面错误可能是您的性能问题的根源。 如果出现这种情况,大致了解一下,尝试在单插槽机器上运行程序(或者在服务器上禁用所有的插槽),然后检查CPU使用率是否高于预期。

无论如何,只有生产该软件的软件公司才能完全回答你的问题。