17.4. 가상 머신 메모리 구성
VM(가상 머신)의 성능을 개선하기 위해 VM에 추가 호스트 RAM을 할당할 수 있습니다. 마찬가지로 호스트 메모리를 다른 VM 또는 작업에 할당할 수 있도록 VM에 할당된 메모리 양을 줄일 수 있습니다.
이러한 작업을 수행하려면 웹 콘솔 또는 명령줄을 사용할 수 있습니다.
17.4.1. 메모리 과다 할당 링크 복사링크가 클립보드에 복사되었습니다!
KVM 하이퍼바이저에서 실행되는 VM(가상 머신)에는 할당된 물리적 RAM의 전용 블록이 없습니다. 대신 각 VM은 요청된 경우에만 호스트의 Linux 커널이 메모리를 할당하는 Linux 프로세스로 작동합니다. 또한 호스트의 메모리 관리자는 VM의 메모리를 자체 실제 메모리와 스왑 공간 간에 이동할 수 있습니다. 메모리 과다 할당이 활성화된 경우 커널은 VM 프로세스에서 요청된 메모리 양이 완전히 사용되지 않기 때문에 VM에서 요청하는 것보다 적은 실제 메모리를 할당하도록 결정할 수 있습니다.
기본적으로 메모리 과다 할당은 Linux 커널에서 활성화되며 커널은 VM 요청에 대한 안전한 양의 메모리 과다 할당을 추정합니다. 그러나 메모리 집약적인 워크로드에 대해 자주 과다 할당을 통해 시스템이 불안정해질 수 있습니다.
메모리 과다 할당을 사용하려면 호스트 물리적 머신에 충분한 스왑 공간을 할당해야 하며 호스트 물리 머신 프로세스에 충분한 메모리를 수용할 수 있습니다. 권장되는 기본 스왑 공간 크기에 대한 지침은 다음을 참조하십시오. Red Hat 플랫폼에 권장되는 스왑 크기는 무엇입니까?
호스트에서 메모리 부족을 처리하는 권장 방법:
- VM당 메모리 할당.
- 호스트에 더 많은 물리적 메모리를 추가합니다.
- 더 큰 스왑 공간을 사용합니다.
VM이 자주 스왑되는 경우 속도가 느려집니다. 또한 오버 커밋으로 인해 시스템이 OOM(메모리 부족)이 발생하여 Linux 커널이 중요한 시스템 프로세스를 종료할 수 있습니다.
장치 할당에서는 메모리 과다 할당이 지원되지 않습니다. 장치 할당을 사용 중인 경우 할당된 장치에서 직접 메모리 액세스(DMA)를 활성화하려면 모든 가상 머신 메모리를 정적으로 할당해야 합니다.
17.4.2. 웹 콘솔을 사용하여 가상 머신 메모리 추가 및 제거 링크 복사링크가 클립보드에 복사되었습니다!
VM(가상 머신)의 성능을 개선하거나 사용 중인 호스트 리소스를 확보하기 위해 웹 콘솔을 사용하여 VM에 할당된 메모리 양을 조정할 수 있습니다.
사전 요구 사항
- RHEL 8 웹 콘솔을 설치했습니다.
- cockpit 서비스를 활성화했습니다.
사용자 계정이 웹 콘솔에 로그인할 수 있습니다.
자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.
게스트 OS는 메모리 balloon 드라이버를 실행하고 있습니다. 이러한 경우를 확인하려면 다음을 수행합니다.
VM 구성에
memballoon장치가 포함되어 있는지 확인합니다.# virsh dumpxml testguest | grep memballoon <memballoon model='virtio'> </memballoon>이 명령이 출력을 표시하고 모델이
none으로 설정되지 않으면memballoon장치가 있습니다.게스트 OS에서 balloon 드라이버가 실행 중인지 확인합니다.
-
Windows 게스트에서 드라이버는
virtio-win드라이버 패키지의 일부로 설치됩니다. 자세한 내용은 Windows 가상 머신용 KVM 반가상화 드라이버 설치를 참조하십시오. -
Linux 게스트에서는 일반적으로 드라이버가 기본적으로 포함되어 있으며
memballoon장치가 있을 때 활성화됩니다.
-
Windows 게스트에서 드라이버는
- 웹 콘솔 VM 플러그인이 시스템에 설치되어 있습니다.
프로세스
선택 사항: VM에 대해 최대 메모리 및 현재 사용된 메모리에 대한 정보를 가져옵니다. 이는 변경 사항 및 확인을 위한 기준 역할을 합니다.
# virsh dominfo testguest Max memory: 2097152 KiB Used memory: 2097152 KiB
RHEL 8 웹 콘솔에 로그인합니다.
자세한 내용은 웹 콘솔에 로그인 을 참조하십시오.
인터페이스에서 표시하려는 정보가 있는 VM을 클릭합니다.
VM의 그래픽 인터페이스에 액세스하기 위한 선택한 VM 및 콘솔 섹션에 대한 기본 정보가 포함된 개요 섹션이 포함된 새 페이지가 열립니다.
개요 창에서
메모리행 옆에 있는 클릭합니다.메모리 조정대화 상자가 표시됩니다.
선택한 VM의 가상 메모리를 구성합니다.
최대 할당 - VM이 프로세스에 사용할 수 있는 최대 호스트 메모리 양을 설정합니다. VM을 만들거나 나중에 늘릴 때 최대 메모리를 지정할 수 있습니다. 메모리를 MiB 또는 GiB의 배수로 지정할 수 있습니다.
VM 종료 시에만 최대 메모리 할당을 조정할 수 있습니다.
현재 할당 - VM에 할당된 실제 메모리 양을 설정합니다. 이 값은 최대 할당보다 작을 수 있지만 초과할 수 없습니다. 해당 프로세스에 대해 VM에서 사용할 수 있는 메모리를 규제하도록 값을 조정할 수 있습니다. 메모리를 MiB 또는 GiB의 배수로 지정할 수 있습니다.
이 값을 지정하지 않으면 기본 할당은 최대 할당 값입니다.
을 클릭합니다.
VM의 메모리 할당이 조정됩니다.
17.4.3. 명령줄을 사용하여 가상 머신 메모리 추가 및 제거 링크 복사링크가 클립보드에 복사되었습니다!
VM(가상 머신)의 성능을 개선하거나 사용 중인 호스트 리소스를 확보하기 위해 CLI를 사용하여 memballoon 장치를 사용하여 VM에 할당된 메모리 양을 조정할 수 있습니다.
사전 요구 사항
게스트 OS는 메모리 balloon 드라이버를 실행하고 있습니다. 이러한 경우를 확인하려면 다음을 수행합니다.
VM 구성에
memballoon장치가 포함되어 있는지 확인합니다.# virsh dumpxml testguest | grep memballoon <memballoon model='virtio'> </memballoon>이 명령이 출력을 표시하고 모델이
none으로 설정되지 않으면memballoon장치가 있습니다.게스트 OS에서 ballon 드라이버가 실행 중인지 확인합니다.
-
Windows 게스트에서 드라이버는
virtio-win드라이버 패키지의 일부로 설치됩니다. 자세한 내용은 Windows 가상 머신용 KVM 반가상화 드라이버 설치를 참조하십시오. -
Linux 게스트에서는 일반적으로 드라이버가 기본적으로 포함되어 있으며
memballoon장치가 있을 때 활성화됩니다.
-
Windows 게스트에서 드라이버는
프로세스
선택 사항: VM에 대해 최대 메모리 및 현재 사용된 메모리에 대한 정보를 가져옵니다. 이는 변경 사항 및 확인을 위한 기준 역할을 합니다.
# virsh dominfo testguest Max memory: 2097152 KiB Used memory: 2097152 KiBVM에 할당된 최대 메모리를 조정합니다. 이 값을 늘리면 VM의 성능 가능성이 향상되고 값을 줄이면 VM이 호스트의 성능 공간을 줄일 수 있습니다. 이 변경 사항은 종료 VM에서만 수행할 수 있으므로 실행 중인 VM을 조정하려면 재부팅이 필요합니다.
예를 들어 testguest VM에서 사용할 수 있는 최대 메모리를 4096MiB로 변경하려면 다음을 수행합니다.
# virt-xml testguest --edit --memory memory=4096,currentMemory=4096 Domain 'testguest' defined successfully. Changes will take effect after the domain is fully powered off.실행 중인 VM의 최대 메모리를 늘리려면 VM에 메모리 장치를 연결할 수 있습니다. 이를 메모리 핫 플러그 라고도 합니다. 자세한 내용은 가상 머신에 장치 연결을 참조하십시오.
주의실행 중인 VM(메모리 핫 언플러그라고도 함)에서 메모리 장치를 제거하는 것은 지원되지 않으며 Red Hat에서 사용하지 않는 것이 좋습니다.
선택 사항: VM에서 현재 사용하는 메모리를 최대 할당까지 조정할 수도 있습니다. 이렇게 하면 최대 VM 할당을 변경하지 않고 다음 재부팅까지 VM에서 보유한 메모리 로드가 조정됩니다.
# virsh setmem testguest --current 2048
검증
VM에서 사용하는 메모리가 업데이트되었는지 확인합니다.
# virsh dominfo testguest Max memory: 4194304 KiB Used memory: 2097152 KiB선택 사항: 현재 VM 메모리를 조정하면 VM의 메모리 balloon 통계를 가져와 메모리 사용을 얼마나 효과적으로 규제하는지 평가할 수 있습니다.
# virsh domstats --balloon testguest Domain: 'testguest' balloon.current=365624 balloon.maximum=4194304 balloon.swap_in=0 balloon.swap_out=0 balloon.major_fault=306 balloon.minor_fault=156117 balloon.unused=3834448 balloon.available=4035008 balloon.usable=3746340 balloon.last-update=1587971682 balloon.disk_caches=75444 balloon.hugetlb_pgalloc=0 balloon.hugetlb_pgfail=0 balloon.rss=1005456
17.4.4. 대규모 페이지를 사용하도록 가상 머신 구성 링크 복사링크가 클립보드에 복사되었습니다!
특정 사용 사례에서는 기본 4KiB 메모리 페이지 대신 대규모 페이지를 사용하여 VM(가상 머신)의 메모리 할당을 개선할 수 있습니다. 예를 들어 대규모 페이지는 데이터베이스 서버와 같은 메모리 사용률이 높은 VM의 성능을 향상시킬 수 있습니다.
사전 요구 사항
- 호스트는 메모리 할당에 대규모 페이지를 사용하도록 구성됩니다. 자세한 내용은 다음을 참조하십시오. 부팅 시 HugeTLB 구성
프로세스
- 실행 중인 경우 선택한 VM을 종료합니다.
1GiB 대규모 페이지를 사용하도록 VM을 구성하려면 편집할 VM의 XML 정의를 엽니다. 예를 들어
testguestVM을 편집하려면 다음 명령을 실행합니다.# virsh edit testguestXML 정의의 <
memoryBacking> 섹션에 다음 행을 추가합니다.<memoryBacking> <hugepages> <page size='1' unit='GiB'/> </hugepages> </memoryBacking>
검증
- VM을 시작합니다.
호스트에서 실행 중인 VM에 대규모 페이지를 성공적으로 할당했는지 확인합니다. 호스트에서 다음 명령을 실행합니다.
# cat /proc/meminfo | grep Huge HugePages_Total: 4 HugePages_Free: 2 HugePages_Rsvd: 1 Hugepagesize: 1024000 kB무료 및 예약된 대규모 페이지(
HugePages_Free+HugePages_Rsvd)를 함께 추가하면 결과는 대규모 페이지 수(HugePages_Total)보다 작아야 합니다. 차이점은 실행 중인 VM에서 사용하는 대규모 페이지 수입니다.