128GB RAM 的页面错误

mit*_*jap 3 windows pagefile

我正在 AMD opteron 服务器(4 个 CPU,每个 12 核,128GB RAM)上运行 CPU 和内存繁重的应用程序,用于 3D 重建(www.3dsurvey.si,如果相关)。我注意到由于(我认为)页面错误,CPU 没有按预期使用。我们在处理时每秒出现 100k+ 个页面错误,而内存仅使用了 50% 左右。我们获得的平均处理器利用率约为 10%-20%。我还尝试禁用页面文件(这是不建议的),但没有改进并且页面错误率相同。软件通常使用普通 PC 上的所有处理器。

使问题适用于其他人

  • 为什么在仍有大量 RAM 可用的情况下会出现页面错误?
  • 如何减少缺页次数?

sho*_*hok 8

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

当您的程序或其数据被换出到磁盘,现在需要磁盘换入时,就会发生主要页面错误。这些故障被标记为“主要”,因为与 CPU 速度相比,从磁盘换出/换入/从磁盘换出非常慢。当你有足够的可用内存(约50%),以及禁用交换完全没有带来任何性能回来了,我觉得你的问题是相关的重大故障。

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

如果您的程序不支持 NUMA,那么次要页面错误可能是您的性能问题的根源。如果是这种情况,要大致了解一下,请尝试在单插槽计算机上运行该程序(或禁用服务器上除一个插槽之外的所有插槽)并检查 CPU 使用率是否高于预期。

无论如何,只有生产软件的软件公司(或对您的特定程序非常有经验的人)才能完全回答您的问题。