2006-10-31

關於 Windows 的 Pagefile 設定值

以目前 DRAM 降價的狀況來說, 把主記憶體加到 2GB 以上可以說是輕而易舉, 這時候如果還是用預設值(實體 RAM 的1.5倍)來設定 Pagefile 的話, 會佔去相當大的硬碟空間, 而且未必會用到.

關掉 Pagefile 是一種方法, 我現在的用法也是這樣.

所謂 "Pagefile 大小設定為主記憶體的 1.5 倍" 不過是 Windows 的預設值, 並不是最佳的設定. Microsoft 的官方說法是
"當您設定 32 位元版本或 64 位元版本的 Windows Server 2003 或 Windows XP 時,會建立一個分頁檔案,如果系統硬碟中有足夠的可用空間,該分頁檔案會是電腦中所安裝 RAM 的量的 1.5 倍。不過,當更多的 RAM 新增到電腦時,對分頁檔案的需求會減少。如果您的電腦中安裝足夠的 RAM,可能就不需要分頁檔案,除非是特定應用程式有需要。
當沒有分頁檔案存在時或分頁檔案不夠時,系統會針對其分頁需求,在實體記憶體中保留部分虛擬記憶體。
".

簡單講, 只要跑一跑系統內建的 System Monitor 作點統計, 就知道自己該設定多大的 Pagefile, 除非某些特定的程式需要(像是 Photoshop 沒有 pagefile 就會不給開之類的), 不然 RAM 夠大時 Pagefile 是確定可以完全關掉的.

Microsoft 網站針對完全移除 Pagefile 的條件寫了很清楚的測試方法(雖然主要是針對 64bit OS), 用的正是 Windows 內建的 System Monitor. 我想這可以讓某些號稱 "關掉 Pagefile 對效能無效, 甚至有負面影響" 的傢伙能夠少亂講話.

另外, 把 pagefile 的大小設成固定值也是個重點, 因為 Windows 在加大 pagefile 大小時效率其差無比, 還不如直接設成最大值.

==
(2007/11/08追記)
我裝了 3GB ram 以後算出來大概需要 140MB 的 pagefile 就夠用了, 並未針對測試減少記憶體使用量(照平常使用, 常駐ramdisk 1GB, VMWare 512MB x1).
每個人的電腦用途不同, 測出來應該也不太一樣, 如果需求量超過 1GB 的話或許該考慮加 RAM.

(2008/05/17追記2)
關於 Pagefile 和 ramdrive 的問題可以由 Windows 的 VMM (virtual memory manager) 運作模式來解釋

1.把 WinXP 的 pagefile 指向 ramdrive 在常見的組態下是會變快的.
Win32 下每個 process 可以跟 VMM 要 2G (PAE 未開的情形下), 當 committed memory amount 超出 VMM 設定的上限時,lazy swap 啟動, 把沒用的 page 扔去 pagefile.
所以當開啟某些吃 ram 兇的怪物程式 (如 Visual Studio) 時, 一開始要的 memory 數量很容易觸發 VMM 去做 swapping, I/O 速度上 ramdrive 遠勝 HDD, 所以會變快.

2.在 RAM 超過 2G 以上並打開 PAE, 或是使用 64bit OS 時, pagefile 指向 ramdrive 反而會變慢
若是使用 64bit, 且有 4G 以上的 RAM, 開 System monitor 會發現很少在 swap, 這時候用 ramdrive 當 pagefile 基本上只是降低 VMM swapping 的門檻兼脫褲子放屁.(PAE 打開時應該也是類似的狀況, 所以如果 System monitor 裡沒發現在 swap 的話, 就可以關掉 pagefile)

3. 用 ramdrive 當 pagefile, 會限制 VMM 動態調整 pagefile 大小的能力, 某些狀況下會造成不便 (像是 Photoshop 就可能會掛掉)


(2009/03/12 追加)
記憶體用量的迷思 (Arthur Hsu’s Blogz )
有一些關於 Windows VMM 運作的相關知識

4 則留言:

  1. 版大您好~
    請問您的這編文章可以借我轉載嗎?
    謝謝

    回覆刪除
  2. 啊你是要轉載到哪裡去??@_@

    回覆刪除
  3. 轉到我的BLog
    方便嗎?

    回覆刪除
  4. 沒問題
    不過煩請留下網址或 TrackBack, 謝謝.

    回覆刪除

VMware ESXi 遠端線上升級 (upgrade from 6.0 to 6.5 with esxcli)

原本想說 ESXi 6.0 跑得好好的沒什麼問題, 上面的 FreeBSD 11.x 也順順跑, 沒想到升級到 12.x 就踩到大地雷... ESXi 6.0 的 vmxnet3 沒辦法在 FreeBSD 12.x上面用,升級上去以後回應時間會爆炸, 從本來的 〈1ms 變成 ...