proxmox 에서 vm 생성시 메모리 및 cpu 설정은 필수 입니다.
해당부분에 있어 어떻게 주어야 하는지 알아보겠습니다.
메모리 설정
1. Ballooning Device가 체크된 경우:
- 자동 메모리 할당이 활성화됩니다.
- VM은 설정된 최소 메모리(minimum memory) 이상을 항상 보장받고, 호스트의 RAM 사용량이 80% 이하일 경우 VM에 동적으로 메모리가 추가됩니다.
- 호스트 메모리가 부족하면 VM이 메모리를 다시 호스트에 반환하며, 필요하면 VM 내부에서 스왑이나 OOM(Out of Memory) 처리가 발생할 수 있습니다.
- 여러 VM이 있을 경우, Shares 설정으로 여유 메모리 우선순위를 조정할 수 있습니다.
2. Ballooning Device가 해제된 경우:
- 고정 메모리 할당만 가능합니다.
- 설정한 메모리 크기만큼 VM에 고정적으로 할당됩니다. (최소 메모리와 최대 메모리가 동일하게 설정됨)
- 동적 메모리 조정이 이루어지지 않으며, VM은 설정된 메모리 이상/이하로 확장 또는 축소되지 않습니다.
차이점
항목Ballooning 활성화 (체크)Ballooning 비활성화 (해제)
메모리 할당 방식 | 동적 할당 (최소 ~ 최대 메모리) | 고정 할당 (설정된 메모리만 사용) |
호스트 메모리 사용 | 호스트 메모리 상황에 따라 메모리 반납 가능 | 설정된 만큼의 메모리만 점유, 반납 불가 |
성능 | 메모리 동적 조정으로 유연하지만, 성능 약간 감소 가능 | 고정 메모리로 성능은 일정 |
적용 대상 | 리소스가 제한된 환경에서 효율적으로 사용 가능 | 리소스 고정이 필요한 중요 시스템에 적합 |
결론
- Ballooning Device 체크: VM 메모리를 동적으로 관리하여 호스트 리소스를 효율적으로 활용.
- 여러 VM이 있는 경우 권장.
- 하지만 Windows 게스트에서는 Ballooning 활성화 시 성능 저하 가능.
- Ballooning 활성화: 메모리 동적 조정 → 유휴 메모리를 효율적으로 활용 가능.
- Ballooning Device 해제: VM에 고정 메모리를 할당하여 메모리 관리가 단순.
- 중요한 시스템이나 성능이 중요한 환경에 적합.
- 설정한 8GB 메모리를 고정적으로 할당하며, 그 이상도 이하도 사용하지 않습니다
- Ballooning 비활성화: 설정한 메모리만 사용 → 중요한 작업에 고정 리소스 제공, 예측 가능한 성능 보장.
CPU 설정

CPU 소켓은 CPU를 연결할 수 있는 PC 마더보드의 물리적 슬롯입니다. 그런 다음 이 CPU에는 독립적인 처리 장치인 하나 이상의 코어가 포함될 수 있습니다. 4코어가 있는 단일 CPU 소켓이 있는지, 2코어가 있는 두 개의 CPU 소켓이 있는지 여부는 성능 관점에서 볼 때 대부분 무관합니다. 그러나 일부 소프트웨어 라이선스는 기기의 소켓 수에 따라 달라지므로, 이 경우 라이선스가 허용하는 대로 소켓 수를 설정하는 것이 합리적입니다.
가상 CPU(코어 및 소켓)의 수를 늘리면 일반적으로 성능이 향상되지만, 이는 VM 사용에 크게 의존합니다. 멀티 스레드 애플리케이션은 물론 많은 수의 가상 CPU의 이점을 누릴 수 있으며, 추가하는 각 가상 CPU에 대해 QEMU는 호스트 시스템에서 새로운 실행 스레드를 생성합니다. VM의 워크로드가 확실하지 않다면 일반적으로 총 코어 수를 2개로 설정하는 것이 안전합니다.
모든 VM의 전체 코어 수가 서버의 코어 수보다 많으면(예: 8개의 코어만 있는 시스템에서 각각 4개의 코어가 있는 4개의 VM(= 총 16개) 완벽하게 안전합니다. 이 경우 호스트 시스템은 표준 멀티 스레드 애플리케이션을 실행하는 것처럼 서버 코어 간에 QEMU 실행 스레드의 균형을 맞출 수 있습니다. 그러나 Proxmox VE는 컨텍스트 스위치 비용으로 인해 성능이 저하될 뿐이므로 실제 사용 가능한 것보다 더 많은 가상 CPU 코어로 VM을 시작할 수 없습니다. |
NUMA란?
NUMA는 CPU와 메모리를 물리적으로 클러스터링하는 아키텍처입니다. 주요 특징은:
- CPU는 자신과 가까운 메모리(NUMA 노드)를 사용할 때 더 빠르게 접근할 수 있습니다.
- 반대로, 다른 NUMA 노드의 메모리에 접근하면 성능이 저하될 수 있습니다.
Proxmox에서 NUMA 설정은 VM이 NUMA 아키텍처를 이해하고 최적화된 메모리 접근을 할 수 있도록 구성합니다.
NUMA를 설정했을 때의 동작:
- Proxmox는 VM의 CPU와 메모리를 NUMA 노드에 매핑합니다.
- VM이 물리적 NUMA 노드 경계를 넘어 자원을 사용하지 않도록 제한하여 성능 저하를 방지합니다.
- VM이 NUMA 아키텍처를 지원하면, 운영체제와 애플리케이션이 메모리 및 CPU를 더 효율적으로 사용할 수 있습니다.
1) 큰 VM(높은 vCPU 및 메모리 할당)
- vCPU와 메모리를 다수 할당하는 **대형 VM(예: 8 vCPU, 16GB RAM 이상)**은 NUMA를 활성화하는 것이 좋습니다.
- NUMA를 설정하면, Proxmox가 VM을 NUMA 노드 단위로 나눠 더 나은 성능을 제공합니다.
2) 소규모 VM 또는 경량 애플리케이션
- vCPU와 메모리 사용량이 적은 소규모 VM(예: 1
2 vCPU, 24GB RAM)에서는 NUMA 설정이 큰 성능 차이를 만들지 않습니다. - NUMA 설정이 오히려 관리 복잡도를 증가시킬 수 있습니다.
3) 단일 소켓 CPU 서버
- NUMA는 주로 다중 소켓 CPU 서버에서 성능 최적화를 위해 필요합니다.
- 단일 소켓 CPU 서버는 모든 메모리에 대한 접근 속도가 균일하므로, NUMA 설정이 필요 없습니다.
장점
- 성능 최적화: NUMA를 활성화하면 NUMA 아키텍처에서 더 낮은 메모리 대기 시간과 높은 대역폭을 얻을 수 있습니다.
- 큰 워크로드에 적합: 대규모 VM이나 메모리 집약적인 애플리케이션의 성능을 개선합니다.
단점
- 설정 복잡도: NUMA 활성화 후 CPU 및 메모리 배치를 신중하게 계획해야 합니다.
- 작은 VM에서 효과 미미: 작은 VM에서는 NUMA 설정으로 얻는 이점이 크지 않을 수 있습니다.
- 호환성 문제: 일부 VM 운영체제(또는 애플리케이션)는 NUMA 아키텍처를 제대로 지원하지 않을 수 있습니다.
NUMA만 활성화
- 적합한 경우:
- NUMA 기반 서버에서 고성능 애플리케이션이나 메모리 민감 워크로드를 실행할 때.
- 대형 VM(8+ vCPU, 16+ GB RAM)을 사용하는 경우.
- 설정 방법:
- Proxmox Web UI → VM 설정 → NUMA 활성화.
- Ballooning Device는 비활성화.
Ballooning만 활성화
- 적합한 경우:
- NUMA가 필요 없는 단일 소켓 서버나 소규모 VM을 운영할 때.
- 메모리 유동성이 중요한 다중 VM 환경에서.
- 설정 방법:
- Proxmox Web UI → VM 설정 → Memory에서 Ballooning Device 체크.
- NUMA는 비활성화.
NUMA와 Ballooning 동시 활성화
- 적합한 경우:
- NUMA 노드 내에서 충분히 작은 VM을 사용하며, 메모리 유동성도 중요한 경우.
- NUMA 경계를 넘지 않는 소규모 VM이 주로 실행될 때.
- 설정 방법:
- Proxmox Web UI → VM 설정 → NUMA 활성화 + Ballooning Device 체크.
- NUMA 노드 내 자원을 초과하지 않도록 vCPU와 메모리 크기를 제한.
5. 결론
- NUMA 최적화가 중요한 경우: Ballooning Device를 비활성화하고 NUMA를 활성화.
- 메모리 유동성이 중요한 경우: Ballooning Device를 활성화하고 NUMA는 비활성화.
- 둘 다 활성화: NUMA 노드 자원을 초과하지 않는 소규모 VM 환경에서 제한적으로 사용 가능.
워크로드와 하드웨어 특성에 따라 적절한 조합을 선택하세요. NUMA를 활성화한 상태에서 Ballooning을 활성화하면 성능에 문제가 생길 가능성이 있으므로, 주의 깊은 설정이 필요합니다.
저같은 경우는 NUMA 활성화 // Ballooning Device는 비활성화 하여 데스크탑 서비스에 맞게 설정 하였습니다.
8Core 16G memory 마스터 서버에
4vcpu 6G memory를 *4 ea 생성하여 stress 테스트시 다운 현상이 발생할수 있으나
swap 메모리를 적절하게 생성하여 부가가 줄어들때까지 매우 느린 현상은 발생하나 다운 현상은 발생되지 않았습니다.
'Linux&Ubuntu' 카테고리의 다른 글
ceph Quincy release (17) 구축해보기 (0) | 2023.09.20 |
---|