讓Windows7 cpu佔有率100%的分析

   之前在微軟的《編程之美》中有道題目大概是“控制任務管理器中cpu的曲線”,也就是根據自己的意願來控制cpu的佔有率。而我今天只想說的是如何讓cpu佔有率爲100%。

   首先,我寫了如下程序:

void main()
{	
	while(true)
	{	
		int n = 10;
	}
}

   也就是執行一個死循環,讓cpu沒有空閒,理論上說cpu的佔有率就應該是100%。

   當我打開windows任務管理器,查看cpu佔有率,圖如下:


    很明顯cpu佔有率只有30%左右,跟理想情況100%差別很大。

    後來我發現cpu使用記錄中有四幅cpu的曲線圖,以前從來沒有認真去看過,這四幅圖是什麼意思。在網上查了,才知道這四幅圖分別表示cpu0、cpu1、cpu2、cpu3的使用記錄。也就說我電腦上有4個cpu。我看了一下電腦的配置,雙核。這就對了,每個核可以虛擬出兩個cpu,總共四個cpu。

    再回到程序,這個線程雖然是一直忙的,但是它可能被不同的cpu調度。如果時間片平均在每個cpu上,並且假設每個cpu性能一樣,那麼該線程在每個cpu上的佔有率應該爲25%,再加上其他程序的佔有率,接近30%,差不多。

    那麼如何是該程序只運行在一個cpu上呢?可以在程序中設定。但是我們選擇更簡單的方法,在任務管理器中設置。如下圖:

   選擇你的進程,鼠標右鍵,選擇設置相關性。

 

  從這裏可以選擇cpu,注意選擇cpu以後不要重啓程序,直接去性能窗口看cpu即可。

  我只選擇cpu0,然後再觀察cpu佔有率,發現cpu0的佔有率爲100%,跟預想情況一樣了。

 

  總結:現在單個cpu的計算機已經很少了,就算是單核,多半會虛擬出兩個cpu。通過該例子,可以大致理解,線程被多cpu調度的情況。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章