我也來分享一下我的經驗好了。
首先是 swap 分兩種,分成分割區(swap partition)與檔案(swap file)。
(Win 就是用 swap file 方式,稱為 pagefile)
兩者據說效能上近似,而swap file 顯然靈活性高一些。如同我之前推文說的:
你可以透過 swapspace 這類軟體自動產生 swap file,並加入系統。
(可設定每個 swap file 大小)
不過使用 swap file 要注意檔案系統是否支援,如 Btrfs 就不支援。
關於大小方面。確實看用途以及使用 swap 方式。
使用 swap 方式:
1. 記憶體固定比例放入 swap 。
就是說即使記憶體未佔滿也會存入一定量的資料到 swap 。 Win 就是這樣。
2. 記憶體全滿後才放入 swap 。
以上設定可由 vm.swappiness 改變。(請google)
用途:
這裡就不討論 server 了。以家用來說
1. 你須要休眠功能,基本上 swap <= RAM ,除非
你的 swap 在休眠前已經佔用不少。
2. swap <= 2G 。
記憶體超多的今日,不用再死守 RAM x2 的定律了,除非你的 RAM 超小
(以及須要休眠)。
另外關於休眠:
1. 休眠時存入的資料經過壓縮,因此所須的 swap 會小於 RAM 中的資料。
以我自己的某次休眠來說,壓縮後約為 80% (當然這會和內容有關)。
2. swap file 要休眠也是可以的,方法之一是透過 uswsusp (應該有不少新方法,
如 systemd 等等,但我沒研究過),去定位 swap file 在磁碟中的位置,並
在開機時傳入參數。 不過不知能否結合 swapspace 這種動態增加 swap file
的方式使用。
然後是 swap 可以不要嗎?
我覺得保險一點還是放吧!至少用 swapspace 監控一下。
我有朋友不在意程式因為記憶體不足搞自閉,我是沒辦法啦!
附一下現在我家用電腦的情況:
$ free -m
total used free shared buffers cached
Mem: 12042 11184 857 0 0 686
-/+ buffers/cache: 10498 1543
Swap: 21319 11712 9607
$ uptime
00:19:23 up 140 days, 15:12, 5 users, load average: 0.74, 0.71, 0.69
啊對,zram 有點有趣,自己研究合不合用吧!