2010-08-12 51 views
0

我一直在和一位同事進行辯論,他們建議我們允許我們企業中的一些cpu密集型進程在CPU使用率較低時輪詢CPU使用率並執行其任務。我的反例是,雖然理想系統中的CPU使用率表示在給定服務器上系統活動的水平,但實際上它在實際系統中具有太多的不一致性(短時間內的高峯和低谷)是一個有效的指標什麼時候應該運行一個cpu密集型進程。此外,我還表示操作系統旨在管理線程和應用程序之間的處理器爭用。我的建議只是簡單地在下班後進行流程,以避免在白天降低用戶體驗。正在使用處理器使用情況來自動調度流程是一種好的做法嗎?

我的問題是,cpu的使用情況可以作爲流程何時在企業環境中運行的有效指標?這將是一個很好的知道,如果我是正確的,有點正確,或只是不正確...

編輯:這些應用程序是.NET服務以及SQL Server計劃的工作。

回答

2

不,它不是(所以是的,你是正確的)。

有很多方法,這可能會造成問題,把我的頭頂部:

  • 操作系統正試圖平衡 資源分配。爲了執行 ,它具有調度算法 ,其使用當前資源使用情況的視圖。你所描述的是 運行第二個調度算法 ,這將與第一個 (OS調度程序)通過分配 CPU進行鬥爭。這會造成奇怪的反饋 影響。

  • 僅使用進程使用情況不會將 考慮在內的其他資源,如 內存。當一個進程運行時, 不僅僅通過使用處理器週期顯示其他進程 。它的 工作集的數據正在與 其他進程保持在內存 和交換。如果您因爲未使用CPU 而導致您的數據 被分頁,因此您可以認真 降低其他進程的性能(和延遲 ,尤其是其他進程的性能) 。

  • 爲什麼要重新發明輪子?這就是發明空閒處理的優先級/ 。如果 您只想讓您的進程佔用 後臺CPU,然後將其設置爲最低優先級 ,並允許操作系統對其進行調度。

+0

它不一定需要*最低*優先級,只要一步就足夠了,如果它是你想要做的工作(就在其他事情之後)。有些事情真的是背景:他們應該有更低的優先級。 – Richard 2010-08-12 14:49:12

+0

Achilles描述的用途是背景。你認爲什麼是低優先級? – Amoss 2010-08-12 19:33:32

相關問題