Kernel-Modules
壓縮低 RAM VM 上的記憶體
有沒有辦法從 VM 上的有限 RAM 中獲得更多收益?
我有一個在雲主機上執行的虛擬機,並嘗試優化一個相當低的 RAM mashine。
我聽說,如果所有空閒記憶體都在使用中,有一種方法可以壓縮記憶體中的部分,稱為zram
我如何讓它執行?
正如Zram Wiki上所解釋的:
zram(以前稱為 compcache)可以創建基於 RAM 的塊設備。它是自 3.2 以來 Linux 核心的一個實驗性(暫存)模組。
因此,如果您使用的是 3.2 之前的核心,則需要將以下腳本(取自此處)複製到
/etc/init.d/zram
:### BEGIN INIT INFO # Provides: zram # Required-Start: $local_fs # Required-Stop: $local_fs # Default-Start: S # Default-Stop: 0 1 6 # Short-Description: Use compressed RAM as in-memory swap # Description: Use compressed RAM as in-memory swap ### END INIT INFO # Author: Antonio Galea <antonio.galea@gmail.com> # Thanks to Przemysław Tomczyk for suggesting swapoff parallelization FRACTION=75 MEMORY=`perl -ne'/^MemTotal:\s+(\d+)/ && print $1*1024;' < /proc/meminfo` CPUS=`grep -c processor /proc/cpuinfo` SIZE=$(( MEMORY * FRACTION / 100 / CPUS )) case "$1" in "start") param=`modinfo zram|grep num_devices|cut -f2 -d:|tr -d ' '` modprobe zram $param=$CPUS for n in `seq $CPUS`; do i=$((n - 1)) echo $SIZE > /sys/block/zram$i/disksize mkswap /dev/zram$i swapon /dev/zram$i -p 10 done ;; "stop") for n in `seq $CPUS`; do i=$((n - 1)) swapoff /dev/zram$i && echo "disabled disk $n of $CPUS" & done wait sleep .5 modprobe -r zram ;; *) echo "Usage: `basename $0` (start | stop)" exit 1 ;; esac
賦予它可執行的權限
chmod +x /etc/init.d/zram
然後指示您的系統在引導時啟動它,使用命令
insserv zram
下次重新啟動後,您將看到與
swapon -s
這看起來像:
Filename Type Size Used Priority /dev/zram0 partition 381668 380716 10