Windows
Windows 中 Opteron 6272 上的 CPU 節流
我正在嘗試在我的新 HP Proliant 伺服器上對多執行緒應用程序進行基準測試,該伺服器具有 2x Opteron 6272 和 64gb 記憶體。
當我在台式機(一系列 i7s 和 Xeon X5675 處理器)上執行應用程序時,應用程序將導致所有核心的使用率接近 100%。
當我在伺服器上執行應用程序時,無論我執行多少執行緒,應用程序的總 cpu 使用率都徘徊在 20-25% 左右。也就是說,如果我使用 32 個執行緒執行,所有 32 個核心將掛起大約 20%,如果我執行 16 個執行緒,它們將掛起大約 40%,依此類推。
- 起初我懷疑這與作業系統有關,所以我在伺服器上安裝了 Windows 7,以便桌面和伺服器具有相同的作業系統。
- 然後我懷疑是硬體問題,我把bios裡的電源管理改成了High Performance。儘管這確實增加了基準測試時間,但同樣的 20% 使用率問題仍然存在。
- 我可以使用 y-cruncher 基準測試以 100% 的速度獲得所有 32 個核心。我的自定義基準測試是用 .NET 編寫的,這可能與它有關嗎?
我對這個問題感到困惑。任何人都知道可能導致這種情況的原因嗎?
如果您的應用正在處理大量數據,請嘗試遵循數據的路徑 - 如果輸入數據來自網路,請檢查可能的延遲、頻寬限製或傳輸錯誤。您已經檢查了磁碟 I/O,否則可能會成為瓶頸。
最後但同樣重要的是,由於它是一個高度多執行緒的 .NET 應用程序,您應該確保使用了伺服器垃圾收集,否則您可能會看到堆棧溢出這篇文章中描述的奇怪的負載特徵。