가상머신에서 CPU당 코어 수를 지정하기
이 문서는 이해를 돕기위해 KB#1010184를 한글로 번역한 것입니다. 추가 자료가 첨부되어 있습니다.
목적
이 문서는 가상머신에서 CPU 당 코어 수를 지정하는데 정보를 제공하기 위한 것입니다.
주: 이 기능은 vSphere 4.0에서는 실험적으로 제공됩니다. 이 문서는 ESX 4.1, ESXi 4.1이상에 적용됩니다.
ESXi 5.0의 vSphere Client에서 가상 CPU의 수를 설정하는 것과 관련된 정보는vSphere Virtual Machine Administration메뉴얼의 가상 CPU 구성 편을 참조하기 바랍니다.
ESXi 5.1의 vSphere Client에서 가상 CPU의 수를 설정하는 것과 관련된 정보는vSphere Virtual Machine Administration메뉴얼의 가상 CPU 구성 편을 참조하기 바랍니다.
설명
어떤 운영체제 버전들은 고정된 수의 CPU들에서만 동작하도록 제한이 되어 있습니다. 예를 들면, Windows Server 2003 standard 버전은 4개의 CPU를 지원하도록 제한되어 있습니다. 만약 이 윈도우즈를 8개의 CPU socket을 가진 하드웨어에 설치한다면 4개의CPU에서만 동작합니다. 운영체제는 multi-core CPU를 활용합니다. 따라서, CPU가 dual core라면 Windows Server 2003 Standard 버전은 8개 코어까지를 사용할 수 있고, quad-core CPU 라면 16코어까지 사용할 수 있으며 이런 식으로 multi-core CPU를 활용합니다.
운영체제에 보여지는 VMware 가상머신의 가상 CPU(vCPU)는 단일 코어 CPU로 보여집니다. 따라서, 위의 예에서와 같이 만약 8vCPU 가상머신을 구성한다면 운영체제는 8개의 단일 코어 CPU를 인식합니다. 운영체제가 Windows Server 2003 Standard 버전이라면 4개의 vCPU만을 사용할 것입니다.
주: 1 vCPU는 물리 CPU가 아니라 물리 Core에 매핑됩니다. (Hyperthreading 을 활성화 한 경우에는 Core가 아니라 Thread에 매핑) 따라서, 위 설명에서 가상머신은 실제로 4개의 Core를 사용합니다.
vCPU는 하드웨어 실행 문맥인 논리 CPU에 스케쥴 되기 때문에 그냥 단순히 1vCPU는 1 CPU라고 가정합시다. 논리 CPU는 단일 thread만을 가진 단일 코어 CPU 또는 hyperthreading이 있을 경우에는 단순히 하나의 thread입니다.
시나리오 :
물리 환경에서는 Windows 2003 Server Standard 버전이 8 코어(2-socket quad-core 장비에서)까지 사용할 수 있었지만, 가상머신에서는 VMware가 각 CPU가 소켓당 하나의 코어만을 가진다고 하였기 때문에 4개의 코어만을 사용했습니다.
이제 VMware는 가상머신의 CPU에서 코어 수를 관리할 수 있는 설정을 제공합니다.
가상머신 구성 파일(.vmx)에 추가할 수 있는 이 새로운 설정은 가상머신의 가상 소켓당 코어 수를 설정하게 합니다.
vSphere Client에서 적용하려:
- Power off virtual machine.
- 가상머신에서 오른쪽 마우스 클릭을 하고Edit Settings를 선택합니다.
- Hardware->CPUs를 선택합니다.
- 가상 프로세서 수를 선택합니다.
- Options탭을 클릭합니다.
- Advanced options영역에서 General을 클릭합니다.
- Configuration Parameters를 클릭합니다.
- Add Row를 클릭합니다
- Name칼럼에cpuid.coresPerSocket를 입력합니다.
- Value칼럼에값을 입력합니다.( 2, 4, 또는 8을 사) .
주: 가상머신의 vCPU의 수는 cpuid.coresPerSocket로 나누어 집니다.따라서, vCPU의 수를cpuid.coresPerSocket로 나눈 값이 반드시 정수가 되도록 해야합니다.예를 들면,8 vCPU의 가성머신을 생성하면, coresPerSocket은 1, 2, 4, 또는 8이어야 합니다.
가상머신은 이제 9번 에서 지정한 CPU당 코어를 갖는 multi-core CPU를 갖는 것으로 운영체제에 나타납니다. - OK를 클릭합니다.
- ESXi 5.x에서는 vSphere Client, Web Client에서 GUI를 통해 설정할 수 있습니다.
[ vSphere Client]
[vSphere Web Client]
예를 들면 :
4 vCPU구성할 때 | ||||
원하는 구성 | 필요한 설정 | |||
소켓 수 | 소켓 당 코어 수 | 총 코어 수 | vCPU | cpuid.coresPerSocket/sockets |
1 | 4 | 4 | 4 | 4 |
2 | 2 | 4 | 4 | 2 |
8 vCPU구성할 때 | ||||
원하는 구성 | 필요한 설정 | |||
소켓 수 | 소켓 당 코어 수 | 총 코어 수 | vCPU | cpuid.coresPerSocket/sockets |
1 | 8 | 8 | 8 | 8 |
2 | 4 | 8 | 8 | 4 |
4 | 2 | 8 | 8 | 2 |
주의 :
- 4 vCPU이상을 할당하거나 프로세서가 6 코어 이상을 지원하는 경우, 8vCPU와 프로세서당 12코어를 지원하는 Enterprise Plus 라이센스가 있어야 합니다.
- 구성할 수 있는 최대 vCPU 수는 라이센스에 따라 다릅니다.
- ESX 4.x에서 multi-core vCPU에 지원하는cpuid.coresPerSocket는 1,2,4,8 입니다.
- ESX 4.0에서, multi-core vCPU가 사용되면, hot-plug vCPU는 UI에서 설정 가능한 것으로 보여지더라도 허용되지 않습니다.
- 하드웨어 버전 7 이상의 가상머신이 multi-core vCPU 기능을 지원합니다.
중요: cpuid.coresPerSocket를 사용할 때, 운영체제의 EULA(운영체제가 실제로 실행될 물리 CPU의 수와 관련하여) 준수를 항상 확인해야 합니다. 자세한 정보는 아래 문서를 참조합니다.:
- ESXi and vCenter Server 5.0 Documentation - Change the Number of Virtual CPUs in the vSphere Client
- ESXi and vCenter Server 5.1 Documentation - Change the Number of Virtual CPUs in the vSphere Client
vSphere Edition별 vCPU 사용에 대해서는 Compare vSphere Editions를 참조합니다.
추가 정보
운영체제가 SMP를 high-end-server용도로만 되어 있는 경우, 리눅스에서 SMP 커널을 선택하거나 윈도우즈에서 Multiprocessor PC HAL을 선택하는 것과 같은 작업을 사용자가 해야 합니다.
주: 최신 운영체제에서는 문제가 없습니다. XP외 이후버전, RHEL5와 이후 버전은 항상 SMP 커널을 설치하거나 자동으로 전환됩니다.
오래된 운영체제의 예:
- RHel3-ES32
- RHel3-ES64
- RHel4.8-AS32
- RHel4.7-ES32
- RHel4.7-ES64
- Win2000-Pro
- Win2000-Serv
주제별 추가 정보:
- multicore CPUs구성은, vSphere Virtual Machine Administration Guide참조.
- vSphere 4.1 ESX 에서 multicore CPUs 구성은, VMware vSphere 4 -ESX and vCenter Server참조.
- vSphere 5.0에서 multicore CPUs 구성은,vSphere 5 Documentation Center참조
- CPU당 코어를 확인하는 유틸리티는Determining the number of cores per socket in a Windows virtual machine (1030067)참조
주:
- vSphere 5.0의 Enterprise Licensing 과 Virtual Machine Hardware Version 8에서, 가상머신의 최대 vCPU 수는 32입니다.
- vSphere 5.0 의 Virtual Machine Hardware Version 7, 가상머신의 최대 vCPU수는8입니다.
최대 CPU 허용치에 대해서는vSphere 5.0 Configuration Maximums참조.
FAQ (질의 응답)
Q1. 물리 서버에 가상머신을 몇개까지 생성할 수 있고, 가상머신당 vCPU는 몇개를 지정하는 것이 적정한가?
A1. Configuration Maximum 메뉴얼에서 구성 가능한 최대 값에 대해서 정의 되어 있습니다.
vSphere 5.x에서 ESXi의 CPU 최대 값은
- 호스트당 논리 CPU: 160
- 호스트당 NUMA 노드: 8
- 호스트당 가상머신: 512
- 호스트당 가상 CPU: 2048
- 코어당 가상 CPU: 25
으로 되어 있습니다.
예를 들어, 10 Core CPU 8 socket으로 구성된 서버는 8 x 10 = 80 코어 이고 hyperthreading을 enable할 경우 논리 CPU는 160개가 됩니다. 따라서, ESXi가 지원하는 물리 하드웨어는 hyperthreading을 활성화 할 경우 10 core CPU 8 socket이고 hyperthreading을 활성화 하지 않을 경우 10 core CPU 16 socket이 될 수 있습니다. 이 때, 80 코어에 코어당 가상 CPU 25를 곱하면 2,000 개의 가상 CPU가 지원되고 최대 가상머신 수 512로 계산하면 각 가상머신은 4개의 가상CPU를 가질 수 있습니다. 가성머신을 최대 값인 512개를 만들지 아니면 다른 어떤 값으로 할지는 가상머신에서 실행될 어플리케이션과 업무부하에 따라 결정될 수 있을 것입니다.
적정한 수준의 구성 값에 대해서는 고객의 환경에 따라 다르기 때문에 일률적으로 가이드를 할 수 없습니다. 가상머신에서 어떤 어플리케이션을 실행할지, 업무 부하가 얼마나 될지에 대해서 확정할 수 없기 때문에 물리 서버당 가상머신의 수, 가상머신 당 vCPU의 수는 고객의 테스트 환경에서 테스트를 통해서 적정 값을 찾는 과정을 거쳐야 합니다. 계산된 최대값의 몇 퍼센트 범위에서 운영할 것인지 역시 자동차를 시속 몇 킬로미터로 운행할 지를 결정하는 것과 같이 사용자의 결정 사항입니다. 보수적으로 70 퍼센트 이내로 정할 수도 있고, 공격적으로 90 퍼센트 이내로 정할 수도 있습니다. 비용 대비 효과, 시스템의 성능, 관리의 용이성등 여러 가지 변수들이 고려될 수 있을 것입니다.
Q2. 물리 서버가 Multi-Core로 구성 되었을 때, 가상머신으로 구성하면 vCPU 를 어떻게 정해야 하는가? 예를 들어 물리 서버가 32way라면 가상머신도 32 vCPUs로 구성해야 하는가?
A2. Single-threaded 어플리케이션은 uniprocessor 가상머신으로 구성하는 것이 SMP 가상머신으로 구성하는 것보다 성능과 원 사용에 있어서 유리합니다. Single-threaded 어플리케이션을 SMP가상머신에 실행한다고 성능이 더 좋아지지 않습니다. ( vSphere Resource Management 메뉴얼 CPU virtualization basics의 Performance implication of CPU virtualization 참조)
가상머신이 더 많은 vCPU를 가질 수록 interrupt또한 많이 필요로 합니다. 따라서, interrupt를 줄이는 차원에서 vCPU의 수는 필요한 최소한으로 하는 것이 좋습니다.
CPU Overcommit과 성능에 관한 글
CPU Overcommitment and its impact on SQL server performance on VMware
Q3. Business critical application, Mission critical application을 가상화 할 수 있는가?
A3. 75 퍼센트의 VMware 고객들이 적어도 하나 이상의 Business-Critical 어플리케이션을 가상화 하였다고 응답했습니다.
VMware portal web page for virtualizing Business Critical Enterprise Applications
Virtualizaing Business-Critical Applications on vSphere
가상화의 효과
- · 복제를 통한 업그레이드 가속화.
- · DRS, Network I/O control, Storage I/O control, CPU reservation와 Memory reservation을 통해 자원 확보를 보장.
- · CPU, Memory Hot-Add를 통해 필요시 즉시 자원을 증가.
- · HA를 통해 어플리케이션을 장애로부터 보호 (vMotion, HA, App-aware HA, FT)
- · vCOPS를 사용한 통일된 어플리케이션 모니터링.
- · vSphere 5를 사용하여 초대용량 어플리케이션을 수용 (32 vCPUs, 1TB Memory, 36GB/s network 및 1 million storage IOPS)
- · 어플리케이션 cost of ownership 절감