Linux 設定 vm.swappiness 調整 SWAP 使用時機

Linux SWAP 的設定建議值,在最早的書籍、文件教學都是建議設定為記憶體(RAM)的兩倍~

不過隨著記憶體越來越大,反而就建議 SWAP 的設定值就不要太大,畢竟吃到 SWAP 整台 機器的 IO 都會重不少~

原本想法應該是,記憶體使用滿,系統才會去使用到 SWAP,不過,仔細看看常常都是記憶體還很多,卻已經開始吃 SWAP,到底是怎麼回事呢?

Linux 設定 vm.swappiness 調整 swap 使用時機

Linux 的 sysctl 有個系統參數可以設定,記憶體使用多少 % 後,就會先開始使用 Swap

  • vm.swappiness 預設值是:60
    • sudo sysctl vm.swappiness # or $ cat /proc/sys/vm/swappiness
      • vm.swappiness = 60
    • 這代表的意義是,RAM 使用到 40% (100 - 60 = 40)以上就會開始吃 Swap

想要盡量優先使用記憶體,用完才去吃到 Swap,可將這個值盡量設小,設定成 1 都可以~

  1. sudo vim /etc/sysctl.conf
    • 於檔案最後加入此行 vm.swappiness = 10
  2. sudo sysctl -p # 即完成
  3. sudo sysctl vm.swappiness # 驗證確認
    • vm.swappiness = 10

另外作法

  • 若只是想暫時生效:sysctl vm.swappiness=10
  • 註:另一招乾脆 swapoff -a 把 swap 關了

相關網頁

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈Linux 設定 vm.swappiness 調整 SWAP 使用時機〉中有 2 則留言

    1. 嗯嗯,懂,主要是因為現在記憶體都很大,每次看到 swap 在吃造成 IO重,但是看到 RAM 都還很空,就覺得這樣子不太對~

      於是希望先盡量使用記憶體,真的快用完再去吃 SWAP,來看看這樣子機器會不會比較穩定點~ 🙂

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料