雖然,虛擬記憶體可以讓電腦更容易處理更大、更複雜的應用程式;但就跟所有功能強大的工具一樣,這不是沒有代價的。這代價之一就是效能 — 使用虛擬記憶體的作業系統,要比不使用的,更有餘裕做更多事情。這表示前者的效能永遠不可能好過後者,因為不使用虛擬記憶體的話,整個應用程式會位於速度快的記憶體中。
然而,我們沒有理由因噎廢食,虛擬記憶體的好處遠大過其他。而且只要多付一點心力,還是可以得到很好的效能。您要做的,不過是看看哪些系統資源會因為虛擬記憶體而受到影響。
花一點時間,用本章所學的知識,想想如果分頁錯誤與置換發生頻繁的話,那些系統資源會受到影響:
RAM — 很顯然,記憶體不足(不然的話,分頁錯誤就不會發生,也不需要置換)
磁碟 — 磁碟空間不會受到影響;但 I/O 的頻寬則會被頻繁的分頁與置換給佔據。
CPU — 處理器會把運算週期拿來支援記憶體管理,並為分頁與置換設定必要的 I/O 運算。
這些負載的連動關係可以讓我們了解,資源短缺會如何造成嚴重的效能問題。
最後,系統的記憶體不足、不斷發生分頁錯誤、CPU 與磁碟 I/O 的負荷都達到極限。結果系統不斷地發生 thrashing 現象,然後毋庸置疑的,導致效能不彰。
最好的情形是系統設定良好,作業系統並沒有因為支援虛擬記憶體,而付出太多代價:
RAM — 所有工作集都有足夠的記憶體可用,剩下的記憶體也足以處理分頁錯誤[1]
磁碟 — 因為分頁錯誤所產生的活動有限,磁碟 I/O 的頻寬也不會受到太多影響
CPU — CPU 的大部分週期都拿來執行應用程式,而不是花在作業系統的記憶體管理上
這樣一來,您就可以知道,如果虛擬記憶體的用量愈小,對效能的衝擊就會愈低。這也表示要讓虛擬記憶體的效能良好,為系統裝上足夠的記憶體是不可或缺的條件。
另一個可以改善虛擬記憶體效能(但比較上沒那麼重要)的方式,是提供夠快的磁碟 I/O 與 CPU 運算能力。然而,記得這些資源只能在分頁與置換發生頻繁時,把系統的衝擊降低;而沒辦法提昇虛擬記憶體的效能(不過在提昇系統整體效能時,這方法扮演著重要的角色)。
| [1] | 系統只要在合理範圍內執行,「一定會」經歷某種程度的分頁錯誤。因為剛執行的應用程式剛被載入記憶體時,一定會發生分頁錯誤。 |