2009-11-03 34 views
1

在C#中,有沒有一種方法可以讓程序簡單地「吃」大約20%的處理能力?換句話說,我希望我的CPU以80%的功耗運行。飲食處理能力

回答

3

快速背景微秒,毫秒或依賴秒:在現實中CPU是忙或沒有,100%或0%。操作系統只是在短時間內進行平均運行,讓您知道CPU的運行頻率。

,如果你想爲一個特定的核心做到這一點你沒有指定,或者在所有CPU核心的平均...我將描述後者 - 你需要在1個線程中運行該代碼每一個核心。

查看System.Diagnostics命名空間並查找性能計數器。

protected PerformanceCounter cpuCounter; 

cpuCounter = new PerformanceCounter(); 

cpuCounter.CategoryName = "Processor"; 
cpuCounter.CounterName = "% Processor Time"; 
cpuCounter.InstanceName = "_Total"; 

我可能會附加到「處理器」性能計數器(總計,不是每個核心)。您可能還想在代碼中保持較短的運行平均值。

在for循環中,檢查處理器使用情況的值,並取決於它是否接近您的閾值,睡眠的時間間隔更長或更短......(您可能會增加或減少睡眠延遲,具體取決於如何遠離你是從理想的負載)

如果你正在運行的平均值,您的睡眠遞增/遞減值正確,程序應該對自身進行調整,以獲得正確的負荷。

1

好了,你可以與切換爲後2毫秒8毫秒的休眠功能的定時器無限循環。這不是「真正的20%」,但沒有「真正的20%」這樣的東西。你會在20%的時間內忙碌。

請注意,如果您擁有多核心CPU,您將需要一個線程每個核心可能使它忙的所有核心,以20%的CPU;也許加倍針對超線程......(你需要檢查)

3

不完全使用C#,但如果你想設置你的CPU只使用80%可在windows電源選項進行設置。

alt text http://img43.imageshack.us/img43/7487/poweroptions.jpg

+0

這將讓你的CPU下降到80%的好辦法,但我認爲它可能有比較略有不同的效果,更直接的方式。如從未造成理論程序入睡。 – Guvante

+0

我不認爲這是適用於所有電腦.. – Earlz

+0

@earlz它應該在Vista和Win7。不知道XP。 – statenjason

2

步驟1:只要步驟1了睡眠4次:運行一個CPU密集環路定時需要多長時間運行
步驟2。
重複

您可以調整第一步採取什麼類型的測量你正在做