RAM이 부족한 가상 머신에서 메모리 압축

RAM이 부족한 가상 머신에서 메모리 압축

가상 머신의 제한된 메모리를 최대한 활용할 수 있는 방법이 있습니까?

클라우드 호스트에서 실행되는 가상 머신이 있고 메모리가 상당히 부족한 머신을 최적화하려고 합니다.

사용 가능한 메모리를 모두 사용 중이라면 메모리의 일부를 압축하는 방법이 있다고 들었습니다.즈람

어떻게 작동하게 합니까?

답변1

위에서 설명했듯이즐램 위키:

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 <[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

관련 정보