KVM 가상 컨테이너는 RAM을 어떻게 소비합니까?

KVM 가상 컨테이너는 RAM을 어떻게 소비합니까?

47GB RAM과 정확히 동일한 스왑 공간을 실행하는 물리적 서버가 있습니다. 하드 드라이브 공간은 228GB입니다.

92개의 컨테이너(KVM 컨테이너)를 시작하고 각 컨테이너에 2560MB RAM을 할당했습니다.

현재 사용 가능한 메모리 상태는 다음과 같습니다.

ubuntu@ubuntu:~$ free -h
              total        used        free      shared  buff/cache   available
Mem:            47G         43G        263M         18M        3.0G        2.8G
Swap:           47G         17G         30G

하드 디스크 저장:

ubuntu@ubuntu:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev             24G     0   24G   0% /dev
tmpfs           4.8G   23M  4.7G   1% /run
/dev/sda1       228G   33G  184G  15% /
tmpfs            24G     0   24G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            24G     0   24G   0% /sys/fs/cgroup
tmpfs           4.8G     0  4.8G   0% /run/user/1000
cgmfs           100K     0  100K   0% /run/cgmanager/fs
ubuntu@ubuntu:~$ 

이제 내 질문은 다음과 같습니다.

  1. 시작할 수 있는 최대 KVM 컨테이너 수를 결정하는 방법은 무엇입니까?
  2. KVM은 시스템 외부에서도 사용 가능한 스왑 공간을 사용합니까?

답변1

  1. 실행하고 RAM을 사용하기 시작할 때까지 알 수 없기 때문에 실행할 수 있는 컨테이너 수를 정확히 결정하는 것은 어렵습니다. Linux는 프로세스가 RAM을 요청할 때가 아니라 프로세스가 실제로 RAM을 사용할 때만 프로세스에 RAM을 할당합니다. 이것이 바로 47GB RAM + 47GB 스왑 공간만으로 235.5GB(92 x 2560MB) 가상 머신을 실행할 수 있는 이유입니다.

  2. 예. 가상 머신과 컨테이너는 다른 프로세스와 마찬가지로 Linux 프로세스입니다. RAM은 다른 것이 필요할 때 교체될 수 있으며 교체될 것입니다.

  3. Linux가 먼저 RAM에서 스왑 데이터를 압축한 다음 (메모리가 가득 차면) 디스크의 스왑 파티션에서 압축할 수 있도록 서버에서 zswap을 활성화하는 것이 좋습니다. 예를 들어

# enable zswap
echo 1 > /sys/module/zswap/parameters/enabled

# set it to use lz4 (or use gzip for better compression but more CPU usage)
echo lz4 > /sys/module/zswap/parameters/compressor

# set maximum allowed percentage of RAM to use for swap
echo 50 > /sys/module/zswap/parameters/max_pool_percent

그런데 현재 사용된 스왑 공간의 양을 확인하려면 swapon인수 없이 실행하세요. 또는 실행 top또는 htop.

관련 정보