[筆記] Linux Mint 18 創建 Swapfile @T61 筆電跑SSD

目的

去除舊式的 /swap 交換磁區的作法,改以更有彈性的 swapfile 方式替代。

說明

其實近年來電腦大都配置大容量記憶體以及 SSD 固態硬碟,主流 Linux 系統對於記憶體的內存 (cache)管理更得以最佳化,逐漸地,行之有年的 /swap 暫存磁區並不推薦採用。

不過,老舊電腦可能只有 4Gb RAM 的限制以內,卻又換了新的 SSD 固定硬碟,還是有需要使用到系統暫存區,諸如系統休眠 (hibernate),或內存不足。但是為了讓系統暫存的運作更有彈性,建議採以較新的方式,也就是以 Swapfile 取代 /SWAP 暫存磁區方式。

P.S. Linux Mint 18 在安裝時磁區規劃建議以手動方式設定,且不要新增 /swap 磁區;若以自動方式設定,則系統會自行增添 /swap 磁區 (partition)。雖然系統後續安裝時會警告沒有設置 /swap 磁區,但可以忽略它,待安裝完成後再以本文方式進行創建 swap file 的程序。

作法

  1. 檢查是否已有使用配置 SWAP:
    ~$ free -m
               total       used       free     shared    buffers     available
    Mem:        3878        378       2806          57       723          3230
    Swap:          0          0          0
  2. 確認硬碟磁區可用容量:
    ~$ df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda         110G  9.5G   95G  2% /
    none            4.0K     0  4.0K   0% /sys/fs/cgroup
    udev            2.0G   12K  2.0G   1% /dev
    tmpfs           396M  312K  396M   1% /run
    none            5.0M     0  5.0M   0% /run/lock
  3. 創建 swap file:
    ~$ sudo fallocate -l 4G / swapfile

    設定僅給 root 讀取的權限:

    ~$ sudo chmod 600 /swapfile

    檢查權限是否設定正確

    ~$ ls -lh /swapfile
    -rw ------- 1 root root 4.0G May 12 22:18 /swapfile

    設置 swap 空間:

    ~$ sudo mkswap /swapfile

    掛載 (mount) swap file:

    ~$ sudo swapon /swapfile

    檢查掛載是否已載入:

    ~$ sudo swapon -s
    /swapfile               file        4194300 0       -1

    再次確認掛載是否成功:

    ~$ free -m
               total       used       free     shared    buffers     available
    Mem:        3878        377       2806         65       904          3183
    Swap:       4095          0       4095
  4. 開機自動掛載 swap file:
    ~$ sudo nano /etc/fstab

    新增下列陳述至該文件最後一行:

    /swapfile   none    swap    sw    0   0
  5. 調整 swap file 效能參數:
    swappiness and vfs_cache_pressure。

    swappiness參數將配置系統外的RAM swap數據到swap空間的頻率。這是介於0和100之間的值,表示一個百分比。

    當值接近零時,除非在絕對必要時,內核不會將數據交換到磁盤。記住,與swap文件的交互是「昂貴的」,因為它們比與RAM的交互花費的時間長,並且它們可能導致性能的顯著降低。通知系統不要依賴於swap,會使系統運作更快。

    更接近100的值會嘗試將更多的數據放入swap,以保持更多的RAM空間。根據應用程序的內存配置文件或用戶使用服務器的情況,這在某些情況下可能會更方便。

    vfs_cache_pressure。此設置配置系統選擇高速緩存i節點和dentry信息與其他數據相比的量。基本上,這是訪問文件系統的數據。查找和頻繁地請求將花費許多精力,所以它對於系統緩存非常重要。

    可以使用如下指令查看目前系統設定的數值:

    ~$ cat /proc/sys/vm/swappiness
    60
    ~$ cat /proc/sys/vm/vfs_cache_pressure
    10

    編輯 /etc/sysctl.conf 文件,加入上述兩個參數的設定值 (抓出自己電腦適合的數值):

    ~$ sudo nano /etc/sysctl.conf
    vm.swappiness = 30
    vm.vfs_cache_pressure = 50

※ 延伸參考:
 o 如何在Ubuntu 14.04上添加Swap

文章導覽

   

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *