• 4

如果 2G的ram 你會把虛擬記憶體關掉嗎?

謝謝大大的回答 這真是一個好方法
但是為什麼剛剛試了一下,怎麼沒辦法這樣設
系統會自動增加
我記得最小值要從2MB開始
所以改一下最小值吧
會,如果有 2GB,我一定把 swap 關掉
swap 說穿了就是拿硬碟當記憶體使用

雖說現在新型 SATA2 硬碟讀寫效率都有 70MB/s 左右了
但是記憶體的讀寫效率,是硬碟百倍以上
加上記憶體沒有 seek-time 的問題,效率會比拿硬碟當記憶體使用更高

再者 Windows 有一個老毛病 (不清楚 Vista 改良了沒有)
就是不管你記憶體有多大,即使都還沒用光,它一定會使用 SWAP

這和 Linux 的記憶體管理,是有很大差別的
Linux 是除非真實記憶體用盡,才會開始吃 swap
Windows 則剛好相反.... 冏rz

硬碟是一種有壽命的機器,它不像記憶體有終身保固
即使說不差那一點效率時間,但是考量到硬碟壽命,關掉 swap 也是比較好

不過並非 2GB 就絕對足夠,要看應用而定
常開很多圖檔,或是做 3D 動畫的,2GB 恐怕都不足以關閉 swap

關閉 swap 後,並非吃盡記憶體就會當機
Windows 在記憶體用盡時,還是會自動開啟 swap
寫入硬碟幾百MB 的檔案,做臨時 SWAP 使用,關機時就會自動刪除
只是此時會感覺到很嚴重的 delay

差別在於,如果一開始硬碟就有那個 SWAP檔 (開啟 SWAP 的狀態),便不需要寫入幾百MB的動作
但是假如硬碟有那個 SWAP檔,windows 的老毛病是不管記憶體多大,一定要去使用才高興....
記憶體速度 >>> 硬碟讀寫速度
明明記憶體都還沒用完,就急著要用硬碟當記憶體,這種設計完全不符邏輯
所以 Windows 如果記憶體足夠,關掉 swap 會獲得巨大的效能改進

謝謝大大的回答 這真是一個好方法
但是為什麼剛剛試了一下,怎麼沒辦法這樣設
系統會自動增加



這個問題是出在 Windows 的一個「機碼」設定值

[從記憶體中,卸載不再使用的 DLL 檔],它的預設值是 1,開啟狀態

DLL 動態連結檔群,是應用軟體共用的函式厙
當應用程式被使用時,相關 DLL 會被載入真實記憶體中

但是當應用程式都關閉了,相關 DLL 不再被參考時
此時這支 DLL 保留在真實記憶體中,就是浪費記憶體空間

Windows 解決這個浪費問題的作法是:將不再被使用的 DLL 卸載
所謂卸載,是將其從真實記憶體中移除

但是很妙的是,windows 並不是真的將它移除
而是將它從[真實記憶體],移到[虛擬記憶體],也就是 swap (或稱 pagefile)

此時如果 swap檔不存在(swap 關閉狀態)
windows 就會很雞婆的自動開啟 swap

解決這個問題的方法是 (完全關閉 swap 的方法):
修改機碼 regedit,將[從記憶體中,卸載不再使用的 DLL 檔]設 0,關閉它
這個機碼詳細的名稱和位置,要去查資料,網路上有資料
或是簡便一點,使用 CachemanXP 這個免費軟體,它的[調整]頁面中,就有直接關閉這個選項的功能
小弟說個題外話:

由於虛擬記憶體用的檔案 (pagefile.sys) 屬性有 system + hidden,
所以通常重組工具不會重組這個檔案,小弟通常是設定為一個固定的值,
例如最小1024,最大1024。比較不會像「自動配置」那樣容易碎成很多塊。

如果有需要對這個檔案作重組的話,可以到 (Microsoft Technet)
http://www.microsoft.com/technet/sysinternals/FileAndDisk/PageDefrag.mspx
下載 PageDefrag 來用。

(註:system internals之前就出了很多 windows 系統相關的好用工具,最近被納入
Microsoft Technet 之下,各位也可以在這邊挖到很多很好用的小工具。)
Windows 對於記憶體管理方式與 Linux 不同。所以不能單就 swap 方面來看誰好誰差。

另外 DLL 移到 swap 的目的,其實是為了一個「加速」的理由。如果下次使用者又啟動程式,就不用刻意讀取 DLL,而是直接從 swap 移出來。其實為了「加速」而對於記憶體(無論是實體記憶體或是虛擬記憶體)進行一些配置這一點,無論是 Linux 或是 Windows 都有(熟悉 Linux 記憶體管理方式的人應該知道我在說什麼)。

其次,M$ 並不建議關掉,甚至是很多 Performance Tuning 的書籍或軟體都不建議關閉 VM。因為 Windows 的記憶體管理方式就是要搭配 VM 運作的。如果平常做的事情消耗的記憶體都不大,關掉 VM 就不會有什麼感覺。不過如果對於記憶體有頻繁的使用以及大量的需求,關掉 VM 其實效能並不會提昇。

甚至在某些情況還會發生所謂「不可思議的事情」

我之前關掉 VM,然後在壓 DVD 的時候(我忘記我用哪套軟體了),常常會壓到一半程式就出錯。我觀察過記憶體,還有 1G 以上的空間,開始壓縮,也還有 600M 以上的空間,但是就是會出問題(呃,老實說我也忘記當初出的是什麼問題了)。開啟 VM 後,就沒事了,順順利利壓完好幾張。

有興趣的可以去找找 Windows 對於記憶體管理方式方面的資料。
我是直接將虛擬記憶體關掉, 沒出現過什麼問題.
印象中有些軟體不管你記憶體有多大都會強制去用VM
關掉反而會出問題
所以我都把VM改小,但不會完全關掉
我的NB 裝有1.5G
我都是直接關掉...而且還加個400MB左右的ramdisk給瀏覽器當快取
寫程式時也是在上面

不過....開PS這種大怪物時一定要把VM打開
至於關掉對於系統效能的提昇倒是沒有太大感覺
反倒是磁碟重組時少了一堆礙眼的區塊
問一個可能有點笨的問題
那如果用外接記憶卡的記憶體當虛擬記憶體
那會有什麼優缺點嗎?
jim0423.blogspot.com
  • 4
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?