與此問題相關:Perfmon“% Processor Time”計數器如何超過 100%?
當使用者回報問題並且 Oracle 進程在持續一段時間(5-15 分鐘)內使用 80%-95% 時,我正在任務管理器中手動觀察進程。
因此,過去幾天我一直在使用 perfmon 來追蹤該進程,並注意到它在短時間內超過 100%,因此顯然在 perfmon 中它是所有處理器的總數。
我的問題是,我在任務管理器中看到的 80-95% 實際上對應於 perfmon 中的 160-180%,對吧?
(顯然考慮到某些進程可能無法有效地使用所有處理器)。
工作管理員顯示 CPU 使用率為 80-95%:
對於單一進程對象,Perf Monitor 的峰值可能會超過 100%:
答案1
在多處理器系統上,對於任何特定處理器或線程,系統監視器報告的 Processor\% Processor Time 值永遠不會超過 100%。
另一方面,為 Process 物件報告的 % Processor Time 值可以報告超過 100% 的值;如果出現此類值,則可能表示進程的執行緒累計使用了超過 100% 的處理器。
它基本上是說,當檢查一個進程(具有多個執行路徑)時,如果有多個核心同時運行程式碼,您會發現超過 100%。進程有多個可用核心,並且可以選擇在其中幾個核心上運行。
另一方面,如果檢查 CPU 線程,您永遠不會看到高於 100% 的值,因為這是正在測量的實際資源。 CPU 執行緒是 Microsoft 對 CPU 核心的稱呼:支援 HT 的核心中有兩個執行緒。