看到文章說
分頁檔不該放RAM Disk
行文至此,「該不該把分頁檔放入RAM Disk?」這種常被爭辯不休的問題也應該有個答案。
我們都知道RAM Disk一樣會耗用記憶體空間,而且大部分的RAM Disk都是在一開始就將指定的記憶體空間佔滿,工作集無法被縮減,即使RAM Disk裡完全沒資料也一樣。
分頁檔是用來分散記憶體壓力的,劃出RAM Disk放置它等於是反其道而行,何況分頁檔的尺寸一開始就固定了,這麼做等於是「把記憶體拿來存放空白的分頁檔」,並且提早耗盡可用的實體記憶體,還不如完全不設分頁檔、讓實體記憶體能發揮最大的使用效率
別忘了,分頁檔裡的資料還是得讀回實體記憶體才能被程序存取,不必多此一舉。
=> 很多人說空出RAM 分給 page file 會加快阿..
3種快取最佳化
快取可從3個方面來進行:延遲抹除分頁、延遲寫入硬碟以及優先載入(預先讀取)可能會用到的資料
早年的系統沒有設計快取功能 (WIN98~WIN2000時代)
分頁檔很單純的是在記憶體不足的時候拿硬碟來當作緩衝區
如果記憶體夠大,把分頁檔關掉不會有什麼問題,頂多就是告訴你記憶體不足
後來的系統增加了快取功能,分頁檔也開始加入了系統運作的一部分
有些軟體設計時就會強制使用分頁檔
(程式載入RAM時,有些一次性的檔案會直接丟入分頁檔,而不會放在RAM)
如果把分頁檔整個關掉,這些軟體的運作就會出現異常
既然分頁檔需要存在,那麼就延伸出速度的考量
事實:分頁檔放在RAMDISK中,存取速度一定比放在傳統硬碟中快很多很多
盲點:分頁檔放在RAMDISK中,記憶體的空間使用一定比放在傳統硬碟中多
(真正占用記憶體的是RAMDISK,不管放不放分頁檔,RAMDISK占用的記憶體其實一樣多)
兩個論點都有理由,所以真正問題只是容量的取捨而已
如果記憶體小,可能有記憶體不足的問題,再去切割RAMDISK,不管放不放分頁檔都是多此一舉
例如:WINXP系統RAM不到2GB、WIN7系統RAM不到8GB
如果記憶體大,大到確定系統根本用不完,切割RAMDISK放分頁檔放TEMP都是很合理的加速應用
例如:WIN7系統裝16GB RAM,一般人根本用不完,當然應該要善加利用RAMDISK來做系統加速
那就要減少RAM Disk容量
甚至不該開RAM Disk
若是記憶體多到閒著沒用
拿來RAM Disk放分頁檔又有何不可
其實記憶體不多時
分頁檔放SSD也是一種折中的辦法
雖然沒RAM Disk快
但已比HDD快上不少

如上圖:起始 512MB,最大 2048MB
就是說:
一開始 pagefile.sys 就會配置 512MB 大小。(佔用 512MB 空間)
而如果不夠用,windows 會自動增大,直到指定的最大限制 2048MB。
起始不宜設太小,比如 256MB 就太小。會引發 C++ Runtime 之類的錯誤,可能是 pagefile 不夠用引起的。
為什麼即使記憶體有 32GB,仍是要設定「分頁檔」?
這個就要從 windows 「老症頭」講起了。
windows 這套作業系統,是不允許 SWAP 為 0 的。
w2k 的時候,還能設 0。但從 XP 之後都有分頁檔"允許最小值"的限制:比如 2~16MB 之類的。如果設 0 或全部關閉,windows 是不接受的,按了確定也沒用,它不儲存,並且告知必須更改大小。
再來一點是:
就算記憶體有好幾百GB,windows 仍是會去吃 pagefile。有這樣子的現象。
可能最早 windows 在設計的時候就有一些歷史包袱。之後為了相容,只能把這個缺陷代代傳承下去。
比如就算最小-最大設 16MB(它允許的最小值),事實上,如果不夠用,windows 會在背景後台自己偷偷開啟更大的,具體表現就是電腦會短暫中風(因為在大量寫入磁碟)。
去檢查 pagefile.sys 大小的話,就會發現 windows 會偷開分頁檔(無視使用者的設定)。
像 unix-like 系統,就能真正 swap 設 0。如果設 0,系統就絕不會去使用 swap,即使記憶體不足當機也不會去用。不過它不會當機,只是程式會當掉。
**************************************************
SSD 不宜放 TEMP、SWAP、PageFile 之類會 "頻繁寫入" 的東西。
因為我們知道快閃記憶體有寫入壽命
比如:
MLC 顆粒約 5萬次寫入壽命。
SLC 顆粒約 10萬次寫入壽命。
就是說:同一位址如果寫入 5萬次,該位址就報銷了。
所有賣 SSD 的廠商,都不敢終身保。因為那是耗材,一開始就註定有壽命期限。
Temp 是暫存檔,應用軟體會經常性把資料暫存在上面,亦即會經常性寫入。
SWAP、PageFile 基本上就是拿磁碟當 RAM 用,這種寫入次數會更頻繁,一天可能就寫入幾千次。然後很快的,快閃顆粒位址就會報銷。
當然 SSD 主控晶片,會去打散每次寫入的位址,不會讓同一位址一直連續寫入。
不過那只是延緩報銷的時間而已,以這樣大量的寫入次數來說,仍是會加快整體的報銷速度。
當 SSD 塞愈滿時,主控晶片能分配打散的空閒位置就會愈少。因為它總不能去覆蓋已經有資料的位址,把資料給蓋掉了。這樣子剩餘的空間報銷的機率就會更高。
位址報銷,理論上不會整顆壞掉,只是會標示位址損壞,然後容量開始縮水。通常會有多餘的備用空間位址,去頂替損壞的位址,例如比標稱的大小多 5~10% 做備用位址。而備用的位址都用光的話,可能就壞了。因為分割區是固定大小,即便其餘位址仍可使用,但邏輯上會發生錯誤,系統會以為硬碟壞軌。(推測應該是這樣啦)
如果在保固內報銷那還好,可以換新。
但就怕保固剛過才報銷。說不定廠商都算好好。
fedora wrote:
SSD 不宜放 TEMP、SWAP、PageFile 之類會 "頻繁寫入" 的東西。
因為我們知道快閃記憶體有寫入壽命...(恕刪)
我 google 舊文 http://www.mobile01.com/topicdetail.php?f=490&t=1930183&p=2
tenz9596 大大說的:
找到這篇文章
不應該將pagefile放在SSD上!?!?
根據Microsoft的Engineering Windows 7 Blog,大多pagefile的存取都是細小的隨機讀取和比較大的連續寫入,這正是非常適合SSD特性的。而pagefile的讀取和寫入比例大約是40:1,而讀取是不會影響SSD壽命的。Microsoft指出pagefile比絕大部份其他檔案更適合放在SSD上,而pagefile的寫入比較其他日常作業相比實在太微小。所以關閉/移動pagefile是非常不智的。
http://blogs.msdn.com/b/e7/archive/2009/05/05/support-and-q-a-for-solid-state-drives-and.aspx
這幾天類似文章~調整後感覺,好像都沒差~搞得頭昏看眼花!
官方說的也是....
微軟官方有份文件分析page file的特性
pagefile.sys放在ssd裡才是最適合的
messengerses wrote:
或是真的有程式一定要分頁檔(有這種程式?!沒看過,請解答~)。
大部份都是繪圖軟體
會聲會影啊,舊版photoshop啊,photoimpact啊…
photoshop 記憶體不足解決方法
內文搜尋

X