在低 RAM 虚拟机上压缩内存

在低 RAM 虚拟机上压缩内存

有没有办法充分利用虚拟机上有限的内存?

我有一个在云主机上运行的虚拟机,并尝试优化内存相当低的机器。

我听说,如果所有空闲内存都在使用中,有一种方法可以压缩内存中的部分,称为兹拉姆

我如何让它运行?

答案1

正如上所解释的兹拉姆维基:

zram(以前称为 compcache)可以创建基于 RAM 的块设备。它是 Linux 内核自 3.2 以来的一个实验性(暂存)模块。

因此,如果您使用 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 <[email protected]>
# 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

相关内容