內(nèi)存調(diào)節(jié)是系統(tǒng)管理員比較重要的一項(xiàng)任務(wù),有大容量的內(nèi)存當(dāng)然不錯(cuò),但是有時(shí)候它也會(huì)讓我們煩惱。下面我來(lái)談?wù)勅绾卧赪indows 2000/XP/2003里管理內(nèi)存。
什么是虛擬內(nèi)存 (Virtual Memory)?在32位計(jì)算機(jī)里,內(nèi)存地址有32位長(zhǎng)度,因此,32位計(jì)算機(jī)有4GB的內(nèi)存訪問限制,2的32次方=4,294,967,296。
Intel 386及之后的處理器,能尋址4GB的內(nèi)存,每個(gè)進(jìn)程能分配到4GB虛擬內(nèi)存中的某個(gè)地址空間,而不管物理內(nèi)存有多大。同時(shí)每個(gè)進(jìn)程獨(dú)立于其它的進(jìn)程,并擁有自己的4GB地址空間。也就是說,4GB的訪問限制是基于每個(gè)應(yīng)用程序的,而不是由所有應(yīng)用程序的總和所限制。
這就意味著計(jì)算機(jī)上的物理內(nèi)存與內(nèi)存地址空間無(wú)關(guān),如果計(jì)算機(jī)有256MB的物理內(nèi)存,那么內(nèi)存地址空間仍然有4GB,如果計(jì)算機(jī)有8GB物理內(nèi)存,那么內(nèi)存地址空間依舊只有4GB。
程序是不允許直接訪問物理內(nèi)存的,當(dāng)一個(gè)程序請(qǐng)求更多的內(nèi)存,Windows便映射物理內(nèi)存到進(jìn)程的地址空間中。
按照程序所需要運(yùn)行的盡可能多的內(nèi)存,計(jì)算機(jī)硬件總是會(huì)滿足,只有當(dāng)前正在運(yùn)行(active)的那部分被加載到物理內(nèi)存中(RAM),Windows維護(hù)一些頁(yè)面表,以便跟蹤,應(yīng)用程序只能看到虛擬內(nèi)存地址。
處理器自己能從指令中轉(zhuǎn)換(映射)這些虛擬地址到相對(duì)應(yīng)的物理內(nèi)存中去,處理器管理這些映射頁(yè)表,每個(gè)頁(yè)表為4KB。
為何需要優(yōu)化頁(yè)面文件(Page File)?當(dāng)計(jì)算機(jī)運(yùn)行時(shí)內(nèi)存不足,就需要優(yōu)化頁(yè)面文件,當(dāng)所有的物理內(nèi)存被使用,Windows便開始利用硬盤,就好像有額外的RAM一樣。這就是為什么有Page file頁(yè)面文件,我們也稱之為交換文件Swap file。y因?yàn)槲锢韮?nèi)存的訪問速度遠(yuǎn)快于硬盤,無(wú)論何時(shí)計(jì)算機(jī)為減輕物理內(nèi)存的壓力開始使用頁(yè)面文件,我們便能明顯的感覺到計(jì)算機(jī)性能的下降。
最有效的解決辦法就是增加足夠的物理內(nèi)存,來(lái)避免頻繁的從物理內(nèi)存到硬盤之間的頁(yè)面交換。
這也意味著應(yīng)用程序使用內(nèi)存數(shù)量的限制實(shí)際上就是物理內(nèi)存加上頁(yè)面文件大小。
你需要多大的交換空間?這依賴于你有多大的物理內(nèi)存和使用程序的多少。通常我們需要物理內(nèi)存的1.5倍,除非系統(tǒng)的負(fù)載更多。
有大容量?jī)?nèi)存的計(jì)算機(jī)上能否關(guān)閉虛擬內(nèi)存?嚴(yán)格說,虛擬內(nèi)存是時(shí)刻在運(yùn)行且不能被關(guān)閉,那么“讓系統(tǒng)不使用虛擬內(nèi)存”又會(huì)導(dǎo)致什么結(jié)果?
答案是這樣做會(huì)浪費(fèi)一部分內(nèi)存,原因是當(dāng)程序請(qǐng)求分配虛擬內(nèi)存空間時(shí),可能會(huì)請(qǐng)求遠(yuǎn)比自身運(yùn)行所需的多得多的內(nèi)存(也許會(huì)超過100MB),這些地址由系統(tǒng)來(lái)分配,如果有可用的頁(yè)面文件,系統(tǒng)就分配給它,如果沒有,他們將會(huì)被分配到物理內(nèi)存(RAM),然后鎖住這些空間(無(wú)論它是否需要使用)。
如何具體的優(yōu)化?下面介紹一些具體的方法:
最需要也是最重要的就是增加物理內(nèi)存RAM。當(dāng)應(yīng)用程序運(yùn)行時(shí),系統(tǒng)性能就會(huì)下降,增加足夠的物理內(nèi)存能保證提供足夠的程序所需的內(nèi)存,而不是頻繁的增加頁(yè)面文件。
把頁(yè)面文件從系統(tǒng)啟動(dòng)分區(qū)移到另外的單獨(dú)的硬盤上。如果你這么做,你應(yīng)該在C盤(通常是系統(tǒng)啟動(dòng)分區(qū))留一些頁(yè)面文件,可以設(shè)置成初始值2MB,最大值50MB,我覺得差不多了,這樣做可以應(yīng)急。如果沒有這個(gè)頁(yè)面文件,某些情況下,系統(tǒng)會(huì)無(wú)視已有的頁(yè)面文件配置,認(rèn)為當(dāng)前沒有頁(yè)面文件或者會(huì)在C盤下自行的建立一個(gè)很大容量的頁(yè)面文件。
將頁(yè)面文件所在的分區(qū)格式化成NTFS。簇大小4Kb(默認(rèn)設(shè)置)。
將頁(yè)面文件的初始值設(shè)置得和最大值一樣大。盡管這樣做會(huì)占用更多的硬盤空間。我們不想讓頁(yè)面從一開始很小,慢慢的不斷增大。寫入大文件時(shí)(也需要很大的頁(yè)面文件),硬盤非常的忙碌,會(huì)導(dǎo)致系統(tǒng)性能下降,因此,讓頁(yè)面文件不斷的增長(zhǎng),很可能會(huì)產(chǎn)生頁(yè)面文件碎片,這樣會(huì)更加重硬盤的負(fù)擔(dān)。
不要在同一個(gè)硬盤上的不同分區(qū)設(shè)置多個(gè)頁(yè)面文件。
如果有RAID-0陣列,用它來(lái)放置頁(yè)面文件。
不要把頁(yè)面文件存儲(chǔ)在容錯(cuò)磁盤上。比如鏡像卷RAID-1,或者RAID-5卷,頁(yè)面文件不需要容錯(cuò)。
如果你使用Windows XP,開啟了Fast User Switching功能,需要特殊考慮。當(dāng)用戶處于非活動(dòng)狀態(tài),會(huì)需要更多的頁(yè)面文件,到底需要多大的頁(yè)面文件很難計(jì)算,有一種觀點(diǎn)是初值可以設(shè)置成物理內(nèi)存RAM的一半。
最好有一塊單獨(dú)的硬盤用于存放頁(yè)面文件,不要在有系統(tǒng)啟動(dòng)分區(qū)的硬盤上存放頁(yè)面文件,否則不會(huì)提高系統(tǒng)性能,硬盤最好是連接在獨(dú)立的磁盤控制器上。或者也可以把頁(yè)面文件放在多個(gè)硬盤上,不必?fù)?dān)心不同硬盤的速度差異,Windows 2000/XP/2003會(huì)自動(dòng)選擇最快的那個(gè)硬盤存放頁(yè)面文件。
頁(yè)面文件PageFile 應(yīng)該設(shè)為多大?讓W(xué)indows自己選擇最佳的頁(yè)面文件大小,推薦初值值為物理內(nèi)存的1.5倍,最大值為物理內(nèi)存的3倍。舉例,如果你有256MB的物理內(nèi)存,頁(yè)面文件的最小值為384MB,最大值為1152MB。
當(dāng)前這只是一種偷懶的辦法,更為精確的方法是你自己監(jiān)視系統(tǒng),看看有多少物理內(nèi)存和虛擬內(nèi)存在使用。觀察一個(gè)星期,看看系統(tǒng)在這期間用過最大數(shù)量的內(nèi)存,如果你看到這個(gè)最大值從未接近你的物理內(nèi)存,那就不用擔(dān)心了,你的頁(yè)面文件還沒有使用過(這個(gè)說法不完全正確,因?yàn)橄到y(tǒng)總是為內(nèi)部的操作而使用頁(yè)面文件,一般用5%-10%)。相反,如果你看到期間系統(tǒng)使用的內(nèi)存最大值已經(jīng)超過了物理內(nèi)存,那么就意味著系統(tǒng)已使用了頁(yè)面文件。
我的系統(tǒng)使用了多少頁(yè)面文件?你應(yīng)該首先計(jì)算出正在使用的內(nèi)存數(shù)量,有多少存儲(chǔ)在硬盤?
使用用系統(tǒng)監(jiān)視器 System Monitor在系統(tǒng)監(jiān)視工具里使用 %Usage Peak 計(jì)數(shù)器。具體看圖片
http://www.petri.co.il/images/perfmon.jpg
http://www.petri.co.il/images/perfmon1.jpg
http://www.petri.co.il/images/perfmon2.jpg
http://www.petri.co.il/images/perfmon3.jpg
使用任務(wù)管理器看圖片 http://www.petri.co.il/images/taskmgr.jpg
物理內(nèi)存這一塊,總數(shù)為785904 K,就是安裝的物理內(nèi)存,當(dāng)前使用了多少RAM?372924 K,差不多物理內(nèi)存的一半,OK,沒有問題。系統(tǒng)調(diào)用了多少內(nèi)存?來(lái)看看Commit Charge section,總數(shù)(Total)為429604 K。自上次啟動(dòng)后系統(tǒng)調(diào)用內(nèi)存的最大值為多少?來(lái)看峰值為453168 K,使用量接近峰值,不過這離物理內(nèi)存還差很遠(yuǎn),因此當(dāng)前系統(tǒng)ok。
微軟MVP Bill James開發(fā)了一個(gè)工具,名為WinXP-2K_Pagefile,專門用來(lái)監(jiān)視當(dāng)前使用的頁(yè)面文件值,你可以從這里(
http://www.dougknox.com/xp/utils/xp_pagefilemon.htm)下載。
其它設(shè)置注冊(cè)表設(shè)置有時(shí)候系統(tǒng)無(wú)法保存當(dāng)前設(shè)置,可以如下解決。
1、運(yùn)行注冊(cè)表 regedt32.exe(注意不是regedit.exe)
2、找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
3、雙擊 PagingFiles,比如顯示 D:\pagefile.sys 700 700,第一個(gè)是頁(yè)面文件的位置,第二個(gè)是最小值,第三個(gè)是最大值。
4、修改完畢后,重啟計(jì)算機(jī)。
遠(yuǎn)程改變頁(yè)面文件大小和位置用 resource kit工具 REG.EXE。
語(yǔ)法為:
C:\> reg update "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PagingFiles"=" " \\
舉例:
C:\> reg update "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PagingFiles"="C:\pagefile.sys 700 700" \\example.localhost.computer
頁(yè)面文件碎片整理可以從這里下載整理工具 http://technet.microsoft.com/en-us/sysinternals/bb897426.aspx
組策略設(shè)置創(chuàng)建一個(gè)頁(yè)面文件Computer Configuration\Windows Settings\Security Settings\Local Policies\User Rights Assignment
可以設(shè)置哪個(gè)用戶或組可以創(chuàng)建頁(yè)面文件、該變其大小,默認(rèn)是管理員。
關(guān)機(jī)時(shí)清除頁(yè)面文件Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options
可以設(shè)置關(guān)機(jī)時(shí)頁(yè)面文件是否被清除。清除頁(yè)面文件可以保證頁(yè)面文件里的敏感信息不被未授權(quán)人利用。
虛擬內(nèi)存的錯(cuò)誤提示有時(shí)候系統(tǒng)會(huì)提示虛擬內(nèi)存不夠,或者在啟動(dòng)程序時(shí)遇到提示缺少內(nèi)存,可能由以下原因。
1、頁(yè)面文件的最大值設(shè)置過小,或者頁(yè)面文件所在的硬盤或分區(qū)空間不夠。
2、頁(yè)面文件損壞,可能由非正常關(guān)機(jī)引起,解決辦法是把虛擬內(nèi)存設(shè)置成沒有頁(yè)面文件,重啟計(jì)算機(jī),然后再次設(shè)置正確的頁(yè)面文件。
3.頁(yè)面文件存在在另一個(gè)硬盤上,但是卻沒有在C盤(系統(tǒng)啟動(dòng)分區(qū))下設(shè)置一個(gè)小的頁(yè)面文件。
4、第三方軟件錯(cuò)誤,如果在關(guān)機(jī)時(shí)候出現(xiàn)提示,可能和諾頓的Live Update升級(jí)程序有關(guān),從http://www.symantec.com/techsupp/files/lu/lu.html 下載修補(bǔ)程序。如果在開機(jī)時(shí)出現(xiàn)提示,而且計(jì)算機(jī)主板使用的是Intel的芯片組,可能時(shí)候Intel的Application Accelerator引起,解決辦法是刪除它,安裝一個(gè)新版本。
5、也可能是IDE硬盤的驅(qū)動(dòng)程序引起,在設(shè)備管理器里,刪除 IDE ATA/ATAPI controllers(主控制器),重啟計(jì)算機(jī)讓系統(tǒng)自己識(shí)別并安裝。
6、在NFTS的文件系統(tǒng)里,頁(yè)面文件所在的分區(qū)必須有足夠的權(quán)限,應(yīng)該是分配 Full Control。