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:~$
이제 내 질문은 다음과 같습니다.
- 시작할 수 있는 최대 KVM 컨테이너 수를 결정하는 방법은 무엇입니까?
- KVM은 시스템 외부에서도 사용 가능한 스왑 공간을 사용합니까?
답변1
실행하고 RAM을 사용하기 시작할 때까지 알 수 없기 때문에 실행할 수 있는 컨테이너 수를 정확히 결정하는 것은 어렵습니다. Linux는 프로세스가 RAM을 요청할 때가 아니라 프로세스가 실제로 RAM을 사용할 때만 프로세스에 RAM을 할당합니다. 이것이 바로 47GB RAM + 47GB 스왑 공간만으로 235.5GB(92 x 2560MB) 가상 머신을 실행할 수 있는 이유입니다.
예. 가상 머신과 컨테이너는 다른 프로세스와 마찬가지로 Linux 프로세스입니다. RAM은 다른 것이 필요할 때 교체될 수 있으며 교체될 것입니다.
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
.