2013-03-11 39 views
3

我給過這個問題這個計算CPU利用率的公式是如何工作的?

考慮一個系統運行10個I/O綁定任務和一個CpU綁定任務。假定每毫秒的CPU計算髮生一次I/O限制任務和I/O操作,並且每個I/O操作需要10毫秒才能完成。同時假設上下文切換開銷爲.1毫秒,並且所有進程都是長時間運行的任務。描述以下情況時輪轉調度程序的CPU利用率:

a。時間量程爲1毫秒

b。時間量爲10毫秒

,我發現答案爲它

時間量爲1毫秒:無論哪個的過程被調度時,在 調度招致對每個上下文切換一個0.1毫秒上下文轉換成本。 這會導致CPU使用率爲1/1.1 * 100 = 91%。

時間量程爲10毫秒:I/O限制任務在使用時間量程僅爲1毫秒後會產生上下文切換 。因此,通過所有進程循環執行 所需的時間爲10 * 1.1 + 10.1(因爲每個I/O限制任務 會執行1毫秒,然後執行上下文切換任務,而CPU- 限制任務會在執行10毫秒之前執行引起上下文切換)。因此CPU使用率爲20/21.1 * 100 = 94%。

我唯一的問題是這個人怎麼得到CPU利用率的公式?我看不出他/她得到的數字是20/21.1 * 100 = 94%,1/1.1 * 100 = 91%。

回答

5

對於第一種情況,每個任務使用1毫秒做功和1毫秒切換;因此,它每1.1毫秒花費1個工作。

對於第二種情況,情況類似:在完成所有任務所耗費的21.1毫秒中,只有20個做了實際工作。

+1

感謝您的澄清,我知道我錯過了一些東西。 – 2013-03-11 02:58:00

0

我經歷了同樣的問題。這是我的理解方式 在第一種情況下,當時間量程爲1毫秒時,如果我們考慮甘特圖,所有I/O限制過程將會出現(讓我們調用p1-p10),然後是CPU限制的p11。所以總共10個上下文切換在11毫秒內。 CPU在11毫秒內完成的有效工作僅爲11-(10 * .1毫秒),即10毫秒。因此CPU利用率是(10/11)* 100 = 90%

同樣的方式,第二種情況下,如果我考慮20.1毫秒的時間,將會有11個交換機(最後一個是CPU綁定進程)。所以CPU工作的有效時間是20.1-(11 * .1)= 19ms。所以CPU利用率(19/20.1)* 100 = 94%

0

由於某種原因,我對這個問題感到困惑......在查看所有答案後,我終於明白了通過仔細觀察玉誠鏈接由另一個用戶給出。在書中沒有找到我可以找到的公式(可能我錯過了它),但這裏是我的答案版本,採用了一種僞公式風格:

警告:這可能是錯誤的,但也許你可以顯示我出錯的地方。

一個)

[(10 I/O過程)(1毫秒)+(1個CPU處理)(1毫秒)]/[(10 I/O過程)(1毫秒)+(1個CPU處理)(1毫秒)+(10上下文切換)*(0.1毫秒)] = 10/11 = 91%

b)

[(10 I/O過程)(1毫秒)+(1 CPU處理)(10ms)]/[(10個I/O進程)(1ms)+(1個CPU進程)(10ms)+(10個上下文s女巫)*(0.1ms)] = 20/21 = 95%