Windows
128GB RAM 的頁面錯誤
我正在 AMD opteron 伺服器(4 個 CPU,每個 12 個核心,128GB RAM)上執行一個用於 3D 重建的 CPU 和記憶體密集型應用程序(www.3dsurvey.si,如果相關)。我注意到由於(我相信)頁面錯誤,CPU 沒有按預期使用。我們在處理時每秒會出現 100k+ 頁面錯誤,而記憶體僅使用了 50% 左右。我們得到的平均處理器使用率約為 10%-20%。我還嘗試禁用頁面文件(不建議這樣做),但沒有任何改進且頁面錯誤率相同。軟體通常使用普通 PC 上的所有處理器。
使問題適用於他人
- 為什麼在仍有大量可用 RAM 的情況下出現頁面錯誤?
- 如何減少頁面錯誤的數量?
頁面錯誤可以分為主要錯誤和次要錯誤
當您的程序或其數據被換出到磁碟並且現在需要從磁碟換入時,就會發生重大頁面錯誤。這些故障被標記為“嚴重”,因為與 CPU 速度相比,從磁碟換出/換入/換入磁碟非常慢。由於您有足夠的可用 RAM(大約 50%),並且完全禁用交換並沒有帶來任何性能恢復,我認為您的問題與重大故障無關**。**
當 CPU 嘗試訪問不在其小型、快速 TLB 記憶體中的虛擬記憶體地址時,會發生輕微的頁面錯誤,因此,它必須查找儲存在已知 DRAM 地址中的更大(且更慢)的映射表。當偶爾執行程序和/或訪問大量記憶體時,預計會出現大量次要頁面錯誤。當與非 NUMA 感知程序一起使用時,多插槽 NUMA 拓撲(與您的 Opteron 使用的相同)可能會加劇此問題。
如果您的程序不支持 NUMA,那麼輕微的頁面錯誤可能是您的性能問題的根源。如果是這種情況,要大致了解一下,請嘗試在單插槽電腦上執行程序(或禁用伺服器上除一個插槽以外的所有插槽)並檢查 CPU 使用率是否高於預期。
無論如何,只有生產軟體的軟體公司(或對您的特定程序非常有經驗的人)才能完全回答您的問題。