引子
最近伺服器記憶體老是爆掉,64G的記憶體對於四五個人同時使用還是有點勉強,上網查詢了一下虛擬記憶體的教程,本部落格記錄一下方法。
swap記憶體設定
假設你想將swap檔案放在/mnt/data/mem
目錄下,以下是詳細的步驟:
建立並啟用Swap檔案
-
建立目錄(如果目錄不存在):
sudo mkdir -p /mnt/data/mem
-
建立一個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
-
設定正確的許可權:
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
-
將檔案格式化為swap空間:
sudo mkswap /mnt/data/mem/swapfile
-
啟用swap檔案:
sudo swapon /mnt/data/mem/swapfile
-
驗證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
檔案中:
-
備份
/etc/fstab
檔案:sudo cp /etc/fstab /etc/fstab.bak
-
編輯
/etc/fstab
檔案:sudo nano /etc/fstab
-
在檔案末尾新增以下內容:
/mnt/data/mem/swapfile none swap sw 0 0
-
儲存並退出編輯器。
調整Swappiness值(可選)
Swappiness
引數控制系統交換的頻率,範圍是0到100。值越高,系統越頻繁地使用swap。預設值通常是60,可以根據需求調整:
-
檢查當前swappiness值:
cat /proc/sys/vm/swappiness
-
設定新的swappiness值(例如,設定為10):
sudo sysctl vm.swappiness=10
-
使該設定在重啟後仍然有效:
sudo nano /etc/sysctl.conf
在檔案末尾新增:
vm.swappiness=10
-
儲存並退出編輯器。
完成以上步驟後,你的Ubuntu系統應該已經成功配置了位於/mnt/data/mem
目錄下的64GB的虛擬記憶體。
swappiness推薦
在配置系統的swappiness
引數時,主要取決於你對系統效能的需求以及具體的使用場景。Swappiness
引數控制了Linux核心如何使用交換空間(swap)的頻率。它的值範圍是從0到100:
- 值為0時,核心將盡量避免使用交換空間。
- 值為100時,核心將非常頻繁地使用交換空間。
推薦的Swappiness
設定
對於你的系統配置(64GB實體記憶體和64GB交換空間),以下是一些推薦:
-
桌面系統或開發環境:
如果你主要用於桌面應用或開發環境,通常希望儘量減少交換空間的使用以保持系統響應速度。推薦將swappiness
設定為較低的值,例如:sudo sysctl vm.swappiness=10
-
伺服器或記憶體緊張的環境:
如果你的系統執行在伺服器環境中,或者經常需要處理大量資料並且記憶體使用接近最大值,適當增加swappiness
值可以幫助系統更好地管理記憶體。推薦值可以設定在30到60之間:sudo sysctl vm.swappiness=30
-
混合用途:
如果你的系統有多種用途(如同時執行桌面應用和伺服器任務),可以選擇一箇中間值,例如:sudo sysctl vm.swappiness=20
調整和持久化Swappiness
值
-
臨時調整
swappiness
值:sudo sysctl vm.swappiness=20
-
使
swappiness
值在重啟後仍然有效:
編輯/etc/sysctl.conf
檔案:sudo nano /etc/sysctl.conf
在檔案末尾新增:
vm.swappiness=20
-
儲存並退出編輯器。
驗證Swappiness
值
你可以透過以下命令驗證當前的swappiness
值:
cat /proc/sys/vm/swappiness
監控和調整
請注意,最佳的swappiness
設定可能需要一些實驗和監控。你可以在實際使用中觀察系統的效能和記憶體使用情況,並根據需要進行調整。
總結:
- 桌面系統或開發環境:推薦
swappiness=10
- 伺服器或記憶體緊張的環境:推薦
swappiness=30
到60
- 混合用途:推薦
swappiness=20
透過以上方法,你可以找到一個平衡點,使你的系統在效能和記憶體管理之間達到最佳狀態。