前軟件工程師、Windows 原版任務管理器開發者 Dave Plummer 在網上揭秘:Windows 任務管理器顯示的 CPU 使用率並非實時數據,而是定時更新的週期平均值。Plummer 曾參與 Windows ZIP 檔案支援和 Windows NT 開始選單等標誌性項目,他親自打造了初版任務管理器。為了確保工具不浪費系統資源,他從編程和工程角度將這款工具設計得極為簡潔,使其能在 90 年代的電腦上順暢運作。
但正是這種極簡設計,埋下了數值不準的隱患。 Plummer 表示,任務管理器的更新由計時器驅動,每隔一段時間抓取一次數據,它顯示的是兩次更新間隔內 CPU 的統計情況,並非真實時別的負載。如果單純用 CPU 使用時長除以更新間隔,結果會非常依賴圖形使用者界面的計時器精度。他打個比方:這就像把節拍器放在賽車後鬥裡,在顛簸土路行駛,想讓它保持絕對穩定根本不可能。
因此,他採用了更嚴格的算法:讓任務管理器記錄每個進程自啟動以來的總運行時間(核心時間 + 使用者時間),用當前值減去上次更新的總值,得該進程在間隔期內的 CPU 消耗,再除以所有進程在該期間的總 CPU 耗時。
CPU 使用率計算的演進挑戰
這套方法看似十分複雜,但比直接除法精準得多。然而,技術的演進讓這套算法顯得力不從心。現代 CPU 支援動態調頻、休眠超頻、溫控降頻和深度休眠,讓 CPU 時間使用與實際完成工作量脫鉤,單一百分比無法完整反映處理器工作狀態。Plummer 指出,過去的 CPU 使用時間能很好反映工作量,但現在兩者關聯已非常鬆散。他認為理想的 CPU 使用率應衡量實際完成工作量與理論最大完成工作量的比率,但自己已從Microsoft退休,無法推動改變。
📬 免費訂閱 TechRitual 科技精選
每 3 日由 AI 精選 5 篇最重要香港科技新聞,直送你信箱
或者


