가상 머신의 제한된 메모리를 최대한 활용할 수 있는 방법이 있습니까?
클라우드 호스트에서 실행되는 가상 머신이 있고 메모리가 상당히 부족한 머신을 최적화하려고 합니다.
사용 가능한 메모리를 모두 사용 중이라면 메모리의 일부를 압축하는 방법이 있다고 들었습니다.즈람
어떻게 작동하게 합니까?
답변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