讀懂Windows的系統資訊

來源:互聯網
上載者:User

奇怪,在我的電腦上第一次開啟Visual Studio 2010要8秒左右,而關掉後再次開啟,則只要2秒左右, 這是為什嗎?

好吧,你肯定知道是Windows在背後搞的鬼,你甚至知道我們分別把他們叫做冷啟動(cold start)和暖開機(warm start), 可是Windows到底做了什麼而產生如此大的區別呢?

工作管理員幾乎每天都在用,可是其"效能"那一頁的內容未必全看的懂;Process explorer也常在看,可是其系統資訊(system information)那個框框裡的東西卻未必認得全。花了些時間把這些概念理了理,總結一下。相信看完這些,對剛才那個問題會有比較清晰的解答。

 

雖然這個對話方塊名字為"系統資訊",但其主要包含的還是系統的一些績效參數,如記憶體,CPU, I/O之類的。從上到下,從左至右一共10大類,我們一個一個加以解讀吧。

  1. CPU Usage
    CPU總使用率。在右邊CPU Usage History中可以看到其使用曆史,我們可以注意到有兩條線:紅的那條量比較小的是核心的使用率,而綠色的則表示總的使用率。如果你的系統時不時的卡一下,通過查看每個進程的使用率又因為太快而捕捉不到,看看曆史,把滑鼠移到之前某個波峰上,就會跳出個tooltip,誰在搗鬼自然一目瞭然。
    當然,如果是多核的機器,可以把最下面那個"Show one graph per CPU"勾上查看單個核的使用方式。

  2. Commit
    虛擬記憶體的"認可用量"。這是工作管理員的翻譯。如果我們把在實體記憶體中的所有可交換到pagefile的內容強制交換出去,此時pagefile中總的內容,就是Commit的大小。這就是為什麼工作管理員也把Commit稱為Page File使用率(page file的有效內容/page file檔案大小)的原因。對於當前系統來講,其大小為已經寫到page file上的內容,加上還在實體記憶體中的可以寫到page file中去的內容。
    "Commit"或者"認可用量"這個名字聽起來不是很直觀,但我們知道有個叫VirtualAlloc的API分配記憶體的時候,我們可以指定記憶體的類型,常用的兩種是MEM_COMMIT和MEM_RESERVE, 我們看出來這裡Commit其實就是指以MEM_COMMIT的方式分配的記憶體。
    會被交換到pagefile的記憶體包括private bytes, paged pool等,不會被交換到page file的記憶體包括記憶體對應檔(他們會被交換到對應可執行檔)和nonpaged pool或者系統核心,驅動(常駐記憶體)。
     
  3. I/O Bytes
    系統的輸入輸出情況。包括檔案、網路和裝置(滑鼠、鍵盤等)的活動。讀寫檔案是最常見的一種I/O。右邊曆史視窗中,藍色的表示讀寫的總量,而粉紅色的表示寫的量。和CPU的使用率一樣,我們可以對之前哪些進程進行了大量讀寫一目瞭然。一般情況下,粉紅的那條線是"貼地而行"的,但你可以通過copy-paste上百兆的檔案(avi或者rmvb等)觀察到粉紅線的突然上升。

  4. Physical
    實體記憶體使用量。

  5. Totals
    系統中控制代碼,線程,進程的總數量。
    這裡控制代碼(Handle)是指向作業系統的一個引用,如HWND,HMENU,HDC等等。你可以把其簡單的看成指向系統的某塊記憶體,當然,實際情況會比這個複雜。

  6. Commit Charge(k)
    這個就是第二項所介紹的Commit,只不過除了即時的認可用量,還提供了更多的關於Commit Charge的資訊:。

    Current: 當前的Commit Charge大小
    Limit: Commit Charge的最大可能值,一般為:分頁檔大小 + 實體記憶體大小 - 常駐實體記憶體的內容(nonpaged pool, system core等等)
    Peak: 自系統啟動以來有過的最大的Commit Charge大小。
    Peak/Limit,Current/Limit兩個資料的意義不言自明,當Current/Limit的值接近100%時,你的系統就會非常非常的慢。
    這個概念在Wiki上也有很不錯的解釋:Commit Charge.

  7. Physical memory(k)
    實體記憶體的使用方式。

    Total:總實體記憶體量
    Available:可用實體記憶體,包括free page list, zero page list和standby page list,在第四項看到的實體記憶體使用量,加上這裡的可用實體記憶體,自然就是總實體記憶體量。
    System Cache:包括Cache Bytes(System's working set)和standby page list.

    Standby page list是可用實體記憶體,當free page list和zero page list用完後,就會開始破壞cache使用它。Standby page list同時也是cache,它是磁碟內容在實體記憶體的緩衝,當再次訪問到該內容時,可以從實體記憶體cache中直接拿到從而避免了讀取磁碟。

  8. Kernel Memory(k)
    核心記憶體。核心下使用的記憶體包含兩個非常重要的概念:paged pool和nonpaged pool。核心分配記憶體就是通過這兩個記憶體池的。正如其名字所表示的,paged pool上的記憶體是可以被交換到page file的,而nonpaged pool上的記憶體是常駐實體記憶體的,是永遠也不會被交換到pagefile上去的。

    Paged Physical: paged pool所分配的記憶體在實體記憶體上大小。
    Paged Virtual: paged pool所分配的總記憶體大小。
    Paged Limit:paged pool的最大值,在註冊表中可以設定。
    Nonpaged: nonpaged pool上所分配的記憶體的大小,也就是實體記憶體的大小。
    Nonpaged Limit:nonpaged pool的最大值,在註冊表中可以設定。
    這裡page limit和nonpaged limit的內容需要設定系統符號檔案才能正確顯示:Option|Configure Symbols.

  9. Paging
    這裡的paging不光指系統的page file,還包括memory mapped file,一般為exe,dll檔案。當系統需要時,commit的記憶體會被交換到page file,而代碼所佔的記憶體則會被交換到其對應的可執行檔本身。當然,如果你的dll被rebase過,也就是被修改過了,觸發了copy on write,會產生一份新的內容並也會被交換到pagefile上去。

    Page Fault Delta:每秒所發生的page fault的總次數,page fault是指訪問的虛擬記憶體頁不在進程的工作集中,需要從記憶體的standby list去拿,或者從磁碟load進來,前者為soft page fault, 後者為則hard page fault,耗時較長。
    Page Read Delta:每秒從磁碟讀入的page數量。
    Paging File Write Delta:每秒寫入到page file的page數
    Mapped File Write Delta:每秒寫入到mapped file的page數,如exe,dll等。

    當系統實體記憶體不夠用時,這些資料會變得很大,這是一個系統thrash的訊號。

  10. CPU and I/O
    Context Switch Delta: 每秒鐘線程context switch的次數。
    I/O Read Delta: 每秒的輸入數,I/O包括磁碟,網路,裝置等的輸入輸出。
    I/O Write Delta: 每秒的輸出數,
    I/O Other Delta: 不包括資料的I/O操作,如控制操作的速率。
  11. copy-paste一個500M左右的.rmvb或者.avi,就能明顯的觀察到read delta和write delta的變化。

 

那麼現在,對本文開始提出的那個問題就比較清晰了:

 

注意:

很多術語名詞,如private bytes, paged pool之類的,都可以在performance monitor中看到說明。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.