使用「空閒」CPU 時間仍然會減慢其他程式的速度

使用「空閒」CPU 時間仍然會減慢其他程式的速度

之前,當我運行Folding@Home 用戶端時,現在使用BOINC 時,它們總是使用「空閒」CPU 時間(對於那些不熟悉這些程式的人來說,它們在電腦上運行大量的科學計算,因此非常密集)。然而我注意到,在 Windows 和 Linux 中嘗試做其他事情(Firefox、Netbeans 程式設計等)時,所有這些程式都非常緩慢。

現在我知道你可以做一些事情,例如只在2 或3 核上運行客戶端(假設是4 核系統),但我更感興趣的是為什麼這個「空閒」CPU 時間會導致具有正常優先級的程序變慢。具有正常優先權的進程是否會先於具有空閒優先權的進程運行,並在必要時中斷它?為什麼作業系統很難管理這個?

答案1

這些程式並不是在「空閒」CPU 時間內真正運行,而是作為低優先權進程運行。當作業系統運行多個應用程式時,它使用進程調度程序來確定哪些進程可以存取 CPU 以及存取頻率。這稱為搶佔式多工處理。

調度程序使用進程優先權來決定哪些進程可以存取 CPU。普通優先權進程在調度程序中的優先權高於空閒優先權進程,但 CPU 仍在使用中,並且執行緒和進程之間的上下文切換會產生一些開銷。

由於 CPU 現在始終以 100% 的速度運行,而不具有可用的空閒週期,因此不難想像,由於執行緒切換開銷,某些進程和中斷可能比 CPU 空閒時花費的時間更長。

其中一些程式可以選擇在電腦使用時實際停止運行其進程。他們透過偵測滑鼠或鍵盤活動來實現這一點,並在一段時間內禁用自己,直到確定電腦再次空閒,此時他們將重新啟動。我建議看看這個選項。

另一件需要指出的事情是,CPU 空閒時使用的電量明顯低於完全使用時的電力。因此,當您的程式使用「備用」CPU 週期時,它們很容易使 PC 的功耗增加一倍,每月花費您幾美元的電費。

答案2

我只需在克里斯湯普森的回答中添加一些小東西,他已經說了主要部分。

電力消耗和對電費的影響確實很大,只是再強調一下。其他程式可能受到額外的低優先權執行緒影響的原因可能是更改進程時的額外工作(快取和暫存器現在實際上正在使用)。 I/O 操作也確實會產生一些影響。這些程式的大部分工作只是 CPU 密集型的,並且可能受到進程優先權的影響,但額外的 I/O 很難確定優先權。額外的記憶體使用也會降低系統速度。如果您的記憶體已滿,交換可能會顯著降低系統效能。

詳細說明功耗:我發現 Intel Core i7 Extreme Edition 在重負載下的實際功耗約為 300 瓦。較新的英特爾酷睿處理器具有一些非常好的節能功能,甚至允許 CPU 在不同核心空閒時切斷其電源。所以我想如果你總是運行這樣的程序,你可以多使用 150 到 200 瓦。 (我發現的舊數字顯示150+ 瓦的差異)但由於我還沒有找到可靠的數字,讓我們假設您多使用100 瓦(不要忘記,如果您的CPU 產生更多熱量,您的冷卻系統也必須工作更多) - 如果您的 PC 全天候 (24/7) 運行,則 100*24*30 = 72 千瓦時/月或 864 千瓦時/年。

相關內容