我在AMD opteron服务器(4cpu,每个12核,128GB RAM)上运行cpu和内存繁重的3D重建应用程序(如果相关,则为www.3dsurvey.si).我注意到由于(我认为)页面错误导致cpu未按预期使用.处理时我们每秒会产生100k页面错误,而内存只占50%左右.我们获得的平均处理器利用率约为10%-20%.我还尝试禁用页面文件(未经修改),没有任何改进和相同的页面错误率.软件通常使用普通PC上的所有处理器.
提出适用于他人的问题
页面错误可分为主要和次要错误
原文链接:https://www.f2er.com/windows/366947.html当您的程序或其数据被换出到磁盘并且现在需要从磁盘交换时,会发生主要页面错误.这些故障被标记为“主要”,因为与cpu速度相比,从磁盘进行交换/从磁盘进行交换是非常慢的.由于你有足够的可用内存(大约50%),并且完全禁用交换没有带来任何性能,我认为你的问题与主要故障无关.
当cpu尝试访问不在其小型,快速TLB高速缓存中的虚拟内存地址时会发生次要页面错误,并且结果是,它必须查找存储在已知DRAM地址中的更大(和更慢)的映射表.偶尔运行程序和/或访问大量内存时,预计会出现大量的次要页面错误.当与非NUMA感知程序一起使用时,多插槽NUMA拓扑(与Opteron相同)会加剧此问题.
如果您的程序不支持NUMA,则次要页面错误可能是您性能问题的根源.要大致了解是否是这种情况,请尝试在单插槽机器上运行程序(或禁用服务器上除一个插槽外的所有插槽)并检查cpu使用率是否高于预期.
无论如何,只有生产软件的软件公司(或者对您的特定程序非常有经验的人)才能完全回答您的问题.