• 3

MircoSoft PageFile.sys 存在與否的迷思

皇極驚世 wrote:
搞到最後迷團越來越多...(恕刪)


不管是虛擬的還是實體的記憶體,最後都會 mapping 到虛擬的分頁空間去,
程式需要的時候是以分頁的方式配給記憶體空間,實際位置則由 OS 作配置,
所以說 pagefile 關掉仍然會看到分頁空間是正常的。
> 問題在於有一種說法說xp就算你設定成關掉pagefile,也會自己偷偷用
> 所以才會有把pagefile設在ramdisk的做法
> 有沒有比較了解xp的人能夠說明一下呢?

若是 XP, 把 page file 關掉, 再把 page file 檔砍了,
確定就不會跑去用 page file,
XP 也不會再自己重建個 page file 檔出來 ...
這百分百確定, 因為我電腦一直是如此 ...

但是若你沒把 page file 關掉,
在記憶體明明足夠的狀況下,
程式有時還是會犯x跑去偷吃 page file,
這就是有時為何記憶體已擴充很大,
但電腦跑起來還是很 lag 的元兇,
因為必須多花時間在 page file 的 I/O 上,
若你記憶體夠, 就把 page file 關了,
讓他沒得可用, 只能用 main memory,
那自然就沒這問題,

至於有的軟體沒有 page file 就不能跑,
我是沒遇過, 如果有, 也是那少數軟體本身設計的問題 ...
就像 photoshop 有的版本會跳出警示語,
其用意也是怕記憶體不足跑起來會有問題,
但若你本身記憶體就夠大, 那也就沒啥差別,
反之, 本來記憶體就不太夠, 而你又把 page file 關了,
此時跑 photoshop, 自然就會遇到一些麻煩 ...

當然, 要把 page file 砍了, 前題是你記憶體要夠,
但若你有多的空間可以去開個大的 ramdisk 或幹麻的,
那我想記憶體的大小在你的電腦上應該也不是什麼問題 ...

page file 的主要目的就只有一個,
那就是主記憶體不夠時拿來延展用,
我們擴充電腦的記憶體,
其主要的目的也就是希望儘可能讓程式都在主記憶體裡跑,
而不是為了來弄個大的 ramdisk,
然後把 page file 放到裡頭來跑,
這樣做就本末倒置了,
(一方可能是最先不知哪個寶貝蛋教人這麼弄, 當時也沒人提異議, 後面很多人就聽進去了...)

當然, 你把 page file 弄到 ramdsik 裡頭跑,
跑起來肯定比原來在 hd 上跑快,
你會覺得效能提升不少, 所以也認為這樣做沒錯,
但你回頭想想, 把 page file 關了不就結了?!
何況在 ramdisk 的 page file 上 I/O,
速度不可能比直接從 main memory I/O 來的快 (雖然差異應該是不大)...
且你在 ramdisk 上開 page file,
total 的 memory, 也不可能大過原來總安裝的 ram 容量 ...
如此做只是繞了一圈來達到所要的目的 ...

簡單的問題, 不用把他複雜化 ...

至於開 ramdisk, 個人是覺得有必要,
但只是為了拿來當 temp 或放一些東西在上頭跑,
要是拿來放 page file .... 那就沒什麼意義了 ...
concord wrote:
不管是虛擬的還是實體...(恕刪)


原來如此

對了
電腦王42期
2008年一月號
98頁有提到關於虛擬記憶體

電腦王的說法是
不管記憶體多大,WINDOS一定會分配程式區塊到分頁檔中
以XP或NT核心為基礎,多人多工理念設計的作業系統,
沒理由等實體記憶體用完了才去動用置換檔,
以前的WIN98.ME反而比較喜歡將東西留在實體記憶體裡。

換言之
這就是XP.NT的特性
不管怎麼樣,程式執行時一定會動用虛擬記憶體

這就是為何就算關掉虛擬記憶體
工作管理員卻還是顯示使用中


最後
感謝各位大大的指導

糾正了一些錯誤觀念
補充了許多沒學到的知識
也複習了遺忘的知識
真是獲益良多

看來RAMDISK這終極加速只能暫時玩玩
將來還是要用SSD比較好
畢竟快速之餘還需要能穩定的運作
才是終極目標
LeoLee2016 wrote:
那這張圖當中,記憶體足夠為何還會用到PAGE FILE ????


很不幸記憶體足不足夠是由 OS 決定的
如果 OS 覺得不夠,那就會將部分內容 swap 到 page file 裡
這部分各家做法不同,但原則不變
就是在判斷為記憶體足夠的情況下,不會跟 page file 有來往
rockindy wrote:
很不幸記憶體足不足夠是由 OS 決定的
如果 OS 覺得不夠,那就會將部分內容 swap 到 page file 裡
這部分各家做法不同,但原則不變
就是在判斷為記憶體足夠的情況下,不會跟 page file 有來往


很可惜在XP下..
並不是這樣..
有開pagefile...
XP都會無源無故都去用...
皇極驚世 wrote:
關閉虛擬記憶體之後
必須加上手動刪除
硬碟裡才不會出現pagefile.sys
重開機也不會出現(以XP測試)

但是工作管理員卻會顯示用了多少虛擬記憶體
真的很邪門...(恕刪)


查了一下微軟公開的資料
發現工作管理員所謂的虛擬記憶體欄位是微軟取的別名
實際上這個欄位應該稱為 Private Bytes
意思是程式使用的記憶體裡被 VMM(Virtual Memory Manager) 認為可以 swap 的大小
所以此欄位不代表被 swap 到 page file 裡的大小
因為可以 swap,不代表一定會被 swap
> 就是在判斷為記憶體足夠的情況下,不會跟 page file 有來往

這點我測試過 n 次了, 很多人以為 main memory 還夠,
os 和 program 就不會去吃 page file,
實則不然,
如果你有用 memory 管理的軟體,
你就會發覺這個問題,
尤其當你同時載入好幾個 program 時,
跑去吃 page file 的情況更明顯,
即使 main memory 還有一大半沒用,
也是一樣 ...
brex wrote:
很可惜在XP下..
並不是這樣..
有開pagefile...
XP都會無源無故都去用...


是的
看起來是 XP 的判斷有較獨特的做法
可能是跟之前一位網兄說的一樣
在一開始將某些內容先 copy 在 page file 裡一份
之後如果要 swap out 的話就只要覆蓋記憶體就好了

剛剛找到一本書的內容應該可以說明 Windows 的記憶體管理細節

請看 Windows via C/C++ 的第 13 章,並開始往後看

希望對大家有點幫助
rockindy wrote:
查了一下微軟公開的資...(恕刪)


明白了
原來是這樣

謝謝

rockindy wrote:
剛剛找到一本書的內容...(恕刪)


相信那本書一定很厚
我會抽空去看看

謝謝啦
  • 3
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?