當Ubuntu系統的Swap占用過多時,可以采取以下幾種方法來解決:
sudo sysctl vm.swappiness=10
可以臨時將swappiness值設置為10,這樣系統會減少使用swap分區。/etc/sysctl.conf
文件,添加或修改 vm.swappiness=10
這一行,然后運行 sudo sysctl -p
使更改生效。如果系統的物理內存不足,增加物理內存是最直接的解決方案。這可以通過升級硬件或清理不必要的應用程序來實現。
創建Swap文件:
sudo fallocate -l 4G /swapfile
創建一個指定大小的swap文件,例如4GB。sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
/etc/fstab
文件中,添加如下行:/swapfile none swap sw 0 0
。創建Swap分區:
fdisk
或 gdisk
創建分區。sudo mkswap /dev/sdXY
(將/dev/sdXY
替換為實際的分區名)。sudo swapon /dev/sdXY
/etc/fstab
文件,添加如下行:/dev/sdXY none swap sw 0 0
。使用以下命令可以找到占用swap的進程:
for proc in $(find /proc -maxdepth 1 -type d -regex "/proc/[0-9]"); do
pid=$(basename $proc)
cmd=$(cat $proc/cmdline 2>/dev/null | tr '\0' ' ')
swap=$(awk '/VmSwap/ {print $2}' $proc/status 2>/dev/null)
if [ "$swap" != "" ] && [ "$swap" -gt 0 ]; then
echo "PID: $pid Swap: $swap KB CMD: $cmd"
fi
done | sort -k4 -n -r | head -10
找到占用swap較多的進程后,可以考慮優化這些進程的內存使用或重啟這些進程。
使用以下命令釋放無用的緩存,騰出更多物理內存:
sudo sync
sudo sysctl vm.drop_caches
通過上述方法,可以有效降低swap使用,提高系統性能。根據具體情況選擇合適的優化策略。