Kernel-Modules

壓縮低 RAM VM 上的記憶體

  • July 19, 2017

有沒有辦法從 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

引用自:https://unix.stackexchange.com/questions/136129