【伺服器】Ubuntu虛擬記憶體設定

Starlitnightly發表於2024-06-23

引子
最近伺服器記憶體老是爆掉,64G的記憶體對於四五個人同時使用還是有點勉強,上網查詢了一下虛擬記憶體的教程,本部落格記錄一下方法。

swap記憶體設定

假設你想將swap檔案放在/mnt/data/mem目錄下,以下是詳細的步驟:

建立並啟用Swap檔案

  1. 建立目錄(如果目錄不存在)

    sudo mkdir -p /mnt/data/mem
    
  2. 建立一個64GB的swap檔案

    sudo fallocate -l 64G /mnt/data/mem/swapfile
    
    t=64
    64+0 records in
    64+0 records out
    68719476736 bytes (69 GB, 64 GiB) copied, 262.527 s, 262 MB/s
    

    如果fallocate命令不可用,可以使用dd命令:

    sudo dd if=/dev/zero of=/mnt/data/mem/swapfile bs=1G count=64
    
  3. 設定正確的許可權

    sudo chmod 600 /mnt/data/mem/swapfile
    
    Setting up swapspace version 1, size = 64 GiB (68719472640 bytes)
    no label, UUID=c3dec71e-d8ef-4aa7-9501-7694112fc4c4
    
  4. 將檔案格式化為swap空間

    sudo mkswap /mnt/data/mem/swapfile
    
  5. 啟用swap檔案

    sudo swapon /mnt/data/mem/swapfile
    
  6. 驗證swap是否啟用

    sudo swapon --show
    
    NAME                   TYPE SIZE USED PRIO
    /swapfile              file   2G   2G   -2
    /mnt/data/mem/swapfile file  64G   0B   -3
    

    或者:

    free -h
    

持久化Swap檔案

為了在系統重啟後仍然保留這個swap檔案,需要將其新增到/etc/fstab檔案中:

  1. 備份/etc/fstab檔案

    sudo cp /etc/fstab /etc/fstab.bak
    
  2. 編輯/etc/fstab檔案

    sudo nano /etc/fstab
    
  3. 在檔案末尾新增以下內容

    /mnt/data/mem/swapfile none swap sw 0 0
    
  4. 儲存並退出編輯器

調整Swappiness值(可選)

Swappiness引數控制系統交換的頻率,範圍是0到100。值越高,系統越頻繁地使用swap。預設值通常是60,可以根據需求調整:

  1. 檢查當前swappiness值

    cat /proc/sys/vm/swappiness
    
  2. 設定新的swappiness值(例如,設定為10)

    sudo sysctl vm.swappiness=10
    
  3. 使該設定在重啟後仍然有效

    sudo nano /etc/sysctl.conf
    

    在檔案末尾新增:

    vm.swappiness=10
    
  4. 儲存並退出編輯器

完成以上步驟後,你的Ubuntu系統應該已經成功配置了位於/mnt/data/mem目錄下的64GB的虛擬記憶體。

swappiness推薦

在配置系統的swappiness引數時,主要取決於你對系統效能的需求以及具體的使用場景。Swappiness引數控制了Linux核心如何使用交換空間(swap)的頻率。它的值範圍是從0到100:

  • 值為0時,核心將盡量避免使用交換空間。
  • 值為100時,核心將非常頻繁地使用交換空間。

推薦的Swappiness設定

對於你的系統配置(64GB實體記憶體和64GB交換空間),以下是一些推薦:

  1. 桌面系統或開發環境
    如果你主要用於桌面應用或開發環境,通常希望儘量減少交換空間的使用以保持系統響應速度。推薦將swappiness設定為較低的值,例如:

    sudo sysctl vm.swappiness=10
    
  2. 伺服器或記憶體緊張的環境
    如果你的系統執行在伺服器環境中,或者經常需要處理大量資料並且記憶體使用接近最大值,適當增加swappiness值可以幫助系統更好地管理記憶體。推薦值可以設定在30到60之間:

    sudo sysctl vm.swappiness=30
    
  3. 混合用途
    如果你的系統有多種用途(如同時執行桌面應用和伺服器任務),可以選擇一箇中間值,例如:

    sudo sysctl vm.swappiness=20
    

調整和持久化Swappiness

  1. 臨時調整swappiness

    sudo sysctl vm.swappiness=20
    
  2. 使swappiness值在重啟後仍然有效
    編輯/etc/sysctl.conf檔案:

    sudo nano /etc/sysctl.conf
    

    在檔案末尾新增:

    vm.swappiness=20
    
  3. 儲存並退出編輯器

驗證Swappiness

你可以透過以下命令驗證當前的swappiness值:

cat /proc/sys/vm/swappiness

監控和調整

請注意,最佳的swappiness設定可能需要一些實驗和監控。你可以在實際使用中觀察系統的效能和記憶體使用情況,並根據需要進行調整。

總結:

  • 桌面系統或開發環境:推薦swappiness=10
  • 伺服器或記憶體緊張的環境:推薦swappiness=3060
  • 混合用途:推薦swappiness=20

透過以上方法,你可以找到一個平衡點,使你的系統在效能和記憶體管理之間達到最佳狀態。

相關文章