KR101884549B1 - Selecting a host for a virtual machine using a hardware multithreading parameter - Google Patents

Selecting a host for a virtual machine using a hardware multithreading parameter Download PDF

Info

Publication number
KR101884549B1
KR101884549B1 KR1020167033176A KR20167033176A KR101884549B1 KR 101884549 B1 KR101884549 B1 KR 101884549B1 KR 1020167033176 A KR1020167033176 A KR 1020167033176A KR 20167033176 A KR20167033176 A KR 20167033176A KR 101884549 B1 KR101884549 B1 KR 101884549B1
Authority
KR
South Korea
Prior art keywords
hardware
host computer
computer system
hardware multithreading
request
Prior art date
Application number
KR1020167033176A
Other languages
Korean (ko)
Other versions
KR20160147958A (en
Inventor
제프리 웨인 테너
조셉 윌리엄 크로퍼
카일 레인 헨더슨
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/297,677 external-priority patent/US9384027B2/en
Priority claimed from US14/297,707 external-priority patent/US9400672B2/en
Priority claimed from US14/297,724 external-priority patent/US9304805B2/en
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Priority claimed from PCT/IB2015/054229 external-priority patent/WO2015186088A1/en
Publication of KR20160147958A publication Critical patent/KR20160147958A/en
Application granted granted Critical
Publication of KR101884549B1 publication Critical patent/KR101884549B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing

Abstract

클라우드 매니저는 호스트 컴퓨터 시스템들 상의 이용 가능한 자원들을 모니터하고, 상기 호스트 컴퓨터 시스템들은 상기 호스트 컴퓨터 시스템들 상의 CPU들에 의해서 지원되는 다수의 하드웨어 스레드들을 포함한다. 상기 클라우드 매니저는 상기 호스트 컴퓨터 시스템 상에서 요구되는 하드웨어 멀티스레딩의 양을 명시하는 하드웨어 멀티스레딩 파라미터를 포함하는 가상 머신(VM)을 제공하기 위해 요청을 수신한다. 그 다음, 상기 클라우드 매니저는 하드웨어 멀티스레딩 파라미터를 고려하여 상기 VM을 위해 하나의 호스트 컴퓨터 시스템을 선정한다.The cloud manager monitors the available resources on the host computer systems, and the host computer systems include a plurality of hardware threads supported by the CPUs on the host computer systems. The cloud manager receives a request to provide a virtual machine (VM) that includes hardware multithreading parameters specifying the amount of hardware multithreading required on the host computer system. The cloud manager then selects one host computer system for the VM in consideration of the hardware multithreading parameters.

Description

하드웨어 멀티스레딩 파라미터를 사용한 가상 머신을 위한 호스트의 선택{SELECTING A HOST FOR A VIRTUAL MACHINE USING A HARDWARE MULTITHREADING PARAMETER}Selecting a host for a virtual machine using hardware multithreading parameters {SELECTING A HOST FOR A VIRTUAL MACHINE USING A HARDWARE MULTITHREADING PARAMETER}

[0001] 본 출원은 일반적으로 가상 머신들을 호스트 컴퓨터 시스템들에 배치하는 것에 관한 것이고, 더 구체적으로는 하드웨어 멀티스레딩 파라미터(a hardware multithreading parameter)를 사용하여 가상 머신을 위해 호스트를 선정하는 것(selecting)에 관한 것이다.[0001] The present application relates generally to the placement of virtual machines on host computer systems, and more particularly to selecting a host for a virtual machine using a hardware multithreading parameter ).

[0002] 클라우드 환경에서, 클라우드 매니저(a cloud manager)는 가상 머신들을 호스트 컴퓨터 시스템들에 배치하여 가상 서버들을 생성한다. 통상적으로 클라우드 매니저는 가상 머신 이미지(the virtual machine image)가 시스템 자원들, 즉 메모리, 디스크 및 CPU와 같은 시스템 자원들을 위해 요구하는 것을 명시하는 요청을 수신한다. 그 다음, 클라우드 매니저는 요구된 시스템 자원들을 갖고 있는 이용 가능한 호스트 컴퓨터 시스템을 결정하고, 이용 가능한 호스트 컴퓨터 시스템들 중 하나를 선정하여, 가상 머신들을 그 선정된 호스트 컴퓨터 시스템에 배치한다.[0002] In a cloud environment, a cloud manager places virtual machines on host computer systems to create virtual servers. Typically, the cloud manager receives a request specifying that the virtual machine image requires for system resources such as memory, disk, and CPU. The cloud manager then determines the available host computer systems that have the requested system resources, selects one of the available host computer systems, and places the virtual machines on the selected host computer system.

[0003] 오픈스택(OpenStack)은 사설 및 공공 클라우드들을 구축하기 위한 오픈-소스 소프트웨어(open-source software)이다. 오픈스택에서, "플레이버스(flavors)"이라 불리는 가상 하드웨어 템플레이트들(virtual hardware templates)은 가상 머신들을 위해 필요한 시스템 자원들을 명시한다. 예를 들어, 오픈스택에서 플레이버는 가상 시스템을 위해 메모리의 사이즈(size of memory), 루트 디스크의 사이즈(root disk size) 및 가상 CPU들의 수를 명시할 수 있다. 가상 머신이 배치될 필요가 있을 때, 가상 머신을 위해 필요한 자원들을 명시하는 플레이버를 갖고 있는 클라우드 매니저에게 콜(a call)을 한다. 그러면, 클라우드 매니저는 플레이버에 명시된 자원들을 가지고 있는 하나 또는 그 이상의 호스트 컴퓨터 시스템들을 찾아서, 상기 플레이버를 만족시키는 호스트 컴퓨터 시스템들 중 하나에 가상 머신을 배치한다. [0003] OpenStack is open-source software for building private and public clouds. In the open stack, virtual hardware templates called "flavors" specify the system resources needed for virtual machines. For example, in an open stack, a flavor can specify the size of the memory, the root disk size, and the number of virtual CPUs for the virtual machine. When a virtual machine needs to be deployed, it makes a call to the cloud manager that has a flavor that specifies the resources needed for the virtual machine. The cloud manager then finds one or more host computer systems that have the resources specified in the flavor and places the virtual machine in one of the host computer systems that satisfy the flavor.

[0004] 호스트 내의 하드웨어 멀티스레딩은 가상 머신들을 호스트 컴퓨터 시스템으로 제공하는 것(the provisioning)을 복잡하게 할 수 있다. 종래 기술에서는, 만일 하이퍼스레딩(hyperthreading)이 호스트 컴퓨터 시스템 상에 인에이블된다면(enabled), 하드웨어 스레드의 수는 가상 머신을 위해 호스트 컴퓨터 시스템을 선정할 때 고려되고 그리고 가상 CPU들은 물리적 코어들에 상관 없이 하드웨어 스레드들에 할당된다. 만일 하이퍼스레딩이 호스트 컴퓨터 시스템 상에서 인에이블되지 않는다면, 오직 물리적 프로세서 코어들만 가상 머신을 위해 호스트 컴퓨터 시스템을 선정할 때 고려되고, 그리고 가상 CPU들은 VM이 선정된 호스트 컴퓨터 시스템 상에 제공될 때 오직 물리적 프로세서 코어들에 대해서만 할당된다. 각각의 코어 내에 많은 하드웨어 스레드들을 포함하는 POWER와 같은 현재 프로세서 아키텍처들에서, 이것은 처리 자원들을 매우 비효율적으로 사용하는 결과를 초래한다.[0004] Hardware multithreading within a host can complicate the provisioning of virtual machines to a host computer system. In the prior art, if hyperthreading is enabled on the host computer system, the number of hardware threads is considered when selecting the host computer system for the virtual machine, and the virtual CPUs are correlated to the physical cores And are assigned to hardware threads without any hardware threads. If hyperthreading is not enabled on the host computer system, only the physical processor cores are considered when selecting the host computer system for the virtual machine, and the virtual CPUs are only physically present when the VM is provided on the selected host computer system Processor cores. In current processor architectures such as POWER, which includes many hardware threads within each core, this results in very inefficient use of processing resources.

[0005] 프로세서들이 스플릿 코어들(split cores)을 갖고 있을 때 가상 머신들을 제공하면 더욱 복잡하게 될 수 있다. 스플릿 코어 프로세서들이란 다수의 서브코어들로 나누어져 있는 CPU 코어를 말하며, 이 서브코어들은 각각 다수의 하드웨어 스레드들을 포함할 수 있고, 게스트 운영 체제에 대해서는 하나의 코어로서 기능한다. 예를 들어, 8개의 하드웨어 스레드들을 갖는 스플릿 코어가 될 수 있는 하나의 코어는, 4개의 서브코어들로 나누어질 수 있고 이들 서브코어들의 각각은 2개의 하드웨어 스레드들을 지원할 수 있다. 스플릿 코어를 인에이블하는 것은 동적으로 이루어지는데, 이것은 스플릿 하는 것이 호스트 운영 체제 상에서 프로그램에 의해서 변경될 수 있음을 의미하는 것이다. 알려진 클라우드 매니저들은 스플릿 코어 프로세서들을 스플릿 코어들을 갖지 않는 프로세서들과 전혀 다르게 취급하지 않는다. 따라서, 알려진 클라우드 매니저들은 가상 머신들을 제공할 때 스플릿 코어 프로세서들을 사용하는 것의 장점들을 실현할 수 없다.[0005] Providing virtual machines when processors have split cores can be more complicated. Split core processors are CPU cores that are divided into a plurality of subcores, each of which may include multiple hardware threads and function as a core for the guest operating system. For example, one core that may be a split core with eight hardware threads may be divided into four subcores, each of which may support two hardware threads. Enabling the split core is done dynamically, which means that splitting can be changed by the program on the host operating system. Known cloud managers do not treat split core processors quite differently than processors that do not have split cores. Thus, known cloud managers can not realize the benefits of using split core processors when providing virtual machines.

[0006] 제1 실시 예에 따라, 장치가 제공되는데, 상기 장치는: 적어도 하나의 프로세서; 상기 적어도 하나의 프로세서에 결합된 메모리; 상기 메모리 내에 상주하고 상기 적어도 하나의 프로세서에 의해서 실행되는 클라우드 매니저를 포함하고, 상기 클라우드 매니저는: 가상 머신들이 배치될 수 있는 복수의 호스트 컴퓨터 시스템들 상에서 이용 가능한 CPU들의 수를 결정하고 그리고 추가로 상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU에 의해서 지원되는 하드웨어 스레드들의 수를 결정하는 호스트 모니터 메커니즘; 및 다수의 가상 CPU들 및 하나의 하드웨어 멀티스레딩 파라미터를 포함하는 가상 머신(VM) 요청을 수신하는 호스트 선정 메커니즘 ― 상기 호스트 선정 메커니즘은 상기 VM 요청을 만족시키는 수의 하드웨어 스레드들을 갖는 다수의 CPU들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나를 선정함 ― 을 포함한다.[0006] According to a first embodiment, an apparatus is provided, comprising: at least one processor; A memory coupled to the at least one processor; And a cloud manager residing in the memory and being executed by the at least one processor, the cloud manager comprising: means for determining the number of available CPUs on a plurality of host computer systems on which virtual machines may be located, A host monitor mechanism for determining a number of hardware threads supported by each CPU on the plurality of host computer systems; And a host selection mechanism for receiving a virtual machine (VM) request comprising a plurality of virtual CPUs and a hardware multithreading parameter, the host selection mechanism comprising a plurality of CPUs having a number of hardware threads satisfying the VM request And selecting one of the plurality of host computer systems including the plurality of host computer systems.

[0007] 제2 실시 예에 따라, 가상 머신을 배치하기 위해 호스트 컴퓨터 시스템을 선정하기 위한 적어도 하나의 프로세서에 의해 실행되는 컴퓨터-구현 방법을 제공하는데, 상기 방법은: 가상 머신들이 배치될 수 있는 복수의 호스트 컴퓨터 시스템들 상에서 이용 가능한 CPU들의 수를 결정하는 단계; 상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU에 의해서 지원되는 하드웨어 스레드들의 수를 결정하는 단계; 다수의 가상 CPU들 및 하나의 하드웨어 멀티스레딩 파라미터를 포함하는 가상 머신(VM) 요청을 수신하는 단계; 및 상기 VM 요청을 만족시키는 수의 하드웨어 스레드들을 갖는 다수의 CPU들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나를 선정하는 단계를 포함한다.[0007] According to a second embodiment, there is provided a computer-implemented method executed by at least one processor for selecting a host computer system for deploying a virtual machine, the method comprising: Determining a number of available CPUs on the plurality of host computer systems; Determining a number of hardware threads supported by each CPU on the plurality of host computer systems; Receiving a virtual machine (VM) request comprising a plurality of virtual CPUs and a hardware multithreading parameter; And selecting one of the plurality of host computer systems comprising a plurality of CPUs having a number of hardware threads to satisfy the VM request.

[0008] 본 발명은 컴퓨터 프로그램으로서 구현될 수 있다.[0008] The present invention can be implemented as a computer program.

[0009] 바람직한 실시 예에 따라, 클라우드 매니저는, 호스트 컴퓨터 시스템들 상의 CPU들에 의해서 지원되는 다수의 하드웨어 스레드들을 포함하여, 호스트 컴퓨터 시스템들 상에서 이용 가능한 자원들을 모니터한다. 클라우드 매니저는 호스트 컴퓨터 시스템 상에서 요구되는 하드웨어 멀티스레딩의 양을 명시하는 하드웨어 멀티스레딩 파라미터를 포함하는 가상 머신(VM)을 제공하기 위해 요청을 수신한다. 그 다음, 클라우드 매니저는 하드웨어 멀티스레딩 파라미터를 고려하여 VM을 위한 호스트 컴퓨터 시스템을 선정한다.[0009] According to a preferred embodiment, the cloud manager monitors the resources available on the host computer systems, including a plurality of hardware threads supported by the CPUs on the host computer systems. The cloud manager receives a request to provide a virtual machine (VM) that includes hardware multithreading parameters specifying the amount of hardware multithreading required on the host computer system. The cloud manager then selects a host computer system for the VM in consideration of the hardware multithreading parameters.

[00010] 한 실시 예에 따라, 하드웨어 멀티스레딩 파라미터를 사용하여 가상 CPU들을 배치하는 것을 처리하는 솔루션이 제공된다.[00010] In accordance with one embodiment, a solution is provided that handles the deployment of virtual CPUs using hardware multithreading parameters.

[00011] 본 출원은, 한 실시 예에 따라, 일반적으로 호스트 컴퓨터 시스템들에 대해 가상 머신들을 배치하는 것에 관한 것이며, 더 구체적으로는 하드웨어 멀티스레딩 파라미터를 사용하여 호스트 컴퓨터 시스템에 대하여 가상 CPU들을 배치하는 것에 관한 것이다.[00011] The present application relates generally to the placement of virtual machines on host computer systems, and more particularly to arranging virtual CPUs on a host computer system using hardware multithreading parameters, in accordance with one embodiment Lt; / RTI >

[00012] 한 실시 예에 따라, 스플릿 코어 프로세서들을 갖는 호스트들에서 하드웨어 멀티스레딩 파라미터를 사용하여 가상 CPU들을 배치하기 위한 솔루션이 제공된다.[00012] According to one embodiment, a solution is provided for placing virtual CPUs using hardware multithreading parameters in hosts with split core processors.

[00013] 본 출원은, 한 실시 예에 따라, 일반적으로 호스트 컴퓨터 시스템들에 대해 가상 머신들을 배치하는 것에 관한 것이며, 더 구체적으로는 하드웨어 멀티스레딩 파라미터를 사용하여 하나 또는 그 이상의 스플릿 코어 프로세서들을 포함하는 호스트 컴퓨터 시스템에 대하여 가상 CPU들을 배치하는 것에 관한 것이다.[00013] The present application relates generally to the placement of virtual machines on host computer systems, and more particularly, to the use of hardware multi-threading parameters to include one or more split core processors Lt; RTI ID = 0.0 > virtual < / RTI > CPUs.

[00014] 한 실시 예에 따라, 장치가 제공되는데, 상기 장치는: 적어도 하나의 프로세서; 상기 적어도 하나의 프로세서에 결합된 메모리; 상기 메모리 내에 상주하고 상기 적어도 하나의 프로세서에 의해서 실행되는 클라우드 매니저를 포함하고, 상기 클라우드 매니저는: 가상 머신들이 배치될 수 있는 복수의 호스트 컴퓨터 시스템들 상에서 이용 가능한 CPU들의 수를 결정하고 그리고 추가로 상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU에 의해서 지원되는 하드웨어 스레드들의 수를 결정하는 호스트 모니터 메커니즘; 다수의 가상 CPU들 및 하나의 하드웨어 멀티스레딩 파라미터를 포함하는 가상 머신(VM) 요청을 수신하는 호스트 선정 메커니즘 ― 상기 호스트 선정 메커니즘은 상기 VM 요청을 만족시키는 수의 하드웨어 스레드들을 갖는 다수의 CPU들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나를 선정함 ―; 및 상기 선정된 호스트 컴퓨터 시스템 상에 복수의 가상 CPU들(vCPU들)을 배치하기 위해 상기 하드웨어 멀티스레딩 파라미터를 사용하는 가상 CPU(vCPU) 배치 메커니즘을 포함한다.[00014] According to one embodiment, an apparatus is provided, comprising: at least one processor; A memory coupled to the at least one processor; And a cloud manager residing in the memory and being executed by the at least one processor, the cloud manager comprising: means for determining the number of available CPUs on a plurality of host computer systems on which virtual machines may be located, A host monitor mechanism for determining a number of hardware threads supported by each CPU on the plurality of host computer systems; A host selection mechanism for receiving a virtual machine (VM) request comprising a plurality of virtual CPUs and a hardware multithreading parameter, the host selection mechanism comprising a plurality of CPUs having a number of hardware threads that satisfy the VM request Selecting one of the plurality of host computer systems to perform; And a virtual CPU (vCPU) placement mechanism using the hardware multithreading parameters to place a plurality of virtual CPUs (vCPUs) on the selected host computer system.

[00015] 한 실시 예에 따라, 호스트 컴퓨터 시스템 상에 복수의 가상 CPU들(vCPU들)을 배치하기 위해 적어도 하나의 프로세서에 의해 실행되는 컴퓨터-구현 방법이 제공되는데, 상기 방법은: 가상 머신들이 배치될 수 있는 복수의 호스트 컴퓨터 시스템들 상에서 이용 가능한 CPU들의 수를 결정하는 단계; 상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU에 의해서 지원되는 하드웨어 스레드들의 수를 결정하는 단계; 다수의 가상 CPU들 및 하나의 하드웨어 멀티스레딩 파라미터를 포함하는 가상 머신(VM) 요청을 수신하는 단계; 상기 VM 요청을 만족시키는 수의 하드웨어 스레드들을 갖는 다수의 CPU들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나를 선정하는 단계; 및 상기 선정된 호스트 컴퓨터 시스템 상에 상기 복수의 vCPU들을 배치하기 위해 상기 하드웨어 멀티스레딩 파라미터를 사용하는 단계를 포함한다.[00015] According to one embodiment, a computer-implemented method is provided that is executed by at least one processor for placing a plurality of virtual CPUs (vCPUs) on a host computer system, the method comprising: Determining a number of available CPUs on a plurality of host computer systems that may be deployed; Determining a number of hardware threads supported by each CPU on the plurality of host computer systems; Receiving a virtual machine (VM) request comprising a plurality of virtual CPUs and a hardware multithreading parameter; Selecting one of the plurality of host computer systems including a plurality of CPUs having a number of hardware threads that satisfy the VM request; And using the hardware multithreading parameter to place the plurality of vCPUs on the selected host computer system.

[00016] 한 실시 예에 따라, 호스트 컴퓨터 시스템 상에 복수의 가상 CPU들(vCPU들)을 배치하기 위해 적어도 하나의 프로세서에 의해 실행되는 컴퓨터-구현 방법이 제공되는데, 상기 방법은: 가상 머신들(VM들)이 배치될 수 있는 복수의 호스트 컴퓨터 시스템들 상에서 이용 가능한 CPU들의 수, 메모리의 양, 및 디스크 공간의 양을 결정하는 단계; 상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU에 의해서 지원되는 하드웨어 스레드들의 수를 결정하는 단계; 상기 VM을 위한 메모리의 최소 양을 명시하는 메모리 요건, 상기 VM을 위한 디스크의 최소 양을 명시하는 디스크 요건, 및 상기 VM을 위한 다수의 가상 CPU들 및 하나의 하드웨어 멀티스레딩 파라미터를 명시하는 CPU 요건을 포함하는 가상 머신(VM) 요청을 수신하는 단계 ― 상기 하드웨어 멀티스레딩 파라미터의 제1 값은 하드웨어 멀티스레딩이 턴오프(turn off)임을 표시하고, 상기 하드웨어 멀티스레딩 파라미터의 제2 값은 다수의 하드웨어 스레드들을 위한 수치(a numerical value)임을 표시하며, 그리고 상기 하드웨어 멀티스레딩 파라미터의 제3 값은 선정된 호스트 컴퓨터 시스템 상에서 하드웨어 스레딩이 턴오프 또는 턴온인지에 상관없이 상기 선정된 호스트 컴퓨터 시스템이 선정되었음을 표시함 ―; 상기 VM 요청을 만족시키는 수의 하드웨어 스레드들을 갖는 다수의 CPU들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나를 선정하는 단계; 및 상기 선정된 호스트 컴퓨터 시스템 상에 상기 복수의 vCPU들을 배치하기 위해 상기 하드웨어 멀티스레딩 파라미터를 사용하는 단계 ― 상기 배치하는 것은 상기 하드웨어 멀티스레딩 파라미터가 하드웨어 멀티스레딩이 턴오프(turn off)임을 표시할 때는 상기 선정된 호스트 컴퓨터 시스템 내의 다른 물리적 코어 상에 상기 VM 내의 각 vCPU를 배치함에 의해서 하고 상기 하드웨어 멀티스레딩 파라미터가 하드웨어 스레드들의 수를 표시할 때는 상기 선정된 호스트 컴퓨터 시스템 내의 다른 하드웨어 스레드 상에 상기 VM 내의 각 vCPU를 배치함에 의해서 함 ― 를 포함한다.According to one embodiment, a computer-implemented method is provided that is executed by at least one processor for placing a plurality of virtual CPUs (vCPUs) on a host computer system, the method comprising: Determining the amount of memory, the amount of memory, and the amount of disk space available on the plurality of host computer systems on which the virtual machines (VMs) may be located; Determining a number of hardware threads supported by each CPU on the plurality of host computer systems; A memory requirement that specifies a minimum amount of memory for the VM, a disk requirement that specifies a minimum amount of disk for the VM, and a CPU requirement that specifies a number of virtual CPUs and one hardware multi-threading parameter for the VM Wherein a first value of the hardware multithreading parameter indicates that the hardware multithreading is turn off and a second value of the hardware multithreading parameter indicates a number And a third value of the hardware multithreading parameter indicates that the selected host computer system is selected regardless of whether hardware threading is turned off or turned on on the selected host computer system -; Selecting one of the plurality of host computer systems including a plurality of CPUs having a number of hardware threads that satisfy the VM request; And using the hardware multithreading parameter to deploy the plurality of vCPUs on the selected host computer system, the deploying being characterized in that the hardware multithreading parameter indicates that hardware multithreading is turned off When placing the respective vCPUs in the VM on different physical cores in the selected host computer system and when the hardware multithreading parameter indicates the number of hardware threads, on the other hardware threads in the selected host computer system, By placing each vCPU in the VM.

[00017] 한 실시 예에 따라, 위의 단락에서 기술한 방법에서, 하드웨어 멀티스레딩 파라미터를 사용하여 상기 VM을 재조정하는 단계(resizing)를 더 포함하는 방법이 제공된다.[00017] In accordance with one embodiment, a method is provided that further includes resizing the VM using hardware multithreading parameters in the method described in the paragraph above.

[00018] 한 실시 예에 따라, 장치가 제공되는데, 상기 장치는: 적어도 하나의 프로세서; 상기 적어도 하나의 프로세서에 결합된 메모리; 상기 메모리 내에 상주하고 상기 적어도 하나의 프로세서에 의해서 실행되는 클라우드 매니저를 포함하고, 상기 클라우드 매니저는: 가상 머신들이 배치될 수 있는 복수의 호스트 컴퓨터 시스템들 상에서 이용 가능한 CPU들의 수, 상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU에 의해서 지원되는 하드웨어 스레드들의 수, 그리고 상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU를 위해 스플릿 코어가 인에이블 되었는지를 결정하는 호스트 모니터 메커니즘; 및 다수의 가상 CPU들 및 하나의 하드웨어 멀티스레딩 파라미터를 포함하는 가상 머신(VM) 요청을 수신하는 호스트 선정 메커니즘 - 상기 호스트 선정 메커니즘은 다수의 하드웨어 스레드들을 갖는 다수의 CPU들과 상기 다수의 CPU들 및 상기 VM 내의 하드웨어 멀티스레딩 파리미터를 만족시키는 스플릿 코어 세팅들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나를 선정함 - 을 포함한다.[00018] According to one embodiment, an apparatus is provided, comprising: at least one processor; A memory coupled to the at least one processor; And a cloud manager residing in the memory and being executed by the at least one processor, the cloud manager comprising: a number of CPUs available on a plurality of host computer systems in which virtual machines may be located; A host monitor mechanism to determine the number of hardware threads supported by each CPU on the systems and whether split core is enabled for each CPU on the plurality of host computer systems; And a host selection mechanism for receiving a virtual machine (VM) request comprising a plurality of virtual CPUs and a hardware multithreading parameter, the host selection mechanism comprising a plurality of CPUs having a plurality of hardware threads, And selecting one of the plurality of host computer systems including split core settings to satisfy a hardware multithreading parameter in the VM.

[00019] 한 실시 예에 따라, 호스트 컴퓨터 시스템 상에 복수의 가상 CPU들(vCPU들)을 배치하기 위해 적어도 하나의 프로세서에 의해 실행되는 컴퓨터-구현 방법이 제공되는데, 상기 방법은: 가상 머신들(VM)이 배치될 수 있는 복수의 호스트 컴퓨터 시스템들 상에서 이용 가능한 CPU들의 수를 결정하는 단계; 상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU에 의해서 지원되는 하드웨어 스레드들의 수를 결정하는 단계; 상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU가 인에이블된 스플릿 코어를 가지고 있는지를, 만일 가지고 있다면, 코어 당 서브코어들의 수를 결정하는 단계; 다수의 가상 CPU들 및 하나의 하드웨어 멀티스레딩 파라미터를 포함하는 가상 머신(VM) 요청을 수신하는 단계 ; 및 다수의 하드웨어 스레드들을 갖는 다수의 CPU들과 상기 다수의 가상 CPU들 및 상기 VM 요청 내의 하드웨어 멀티스레딩 파라미터를 만족시키는 스플릿 코어 세팅들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나를 선정하는 단계를 포함한다. [00019] According to one embodiment, a computer-implemented method is provided for executing by at least one processor to place a plurality of virtual CPUs (vCPUs) on a host computer system, the method comprising: Determining a number of available CPUs on a plurality of host computer systems on which a virtual machine (VM) may be located; Determining a number of hardware threads supported by each CPU on the plurality of host computer systems; Determining if each CPU on the plurality of host computer systems has an enabled split core, if so, determining the number of subcores per core; Receiving a virtual machine (VM) request comprising a plurality of virtual CPUs and a hardware multithreading parameter; And selecting one of the plurality of host computers systems including the plurality of virtual CPUs and the split core settings to satisfy the hardware multi-threading parameters in the VM request .

[00020] 한 실시 예에 따라, 호스트 컴퓨터 시스템 상에 복수의 가상 CPU들(vCPU들)을 배치하기 위해 적어도 하나의 프로세서에 의해 실행되는 컴퓨터-구현 방법이 제공되는데, 상기 방법은: 가상 머신들(VM)이 배치될 수 있는 복수의 호스트 컴퓨터 시스템들 상에서 이용 가능한 CPU들의 수, 메모리의 양, 및 디스크 공간의 양을 결정하는 단계; 상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU에 의해서 지원되는 하드웨어 스레드들의 수를 결정하는 단계; 상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU가 인에이블된 스플릿 코어를 가지고 있는지를 결정하는 단계; 상기 VM을 위한 메모리의 최소 양을 명시하는 메모리 요건, 상기 VM을 위한 디스크의 최소 양을 명시하는 디스크 요건, 및 상기 VM을 위한 다수의 가상 CPU들 및 하나의 하드웨어 멀티스레딩 파라미터를 명시하는 CPU 요건을 포함하는 가상 머신(VM) 요청을 수신하는 단계 ― 상기 하드웨어 멀티스레딩 파라미터의 제1 값은 하드웨어 멀티스레딩이 턴오프(turn off)임을 표시하고, 상기 하드웨어 멀티스레딩 파라미터의 제2 값은 다수의 하드웨어 스레드들을 위한 수치(a numerical value)임을 표시하며, 그리고 상기 하드웨어 멀티스레딩 파라미터의 제3 값은 선정된 호스트 컴퓨터 시스템 상에서 하드웨어 스레딩이 턴오프 또는 턴온인지에 상관없이 상기 선정된 호스트 컴퓨터 시스템이 선정되었음을 표시함 ―; 다수의 하드웨어 스레드들을 갖는 다수의 CPU들과 상기 다수의 CPU들 및 상기 VM 요청 내의 하드웨어 멀티스레딩 파라미터를 만족시키는 스플릿 코어 세팅들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나를 선정하는 단계; 및 상기 선정된 호스트 컴퓨터 시스템 상에 상기 복수의 vCPU들을 배치하기 위해 상기 하드웨어 멀티스레딩 파라미터 및 상기 선정된 호스트 컴퓨터 시스템의 스플릿 코어 세팅들을 사용하는 단계 ― 상기 배치하는 것은 상기 하드웨어 멀티스레딩 파라미터가 하드웨어 멀티스레딩이 턴오프(turn off)임을 표시할 때는 상기 선정된 호스트 컴퓨터 시스템 내의 다른 물리적 코어 상에 상기 VM 내의 각 vCPU를 배치함에 의해서 하고 그리고 상기 하드웨어 멀티스레딩 파라미터가 하드웨어 스레드들의 수를 표시하고 상기 선정된 컴퓨터 시스템의 스플릿 코어 세팅들이 인에이블되었을 때는 상기 선정된 호스트 컴퓨터 시스템 내의 CPU의 서브코어 내의 다른 하드웨어 스레드 상에 상기 VM 내의 각 vCPU를 배치함에 의해서 함 ― 를 포함한다.[00020] According to one embodiment, a computer-implemented method is provided that is executed by at least one processor for placing a plurality of virtual CPUs (vCPUs) on a host computer system, the method comprising: Determining an amount of memory, an amount of memory, and an amount of disk space available on a plurality of host computer systems on which a virtual machine (VM) may be located; Determining a number of hardware threads supported by each CPU on the plurality of host computer systems; Determining if each CPU on the plurality of host computer systems has an enabled split core; A memory requirement that specifies a minimum amount of memory for the VM, a disk requirement that specifies a minimum amount of disk for the VM, and a CPU requirement that specifies a number of virtual CPUs and one hardware multi-threading parameter for the VM Wherein a first value of the hardware multithreading parameter indicates that the hardware multithreading is turn off and a second value of the hardware multithreading parameter indicates a number And a third value of the hardware multithreading parameter indicates that the selected host computer system is selected regardless of whether hardware threading is turned off or turned on on the selected host computer system -; Selecting one of the plurality of CPUs having a plurality of hardware threads and the plurality of host computers systems including split core settings to satisfy the hardware multithreading parameters in the VM request; And using split multi-threading parameters and split core settings of the selected host computer system to place the plurality of vCPUs on the selected host computer system, wherein the deploying comprises placing the hardware multi- Threading is turned off by placing each vCPU in the VM on a different physical core in the selected host computer system and if the hardware multithreading parameter indicates the number of hardware threads and the selection And placing each vCPU in the VM on a different hardware thread in a sub-core of a CPU in the selected host computer system when split core settings of the selected computer system are enabled.

[00021] 한 실시 예에 따라, 클라우드 매니저는, 호스트 컴퓨터 시스템들 상의 CPU들에 의해서 지원되는 다수의 하드웨어 스레드들을 포함하여, 호스트 컴퓨터 시스템들 상에서 이용 가능한 자원들을 모니터한다. 클라우드 매니저는 하드웨어 멀티스레딩이 호스트 컴퓨터 시스템 상에서 허용되는지를 명시하는 하드웨어 멀티스레딩 파라미터를 포함하는 가상 머신(VM)을 제공하기 위해 요청을 수신한다. 그 다음, 클라우드 매니저는 하드웨어 멀티스레딩 파라미터를 고려하여 VM을 위한 호스트 컴퓨터 시스템을 선정한다. 그 다음, 상기 VM은 하드웨어 멀티스레딩 파라미터를 사용하여 상기 선정된 호스트 컴퓨터 시스템 상에 배치된다.[00021] According to one embodiment, the cloud manager monitors resources available on host computer systems, including multiple hardware threads supported by CPUs on host computer systems. The cloud manager receives a request to provide a virtual machine (VM) that includes hardware multithreading parameters that specify whether hardware multithreading is allowed on the host computer system. The cloud manager then selects a host computer system for the VM in consideration of the hardware multithreading parameters. The VM is then placed on the selected host computer system using hardware multithreading parameters.

[00022] 한 실시 예에 따라, 클라우드 매니저는, 호스트 컴퓨터 시스템들 상의 CPU들에 의해서 지원되는 다수의 하드웨어 스레드들을 포함하여, 호스트 컴퓨터 시스템들 상에서 이용 가능한 자원들과 상기 CPU들이 인에이블된 스플릿 코어를 갖고 있는지 아닌지를 모니터한다. 클라우드 매니저는 하드웨어 멀티스레딩이 호스트 컴퓨터 시스템 상에서 허용되는지를 명시하는 하드웨어 멀티스레딩 파라미터를 포함하는 가상 머신(VM)을 제공하기 위해 요청을 수신한다. 그 다음, 클라우드 매니저는 하드웨어 멀티스레딩 파라미터, CPU에 의해서 지원되는 하드웨어 스레드들, 및 스플릿 코어 세팅들을 고려하여 VM을 위한 호스트 컴퓨터 시스템을 선정한다. 그 다음, 상기 VM은 하드웨어 멀티스레딩 파라미터를 사용하여 선정된 호스트 컴퓨터 시스템 상에 배치된다. 그 결과는 가상 머신을 위한 호스트 내의 CPU자원들의 이용이 더 효율적이 된다.[00022] According to one embodiment, the cloud manager includes resources available on host computer systems, including a number of hardware threads supported by CPUs on host computer systems, Or not. The cloud manager receives a request to provide a virtual machine (VM) that includes hardware multithreading parameters that specify whether hardware multithreading is allowed on the host computer system. The cloud manager then selects a host computer system for the VM, taking into account hardware multithreading parameters, hardware threads supported by the CPU, and split core settings. The VM is then placed on a selected host computer system using hardware multithreading parameters. The result is more efficient utilization of CPU resources within the host for the virtual machine.

[00023] 전술한 그리고 기타 특징들 및 장점들은, 첨부된 도면들에서 예시된 바와 같이, 아래의 상세한 설명으로부터 명백하다.[00023] The foregoing and other features and advantages are apparent from the following detailed description, as illustrated in the accompanying drawings.

[00024] 본 발명의 실시 예들은, 예로서, 그리고 아래의 도면들을 참조하여 설명한다. 동일 도면 번호들은 동일 엘리먼트들을 표시한다:
[00025] 도 1은 본 발명의 바람직한 실시 예에 따른 클라우드 컴퓨팅 노드의 블록도이다;
[00026] 도 2는 본 발명의 바람직한 실시 예에 따른 클라우드 컴퓨팅 환경의 블록도이다;
[00027] 도 3은 본 발명의 바람직한 실시 예에 따른 추상화 모델 층의 블록도이다;
[00028] 도 4는 본 발명의 바람직한 실시 예에 따른 클라우드 매니저의 일부 특징들을 보여주는 블록도이다;
[00029] 도 5는 본 발명의 바람직한 실시 예에 따른 클라우드 VM 요청의 일부 특징들을 보여주는 블록도이다;
[00030] 도 6은 클라우드 매니저가 잠재적인 호스트 컴퓨터 시스템들 상의 이용 가능한 자원들을 로그하는 본 발명의 바람직한 실시 예에 따른 방법을 보여주는 흐름도이다;
[00031] 도 7은 클라우드 매니저가 호스트 컴퓨터 시스템들 상에 VM을 제공하는 본 발명의 바람직한 실시 예에 따른 방법을 보여주는 흐름도이다;
[00032] 도 8은 종래 기술의 x86 듀얼 코어 CPU의 블록도이다;
[00033] 도 9는 클라우드 매니저가 VM 요청을 위해 호스트를 선택하는 종래 기술의 방법의 흐름도이다;
[00034] 도 10은 종래 기술의 클라우드 VM 요청에서 CPU 요건들이 어떻게 명시되는지를 보여주는 블록도이다;
[00035] 도 11은 본 발명의 바람직한 실시 예에 따른 3개의 x86 듀얼 코어 프로세서들을 보여주는 잠재적 호스트 컴퓨터 시스템의 블록도이다;
[00036] 도 12는 본 발명의 바람직한 실시 예에 따라 도 11의 잠재적 호스트에 할당될 수 있는 vCPU들을 포함하는 가상 머신들을 보여주는 블록도이다;
[00037] 도 13은 호스트 컴퓨터 시스템 내의 물리적 코어들 상에 vCPU들을 배치하는 종래 기술의 방법의 흐름도이다;
[00038] 도 14는 본 발명의 바람직한 실시 예에 따라, 6개의 코어들 중 2개를 보여주는, Power8 6 코어 CPU의 아키텍처를 도시하는 블록도이다;
[00039] 도 15는 본 발명의 바람직한 실시 예에 따라 호스트를 선정하기 위해 그리고 호스트 상에 vCPU들을 위한 배치를 제어하기 위해 하드웨어 멀티스레딩 파라미터를 사용하는 방법의 흐름도이다;
[00040] 도 16은 본 발명의 바람직한 실시 예에 따라 vCPU들의 수 및 하드웨어 멀티스레딩 파라미터를 포함하는 샘플 CPU 요건이다;
[00041] 도 17은 본 발명의 바람직한 실시 예에 따라 하드웨어 멀티스레딩 파라미터를 포함하는 제1 샘플 CPU 요건이다;
[00042] 도 18은 본 발명의 바람직한 실시 예에 따라 도 17에서의 CPU 요건을 만족시키는 잠재적인 Power8 호스트를 도시한다;
[00043] 도 19는 본 발명의 바람직한 실시 예에 따라 하드웨어 멀티스레딩 파라미터를 포함하는 제2 샘플 CPU 요건을 도시한다;
[00044] 도 20은 본 발명의 바람직한 실시 예에 따라 도 19에서의 CPU 요건을 만족시키는 잠재적인 Power8 호스트를 도시한다;
[00045] 도 21은 본 발명의 바람직한 실시 예에 따라 하드웨어 멀티스레딩 파라미터를 포함하는 제3 샘플 CPU 요건을 도시한다;
[00046] 도 22는 본 발명의 바람직한 실시 예에 따라 도 21에서의 CPU 요건을 만족시키는 잠재적인 Power8 호스트를 도시한다;
[00047] 도 23은 본 발명의 바람직한 실시 예에 따라 하드웨어 멀티스레딩 파라미터를 포함하는 제4 샘플 CPU 요건을 도시한다;
[00048] 도 24는 본 발명의 바람직한 실시 예에 따라 도 23에서의 CPU 요건을 만족시키는 잠재적인 Power8 호스트를 도시한다;
[00049] 도 25는 본 발명의 바람직한 실시 예에 따라 호스트를 선정하기 위해 하드웨어 멀티스레딩 파라미터를 포함하는 CPU 요건을 만족시키는 호스트를 선정하는 방법의 흐름도이다;
[00050] 도 26은 하드웨어 멀티스레딩 파라미터를 사용하여 선정된 호스트 컴퓨터 시스템 상에 vCPU들을 배치하는 방법의 흐름도이다;
[00051] 도 27은 본 발명의 바람직한 실시 예에 따라 각각의 잠재적인 호스트를 위해 수집된 호스트-수준 통계 값을 도시하는 블록도이다;
[00052] 도 28은 본 발명의 바람직한 실시 예에 따라 하드웨어 멀티스레딩 파라미터를 명시하기 위해 오픈스택 플레이버 내에 구현될 수 있는 여분의 명세를 도시하는 블록도이다;
[00053] 도 29는 하드웨어 멀티스레딩 파라미터를 포함할 수 있는 기존의 VM상에 재수정 연산을 수행하는 방법의 흐름도이다;
[00054] 도 30은 6개의 코어들 중 2개를 보여주는 인에이블된 스플릿 코어를 갖는 Power8 6 코어 CPU의 아키텍처를 도시하는 블록도이다;
[00055] 도 31은 vCPU들의 수 및 하드웨어 멀티스레딩 파라미터를 포함하는 샘플 CPU 요건이다;
[00056] 도 32는 하드웨어 멀티스레딩 파라미터를 포함하는 제1 샘플 CPU 요건이다;
[00057] 도 33은 도 32에서 CPU 요건을 만족시키는 잠재적 Power8 호스트를 도시한다;
[00058] 도 34는 하드웨어 멀티스레딩 파라미터를 포함하는 제2 샘플 CPU 요건이다;
[00059] 도 35는 도 34에서 CPU 요건을 만족시키는 잠재적 Power8 호스트를 도시한다;
[00060] 도 36은 하드웨어 멀티스레딩 파라미터를 포함하는 제3 샘플 CPU 요건이다;
[00061] 도 37은 도 36에서 CPU 요건을 만족시키는 잠재적 Power8 호스트를 도시한다;
[00062] 도 38은 하드웨어 멀티스레딩 파라미터를 포함하는 제4 샘플 CPU 요건을 도시한다;
[00063] 도 39는 도 38에서 CPU 요건을 만족시키는 잠재적 Power8 호스트를 도시한다;
[00064] 도 40은 하드웨어 멀티스레딩 파라미터를 포함하는 CPU 요건을 만족시키고 호스트가 스플릿 코어들을 가질 때에 호스트를 선정하는 방법의 흐름도이다;
[00065] 도 41은 하드웨어 멀티스레딩 파라미터가 4 또는 8로 세트될 때 인에이블되는 스플릿 코어 모드를 갖는 호스트들을 걸러내기 위해 사용될 수 있는 필터를 도시하는 블록도이다;
[00066] 도 42는 하드웨어 멀티스레딩 파라미터를 사용하여 선정된 호스트 컴퓨터 시스템 상에 vCPU들을 배치하는 그리고 호스트가 스플릿 코어들을 가질 때의 방법의 흐름도이다.
[00024] Embodiments of the present invention will be described by way of example and with reference to the accompanying drawings. The same drawing numbers denote the same elements:
[00025] Figure 1 is a block diagram of a cloud computing node in accordance with a preferred embodiment of the present invention;
[00026] Figure 2 is a block diagram of a cloud computing environment in accordance with a preferred embodiment of the present invention;
[00027] Figure 3 is a block diagram of an abstract model layer according to a preferred embodiment of the present invention;
[00028] FIG. 4 is a block diagram illustrating some features of a cloud manager according to a preferred embodiment of the present invention;
[00029] Figure 5 is a block diagram illustrating some aspects of a cloud VM request in accordance with a preferred embodiment of the present invention;
[00030] Figure 6 is a flow chart illustrating a method in accordance with a preferred embodiment of the present invention in which a cloud manager logs available resources on potential host computer systems;
[00031] Figure 7 is a flow chart illustrating a method according to a preferred embodiment of the present invention in which a cloud manager provides VMs on host computer systems;
[00032] Figure 8 is a block diagram of a prior art x86 dual core CPU;
[00033] Figure 9 is a flow diagram of a prior art method by which a cloud manager selects a host for a VM request;
[00034] Figure 10 is a block diagram illustrating how CPU requirements are specified in a prior art Cloud VM request;
[00035] Figure 11 is a block diagram of a potential host computer system showing three x86 dual core processors in accordance with a preferred embodiment of the present invention;
[00036] Figure 12 is a block diagram illustrating virtual machines including vCPUs that may be assigned to the potential host of Figure 11 in accordance with a preferred embodiment of the present invention;
[00037] Figure 13 is a flow diagram of a prior art method of placing vCPUs on physical cores in a host computer system;
[00038] Figure 14 is a block diagram illustrating the architecture of a Power8 6 core CPU, showing two of the six cores, in accordance with a preferred embodiment of the present invention;
[00039] Figure 15 is a flow diagram of a method for selecting a host and using hardware multithreading parameters to control placement for vCPUs on a host in accordance with a preferred embodiment of the present invention;
[00040] Figure 16 is a sample CPU requirement that includes the number of vCPUs and hardware multithreading parameters in accordance with a preferred embodiment of the present invention;
[00041] Figure 17 is a first sample CPU requirement comprising hardware multithreading parameters in accordance with a preferred embodiment of the present invention;
[00042] FIG. 18 illustrates a potential Power 8 host meeting the CPU requirements of FIG. 17 in accordance with a preferred embodiment of the present invention;
[00043] Figure 19 illustrates a second sample CPU requirement comprising hardware multithreading parameters in accordance with a preferred embodiment of the present invention;
[00044] Figure 20 illustrates a potential Power 8 host that meets the CPU requirements of Figure 19 in accordance with a preferred embodiment of the present invention;
[00045] Figure 21 illustrates a third sample CPU requirement comprising hardware multithreading parameters in accordance with a preferred embodiment of the present invention;
[00046] Figure 22 illustrates a potential Power 8 host that meets the CPU requirements in Figure 21 in accordance with a preferred embodiment of the present invention;
[00047] Figure 23 illustrates a fourth sample CPU requirement comprising hardware multithreading parameters in accordance with a preferred embodiment of the present invention;
[00048] FIG. 24 illustrates a potential Power 8 host that meets the CPU requirements of FIG. 23 in accordance with a preferred embodiment of the present invention;
[00049] Figure 25 is a flow diagram of a method for selecting a host that satisfies a CPU requirement that includes a hardware multithreading parameter to select a host in accordance with a preferred embodiment of the present invention;
[00050] Figure 26 is a flow diagram of a method for placing vCPUs on a predetermined host computer system using hardware multithreading parameters;
[00051] Figure 27 is a block diagram illustrating host-level statistics collected for each potential host in accordance with a preferred embodiment of the present invention;
[00052] Figure 28 is a block diagram illustrating an extra specification that may be implemented within an open stack flavor to specify hardware multithreading parameters in accordance with a preferred embodiment of the present invention;
[00053] Figure 29 is a flow diagram of a method for performing a re-verification operation on an existing VM that may include hardware multithreading parameters;
[00054] FIG. 30 is a block diagram illustrating the architecture of a Power8 6-core CPU with an enabled split core showing two of the six cores;
[00055] Figure 31 is a sample CPU requirement that includes the number of vCPUs and hardware multithreading parameters;
[00056] Figure 32 is a first sample CPU requirement that includes a hardware multithreading parameter;
[00057] Figure 33 illustrates a potential Power 8 host that meets the CPU requirements in Figure 32;
[00058] Figure 34 is a second sample CPU requirement that includes hardware multithreading parameters;
[00059] Figure 35 illustrates a potential Power 8 host that meets the CPU requirements in Figure 34;
[00060] Figure 36 is a third sample CPU requirement that includes hardware multithreading parameters;
[00061] Figure 37 illustrates a potential Power 8 host that meets the CPU requirements in Figure 36;
[00062] Figure 38 illustrates a fourth sample CPU requirement that includes a hardware multithreading parameter;
[00063] Figure 39 illustrates a potential Power 8 host that meets the CPU requirements in Figure 38;
[00064] FIG. 40 is a flow diagram of a method of selecting a host when the host has split cores and meets the CPU requirements including hardware multithreading parameters;
[00065] FIG. 41 is a block diagram illustrating a filter that may be used to filter hosts with a split core mode enabled when the hardware multithreading parameter is set to 4 or 8;
[00066] Figure 42 is a flow diagram of a method for placing vCPUs on a predetermined host computer system using hardware multithreading parameters and for when a host has split cores.

[00067] 클라우드 매니저는, 호스트 컴퓨터 시스템들 상에서 CPU들에 의해서 지원되는 하드웨어 스레드들의 수와 CPU들이 인에이블된 스를릿 코어를 갖는지 아닌지를 포함하여, 호스트 컴퓨터 시스템들 상의 이용 가능한 자원들을 모니터한다(monitor). 클라우드 매니저는 호스트 컴퓨터 시스템 상에서 하드웨어 멀티스레딩이 허용되는지를(또는, 한 실시 예에서, 호스트 컴퓨터 시스템 상에서 요구되는 하드웨어 멀티스레딩의 양을) 명시하는 하드웨어 멀티스레딩 파라미터를 포함하는 가상 머신(VM)을 제공하기 위한 요청을 수신한다. 그 다음, 클라우드 매니저는 하드웨어 멀티스레딩 파라미터, CPU에 의해서 지원되는 하드웨어 스레드들, 및 스플릿 코어 세팅들을 고려하여 호스트 컴퓨터 시스템을 선정한다. 그 다음, VM은 하드웨어 멀티스레딩 파라미터를 사용하여 선정된 호스트 컴퓨터 시스템 상에 배치된다. 그 결과 가상 머신을 위해 호스트 내의 CPU 자원들의 이용은 좀더 효율적이 된다.The cloud manager monitors the available resources on the host computer systems, including whether the number of hardware threads supported by the CPUs on the host computer systems and whether the CPUs have enabled scrolling (monitor). The cloud manager includes a virtual machine (VM) that includes hardware multithreading parameters that specify whether hardware multithreading is allowed on the host computer system (or, in one embodiment, the amount of hardware multithreading required on the host computer system) And receives a request to provide the service. The cloud manager then selects the host computer system in consideration of the hardware multithreading parameters, hardware threads supported by the CPU, and split core settings. The VM is then placed on the selected host computer system using the hardware multithreading parameters. As a result, the utilization of CPU resources in the host for the virtual machine becomes more efficient.

[00068] 비록 본 출원이 클라우드 컴퓨팅에 관한 상세한 설명을 포함한다 할지라도, 여기서 설명된 구현은 클라우드 컴퓨팅 환경에 한정되는 것이 아님을 먼저 이해해야 한다. 사실, 본 발명의 실시 예들은 지금 알려진 또는 나중에 개발될 모든 유형의 컴퓨팅 환경에서도 구현 가능하다.[00068] Although the present application may include a detailed description of cloud computing, it should be understood that the implementation described herein is not limited to a cloud computing environment. In fact, embodiments of the present invention may be implemented in any type of computing environment now known or later developed.

[00069] 클라우드 컴퓨팅은 최소의 관리 노력으로 또는 서비스 제공자와 대화방식으로 신속하게 제공되거나 해제될 수 있는 구성 가능 컴퓨팅 자원들(예를 들어, 네트워크들, 네트워크 대역폭, 서버들, 처리, 메모리, 저장 매체, 애플리케이션들, 가상 머신들 및 서비스들)의 공유 풀(a shared pool)에 대한 편리한, 주문형(on-demand) 네트워크 액세스를 가능하게 하기 위한 서비스 전달의 한 모델(a model of service delivery)이다. 이러한 클라우드 모델은 적어도 5개의 특성들(at least five characteristics), 적어도 3개의 서비스 모델들(at least three service models), 및 적어도 4개의 배치 모델들(at least four deployment models)을 포함할 수 있다.[00069] Cloud computing can be deployed with configurable computing resources (eg, networks, network bandwidths, servers, processing, memory, storage, etc.) that can be quickly provisioned or released with minimal management effort or interactivity with a service provider A model of service delivery to enable convenient, on-demand network access to a shared pool of applications, media, applications, virtual machines and services . Such a cloud model may include at least five characteristics, at least three service models, and at least four deployment models.

[00070] 특성들은 다음과 같다: [00070] The characteristics are as follows:

주문형 셀프-서비스(On-demand self-service): 클라우드 소비자는 서비스 제공자와 대화할 필요 없이 필요에 따라 자동적으로, 서버 시간 및 네트워크 저장 매체와 같은, 컴퓨팅 능력들을 일방적으로 제공(provision)할 수 있다. On-demand self-service: A cloud consumer can unilaterally provision computing capabilities, such as server time and network storage media, automatically as needed, without having to talk to a service provider .

광역 네트워크 액세스(Broad network access): 네트워크를 통해서 혼성의 씬 또는 씩 클라이언트 플랫폼들(heterogeneous thin or thick client platforms)(예를 들어, 모바일폰, 휴대용 컴퓨터, 및 PDA)에 의한 사용을 장려하는 표준 메커니즘들을 통해 액세스되는 능력들을 이용할 수 있다.Broad network access: A standard mechanism that encourages the use of heterogeneous thin or thick client platforms (eg, mobile phones, portable computers, and PDAs) across networks. Lt; / RTI >

자원 풀링(Resource pooling): 제공자의 컴퓨팅 자원들은 멀티-테넌트 모델(a multi-tenant model)을 사용하여 다수의 소비자들에게 서비스하도록 풀에 넣어 두어서(pooled), 수요에 따라 다른 물리적 그리고 가상의 자원들이 동적으로 할당되고 재할당된다. 소비자는 일반적으로 제공된 자원들의 정확한 위치에 관한 제어 또는 지식을 갖고 있지 않지만 추상화의 더 높은 수준(예를 들어, 국가, 주, 또는 데이터센터)에서 위치를 명시할 수도 있다는 점에서 위치 독립성이 있다. Resource pooling: The provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, and different physical and virtual Resources are dynamically allocated and reallocated. Consumers typically have positional independence in that they do not have control or knowledge of the exact location of the provided resources, but may specify their location at a higher level of abstraction (e.g., country, state, or data center).

기민한 탄력성(Rapid elasticity): 급격하게 확장하기 위해(to quickly scale out) 능력들이 기민하게 그리고 탄력적으로, 어떤 경우들에서는 자동으로, 제공될 수 있고(provisioned), 급격하게 축소하기 위해(to quickly scale in) 신속하게 해제될 수 있다(released). 소비자에게 제공할 수 있는 가능성이 종종 무제한이고 언제든지 얼마든 구매할 수 있는 것처럼 보인다. Rapid elasticity: Ability to quickly scale out, to rapidly and competently, in some cases automatically provisioned, to rapidly scale, in can be released quickly. The possibilities that can be offered to consumers are often unlimited and seem to be able to buy at any time.

측정 가능한 서비스(Measured service): 클라우드 시스템은 자원 사용을 자동으로 제어하고 최적화하는데, 서비스의 유형(예를 들어, 스토리지, 처리, 대역폭, 및 활성 사용자 계정)에 적절한 추상화 수준에서(at some level of abstraction) 계측 기능을 이용하여서 그렇게 한다. 자원 사용량은 모니터되고, 제어되며, 그리고 보고될 수 있는데, 이로써 이용하는 서비스의 제공자와 사용자 모두에게 투명성을 제공한다.Measured service: The cloud system automatically controls and optimizes resource usage. It is used at some level of service (eg, storage, processing, bandwidth, and active user accounts) abstraction measurement function. Resource usage can be monitored, controlled, and reported, thereby providing transparency to both the provider and the user of the service being used.

[00071] 서비스 모델들(Service Models)은 다음과 같다:[00071] Service Models are as follows:

소프트웨어 서비스(Software as a Service)(SaaS): 소비자에게 제공되는 서비스는 클라우드 인프라스트럭처 상에서 실행되는 제공자의 애플리케이션들을 사용하게 해주는 것이다. 애플리케이션들은 웹 브라우저(예를 들어, 웹기반 이메일) 같은 씬(thin) 클라이언트 인터페이스를 통해 여러 클라이언트 디바이스들에서 액세스 가능하다. 소비자는 네트워크, 서버, 운영체제, 스토리지, 또는 개별 애플리케이션 성능을 포함하는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않는다. 단, 제한된 사용자-특화 애플리케이션 구성 세팅들은 예외로서 가능하다. Software as a Service (SaaS): The services that are provided to consumers are those that enable the provider's applications to run on the cloud infrastructure. Applications are accessible from multiple client devices through a thin client interface, such as a web browser (e.g., web-based email). Consumers do not manage or control the underlying cloud infrastructure, including network, server, operating system, storage, or individual application performance. However, limited user-specific application configuration settings are possible as an exception.

플랫폼 서비스(Platform as a Service)(PaaS): 소비자에게 제공되는 서비스는 제공자에 의해 지원되는 프로그래밍 언어들 및 도구들을 이용하여 생성된 소비자-생성 또는 획득 애플리케이션들을 클라우드 인프라스트럭처에 배치하게 해주는 것이다. 소비자는 네트워크, 서버, 운영체제, 또는 저장 매체를 포함하는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않는다. 그러나 배치된 애플리케이션들에 대해서 그리고 가능한 경우 애플리케이션 호스팅 환경 구성들에 대해서 제어할 수 있다. Platform as a Service (PaaS): The service provided to the consumer is to deploy consumer-generated or acquired applications created using programming languages and tools supported by the provider to the cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage media. However, you can control for deployed applications and, where possible, for application hosting environment configurations.

인프라스트럭처 서비스(Infrastructure as a Service)(IaaS): 소비자에게 제공되는 서비스는 처리, 저장 매체, 네트워크, 및 기타 기본 컴퓨팅 자원들을 제공하여 주는 것이며, 여기서 소비자는 임의의 소프트웨어를 배치 및 실행할 수 있고, 이 소프트웨어에는 운영체제와 애플리케이션들이 포함될 수 있다. 소비자는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않지만, 운영체제, 저장 매체, 배치된 애플리케이션들, 및 가능한 경우 선택된 네트워킹 컴포넌트들의 제한적인 제어(예를 들어, 호스트 방화벽)에 대하여 제어할 수 있다.Infrastructure as a Service (IaaS): Services provided to consumers provide processing, storage media, networks, and other basic computing resources, where consumers can deploy and run arbitrary software, The software may include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but can control for limited control of the operating system, storage media, deployed applications, and possibly selected networking components (e.g., host firewalls).

[00072] 배치 모델들(Deployment Models)은 다음과 같다:[00072] Deployment Models are as follows:

사설 클라우드(Private cloud): 클라우드 인프라스트럭처는 오직 한 조직(an organization)을 위해서 운영되고, 그 조직 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(on-premises)에 위치할 수 있다. Private cloud: A cloud infrastructure operates for an organization, can be managed by the organization or a third party, and can be located on-premises or on-premises. can do.

커뮤니티 클라우드(Community cloud): 클라우드 인프라스트럭처는 여러 조직들에 의해 공유되고 관심사(예를 들어, 선교, 보안 요건, 정책, 및 규정 준수 심사)를 공유하는 특정 커뮤니티를 지원하며, 여러 조직들 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(on-premises)에 위치할 수 있다. Community cloud: A cloud infrastructure supports a specific community that is shared by many organizations and shares interests (for example, mission, security requirements, policies, and compliance audits) It can be managed by three parties and can be located on-premises or on-premises.

공공 클라우드(Public cloud): 클라우드 인프라스트럭처는 일반 대중 또는 대규모 산업 집단에서 이용할 수 있으며 클라우드 서비스를 판매하는 조직이 소유한다. Public cloud: The cloud infrastructure is available to the general public or large industrial groups and is owned by organizations that sell cloud services.

하이브리드 클라우드(Hybrid cloud): 클라우드 인프라스트럭처는 둘 또는 그 이상의 클라우드들(사설, 커뮤니티, 또는 공공)이 혼합된 구성이며, 이들은 고유한 독립체들로 있지만 데이터 및 애플리케이션 이식가능성(portability)을 가능하게 해주는 표준화된 또는 소유권 있는 기술(예를 들어, 클라우드들 사이의 부하 균형을 위한 클라우드 버스팅(cloud bursting))에 의해 서로 결합되어 있다.Hybrid cloud: A cloud infrastructure is a blended configuration of two or more clouds (private, community, or public), which are unique entities, but that enable data and application portability. (For example, cloud bursting for load balancing among the clouds) that allows the user to access the network.

[00073] 클라우드 컴퓨팅 환경은 무국적(statelessness), 낮은 결합(low coupling), 모듈 방식(modularity), 및 의미적 상호운용성(semantic interoperability)에 집중하는 서비스를 지향한다. 클라우드 컴퓨팅의 중심에는 상호 연결된 노드들의 네트워크를 포함하는 인프라스트럭처가 있다.[00073] A cloud computing environment is oriented toward services that focus on statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure that includes a network of interconnected nodes.

[00074] 이제 도 1을 참조하면, 클라우드 컴퓨팅 노드의 예가 도시되어 있다. 클라우드 컴퓨팅 노드(100)는 적절한 클라우드 컴퓨팅 노드의 한 예일 뿐이며 여기에 기술된 본 발명의 실시 예들의 사용 또는 기능의 범위에 관하여 어떠한 한정을 제안하려는 의도가 있는 것은 아니다. 여하간, 클라우드 컴퓨팅 노드(100)은 전술한 모든 기능이 구현가능하고 그리고/또는 수행하는 것이 가능하다.[00074] Referring now to FIG. 1, an example of a cloud computing node is illustrated. The cloud computing node 100 is only one example of a suitable cloud computing node and is not intended to suggest any limitation as to the scope of use or functionality of the embodiments of the invention described herein. In any event, the cloud computing node 100 is capable of implementing and / or performing all of the functions described above.

[00075] 클라우드 컴퓨팅 노드(100)에, 컴퓨터 시스템/서버(110)가 위치하고, 이것은 다른 수많은 범용 또는 특수용 컴퓨팅 시스템 환경들 또는 구성들과 동작 가능하다. 컴퓨터 시스템/서버(110)와 함께 사용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템들, 환경들, 및/또는 구성들의 예들에는 개인용 컴퓨터 시스템들, 서버 컴퓨터 시스템들, 태블릿 컴퓨터 시스템들, 씬 클라이언트들(thin clients), 씩 클라이언트들(thick clients), 포켓용 또는 휴대용 디바이스들(handheld or laptop devices), 다중 프로세서 시스템들(multiprocessor systems), 마이크로프로세서-기반 시스템들(microprocessor-based systems), 셋톱박스들(set top boxes), 프로그램가능 소비자 가전들(programmable consumer electronics), 네트워크 PC들, 미니컴퓨터 시스템들, 메인프레임 컴퓨터 시스템들, 그리고 상기 시스템들 또는 디바이스들 중 어느 하나를 포함하는 분산 클라우드 컴퓨팅 환경들 및 그와 유사한 것들이 포함되나 이에 한정되지는 않는다.[00075] In a cloud computing node 100, a computer system / server 110 is located, which is operable with many other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and / or configurations that may be suitable for use with computer system / server 110 include, but are not limited to, personal computer systems, server computer systems, tablet computer systems, thin clients, thick clients, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, set-top boxes, Including, but not limited to, set top boxes, programmable consumer electronics, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments ≪ / RTI > and the like.

[00076] 컴퓨터 시스템/서버(110)는 컴퓨터 시스템에 의해 실행되는 프로그램 모듈들 같은 컴퓨터 시스템 실행 가능한 명령들의 일반적인 맥락에서 기술될 수 있다. 일반적으로, 프로그램 모듈들에는 특정한 태스크들을 수행하거나 특정한 추상적인 데이터 유형들을 구현하는 루틴들(routines), 프로그램들, 객체들(objects), 컴포넌트들, 로직, 데이터 구조들 등이 포함될 수 있다. 컴퓨터 시스템/서버(110)는 분산 클라우드 컴퓨팅 환경들에서 실시될 수 있으며, 여기서 태스크들은 통신 네트워크를 통해 연결되는 원격 처리 디바이스들에 의해 수행된다. 분산 클라우드 컴퓨팅 환경에서, 프로그램 모듈들은 메모리 저장 매체 디바이스들을 포함하여 로컬 및 원격 컴퓨터 시스템 저장 매체 모두에 위치할 수 있다.Computer system / server 110 may be described in the general context of computer system executable instructions, such as program modules, being executed by a computer system. In general, program modules may include routines, programs, objects, components, logic, data structures, etc. that perform particular tasks or implement particular abstract data types. The computer system / server 110 may be implemented in distributed cloud computing environments, where tasks are performed by remote processing devices that are connected through a communications network. In a distributed cloud computing environment, program modules may be located on both local and remote computer system storage media, including memory storage media devices.

[00077] 도 1에 도시된 바와 같이, 클라우드 컴퓨팅 노드(100) 내의 컴퓨터 시스템/서버(110)는 범용 컴퓨팅 디바이스의 형태로 도시된다. 컴퓨터 시스템/서버(110)의 컴포넌트들은 하나 또는 그 이상의 프로세서들 또는 처리 장치들(120), 시스템 메모리(130), 및 시스템 메모리(130)를 프로세서 장치(120)에 연결하는 것을 포함하여 다양한 시스템 컴포넌트들을 연결하는 버스(122)를 포함할 수 있으나 이에 한정되지는 않는다.[00077] As shown in FIG. 1, a computer system / server 110 within a cloud computing node 100 is shown in the form of a general purpose computing device. The components of computer system / server 110 may include one or more processors or processing units 120, system memory 130, and system memory 130, But is not limited to, a bus 122 that couples the components.

[00078] 버스(122)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스, 가속 그래픽 포트(accelerated graphics port), 및 다양한 버스 아키텍처들 중 하나를 사용하는 프로세서 또는 로컬 버스를 포함하여 하나 또는 그 이상의 다양한 유형의 버스 구조들 중 하나를 대표한다. 한정되지 않는 예로서, 그러한 아키텍처들에는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 확장 ISA(EISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 PCI(Peripheral Component Interconnect) 버스가 포함된다.[00078] Bus 122 may be implemented in one or more various types of memory devices, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using one of various bus architectures Lt; / RTI > bus structures. By way of example, and not limitation, such architectures include an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Extended ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnect Bus.

[00079] 컴퓨터 시스템/서버(110)는 통상적으로 다양한 컴퓨터 시스템 읽기 가능 매체를 포함한다. 그러한 매체는 컴퓨터 시스템/서버(110)에 의해 액세스될 수 있는 이용 가능한 모든 매체일 수 있고, 휘발성 및 비휘발성 매체, 탈착 및 비탈착 매체 모두를 포함한다. 탈착 매체의 한 예가 디지털 비디오 디스크(DVD)(192)를 포함하기 위해 도1에 도시되었다.[00079] Computer system / server 110 typically includes a variety of computer system readable media. Such a medium can be any available medium that can be accessed by the computer system / server 110 and includes both volatile and nonvolatile media, both desorption and non-desorption media. An example of a removable medium is shown in FIG. 1 to include a digital video disk (DVD) 192.

[00080] 시스템 메모리(130)는, 펌웨어(132)와 같은, 휘발성 또는 비-휘발성 메모리 형태의 컴퓨터 시스템 읽기 가능 매체를 포함할 수 있다. 펌웨어(132)는 컴퓨터 시스템/서버(110)의 하드웨어에 대해 인터페이스를 제공한다. 시스템 메모리(130)는 또한, 랜덤 액세스 메모리(RAM)(134) 및/또는 캐시 메모리(136) 같은, 휘발성 메모리 형태의 컴퓨터 시스템 읽기 가능 매체를 포함할 수 있다. 컴퓨터 시스템/서버(110)는 다른 탈착/비탈착, 휘발성/비휘발성 컴퓨터 시스템 저장 매체를 더 포함할 수 있다. 단지 예시로서 말하면, 저장 시스템(140)은 비탈착, 비휘발성 자기 매체(도시되지 않으며 통상적으로 "하드 드라이브"라 부름)에서/로 읽어오고 쓸 수 있다. 도시되진 않지만, 탈착 가능 비휘발성 자기 디스크(예를 들어, "플로피 디스크")로부터 읽어오고 그것에 쓰기 위한 자기 디스크 드라이브, 및 CD-ROM, DVD-ROM 또는 기타 광 매체 같은 탈착 가능 비휘발성 광 디스크로부터 읽어오고 그것에 쓰기 위한 광 디스크 드라이브가 제공될 수 있다. 이러한 경우에, 각각은 하나 또는 그 이상의 데이터 매체 인터페이스들에 의해 버스(122)에 연결될 수 있다. 아래에 묘사되고 기술되는 바와 같이, 메모리(130)는 아래에서 더 상세하게 기술되는 기능들을 실행하도록 구성된 일 세트(적어도 하나)의 프로그램 모듈들을 갖는 적어도 하나의 프로그램 제품을 포함할 수 있다.The system memory 130 may include computer system readable media in the form of volatile or non-volatile memory, such as firmware 132. The firmware 132 provides an interface to the hardware of the computer system / server 110. The system memory 130 may also include computer system readable media in the form of volatile memory, such as random access memory (RAM) 134 and / or cache memory 136. The computer system / server 110 may further include other removable / non-removable, volatile / non-volatile computer system storage media. By way of example only, the storage system 140 can read from and write to non-removable, nonvolatile magnetic media (not shown, and typically referred to as a "hard drive "). Although not shown, a magnetic disk drive for reading from and writing to a removable, nonvolatile magnetic disk (e.g., a "floppy disk") and a removable nonvolatile optical disk such as a CD-ROM, DVD-ROM, An optical disk drive for reading and writing to it may be provided. In this case, each may be coupled to bus 122 by one or more data media interfaces. As depicted and described below, the memory 130 may include at least one program product having one set (at least one) of program modules configured to perform the functions described in more detail below.

[00081] 운영체제, 하나 또는 그 이상의 애플리케이션 프로그램들, 기타 프로그램 모듈들, 및 프로그램 데이터뿐 아니라, 일 세트(적어도 하나)의 프로그램 모듈들(152)을 갖는, 프로그램/유틸리티(150)는, 예로서 메모리(130)에 저장될 수 있고, 이에 한정되지 않는다. 상기 운영체제, 하나 또는 그 이상의 애플리케이션 프로그램들, 기타 프로그램 모듈들, 및 프로그램 데이터 또는 이들의 몇몇 조합의 각각은 네트워킹 환경의 구현을 포함할 수 있다. 프로그램 모듈들(152)은 일반적으로 여기에 기술된 바와 같은 본 발명의 실시 예들의 기능들 및/또는 방법들을 실행한다.The program / utility 150, having a set (at least one) of program modules 152 as well as an operating system, one or more application programs, other program modules, and program data, May be stored in memory 130, but is not limited thereto. Each of the operating system, one or more application programs, other program modules, and program data, or some combination thereof, may include an implementation of a networking environment. Program modules 152 generally implement the functions and / or methods of the embodiments of the present invention as described herein.

[00082] 컴퓨터 시스템/서버(110)는 또한, 키보드, 포인팅 디바이스, 디스플레이(180), 디스크 드라이브, 등과 같은, 하나 또는 그 이상의 외부 디바이스들(190); 사용자가 컴퓨터 시스템/서버(110)와 상호작용할 수 있게 해주는 하나 또는 그 이상의 디바이스들; 및/또는 컴퓨터 시스템/서버(110)가 하나 또는 그 이상의 다른 컴퓨팅 디바이스들과 통신할 수 있게 해주는 기타 디바이스들(예를 들어, 네트워크 카드, 모뎀 등)과도 통신할 수 있다. 그러한 통신은 입력/출력(I/O) 인터페이스들(170)을 통해 일어날 수 있다. 또한, 컴퓨터 시스템/서버(110)는 근거리 통신망(LAN), 일반 광역 통신망(WAN), 및/또는 공공 네트워크(예를 들어, 인터넷) 등의 하나 또는 그 이상의 네트워크들과 네트워크 어댑터(160)를 통해 통신할 수 있다. 도시된 바와 같이, 네트워크 어댑터(160)는 컴퓨터 시스템/서버(110)의 다른 컴포넌트들과 버스(122)를 통해 통신한다. 도시되지는 않았지만, 다른 하드웨어 및/또는 소프트웨어 컴포넌트들도 컴퓨터 시스템/서버(110)와 함께 사용될 수 있다는 것을 이해해야 한다. 예들은 다음과 같으며, 이에 한정되지 않는다: 마이크로코드, 디바이스 드라이버들, 중복 처리 장치들(redundant processing units), 외부 디스크 드라이브 어레이들, RAID 시스템들, 테이프 드라이브들, 및 데이터 아카이브 저장 시스템들 등.The computer system / server 110 may also include one or more external devices 190, such as a keyboard, a pointing device, a display 180, a disk drive, and the like; One or more devices that allow a user to interact with the computer system / server 110; And / or other devices (e.g., network cards, modems, etc.) that allow the computer system / server 110 to communicate with one or more other computing devices. Such communication may occur via input / output (I / O) interfaces 170. The computer system / server 110 also includes a network adapter 160 and one or more networks, such as a local area network (LAN), a general wide area network (WAN), and / or a public network Lt; / RTI > As shown, the network adapter 160 communicates with other components of the computer system / server 110 via the bus 122. Although not shown, it should be understood that other hardware and / or software components may be used with the computer system / server 110. Examples include, but are not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archive storage systems, etc. .

[00083] 이제 도 2를 참조하면, 예시적인 클라우드 컴퓨팅 환경(200)이 도시된다. 도시된 바와 같이, 클라우드 컴퓨팅 환경(200)은 하나 또는 그 이상의 클라우드 컴퓨팅 노드들(100)을 포함하며, 이들은 예를 들어 개인 휴대 정보 단말기(PDA) 또는 휴대폰(210A), 데스크탑 컴퓨터(210B), 휴대용 컴퓨터(210C), 및/또는 자동차용 컴퓨터 시스템(210N)과 통신할 수 있다. 노드들(100)은 서로 통신할 수 있다. 이들은 여기에 기술된 바와 같은 사설, 커뮤니티, 공공, 또는 하이브리드 클라우드들 또는 이들의 조합 등의 하나 또는 그 이상의 네트워크들에서 물리적으로 또는 가상으로 그룹화될 수 있다(도시되지 않음). 이것은 클라우드 소비자가 로컬 컴퓨팅 디바이스 상에 자원들을 유지할 필요가 없도록 클라우드 컴퓨팅 환경(200)이 인프라스트럭처, 플랫폼들 및/또는 소프트웨어를 서비스로서 제공할 수 있게 해준다. 도 2에 도시된 컴퓨팅 디바이스들(210A-N)의 유형들은 단지 예시의 목적으로 기술한 것이며 컴퓨팅 노드들(100)과 클라우드 컴퓨팅 환경(200)은 모든 유형의 네트워크 및/또는 네트워크 주소지정가능 연결을 통해서 (예를 들어, 웹 브라우저를 사용하여) 모든 유형의 컴퓨터화된 디바이스와 통신할 수 있다는 것을 이해해야 한다.[00083] Referring now to FIG. 2, an exemplary cloud computing environment 200 is shown. As shown, the cloud computing environment 200 includes one or more cloud computing nodes 100, which may be, for example, a personal digital assistant (PDA) or mobile phone 210A, a desktop computer 210B, A portable computer 210C, and / or an automotive computer system 210N. The nodes 100 may communicate with each other. Which may be physically or virtually grouped (not shown) in one or more networks, such as private, community, public, or hybrid clouds, or combinations thereof, as described herein. This allows the cloud computing environment 200 to provide infrastructure, platforms and / or software as a service so that the cloud consumer does not need to maintain resources on the local computing device. The types of computing devices 210A-N shown in FIG. 2 are for illustrative purposes only and the computing nodes 100 and the cloud computing environment 200 may be any type of network and / or network addressable connection (E.g., using a web browser) to communicate with any type of computerized device.

[00084] 이제 도 3을 참조하면, 도 2의 클라우드 컴퓨팅 환경(200)에 의해 제공되는 일 세트의 기능별 추상화 계층들이 도시된다. 도 3에 도시된 컴포넌트들, 계층들, 및 기능들은 단지 예시의 목적이며 본 출원과 청구항들은 이것에 한정되지 않는다는 것을 미리 이해해야 한다. 도시된 바와 같이, 다음의 계층들과 그에 대응하는 기능들이 제공된다.[00084] Referring now to FIG. 3, a set of functional abstraction layers provided by the cloud computing environment 200 of FIG. 2 is shown. It should be understood that the components, layers, and functions illustrated in FIG. 3 are for purposes of illustration only and that the present application and claims are not so limited. As shown, the following layers and corresponding functions are provided.

[00085] 하드웨어 및 소프트웨어 계층(310)은 하드웨어 및 소프트웨어 컴포넌트들을 포함한다. 하드웨어 컴포넌트들의 예들에는 메인프레임들, 한 예로서 IBM® System z® 시스템들; RISC(Reduced Instruction Set Computer) 아키텍처 기반 서버들, 한 예로서 IBM System p® 시스템들; IBM System x® 시스템들; IBM BladeCenter® 시스템들; 저장 디바이스들; 네트워크 및 네트워킹 컴포넌트들이 포함된다. 소프트웨어 컴포넌트들의 예들에는 네트워크 애플리케이션 서버 소프트웨어, 한 예로서 IBM WebSphere® 애플리케이션 서버 소프트웨어; 및 데이터베이스 소프트웨어, 한 예로서 IBM DB2® 데이터베이스 소프트웨어가 포함된다. (IBM, System z, System p, WebSphere, 및 DB2는 전세계 여러 국가들에 등록된 인터내셔널 비지니스 머신즈 코포레이션의 상표들이다.)[00085] The hardware and software layer 310 includes hardware and software components. Examples of hardware components include mainframes, such as IBM ® System z ® systems; Reduced Instruction Set Computer (RISC) architecture-based servers, such as IBM System p ® systems; IBM System x ® systems; IBM BladeCenter ® systems; Storage devices; Network and networking components. Examples of software components include network application server software, such as IBM WebSphere ® application server software; And database software, for example IBM DB2 ® database software. (IBM, System z, System p, WebSphere, and DB2 are trademarks of International Business Machines Corporation, registered in many countries worldwide.)

[00086] 가상화 계층(320)은 추상화 계층을 제공하며 이로부터 다음의 가상 실체들의 예들이 제공될 수 있다: 가상 서버들; 가상 저장 매체; 가상 사설 네트워크를 포함하는, 가상 네트워크들; 가상 애플리케이션들 및 운영체제들; 및 가상 클라이언트들.[00086] The virtualization layer 320 provides an abstraction layer from which the following examples of virtual entities can be provided: virtual servers; Virtual storage medium; Virtual networks, including virtual private networks; Virtual applications and operating systems; And virtual clients.

[00087] 한 예에서, 관리 계층(330)은 아래에 기술하는 기능들을 제공한다. 자원 제공(Resource provisioning)은 클라우드 컴퓨팅 환경 내에서 태스크들을 수행하는 데 이용되는 컴퓨팅 자원들 및 기타 자원들의 동적 조달을 제공한다. 계측 및 가격 책정(Metering and Pricing)은 자원들이 클라우드 컴퓨팅 환경 내에서 이용될 때 비용 추적, 및 이 자원들의 소비에 대한 요금 청구를 제공한다. 한 예에서, 이 자원들은 애플리케이션 소프트웨어 라이센스를 포함할 수 있다. 보안(Security)은 데이터 및 기타 자원들뿐 아니라 클라우드 소비자들과 태스크들에 대한 신원 확인을 제공한다. 사용자 포털(User portal)은 소비자들 및 시스템 관리자들에게 클라우드 컴퓨팅 환경에 대한 액세스를 제공한다. 서비스 수준 관리(Service level management)는 요구되는 서비스 수준이 충족되도록 클라우드 컴퓨팅 자원할당 및 관리를 제공한다. 서비스 수준 협약서(SLA) 계획 및 충족(planning and fulfillment)은 SLA에 부합하는 예상되는 미래 요건에 맞는 클라우드 컴퓨팅 자원들의 사전-배치(pre-arrangement) 및 조달(procurement)을 제공한다. 클라우드 매니저(350)은 이하 상세한 설명에서 기술되는 클라우드 매니저를 대표한다. 클라우드 매니저(350)는 도 3에서 관리 계층(330) 내에 상주하는 것으로 도시되었지만, 클라우드 매니저(350)은 도 3에서 도시된 모든 수준들에 걸쳐 있을 수 있다(span). [00087] In one example, the management layer 330 provides the functions described below. Resource provisioning provides dynamic procurement of computing resources and other resources used to perform tasks within the cloud computing environment. Metering and Pricing provides cost tracking and billing for the consumption of these resources when resources are used within the cloud computing environment. In one example, these resources may include application software licenses. Security provides identification of cloud consumers and tasks as well as data and other resources. The user portal provides consumers and system administrators with access to the cloud computing environment. Service level management provides cloud computing resource allocation and management to meet required service levels. Service Level Agreement (SLA) planning and fulfillment provides pre-arrangement and procurement of cloud computing resources that meet the anticipated future requirements in line with SLAs. The cloud manager 350 represents the cloud manager described in the following description. Although the cloud manager 350 is shown resident in the management layer 330 in FIG. 3, the cloud manager 350 may span all of the levels shown in FIG.

[00088] 워크로드 계층(340)은 클라우드 컴퓨팅 환경이 이용될 수 있는 기능들의 예들을 제공한다. 이 계층에서 제공될 수 있는 워크로드들과 기능들의 예들은 다음과 같다: 맵핑 및 네비게이션; 소프트웨어 개발 및 라이프사이클 관리; 가상 교실 교육 전달; 데이터 분석 처리; 및 트랜잭션 처리; 및 모바일 데스크탑.[00088] The workload layer 340 provides examples of functions for which a cloud computing environment may be utilized. Examples of workloads and functions that can be provided in this layer are: mapping and navigation; Software Development and Lifecycle Management; Delivery of virtual classroom education; Data analysis processing; And transaction processing; And mobile desktop.

[00089] 본 발명은 시스템, 방법, 및/또는 컴퓨터 프로그램 제품일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 읽기 가능 저장 매체를 포함할 수 있으며 이 매체 상에 프로세서가 본 발명의 특징들을 수행하도록 하기 위한 컴퓨터 읽기 가능 프로그램 명령들을 갖는다.[00089] The present invention may be a system, method, and / or computer program product. The computer program product may include a computer readable storage medium having computer readable program instructions for causing a processor to perform the features of the present invention.

[00090] 상기 컴퓨터 읽기 가능 저장 매체는 명령 실행 디바이스에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 디바이스일 수 있다. 상기 컴퓨터 읽기 가능 저장 매체는, 예를 들면, 전자 저장 디바이스, 자기 저장 디바이스, 광 저장 디바이스, 전자기 저장 디바이스, 반도체 저장 디바이스, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 읽기 가능 저장 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함될 수 있다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 읽기-전용 메모리(ROM), 소거 및 프로그램가능 읽기-전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 읽기-전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 기록된 홈에 있는 융기된 구조들 같이 기계적으로 인코딩된 디바이스, 및 전술한 것들의 모든 적절한 조합. 여기에서 사용될 때, 컴퓨터 읽기 가능 저장 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파관이나 기타 전송 매체(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들)를 통해 전파되는 전자기파들, 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.[00090] The computer-readable storage medium can be a tangible device that can hold and store instructions for use by the instruction executing device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing . A non-exhaustive list of more specific examples of computer readable storage media may include: portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable and programmable read- (ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, perforation-cards, or instructions may be written to a memory such as a memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read- Mechanically encoded devices, such as elevated structures in the grooves, and any suitable combination of the foregoing. As used herein, a computer-readable storage medium refers to a computer-readable medium having stored thereon an electromagnetic wave that propagates through radio waves or other freely propagating electromagnetic waves, a waveguide or other transmission medium (e.g., optical pulses transmitted through a fiber optic cable) it is not interpreted as transitory signals per se, such as electrical signals transmitted through a wire.

[00091] 여기에 기술되는 컴퓨터 읽기 가능 명령들은 컴퓨터 읽기 가능 저장 매체로부터 각각 컴퓨팅/처리 디바이스들로 다운로드되거나 또는, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 또는 외부 컴퓨터 또는 외부 저장 디바이스로 다운로드될 수 있다. 상기 통신망(네트워크)은 구리 전송 케이블, 광학 전송 섬유, 무선 전송, 라우터, 방화벽, 스위치, 게이트웨이 컴퓨터 및/또는 엣지 서버를 포함할 수 있다. 각 컴퓨팅/처리 디바이스 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망(네트워크)으로부터 컴퓨터 읽기 가능 프로그램 명령들을 수신하고 그 컴퓨터 읽기 가능 프로그램 명령들을 각각의 컴퓨팅/처리 디바이스 내의 컴퓨터 읽기 가능 저장 매체에 저장하기 위해 전송한다.[00091] The computer-readable instructions described herein may be downloaded from a computer-readable storage medium to respective computing / processing devices or may be downloaded to a computer-readable storage medium, such as, for example, a network, such as the Internet, a local area network, a wide area network, and / ) Or to an external computer or external storage device. The network (network) may include copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and / or edge servers. A network adapter card or network interface in each computing / processing device receives computer-readable program instructions from the network (network) and stores the computer-readable program instructions in a computer-readable storage medium in a respective computing / send.

[00092] 본 발명의 연산들을 실행하기 위한 컴퓨터 읽기 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사 언어 등의 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 그와 유사한 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 또는 그 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 또는 소스 코드나 목적 코드일 수 있다. 상기 컴퓨터 읽기 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 모든 유형의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 실시 예들에서, 예를 들어 프로그램 가능 로직 회로, 필드-프로그램 가능 게이트 어레이들(FPGA), 또는 프로그램 가능 로직 어레이들(PLA)을 포함한 전자 회로는 본 발명의 실시 예들을 수행하기 위해, 전자 회로를 맞춤화하도록 상기 컴퓨터 읽기 가능 프로그램 명령들의 상태 정보를 활용하여 상기 컴퓨터 읽기 가능 프로그램 명령들을 실행할 수 있다.[00092] Computer-readable program instructions for carrying out the operations of the present invention may be stored in a conventional procedural programming language, such as an object-oriented programming language such as Smalltalk, C ++, or the like, and a "C" (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-of-the-art instructions, Setting data, or source code or object code. The computer-readable program instructions may be executed entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partially on the user's computer and partly on the remote computer or entirely on the remote computer or server . In the last case above, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN) (Via the Internet). In some embodiments, electronic circuits including, for example, programmable logic circuits, field-programmable gate arrays (FPGAs), or programmable logic arrays (PLAs) Readable program instructions to condition the computer readable program instructions to customize the computer readable program instructions.

[00093] 여기에서는 본 발명의 실시 예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 순서 예시도들 및/또는 블록도들을 참조하여 본 발명의 특징들을 기술한다. 순서 예시도들 및/또는 블록도들의 각각의 블록과 순서 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 읽기 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.BRIEF DESCRIPTION OF THE DRAWINGS [00093] The features of the present invention will now be described with reference to flowchart illustrations and / or block diagrams of methods, devices (systems), and computer program products in accordance with embodiments of the invention. It will be appreciated that each block and sequence of flowchart illustrations and / or block diagrams and / or combinations of blocks within the block diagrams may be implemented by computer readable program instructions.

[00094] 이 컴퓨터 읽기 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 장치의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치의 프로세서를 통해서 실행되어, 상기 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이 컴퓨터 읽기 가능 프로그램 명령들은 또한 컴퓨터 읽기 가능 스토리지 매체에 저장될 수 있으며, 컴퓨터, 프로그램가능 데이터 처리 장치 및/또는 기타 디바이스들에 지시하여 명령들이 저장된 상기 컴퓨터 읽기 가능 스토리지 매체가 상기 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 특징들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.[00094] These computer-readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to create a machine so that those instructions may be processed by the computer or other programmable data processing May be implemented through a processor of the apparatus to generate means for implementing the functions / operations specified in the blocks or blocks of the flowchart and / or block diagrams. These computer-readable program instructions may also be stored on a computer-readable storage medium, and the computer-readable storage medium, having instructions stored thereon, may direct the computer, the programmable data processing apparatus, and / Blocks may be made to function in a particular manner to include an article of manufacture including instructions that implement the features / acts specified in the blocks or blocks of the block diagrams.

[00095] 상기 컴퓨터 읽기 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 장치, 또는 다른 디바이스에 로드되어, 상기 컴퓨터, 기타 프로그램가능 장치 또는 다른 디바이스에서 일련의 연산 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램가능 장치, 또는 다른 장치 상에서 실행되는 명령들이 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.[00095] The computer-readable program instructions may also be loaded into a computer, other programmable data processing apparatus, or other device to cause a series of computation steps to be performed on the computer, other programmable apparatus, And thus the instructions that execute on the computer, other programmable apparatus, or other apparatus may implement the functions / acts specified in the flowchart and / or block or blocks of the block diagrams.

[00096] 도면들 내 순서도 및 블록도들은 본 발명의 여러 실시 예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능(functionality), 및 연산(operation)을 예시한다. 이와 관련하여, 상기 순서도 또는 블록도들 내 각 블록은 상기 명시된 논리적 기능(들)을 구현하기 위한 하나 또는 그 이상의 실행 가능한 명령들을 포함한 모듈, 세그먼트 또는 명령들의 일부분을 나타낼 수 있다. 일부 다른 구현들에서, 상기 블록에 언급되는 기능들은 도면들에 언급된 순서와 다르게 일어날 수도 있다. 예를 들면, 연속으로 도시된 두 개의 블록들은 실제로는 사실상 동시에 실행될 수도 있고, 또는 이 두 블록들은 때때로 관련된 기능에 따라서는 역순으로 실행될 수도 있다. 블록도들 및/또는 순서 예시도의 각 블록, 및 블록도들 및/또는 순서 예시도 내 블록들의 조합들은 특수목적용 하드웨어 및 컴퓨터 명령들의 명시된 기능들 또는 동작들, 또는 이들의 조합들을 수행하는 특수목적용 하드웨어-기반 시스템들에 의해 구현될 수 있다는 것에 또한 유의한다.[00096] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products in accordance with various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a portion of a module, segment, or instruction that includes one or more executable instructions for implementing the specified logical function (s). In some other implementations, the functions referred to in the block may occur differently from the order noted in the figures. For example, two blocks shown in succession may actually be executed substantially concurrently, or the two blocks may sometimes be executed in reverse order, depending on the associated function. Each block of block diagrams and / or example illustrations, and combinations of blocks within the block diagrams and / or the example illustrations, are intended to include specific features or operations that perform the specified functions or operations of the special purpose hardware and computer instructions, It should also be noted that it may be implemented by any applicable hardware-based systems.

[00097] 도 4는 도 3에서 도시한 클라우드 매니저(350)의 한 적당한 예를 도시한다. 클라우드 매니저(350)은 자원 요청 인터페이스(a resource request interface)(420)을 포함하는 클라우드 제공 메커니즘(a cloud provisioning mechanism)(410)을 포함한다. 자원 요청 인터페이스(420)은 소프트웨어 엔티티(a software entity)가 인간의 개입 없이 클라우드 매니저(350)으로부터 가상 머신들을 요청할 수 있게 해 준다. 클라우드 매니저(350)은 또한 사용자 인터페이스(430)을 포함하는데, 이는 사용자가, VM들의 제공(provisioning), VM들의 해체(destruction), 클라우드의 성능 분석 등, 모든 적절한 기능을 수행하기 위해 클라우드 매니저와 대화할(interact) 수 있게 해 준다. 자원 요청 인터페이스(420)과 사용자 인터페이스(430) 사이의 차이는 사용자 인터페이스(430)에서는 사용자가 명시한 기능들을 수행하기 위해 사용자가 수동으로 사용자 인터페이스(430)을 사용해야 하지만, 자원 요청 인터페이스(420)에서는 인간 사용자로부터의 입력 없이 클라우드 메커니즘(350)에 의해서 클라우드 자원들의 제공을 요청하기 위해 소프트웨어 엔티티에 의해서 자원 요청 인터페이스(420)이 사용될 수 있다는 점이다. [00097] FIG. 4 illustrates one suitable example of the cloud manager 350 shown in FIG. The cloud manager 350 includes a cloud provisioning mechanism 410 that includes a resource request interface 420. The resource request interface 420 allows a software entity to request virtual machines from the cloud manager 350 without human intervention. The cloud manager 350 also includes a user interface 430 that allows the user to interact with the cloud manager to perform all appropriate functions, such as provisioning of VMs, destruction of VMs, Allows you to interact. The difference between the resource request interface 420 and the user interface 430 is that the user must manually use the user interface 430 to perform the functions specified by the user in the user interface 430, The resource request interface 420 may be used by the software entity to request the provision of cloud resources by the cloud mechanism 350 without input from a human user.

[00098] 클라우드 매니저(350)는 또한 호스트 모니터 메커니즘(a host monitor mechanism)(440)을 포함하는데, 이는 잠재적 호스트 컴퓨터 시스템들 상에서 이용 가능한 자원들을 모니터 하여서 클라우드 매니저(350)이 VM을 위해 명시된 자원들을 잠재적 호스트 컴퓨터 시스템들 상에서 이용 가능한 자원들과 비교할 수 있게 해준다. 호스트 선정 메커니즘(a host selection mechanism)(450)은 요청된 VM을 위해 상기 명시된 자원들을 잠재적 호스트 컴퓨터 시스템들 상에서 이용 가능한 자원들과 비교하는 것에 기초하여 잠재적 호스트 컴퓨터 시스템을 선정할 수 있게 해 준다. vCPU 배치 메커니즘(the vCPU placement mechanism)(460)은 vCPU들을 하드웨어 멀티스레딩 파라미터를 사용하여 선정된 호스트 컴퓨터 시스템 상에 배치한다. VM 재조정 메커니즘(a VM resize mechanism)(470)은, 원래 VM이 하드웨어 멀티스레딩 파라미터를 사용하지 않았더라도, 하드웨어 멀리티스레딩 파라미터를 사용하여 기존의 VM들을 재조정할 수 있게 해준다. The cloud manager 350 also includes a host monitor mechanism 440 that monitors the resources available on the potential host computer systems so that the cloud manager 350 can determine the resources Lt; RTI ID = 0.0 > available < / RTI > on potential host computer systems. A host selection mechanism 450 allows a potential host computer system to be selected based on comparing the specified resources with the resources available on the potential host computer systems for the requested VM. The vCPU placement mechanism 460 places the vCPUs on a selected host computer system using hardware multithreading parameters. The VM resize mechanism 470 allows the VMs to reschedule existing VMs using hardware multithreading parameters, even though the original VM did not use hardware multithreading parameters.

[00099] 도 5는 클라우드 VM 요청(a cloud VM request)(510)의 한 적절한 예를 도시하는데, 이는 클라우드 매니저(350)에 의해서 제공될 VM을 요청하기 위해 도 4의 클라우드 제공 메커니즘(410) 상에 자원 요청 인터페이스(420)을 통해서 또는 사용자 인터페이스(430)을 통해서 제출될 수 있다. 클라우드 VM 요청(510)은 VM 상에서 필요한 자원들을 위한 요건들의 모든 명세(any specification of requirements)를 포함할 수 있다. 적절한 요건들의 예들에는 메모리 요건(520), 디스크 요건(530), 및 CPU 요건(540)이 포함된다. 메모리 요건(520)은 VM을 위해 필요한 메모리의 양을 명시한다. 디스크 요건(530)은 VM을 위해 필요한 디스크의 양을 명시한다. CPU 요건(540)은 VM을 위해 필요한 가상 CPU들의 수를 명시하고, 또한 이하에서 상세하게 논의하는, 하드웨어 멀티스레딩 파라미터(a hardware multithreading parameter)를 명시할 수 있다. 물론, 도 5에 도시되지 않은 다른 요건들도 VM을 위해 명시될 수도 있는데, 그러한 것에는 네트워크 요건 및 기타 적절한 요건들이 포함될 수 있다. 종래 기술에서, 오픈스택(OpenStack)은, 클라우드 VM 요청으로서, "플레이버(flavor)"라 불리는 것을 사용하는데, 이는 VM 상의 자원들을 위한 최소 요건들을 명시한다. 5 illustrates one suitable example of a cloud VM request 510 that may be used by the cloud providing mechanism 410 of FIGURE 4 to request a VM to be served by the cloud manager 350. [ Via the resource request interface 420 or on the user interface 430. The cloud VM request 510 may include any specification of requirements for the resources required on the VM. Examples of suitable requirements include memory requirements 520, disk requirements 530, and CPU requirements 540. Memory requirement 520 specifies the amount of memory needed for the VM. Disk requirement 530 specifies the amount of disk needed for the VM. CPU requirements 540 specify the number of virtual CPUs needed for the VM, and may also specify a hardware multithreading parameter, discussed in detail below. Of course, other requirements not shown in FIG. 5 may also be specified for the VM, which may include network requirements and other appropriate requirements. In the prior art, OpenStack uses what is called a " flavor " as a cloud VM request, which specifies the minimum requirements for resources on the VM.

[000100] 도 6을 참조하면, 방법(600)은 잠재적 호스트 컴퓨터 시스템들 상에서 이용 가능한 자원들을 모니터하기 위해 도 4의 호스트 모니터 메커니즘(440)에 의해서 수행되는 것이 바람직하다. 잠재적 호스트 컴퓨터 시스템들 상에서 이용 가능한 자원들이 결정되고(단계 610) 그리고 로그된다(단계 620). 방법(600)을 구현하는 한 알려진 방식은 드라이버(a driver)를 사용하는 것이며, 이는 호스트에게 자신의 이용 가능한 자원들을 결정하도록 질의를 보낸다.[0002] Referring to FIG. 6, the method 600 is preferably performed by the host monitor mechanism 440 of FIG. 4 to monitor available resources on potential host computer systems. The resources available on the potential host computer systems are determined (step 610) and logged (step 620). One known way of implementing method 600 is to use a driver, which sends a query to the host to determine its available resources.

[000101] 도 7을 참조하면, 방법(700)은 클라우드 VM 요청을 수신함에 의해서 시작한다(단계 710). 그 다음, 클라우드 VM 요청 내의 자원 요건들이 잠재적 호스트 컴퓨터 시스템들 상에서 이용 가능한 자원들과 비교된다(단계 720). 단계(720)에서 이용 가능한 자원들은 도 6의 단계(620)에서 생성된 로그(the log)로부터 읽혀질 수 있음에 유의한다. 그 다음, 클라우드 VM 요청 내의 자원 요건들을 만족시키는 자원들을 갖는 호스트가 선정된다(단계 730). 그 다음, VM은 선정된 호스트 컴퓨터 시스템 상에 배치된다(740).[000101] Referring to FIG. 7, method 700 begins by receiving a Cloud VM request (step 710). The resource requirements in the cloud VM request are then compared with the resources available on the potential host computer systems (step 720). It is noted that the resources available at step 720 may be read from the log generated at step 620 of FIG. A host with resources that satisfy the resource requirements in the cloud VM request is then selected (step 730). The VM is then placed on the selected host computer system (740).

[000102] 많은 현대의 프로세서들(또는 CPU들)은 다수의 처리 코어들을 포함한다. 멀티-코어 프로세서의 한 예가 도 8에서 도시한 x86 듀얼 코어 CPU(810)이다. x86 듀얼 코어 CPU(810)은 2개의 하드웨어 스레드들(822 및 824)를 갖는 제1 코어(820)와, 2개의 하드웨어 스레드들(842 및 844)를 갖는 제2 코어(840)를 포함한다. 각각의 코어 상에 다수의 하드웨어 스레드들의 존재는 VM을 호스트 컴퓨터 시스템에 제공하는 데 있어서 과제들이 따른다. 종래 기술에서, 멀티-코어 CPU 내의 하드웨어 스레드들의 수는 통상적으로 무시되고, 오직 물리적 코어들만 고려하였다. 예를 들어, 도 9의 종래 기술의 방법(900)은 클라우드 VM 요청을 읽고(단계 910), 그 다음 클라우드 VM 요청에서 다수의 vCPU들을 만족시키는 수의 물리적 코어들을 갖는 호스트를 선정한다(단계 920). 도 10에서 도시한 종래 기술의 CPU 요건(1010)은 VM 내의 가상 CPU들(vCPU들)의 수를 명시하며, 도 5에서 도시한 CPU 요건(540)에 대한 하나의 적절한 예이다. 방법(900)은 VM을 위한 호스트를 선택할 때 오직 물리적 코어들만 사용하기 때문에, 상기 코어들 상의 다수의 하드웨어 스레드들이 이용될 것이며, 따라서 이용 가능 CPU 자원들을 이용하지 않는다. 다른 종래 기술에서, 호스트의 하이퍼스레딩(hyperthreading)이 인에이블될 때, 하드웨어 스레드들의 수가 고려되고 하드웨어 스레드들에 대한 vCPU들의 배치는 물리적 코어들에 상관없이 수행된다. 이 방식은 VM들을 비효율적이 되게 하는데, 이는 일부 워크로드들이 다른 코어들 상의 스레드들을 이용함으로부터 유익을 얻더라도 다른 워크로드들은 동일 코어를 위한 스레드들에 의해서 더 나은 서비스를 받을 수 있기 때문이다.[0002] Many modern processors (or CPUs) include multiple processing cores. One example of a multi-core processor is the x86 dual-core CPU 810 shown in Fig. The x86 dual core CPU 810 includes a first core 820 having two hardware threads 822 and 824 and a second core 840 having two hardware threads 842 and 844. The presence of multiple hardware threads on each core pose challenges in providing the VM to the host computer system. In the prior art, the number of hardware threads in a multi-core CPU is typically ignored and only physical cores are considered. For example, the prior art method 900 of FIG. 9 reads (step 910) a cloud VM request and then selects a host having a number of physical cores that satisfy a number of vCPUs in a cloud VM request (step 920 ). The prior art CPU requirement 1010 shown in FIG. 10 specifies the number of virtual CPUs (vCPUs) in the VM and is one suitable example for the CPU requirement 540 shown in FIG. Because the method 900 only uses physical cores when selecting a host for a VM, multiple hardware threads on the cores will be used and thus will not utilize available CPU resources. In another prior art, when hyperthreading of a host is enabled, the number of hardware threads is considered and the placement of vCPUs for hardware threads is performed regardless of the physical cores. This approach makes VMs inefficient because some workloads benefit from using threads on other cores, while other workloads are better served by threads for the same core.

[000103] 도 9의 단계(920)은 VM 요청을 만족시키는 호스트 컴퓨터 시스템을 선정하기 위한 모든 적절한 기준 또는 휴리스틱(any suitable criteria or heuristic)을 포함할 수 있다. 예를 들어, 물리적 코어들의 수를, 2.0과 같은, 무리한 비율(overcommit ratio)로 증가 시킬 수도 있다. 따라서, 만일 호스트가 3개의 이용 가능한 코어들을 갖는다면, 3개의 물리적 코어들에 대해 2.0의 무리한 비율을 곱하면 6개의 이용 가능한 프로세서들이 만들어지는데, 이는 6개의 vCPU들을 요구하는 VM은 호스트 상에 배치될 수 있지만 7개의 vCPU들을 요구하는 VM은 배치될 수 없다는 것을 의미한다. 간단한 예가 예시될 것이다. [000103] Step 920 of FIG. 9 may include any suitable criteria or heuristic for selecting a host computer system that satisfies the VM request. For example, the number of physical cores may be increased to an overcommit ratio, such as 2.0. Thus, if the host has three available cores, multiplying the three physical cores by an unreasonable rate of 2.0 results in six available processors, which require that the VMs requiring six vCPUs are deployed on the host , But a VM that requires seven vCPUs can not be deployed. A simple example will be illustrated.

[000104] 도 11은 3개의 듀얼 코어 x86 CPU들을 포함하는 동일 호스트 컴퓨터 시스템을 나타낸다. 이 호스트는 도 12에 도시한 VM1을 이미 가지고 있고, 이 호스트 위에는 VM1은 실행 중이며, 도 12의 코어들에서 음영으로 도시된 바와 같이 CPU1의 2개의 물리적 코어들과 CPU2의 2개의 물리적 코어들 중 제1의 코어에 배치되어 있다고 가정한다. 또한 도 12에 도시된 VM2도 배치될 필요가 있다고 가정한다. 도 11의 예에서 이용 가능한 코어들의 수는 9로 결정되는데, 즉 6개의 코어들에 대하여 무리한 비율 2를 곱하고 도 11에 도시한 잠재적 호스트 1 내의 VM1에 의해서 사용된 3개의 코어들을 뺀 값이다. VM2는 2개의 vCPU들을 필요로 하고, 잠재적 호스트 1은 9개의 이용 가능한 코어들을 가지고 있기 때문에, 잠재적 호스트 1은 도 12에 도시한 VM2를 위한 유효한 잠재적 호스트이다.[000104] Figure 11 shows the same host computer system including three dual core x86 CPUs. This host already has VM1 shown in FIG. 12, VM1 is running on this host, and as shown in the shaded areas in the cores of FIG. 12, two physical cores of CPU1 and two physical cores of CPU2 It is assumed that it is disposed in the first core. It is also assumed that the VM2 shown in Fig. 12 needs to be arranged. The number of cores available in the example of FIG. 11 is determined to be 9, i.e., multiplied by an unreasonable rate of two for six cores and minus the three cores used by VM1 in potential host 1 shown in FIG. Since VM2 requires two vCPUs and potential host 1 has nine available cores, potential host 1 is a valid potential host for VM2 shown in FIG.

[000105] vCPU들을 잠재적 호스트에 실제 배치하는 것은 VM을 위해 잠재적 호스트를 선정하는 것과는 별도의 단계라는 것에 유의해야 한다. 도 13을 참조하면, 방법(1300)은 클라우드 VM 요청을 읽는 것에 의해서 시작한다(단계 1310). 그 다음, 클라우드 VM 요청 내의 vCPU들은 물리적 코어들 상에 배치된다(단계 1320). 도 11에서, CPU1의 제1 및 2 코어들과 CPU2의 제1 코어의 스레드 T1은 음영으로 표시되는데, 이는 도 12에 도시한 VM1 내의 3개의 vCPU들이 이들 3개의 대응 코어들 상에 배치되었음을 표시하기 위함이다. 그러나, 이러한 배치는 정적이 아님에 유의해야 한다. 다른 시간들에서, vCPU는 모든 활성인 코어들 상의 모든 하드웨어 스레드들 상에서 실행 중일 수 있다. 하이퍼스레딩에서는, 3개의 듀얼-코어들 내에 총계 12개의 하드웨어 스레드들이 할당된다. VM1은 이들 스레드들 중 3개를 취하고 9개는 다른 VM들을 위해 남겨둔다. 그러나, vCPU들은 모든 스레드들에 할당될 수 있으며, 이는 메모리를 공유하는 운영 체제 스레드들에서 실행중인 작업은 동일 vCPU의 하드웨어 스레드들에서 최선으로(best) 실행될 수 있지만 독립적인 운영 체제 스레드들에서 실행중인 작업은 다른 코어들의 하드웨어 스레드들에서 차선으로(better) 실행될 수 밖에 없다는 것을 의미할 수도 있다. 그러므로, 종래 기술은 잠재적 호스트들이 VM을 위해 식별되는 방식에서 그리고 VM들이 선정된 호스트 상에서 실행되는 방식에서 비효율성이 발생하는데, 그 이유는 잠재적 호스트들에 대한 VM들의 할당이 CPU들 상에서 하드웨어 스레드들과 코어들 사이의 차이들을 바로(currently) 파악할 수 없기 때문이다.[000105] It should be noted that the actual placement of vCPUs on a potential host is a separate step from selecting a potential host for the VM. Referring to FIG. 13, method 1300 begins by reading the Cloud VM request (step 1310). The vCPUs in the cloud VM request are then placed on the physical cores (step 1320). 11, the first and second cores of CPU 1 and the thread T1 of the first core of CPU 2 are shaded, indicating that three vCPUs in VM1 shown in FIG. 12 are located on these three corresponding cores . However, it should be noted that this arrangement is not static. At other times, the vCPU may be running on all hardware threads on all active cores. In hyperthreading, a total of twelve hardware threads are allocated in three dual-cores. VM1 takes 3 of these threads and 9 leaves them for other VMs. However, vCPUs can be allocated to all threads, which means that jobs running on operating system threads that share memory can best run on hardware threads of the same vCPU, but run on independent operating system threads May mean that the work being done must be performed better in the hardware threads of the other cores. Therefore, the prior art incurs inefficiencies in the way in which potential hosts are identified for the VM and in the way in which the VMs are run on the selected host, because the allocation of the VMs to the potential hosts is done by hardware threads And the differences between the cores can not currently be grasped.

[000106] 종래 기술은 물리적 프로세서 코어 또는 하드웨어 스레드 중 어느 하나를 인식할 수는 있지만 모두를 가상 CPU가 배치될 수 있는 실체로서 인식하지는 못한다. 하이퍼스레딩이 없는, 도 8에서 도시한 단일의 듀얼 코어 CPU는 2개의 이용 가능한 CPU들을 갖는데, vCPU들이 배치될 수 있는 2개의 물리적 코어들(820 및 840)의 형태로 갖는다. 하이퍼스레딩이 있는, 단일의 듀얼 코어 CPU는 더 많은 vCPU들을 지원할 수 있다; 그러나, vCPU들이 동일 물리적 코어 상의 하드웨어 스레드들에 의해서 실행되는지 또는 다른 코어들 상의 하드웨어 스레드들에 의해서 실행되는지는 결정되지는 않는다. 본 출원과 청구항들은 여기서 vCPU들이, 단일 물리적 코어 또는 단일 하드웨어 스레드에 단지 할당되는 것이 아니라, 다수의 하드웨어 스레드들에 할당될 필요가 있음을 인정하여, 이에 관해서 상세하게 작성하였다. [0002] The prior art can recognize either a physical processor core or a hardware thread, but not all of them as an entity to which a virtual CPU can be placed. The single dual core CPU shown in FIG. 8 without hyperthreading has two available CPUs, in the form of two physical cores 820 and 840, where the vCPUs can be deployed. A single dual core CPU with hyperthreading can support more vCPUs; However, it is not determined whether the vCPUs are executed by hardware threads on the same physical core or by hardware threads on other cores. The present application and claims acknowledge and acknowledge that vCPUs need to be assigned to multiple hardware threads, rather than being assigned only to a single physical core or a single hardware thread.

[000107] vCPU들을 단일 하드웨어 스레드 또는 코어에 할당하는 문제는 하드웨어 스레드들의 수가 증가될 때 악화된다. 도 8 및 도 11에서 도시한 x86 듀얼 코어 CPU들에서, 하이퍼스레딩은 코어당 2개의 스래드들을 가능하게 한다. 하드웨어 스레드들이 많은 프로세서들에서, 문제는 더 분명해진다. 예를 들어, Power8 6 코어 CPU(1410)이 도 14에 도시되어 있는데, 이는 8개의 하드웨어 스레드들(1432, 1434, 1436, 1438, 1442, 1444, 1446 및 1448)을 포함하는 제1 코어(1420)과 8개의 하드웨어 스레드들(1462, 1464, 1466, 1468, 1472, 1474, 1476 및 1478)을 또한 포함하는 제2 코어(1450)을 포함한다. 4개의 다른 코어들은 도 14에 도시되지 않았지만, 도시된 2개의 코어들과 유사하다. 호스트가 도 9의 종래 기술의 방법(900)에서 도시된 바와 같이 물리적 코어들의 수에 기초하여 선정될 때, 많은 하드웨어 스레드들이 사용되지 않게 될 것이다. 따라서, 만일 2개의 vCPU들이 도 14에 도시한 2개의 코어들(1420 및 1450)에 대해서 배치된다면, 각각의 코어 상에서 8개의 하드웨어 스레드들 중 7개가 낭비되는 결과가 초래될 것이다. 다시 말하면, 2개의 코어들을 위한 16개의 스레드들 중 오직 2개만 주어진 시점에서 사용되고, 그 시점에서 16개의 하드웨어 스레드들 중 14개는 낭비된다는 순 결과를 가져온다는 것이다. 이것은 도 9에서 도시한 종래 기술의 방법(900)을 사용하면 2개의 Power8 코어들 상의 이용 가능한 처리 자원들 16개중 2개만(12.5%) 이용될 수 있을 뿐이라는 것을 의미한다. 이와 달리, 만일 코어당 많은 하드웨어 스레드들이 있을 때 vCPU들이 하나의 하드웨어 스레드에 할당된다면, 높은 수준의 병렬처리와 공유메모리를 요구하는 워크로드들을 갖는 VM들은 여러 물리적 코어들에 걸쳐 분산하기보다는 그 VM을 위해 다른 vCPU들과 동일한 물리적 코어 상에 위치함으로써 더 나은 처리 결과를 얻을 수 있을 것이다. [000107] The problem of assigning vCPUs to a single hardware thread or core is exacerbated when the number of hardware threads is increased. In the x86 dual-core CPUs shown in Figs. 8 and 11, hyperthreading enables two scads per core. On processors with many hardware threads, the problem becomes clearer. For example, a Power8 6 core CPU 1410 is shown in FIG. 14, which includes a first core 1420 that includes eight hardware threads 1432, 1434, 1436, 1438, 1442, 1444, 1446, And a second core 1450 that also includes eight hardware threads 1462, 1464, 1466, 1468, 1472, 1474, 1476, and 1478. Four other cores are not shown in FIG. 14, but are similar to the two cores shown. When the host is selected based on the number of physical cores as shown in the prior art method 900 of FIG. 9, many hardware threads will not be used. Thus, if two vCPUs are placed for the two cores 1420 and 1450 shown in FIG. 14, seven out of eight hardware threads on each core will be wasted. In other words, only 2 of the 16 threads for the two cores are used at a given point in time, resulting in a net result that 14 of the 16 hardware threads are wasted. This means that only two of the 16 available processing resources (12.5%) on the two Power8 cores can be utilized using the prior art method 900 shown in FIG. On the other hand, if vCPUs are allocated to a single hardware thread when there are many hardware threads per core, then VMs with workloads that require high levels of parallelism and shared memory are not distributed across multiple physical cores, The better processing results will be obtained by being located on the same physical core as the other vCPUs.

[000108] 도 14를 참조하여 위에서 설명한 바와 같은 물리적 코어들에 걸쳐 분산된 많은 사용되지 않는 스레드들 또는 vCPU들의 문제를 피하기 위해서, 잠재적 호스트들을 식별하고 VM들을 배치하기 위한 새로운 방법은 클라우드 VM 요청 내의 하드웨어 멀티스레딩 파라미터를 사용하여 하드웨어 스레드들을 고려하는데, vCPU는 단지 하나의 물리적 코어 또는 단일 하드웨어 스레드 대신에 하나의 물리적 코어 내의 다수의 하드웨어 스레드들에 대해서 할당될 수 있다는 원리에 기초하여서 고려한다. 이것은 하드웨어 멀티스레딩과 관련된 클라우드 VM 요청 내의 새로운 파라미터를 사용하여 행해진다. 여기서 설명하는 구체적인 예들에서, 이 하드웨어 멀티스레딩 파라미터는 "SMT" 파라미터라 하는데, 이는 대칭 멀티스레딩(Symmetric Multithreading)을 뜻하며, 이는 CPU들 상의 하드웨어 멀티스레딩을 기술하기 위해 종래 기술에서도 알려진 용어이다. 도 15를 참조하면, 방법(1500)은, 한 실시 예에서, 호스트 컴퓨터를 선정하기 위해서, 코어당 하드웨어 스레드들의 수 및 스플릿 코어 세팅들에 관한 호스트들 상의 정보와 함께, 클라우드 VM 요청 내의 SMT 파라미터를 사용함에 의해서 시작된다(단계 1510). 일단 호스트 컴퓨터 시스템이 선정되면, 클라우드 VM 요청 내의 동일 SMT 파라미터는 선정된 호스트 상에 VM을 배치할 때 vCPU들을 위한 배치 결정들을 내리기 위해 사용될 수 있다(단계 1520). 한 실시 예에서, 코어당 하드웨어 스레드들의 수 및 스플릿 코어 세팅들에 관한 호스트 상의 정보도 또한 선정된 호스트 상에 VM을 배치할 때 vCPU들을 위한 배치 결정들을 내리는데 사용될 수 있다(1520).[000108] In order to avoid the problems of many unused threads or vCPUs distributed over the physical cores as described above with reference to FIG. 14, a new method for identifying potential hosts and deploying VMs is described in the Cloud VM Request Consider hardware threads using hardware multithreading parameters, which are considered based on the principle that a vCPU can be allocated for multiple hardware threads in a single physical core or in a single physical core instead of a single hardware thread. This is done using new parameters in the cloud VM request associated with hardware multithreading. In the specific examples described herein, this hardware multithreading parameter is referred to as the "SMT" parameter, which refers to Symmetric Multithreading, a term also known in the art to describe hardware multithreading on CPUs. Referring to FIG. 15, method 1500, in one embodiment, determines the number of hardware threads per core and the number of SMT parameters in a cloud VM request, along with information on hosts on split core settings, (Step 1510). Once the host computer system is selected, the same SMT parameters in the cloud VM request can be used to make deployment decisions for the vCPUs when placing the VM on the selected host (step 1520). In one embodiment, the number of hardware threads per core and information on the host regarding split core settings may also be used 1520 to make placement decisions for vCPUs when placing VMs on a predetermined host.

[000109] 도 10은 클라우드 VM 요청을 위한 종래 기술의 CPU 요건(1010)이 VM 상에 필요한 vCPU들(1020)의 수를 명시하는 것을 포함함을 보여준다. 본 출원과 청구항들에 따라 도 16에 도시한 클라우드 VM 요청(1610)은 vCPU들의 수(1620)을 포함하지만, 추가적으로 하드웨어 멀티스레딩(SMT) 파라미터(1630)도 포함한다. SMT 파라미터의 값은 0이 될 수 있는데, 이는 하드웨어 멀티스레딩이 턴 오프(turn off)임을 표시하거나, 또는 하드웨어 스레드들의 수를 나타내는 2의 거듭제곱 수(a power of 2 number)가 될 수 있다. 이에 관한 일부 예들이 예시될 것이다. 도 17을 참조하면, CPU 요건(1610A)는 도 16에서 도시한 CPU요건(1610)을 위한 하나의 적절한 예이고, 2 vCPU들(1720) 및 2의 값을 갖는 SMT 파라미터(1730)을 포함한다. 도 14에서 도시한 바와 같은 Power8 6 코어 CPU (1410)을 갖는 잠재적 호스트를 위해, 잠재적 호스트는 2개의 스레드들이 사용되는 하나의 코어를 갖는데, 이는, 도 18에서 도시한 바와 같이, 6개의 스레드들이 사용되지 않는 결과를 초래한다. [000109] FIG. 10 shows that prior art CPU requirements 1010 for a cloud VM request include specifying the number of vCPUs 1020 required on the VM. The cloud VM request 1610 shown in FIG. 16 in accordance with the present application and claims includes the number of vCPUs 1620, but additionally includes a hardware multithreading (SMT) parameter 1630. The value of the SMT parameter may be zero, indicating that hardware multithreading is a turn off, or it may be a power of 2 number indicating the number of hardware threads. Some examples of this will be illustrated. 17, CPU requirement 1610A is one suitable example for CPU requirement 1610 shown in FIG. 16 and includes 2 vCPUs 1720 and an SMT parameter 1730 with a value of 2 . For a potential host with a Power8 6 core CPU 1410 as shown in FIG. 14, the potential host has one core in which two threads are used, as shown in FIG. 18, Resulting in unused results.

[000110] 도 19의 제2 CPU 요건(1610B)는 도 16에서 도시한 CPU 요건(1610)을 위한 다른 적절한 예이고, 2 vCPU들(1920) 및 하드웨어 멀티스레딩이 턴 오프임을 표시하는 값을 갖는 SMT 파라미터(1930)을 포함한다. 도 14에서 도시한 Power8 6 코어 CPU(1410)을 갖는 잠재적 호스트를 위해, 하드웨어 멀티스레딩이 턴 오프이면, 잠재적 호스트는 각각의 코어 내에 하나의 스레드가 사용되는 2개의 코어들을 갖게 될 것이고, 이는 도 20에서 도시한 바와 같이, 2개의 코어들에서 14개의 스레드들이 사용되지 않는 결과를 초래한다. SMT 파라미터가 턴 오프인 도 19의 CPU 요건(1610B)에 대한 잠재적 호스트의 순 결과는 하이퍼스레딩이 디스에이블될(disabled) 때도 10에서 도시한 종래 기술의 CPU 요건(1010)과 동일함에 유의해야 하는데, 이는 호스트 하이퍼스레딩이 디스에이블될 때 종래 기술의 CPU 요건(1010)은 하드웨어 멀티스레딩에 대해서는 전혀 고려하지 않기 때문이다. 종래 기술에서, 만일 하이퍼스레딩이 인에이블되면, 어느 코어의 하드웨어 스레드가 vCPU를 처리할지가 예측 가능하지 않다. 하드웨어 멀티스레딩을 고려하는 하드웨어 멀티스레딩 파라미터에 대한 값을 명시함으로써, 잠재적 호스트 상에서 사용되지 않는 하드웨어 스레드들의 수가 감소될 수 있고 어느 vCPU들이 동일 코어 상에서 실행되는지가 제어될 수 있다.The second CPU requirement 1610B of FIG. 19 is another suitable example for the CPU requirement 1610 shown in FIG. 16, with two vCPUs 1920 and a value indicating that hardware multithreading is turned off SMT < / RTI > For a potential host with a Power8 6-core CPU 1410 shown in FIG. 14, if hardware multi-threading is turned off, the potential host will have two cores in each core where one thread is used, As shown at 20, 14 threads in the two cores result in no use. It should be noted that the net result of the potential host for CPU requirement 1610B in FIG. 19 where the SMT parameter is turned off is the same as CPU requirement 1010 of the prior art shown at 10 when hyperthreading is disabled , Since the prior art CPU requirement 1010 does not take into account hardware multithreading at all when host hyperthreading is disabled. In the prior art, if hyperthreading is enabled, it is not predictable which core's hardware thread will process the vCPU. By specifying a value for a hardware multithreading parameter that considers hardware multithreading, the number of unused hardware threads on a potential host can be reduced and which vCPUs run on the same core can be controlled.

[000111] 도 16-19의 예들은 하드웨어 멀티스레딩 파라미터가 vCPU들을 어떻게 배치할지에 관하여 더 많은 제어를 어떻게 제공할 수 있는지를 보여준다. 예를 들어, 만일 2 vCPU들을 갖는 VM이 동일 데이터 상에서 연산하는 작업들을 실행한다면, 상기 2 vCPU들은, 도 17 및 18의 예에서 도시한 바와 같이, 동일 코어 내의 2개의 다른 하드웨어 스레드들에 대해서 배치되는 것이 바람직할 수 있는데, 왜냐하면 동일 코어 상에서 실행하는 2개의 스레드들은 그 코어에 이용 가능한 캐시 메모리에 대한 매우 높은 성능의 액세스를 가질 것이기 때문이다. 만일 2 vCPU들을 갖는 VM이 서로 독립적인 작업들을 실행한다면, 상기 2 vCPU들은, 도 19 및 20의 예에서 도시한 바와 같이, 2개의 다른 코어들에 대해서 배치되는 것이 바람직할 수 있다.[000111] The examples of FIGS. 16-19 show how hardware multithreading parameters can provide more control over how to place vCPUs. For example, if a VM with two vCPUs is performing operations that operate on the same data, the two vCPUs may be arranged for two different hardware threads in the same core, as shown in the example of FIGS. May be desirable because two threads executing on the same core will have very high performance access to the cache memory available to that core. If the VM with 2 vCPUs are performing independent tasks, the 2 vCPUs may be preferably arranged for two different cores, as shown in the example of Figures 19 and 20.

[000112] 도 21의 제3 CPU 요건(1610C)은 도 16에 도시한 CPU 요건(1610)에 대한 다른 적절한 예이고 8 vCPU들(2120) 및 8의 값을 갖는 SMT 파라미터(2130)을 포함한다. 도 14에 도시한 바와 같은 Power8 6코어 CPU(1410)을 갖는 잠재적 호스트를 위해, 잠재적 호스트는 모두 8개의 스레드들이 사용되는 하나의 코어를 갖게 될 것이며, 그 결과 도 22에서 도시한 바와 같이, 사용되지 않는 스레드는 하나도 없게 될 것이다. The third CPU requirement 1610C of FIG. 21 is another suitable example for the CPU requirement 1610 shown in FIG. 16 and includes 8 vCPUs 2120 and an SMT parameter 2130 with a value of 8 . For a potential host having a Power8 6 core CPU 1410 as shown in FIG. 14, the potential host will have one core in which all eight threads are used, and as a result, as shown in FIG. 22, There will be no threads that do not.

[000113] 도 23의 제4 CPU 요건(1610D)은 도 16에 도시한 CPU 요건(1610)에 대한 또 다른 적절한 예이고 12 vCPU들(2320) 및 4의 값을 갖는 SMT 파라미터(2330)을 포함한다. 도 14에 도시한 바와 같은 Power8 6코어 CPU(1410)을 갖는 잠재적 호스트를 위해, 잠재적 호스트는 각각의 코어에서 4개의 스레드들이 사용되는 3개의 코어를 갖게 될 것이며, 그 결과 도 24에서 도시한 바와 같이, 12개의 사용되지 않는 스레드들을 초래하게 될 것이다. 이들 단순한 예들은 호스트 컴퓨터 시스템을 선정함에 있어서 하드웨어 멀티스레딩 파라미터를 명시하는 것이 vCPU들을 호스트 컴퓨터 시스템에 어떻게 배치할지에 관하여 제어를 어떻게 제공할 수 있는지를 보여준다.[000113] The fourth CPU requirement 1610D of FIG. 23 is another suitable example for the CPU requirement 1610 shown in FIG. 16 and includes 12 vCPUs 2320 and an SMT parameter 2330 with a value of 4 do. For a potential host with a Power8 6 core CPU 1410 as shown in FIG. 14, the potential host will have three cores in which four threads are used in each core, and as a result, Likewise, it will result in 12 unused threads. These simple examples illustrate how specifying a hardware multithreading parameter in selecting a host computer system can provide control over how to place vCPUs in the host computer system.

[000114] 도 17-24에 도시한 예들은 vCPU가 각각의 이용 가능한 스레드에 대해서 배치될 수 있다고 가정함에 유의한다. 도 9-12에 관한 위의 논의는 CPU들의 수를 일정량만큼 증가시키기 위한 "무리한 비율(overcommit ratio)"에 관한 것이었으며, 유사한 무리한 비율이 본 출원 및 청구항들에 따른 호스트 컴퓨터 시스템 선정에서도 적용될 수 있다.[000114] It is noted that the examples shown in Figures 17-24 assume that a vCPU can be deployed for each available thread. The above discussion of FIGS. 9-12 relates to an "overcommit ratio" for increasing the number of CPUs by a certain amount, and similar unreasonable ratios can be applied to host computer system selection according to the present application and claims have.

[000115] 도 25를 참조하면, 방법(2500)은, 도 16, 17, 19, 21 및 23에서 도시한 바와 같이, 하드웨어 멀티스레딩 파라미터가 명시될 때 호스트를 선정한다. 클라우드 VM 요청이 읽혀진다(단계 2510). SMT 파라미터가 OFF일 때(단계 2520=YES), 클라우드 VM 요청 내의 vCPU들의 수를 만족시키는 다수의 물리적 코어들을 갖는 호스트가 선정된다(단계 2530). 단계(2530)은 도 9의 종래 기술 방법(900)에서 단계(920)과 유사함에 유의한다. SMT 파라미터가 ON일 때(단계 2520=NO), SMT 파라미터의 수를 만족시키는 코어당 다수의 스레드들을 갖고 SMT 파라미터에 명시된 스레드들의 수에 의해서 나누어진 클라우드 VM 요청 내의 vCPU들의 수를 만족시키는 다수의 코어들을 갖는 호스트가 선정된다(단계 2540). 이것이 클라우드 VM 요청 내의 vCPU들의 수를 만족시키는 다수의 하드웨어 스레드들을 갖는 호스트를 선정하는 하나의 특정한 방법이다. 그 다음, 방법(2500)은 종료된다. [000115] Referring to FIG. 25, a method 2500 selects a host when a hardware multithreading parameter is specified, as shown in FIGS. 16, 17, 19, 21 and 23. The Cloud VM request is read (step 2510). When the SMT parameter is OFF (step 2520 = YES), a host having a plurality of physical cores satisfying the number of vCPUs in the cloud VM request is selected (step 2530). Note that step 2530 is similar to step 920 in the prior art method 900 of FIG. When the SMT parameter is ON (step 2520 = NO), a number of threads that satisfy the number of SMT parameters and have a number of threads per core and that satisfy the number of vCPUs in the cloud VM request divided by the number of threads specified in the SMT parameter A host with cores is selected (step 2540). This is one particular way to select hosts with multiple hardware threads that satisfy the number of vCPUs in a cloud VM request. The method 2500 then ends.

[000116] 일단 호스트 컴퓨터 시스템이 선정되면, VM을 위한 vCPU들은 선정된 호스트 상에 배치될 수 있다. 도 26을 참조하면, 방법(2600)인 vCPU들이 선정된 호스트에 배치될 필요가 있을 때 시작된다(2610). SMT 파라미터가 off일 때(단계 2620=YES), 각각의 vCPU는 다른 물리적 코어 상에 배치된다(단계 2630). SMT 파라미터가 on일 때(단계 2620=NO), vCPU들은 동일 물리적 코어 상의 다른 하드웨어 스레드들 상에 배치될 수 있다(단계 2640). 그 다음, 방법(2600)은 종료된다. [000116] Once the host computer system is selected, the vCPUs for the VM may be deployed on the selected host. Referring to FIG. 26, a method 2600 begins when vCPUs need to be deployed to a selected host (2610). When the SMT parameter is off (step 2620 = YES), each vCPU is placed on a different physical core (step 2630). When the SMT parameter is on (step 2620 = NO), the vCPUs may be placed on different hardware threads on the same physical core (step 2640). The method 2600 then ends.

[000117] 클라우드 VM 요청 내에 하드웨어 멀티스레딩 파라미터가 있을 때, 클라우드 매니저는 잠재적 호스트에서 CPU들 내의 물리적 코어들의 수를 알아야 할 뿐만 아니라, 잠재적 호스트 내의 CPU들에 의해서 지원되는 스레드들의 수도 또한 알아야 한다. 이것은 호스트의 단일 코어가 클라우드 VM 요청을 위해 명시된 스레드들의 수를 지원할 수 있는지를 확실하게 하기 위해서이다. 도 6을 다시 참조하면, 이것은 단계(610)에서 이용 가능한 자원들을 결정하는 것이 이용 가능한 CPU 코어들을 결정하는 것뿐만 아니라, 이들 CPU 코어들 상의 다수 스레드들도 또한 이용 가능한지를 결정하는 것도 포함한다는 것을 의미한다. 이를 달성하는 한가지 방법은 도 6의 단계(610)에서 이용 가능한 자원들의 일부로서 호스트 컴퓨터 시스템에 의해서 지원되는 최대 SMT 세팅을 수집하는 것이다. 이것의 한 예가 도 27에 도시되어 있고, 여기서 max_guest_smt(최대 게스트 SMT)는 잠재적 호스트 컴퓨터 시스템이 하드웨어 멀티스레딩을 지원하는지 아닌지를 표시하기 위해 도 4의 호스트 모니터 메커니즘(440)에 의해서 수집된 값을 나타낸다. max_guest_smt의 가능한 값들은 0과 2의 거듭제곱(power of 2 number)이고, 0은 호스트 컴퓨터 시스템 상에서 SMT가 턴 오프임을 표시하고, 2의 거듭제곱은 각각의 CPU상에 이용 가능한 하드웨어 스레드들의 수를 표시한다. 호스트 컴퓨터 시스템 내의 모든 CPU들이 동일 유형일 때, max_guest_smt는 호스트 컴퓨터 시스템 내의 모든 CPU들에 대해서 적용하는 단일 값(a single value)이 될 것이다. 호스트 컴퓨터 시스템이 다른 수들의 하드웨어 스레드들을 포함하는 다른 유형의 CPU들을 포함할 때, max_guest_smt는 호스트 컴퓨터 시스템 내의 각각의 CPU에 대해 다른 값을 가질 수도 있다.[000117] When there is a hardware multithreading parameter in a cloud VM request, the cloud manager must know not only the number of physical cores in the CPUs in the potential host, but also the number of threads supported by the CPUs in the potential host. This is to ensure that a single core of the host can support the number of threads specified for the cloud VM request. Referring again to FIG. 6, this indicates that determining resources available at step 610 includes not only determining available CPU cores, but also determining whether multiple threads on these CPU cores are also available it means. One way to achieve this is to collect the maximum SMT settings supported by the host computer system as part of the resources available in step 610 of FIG. One example of this is shown in FIG. 27, where max_guest_smt (maximum guest SMT) is the sum of the values collected by the host monitor mechanism 440 of FIG. 4 to indicate whether the potential host computer system supports hardware multithreading . Possible values of max_guest_smt are powers of 2 numbers, 0 indicates that the SMT is turned off on the host computer system, and a power of 2 indicates the number of hardware threads available on each CPU Display. When all CPUs in the host computer system are of the same type, max_guest_smt will be a single value applied to all CPUs in the host computer system. When the host computer system includes different types of CPUs including different numbers of hardware threads, max_guest_smt may have different values for each CPU in the host computer system.

[000118] 오픈스택(OpenStack)은 현재 게스트 CPU의 원하는 토폴로지(the desired topology)를 명시하는 것을 돕기 위한 어떠한 기존의 지원도 갖고 있지 않다. 여기서 논의한 하드웨어 멀티스레딩 파라미터의 추가를 구현하기 위한 한 가지 방법은 도 28에서 도시한 바와 같이 오프스택 플레이버(an OpenStack flavor)에 추가의 명세(an additional specification)를 추가하는 것이다. 파라미터 powerkvm:smt는 게스트 VM을 위한 원하는 SMT 값을 명시하는 오픈스택 플레이버 내의 새로운 파라미터이다. 이 파라미터의 가능한 값들은, "돈케어(don't care)"를 표시하는, -1; SMT가 오프(off)임을 표시하는, 0; 또는 2의 거듭제곱 수가 될 수 있음에 유의한다. 잠재적 호스트들 상의 하드웨어 멀티스레딩에 관한 정보를 max_guest_smt 세팅에 수집하는 능력과, 오픈스택 플레이버에 원하는 수준의 하드웨어 멀티스레딩을 명시하는 능력을 포함함으로써, 본 출원과 여기 청구항들은 VM들을 배치하기 위해 잠재적 호스트 컴퓨터 시스템들을 선정하기 위한 훨씬 개선된 방법을 제공하는데, 이는 호스트 컴퓨터 시스템들의 하드웨어 멀티스레딩 능력들을 더욱 잘 이용하는 방식으로 잠재적 호스트 컴퓨터 시스템들이 이들 VM들을 배치할 수 있게 하며, 그 결과 호스트 컴퓨터 시스템들 상의 CPU 자원들의 이용을 개선할 수 있다.[000118] OpenStack does not have any existing support to help specify the desired topology of the current guest CPU. One way to implement the addition of hardware multithreading parameters discussed herein is to add an additional specification to an OpenStack flavor as shown in FIG. The parameter powerkvm: smt is a new parameter in the open stack flavor that specifies the desired SMT value for the guest VM. Possible values for this parameter are -1, indicating "do not care "; 0, indicating that SMT is off; Or a power of two. By including the ability to collect information about hardware multithreading on potential hosts in the max_guest_smt setting and the ability to specify a desired level of hardware multithreading in an open stack flavor, Provides a much improved method for selecting computer systems that allows potential host computer systems to deploy these VMs in a manner that better exploits the hardware multithreading capabilities of the host computer systems, The utilization of the CPU resources can be improved.

[000119] 여기서 논의한 하드웨어 멀티스레딩 파라미터는 또한 VM 재조정 연산(a VM resizing operation)에도 사용될 수 있다. 때때로 VM은 더 많은 또는 더 적은 자원들을 가질 필요가 있고, 그래서 VM에 배치되는 자원들을 추가하거나 또는 감소시키기 위해 VM은 재조정될 수 있다. VM을 재조정하기 위한 하나의 적절한 방법은 오픈스택 플레이버가 VM에 대한 자원 할당을 변경하도록 명시하는 것이다. VM을 재조정할 때 오픈스택 플레이버는 위에서 논의한 powerkvm:smt 파라미터를 가질 수 있고 이는 도 28에 도시되어 있다. 도 29는 VM을 재조정하기 위한 방법(2900)을 도시하며, 이 방법은 도 4에 도시한 VM 재조정 메커니즘(470)에 의해서 바람직하게 수행된다. 기존의 VM의 재조정 연산을 위해 플레이버가 읽혀진다(단계 2910). 단계(2910)에서 참조된 플레이버는 VM에 대한 자원들의 새로운(즉, 재조정된) 할당을 갖는 플레이버이다. 상기 플레이버가 SMT 파라미터를 포함하지 않을 때(단계 2920=NO), VM의 SMT 파라미터는 OFF로 세트된다(단계2930). 상기 플레이버가 SMT 파라미터를 포함하고(단계 2920=YES), 상기 SMT 파라미터의 값이 OFF 또는 "돈 케어"일 때(단계 2940=YES), 상기 VM의 SMT 파라미터는 OFF로 세트된다(단계2930). 상기 플레이버의 SMT가 2의 거듭제곱 값을 가질 때(단계 2940=NO), 상기 VM의 SMT 파라미터는 상기 플레이버 내에 명시된 SMT의 값에 세트된다(단계 2950). 그 다음, 방법(2900)은 종료된다. 방법(2900)은 기존의 VM들을 확실히 "개량하여(retrofit)" SMT 파라미터를 사용하는 것을 가능하게 한다.[000119] The hardware multithreading parameters discussed herein may also be used in a VM resizing operation. Sometimes the VM needs to have more or fewer resources, so the VM can be readjusted to add or reduce the resources deployed in the VM. One suitable method for rebalancing a VM is to specify that the open stack flavor should change the resource allocation for the VM. When rebalancing the VM, the open stack flavor may have the powerkvm: smt parameter discussed above, which is shown in FIG. FIG. 29 shows a method 2900 for rebalancing a VM, which is preferably performed by the VM rebalancing mechanism 470 shown in FIG. The flavor is read (step 2910) for the rebalancing operation of the existing VM. The flavor referenced in step 2910 is a flavor with a new (i.e., re-adjusted) allocation of resources for the VM. When the flavor does not contain an SMT parameter (step 2920 = NO), the SMT parameter of the VM is set to OFF (step 2930). If the flavor contains an SMT parameter (step 2920 = YES) and the value of the SMT parameter is OFF or "Don Care" (step 2940 = YES), the SMT parameter of the VM is set to OFF (step 2930) . When the SMT of the flavor has a power of two (step 2940 = NO), the SMT parameter of the VM is set to the value of the SMT specified in the flavor (step 2950). The method 2900 then ends. The method 2900 makes it possible to reliably " retrofit "existing VMs using SMT parameters.

[000120] Power8 6코어 CPU는 서브코어들(subcores)을 지원하는데, 이는 스플릿 코어가 인에이블될 때 각각의 코어 내의 8개의 스레드들이 2개의 스레드들의 서브코어들로 나누어진다는 것을 의미한다. 스플릿 코어가 인에이블된 Power8 6 코어 CPU(3010)가 도 30에 도시되었는데, 이는 제1 코어(3020) 및 제2 코어(3050)을 포함하며, 제1 코어(3020)는 4개의 서브코어들(3022, 3024, 3026 및 3028)로 나누어지고, 그리고 제2 코어(3050)도 4개의 서브코어들(3052, 3054, 3056 및 3058)로 나누어진다. 4개의 다른 코어들은 도 30에 도시되지 않았지만, 도시된 2개의 코어들과 유사하다. 도 30에 도시한 바와 같이, 각각의 서브코어는 2개의 하드웨어 스레드들을 갖는다. 각각의 코어를 서브코어들로 나눔으로써, 서브코어들은 코어들 대신에 가상 머신들에 할당될 수 있고, 이것은 상당한 수의 사용되지 않은 하드웨어 스레드들을 절약하는 결과를 가져오게 한다.[000120] A Power8 6-core CPU supports subcores, which means that when the split core is enabled, eight threads in each core are divided into sub-cores of two threads. Split core enabled Power 8 6-core CPU 3010 is shown in FIG. 30, which includes a first core 3020 and a second core 3050, wherein the first core 3020 includes four sub- And the second core 3050 is divided into four subcores 3052, 3054, 3056, and 3058. The subcores 3022, 3024, 3026, Four other cores are not shown in FIG. 30, but are similar to the two cores shown. As shown in Figure 30, each sub-core has two hardware threads. By dividing each core into sub-cores, the sub-cores can be assigned to virtual machines instead of cores, which results in saving a significant number of unused hardware threads.

[000121] 스플릿 코어 호스트들이 제공될 때(present), 클라우드 매니저는 VM을 위한 호스트가 스플릿 코어들을 지원하는지 아닌지를 결정할 수 있기 때문에 유리하다. 도 31을 참조하면, CPU 요건(3110)은 도 5에서 도시한 클라우드 VM 요청(510)의 일부인 것이 바람직하다. CPU 요건(3110)은 vCPU들(3120)의 수와 하드웨어 멀티스레딩 파라미터(3130)을 명시한다. 아래의 예들은 스플릿 코어들이 호스트의 선정과 그 호스트 상에 vCPU들을 배치하는 것에 어떻게 영향을 주는지를 예시한다. [000121] When split core hosts are present, the cloud manager is advantageous because the host for the VM can determine whether or not to support split cores. Referring to FIG. 31, CPU requirement 3110 is preferably part of the Cloud VM request 510 shown in FIG. CPU requirement 3110 specifies the number of vCPUs 3120 and the hardware multithreading parameter 3130. The following examples illustrate how split cores affect the selection of a host and the placement of vCPUs on that host.

[000122] 도 32를 참조하면, CPU 요건(3110A)는 도 31에서 도시한 CPU 요건(3110)에 대한 하나의 적절한 예이고, 2 vCPU들(3220) 및 2의 값을 갖는 SMT 파라미터(3230)을 포함한다. 도 30에서 도시한 바와 같이 스플릿 코어가 인에이블된 Power8 6 코어 CPU(3010)을 갖는 잠재적 호스트에서, 이 잠재적 호스트는 2개의 스레드들이 사용되는 하나의 서브코어를 가질 수 있고, 그 결과 도 33에서 도시한 바와 같이, 3개의 서브코어들은 다른 VM들에 의해서 사용될 수 있다. 32, CPU requirement 3110A is one suitable example for CPU requirement 3110 shown in FIG. 31, with 2 vCPUs 3220 and an SMT parameter 3230 with a value of 2, . In a potential host with split core enabled Power8 6 core CPU 3010 as shown in FIG. 30, this potential host may have one sub-core in which two threads are used, As shown, the three sub-cores may be used by other VMs.

[000123] 도 34의 제2 CPU 요건(3110B)는 도 31에서 도시한 CPU 요건(3110)에 대한 다른 적절한 예이고, 2 vCPU들(3420) 및 OFF로 세트된 값을 갖는 SMT 파라미터(3430)을 포함한다. 하드웨어 멀티스레딩이 턴 오프된, 도 30에서 도시한 바와 같은 스플릿 코어가 인에이블된 Power8 6 코어 CPU(3010)을 갖는 잠재적 호스트에서, 이 잠재적 호스트는 각각의 서브코어에서 1개의 스레드들이 사용되는 2개의 서브코어들을 가질 수 있고, 그 결과 도 35에서 도시한 바와 같이, 2개의 서브코어 각각에서 하나의 스레드는 사용되지 않고, 2개의 서브코어들은 다른 VM들에 의해서 사용될 수 있다.The second CPU requirement 3110B in FIG. 34 is another suitable example for the CPU requirement 3110 shown in FIG. 31, and includes two vCPUs 3420 and an SMT parameter 3430 with a value set to OFF. . In a potential host with split core enabled Power8 6-core CPU 3010, as shown in FIG. 30, where hardware multi-threading is turned off, this potential host may use 2 threads 2 in each sub- And as a result, no threads are used in each of the two sub-cores, as shown in Figure 35, and two sub-cores can be used by the other VMs.

[000124] 도 36의 제3 CPU 요건(3110C)는 도 31에서 도시한 CPU 요건(3110)에 대한 또 다른 적절한 예이고, 8 vCPU들(3620) 및 2의 값을 갖는 SMT 파라미터(3630)을 포함한다. 하드웨어 멀티스레딩이 2의 값을 갖는, 도 30에서 도시한 바와 같은 스플릿 코어가 인에이블된 Power8 6 코어 CPU(3010)을 갖는 잠재적 호스트에서, 이 잠재적 호스트는 각각의 서브코어에서 2개의 스레드들이 사용되는 4개의 서브코어들을 가질 수 있고, 그 결과 도 37에서 도시한 바와 같이, 사용되지 않는 스레드들은 없다. 하나의 특정 구현에서, 8개의 vCPU들 모두 동일 물리적 코어의 8개의 스레드들(4개의 서브코어들) 모두에 배치될 수 있다. 물론, 다른 구현에서, 도 37의 4개의 서브코어들은 2개 또는 그 이상의 물리적 코어들 상에 배치될 수도 있다.The third CPU requirement 3110C in FIG. 36 is another suitable example for the CPU requirement 3110 shown in FIG. 31, with 8 vCPUs 3620 and an SMT parameter 3630 with a value of 2 . In a potential host with split core enabled Power8 6 core CPU 3010 as shown in FIG. 30, where the hardware multithreading has a value of 2, this potential host uses two threads in each sub-core And as a result, as shown in Figure 37, there are no unused threads. In one particular implementation, all eight vCPUs may be located in all eight threads (four subcores) of the same physical core. Of course, in other implementations, the four sub-cores of FIG. 37 may be located on two or more physical cores.

[000125] 도 38의 제4 CPU 요건(3110D)는 도 31에서 도시한 CPU 요건(3110)에 대한 또 다른 적절한 예이고, 12 vCPU들(3820) 및 2의 값을 갖는 SMT 파라미터(3830)을 포함한다. 하드웨어 멀티스레딩이 2의 값을 갖는, 도 30에서 도시한 바와 같은 스플릿 코어가 인에이블된 Power8 6 코어 CPU(3010)을 갖는 잠재적 호스트에서, 이 잠재적 호스트는 각각의 서브코어에서 2개의 스레드들이 사용되는 6개의 서브코어들을 가질 수 있고, 그 결과 도 39에서 도시한 바와 같이, 모든 서브코어에서 사용되지 않는 스레드들은 없다. 하나의 특정 구현에서, 12개의 vCPU들 중 8개는 동일 물리적 코어의 8개의 스레드들(4개의 서브코어들) 상에 배치될 수 있고, 나머지 4개의 vCPU들은 다른 물리적 코어 내의 2개의 서브코어들의 4개의 스레드들에 배치될 수 있다. 물론, 다른 구현에서, 도 39의 6개의 서브코어들은 3개 또는 그 이상의 물리적 코어들 상에 배치될 수도 있다.The fourth CPU requirement 3110D of Figure 38 is another suitable example for the CPU requirement 3110 shown in Figure 31 and includes 12 vCPUs 3820 and an SMT parameter 3830 with a value of 2 . In a potential host with split core enabled Power8 6 core CPU 3010 as shown in FIG. 30, where the hardware multithreading has a value of 2, this potential host uses two threads in each sub-core And as a result, as shown in Figure 39, there are no threads that are not used in all the sub-cores. In one particular implementation, eight of the twelve vCPUs may be located on eight threads (four subcores) of the same physical core and the remaining four vCPUs may be arranged on two subcores Can be placed in four threads. Of course, in other implementations, the six subcores of Figure 39 may be located on three or more physical cores.

[000126] 도 32, 34, 36 및 38의 CPU 요건들의 예들의 모두는 호스트가 인에이블된(enabled) 스플릿 코어들을 가질 때의 경우를 위한 것이다. 호스트가 디스에이블된(disabled) 스플릿 코어들을 가질 때, 결과는, 호스트들이 스플릿 코어가 디스에이블되는 세팅을 갖는다는 것을 제외하고는, 위에서 상세하게 논의한 도 17-24에서 도시한 예들과 유사하다. [000126] All of the examples of CPU requirements of Figures 32, 34, 36 and 38 are for the case when the host has split cores enabled. When the host has split cores disabled, the result is similar to the examples shown in Figs. 17-24 discussed above in detail, except that the hosts have settings in which the split cores are disabled.

[000127] 도 32, 36 및 38의 예들은 모두 2의 값을 갖는 SMT 파라미터를 갖는다. Power8 서브코어는 2개의 스레드들을 포함하기 때문에, SMT 파라미터에 2개의 스레드들을 명시하는 것은 Power8 CPU 상에 vCPU들을 가장 효율적으로 배치할 수 있게 해준다. 그러나, SMT 파라미터는 서브코어 상의 스레드들의 수보다 더 클 수도 있음에 유의한다. 예를 들어, 만일 도 36의 SMT 파라미터(3630)이 4의 값에 세트되었다면, 스레드가 2개인 서브코어들을 갖는 호스트들은 요청을 만족시키지 못할 것이다. 그러므로, 스플릿 코어들을 갖지 않는 호스트들은 SMT 세팅이 서브코어를 위한 스레드들의 수를 초과 할 때 잠재적 호스트들이 아니다.[000127] The examples of Figures 32, 36 and 38 all have SMT parameters with a value of 2. Because the Power8 subcore contains two threads, specifying two threads in the SMT parameter allows the most efficient placement of vCPUs on the Power8 CPU. Note, however, that the SMT parameter may be larger than the number of threads on the sub-core. For example, if the SMT parameter 3630 in FIG. 36 is set to a value of 4, hosts with sub-cores with two threads will not satisfy the request. Therefore, hosts without split cores are not potential hosts when the SMT setting exceeds the number of threads for the sub-core.

[000128] 도 40을 참조하면, 방법(4000)은 호스트 컴퓨터 시스템 상에서 스플릿 코어가 인에이블되었는지를 고려하는 하드웨어 멀티스레딩 파라미터를 포함하는 클라우드 VM 요청을 사용하여 호스트 컴퓨터 시스템을 선정하는 것을 보여준다. 방법(4000)은 도 4에서 도시한 호스트 선정 메커니즘(450)에 의해서 수행되는 것이 바람직하다. 클라우드 VM 요청이 단계(4010)에서 읽혀진다. SMT가 OFF이고(단계 4020=YES) 잠재적 호스트가 인에이블된 스플릿 코어를 가질 때(단계 4030=YES), 클라우드 VM 요청의 vCPU들의 수를 만족시키는 서브코어들의 수를 갖고 있다면 그 잠재적 호스트는 선정될 수 있다(단계 4040). SMT가 OFF이고(단계 4020=YES) 잠재적 호스트가 디스에이블된 스플릿 코어를 가지고 있을 때(단계4030=NO), 클라우드 VM 요청의 vCPU들의 수를 만족시키는 물리적 코어들의 수를 갖고 있다면 그 잠재적 호스트는 선정될 수 있다(단계 4050). SMT가 ON이고(단계 4020=NO) 잠재적 호스트가 인에이블된 스플릿 코어를 가지고 있을 때(단계4060=YES), 만일 서브코어를 위한 하드웨어 스레드들의 수가 SMT 파라미터에 명시된 하드웨어 스레드들의 수를 만족시킬 수 있다면 그리고 만일 서브코어들의 수가 SMT 파라미터에 명시된 하드웨어 스레드들의 수에 의해서 나누어진 클라우드 VM 요청의 vCPU들의 수를 만족시킬 수 있다면 그 잠재적 호스트는 선정될 수 있다(단계 4070). SMT가 ON이고(단계 4020=NO) 잠재적 호스트가 디스에이블된 스플릿 코어를 가지고 있을 때(단계4060=NO), 만일 코어를 위한 하드웨어 스레드들의 수가 SMT 파라미터에 명시된 하드웨어 스레드들의 수를 만족시킬 수 있다면 그리고 만일 물리적 코어들의 수가 SMT 파라미터에 명시된 하드웨어 스레드들의 수에 의해서 나누어진 클라우드 VM 요청의 vCPU들의 수를 만족시킬 수 있다면 그 잠재적 호스트는 선정될 수 있다(단계 4080). 방법(4000)은 각각의 잠재적 호스트를 위해 반복되는 것이 바람직하고, 각각의 잠재적 호스트는 잠재적 호스트들의 풀을 만들 수 있으며, 이 풀로부터 호스트들의 하나가 모든 적절한 기준 또는 휴리스틱을 사용하여 선정될 수 있음에 유의한다. 예를 들어, 인에이블된 스플릿 코어들을 갖는 호스트는 VM 요청이 CPU 코어들 및 스레드들의 더 효율적인 사용을 가져올 때 디스에이블된 스플릿 코어를 갖는 호스트보다 우선하여 선정될 수 있다. 방법(4000)은 하드웨어 멀티스레딩 파라미터와 스플릿 코어 세팅들 및 코어 당 하드웨어 스레드들에 관한 호스트로부터의 정보가 vCPU들의 더 효율적인 배치를 가져올 호스트 컴퓨터 시스템의 선정에서 어떻게 더 나은 제어를 제공하는지를 예시한다.[000128] Referring to FIG. 40, a method 4000 illustrates selecting a host computer system using a cloud VM request that includes hardware multithreading parameters that consider whether a split core is enabled on the host computer system. The method 4000 is preferably performed by the host selection mechanism 450 shown in FIG. The Cloud VM request is read in step 4010. If the SMT is OFF (step 4020 = YES) and the potential host has an enabled split core (step 4030 = YES), then the potential host is selected if it has a number of subcores that satisfy the number of vCPUs in the cloud VM request (Step 4040). If the SMT is OFF (step 4020 = YES) and the potential host has a disabled split core (step 4030 = NO), then the potential host has the number of physical cores satisfying the number of vCPUs in the cloud VM request (Step 4050). If the SMT is ON (step 4020 = NO) and the potential host has an enabled split core (step 4060 = YES), then the number of hardware threads for the subcore can satisfy the number of hardware threads specified in the SMT parameter And if the number of subcores can satisfy the number of vCUUs of the cloud VM request divided by the number of hardware threads specified in the SMT parameter, then the potential host may be selected (step 4070). If the SMT is ON (step 4020 = NO) and the potential host has a disabled split core (step 4060 = NO), if the number of hardware threads for the core can satisfy the number of hardware threads specified in the SMT parameter And if the number of physical cores can satisfy the number of vCUUs of the cloud VM request divided by the number of hardware threads specified in the SMT parameter, then that potential host may be selected (step 4080). The method (4000) is preferably repeated for each potential host, each potential host can create a pool of potential hosts from which one of the hosts can be selected using all appropriate criteria or heuristics . For example, a host with enabled split cores may be selected in preference to a host having a split split core when the VM request results in more efficient use of CPU cores and threads. The method 4000 illustrates how the information from the host regarding hardware multi-threading parameters and split core settings and hardware threads per core provides better control in the selection of the host computer system to bring about a more efficient deployment of vCPUs.

[000129] 도 41을 참조하면, 필터 PowerKVMSMTFilter가 사용되어 클라우드 매니저는 SMT=4 또는 SMT=8인 VM이 요청될 때 인에이블된 스플릿 코어 모드를 갖는 호스트들을 거를 수 있다(filter out). 이 필터는 클라우드 매니저가 더 신속하게 VM을 위한 잠재적 호스트들의 수를 줄이는 것(narrow down)을 도울 수 있다.[000129] Referring to FIG. 41, the filter PowerKVMSMTFilter is used so that the cloud manager can filter out hosts with an enabled split core mode when a VM with SMT = 4 or SMT = 8 is requested. This filter can help the cloud manager to narrow down the number of potential hosts for the VM more quickly.

[000130] 도 42를 참조하면, 방법(4200)은 vCPU들이 선정된 호스트 상에 배치될 필요가 있을 때 시작된다(단계 4210). 방법(4200)은 도 4에서 도시한 vCPU 배치 메커니즘(460)에 의해서 수행되는 것이 바람직하다. SMT가 OFF이고(단계 4220=YES) 그리고 스플릿 코어가 호스트 상에서 인에이블되어 있을 때(단계 4230=YES), vCPU들은 다른 서브코어들 상에 배치된다(단계 4240). SMT가 OFF이고(단계 4220=YES) 그리고 스플릿 코어가 호스트 상에서 디스에이블되어 있을 때(단계 4230=NO), vCPU들은 다른 물리적 코어들 상에 배치된다(단계 4250). SMT가 ON이고(단계 4220=NO) 그리고 스플릿 코어가 호스트 상에서 인에이블되어 있을 때(단계 4260=YES), vCPU들은 서브코어들의 스레드들 상에 배치된다(단계 4270). SMT가 ON이고(단계 4220=NO) 그리고 스플릿 코어가 호스트 상에서 디스에이블되어 있을 때(단계 4260=NO), vCPU들은 동일 물리적 코어의 스레드들 상에 배치된다(단계 4280). 만일 vCPU들의 수가 물리적 코어 내의 스레드들의 수를 초과 한다면, vCPU들은 vCPU들 모두를 위해 필요한 수의 하드웨어 스레드들을 제공하는 다수의 코어들 상에 배치될 수 있음에 유의한다. 방법(4200)은 하드웨어 멀티스레딩 파라미터를 명시하는 것과 스플릿 코어 세팅들에 관한 정보를 사용하는 것이 호스트 컴퓨터 시스템들 상에 vCPU들을 배치하는 데에 있어서 어떻게 더 나은 제어를 제공하는지를 예시한다.[000130] Referring to FIG. 42, method 4200 begins when vCPUs need to be deployed on a predetermined host (step 4210). The method 4200 is preferably performed by the vCPU placement mechanism 460 shown in FIG. When the SMT is OFF (step 4220 = YES) and the split core is enabled on the host (step 4230 = YES), the vCPUs are placed on the other subcores (step 4240). When SMT is OFF (step 4220 = YES) and the split core is disabled on the host (step 4230 = NO), the vCPUs are placed on different physical cores (step 4250). When SMT is ON (step 4220 = NO) and the split core is enabled on the host (step 4260 = YES), the vCPUs are placed on the threads of subcores (step 4270). When the SMT is ON (step 4220 = NO) and the split core is disabled on the host (step 4260 = NO), the vCPUs are placed on the threads of the same physical core (step 4280). Note that if the number of vCPUs exceeds the number of threads in the physical core, the vCPUs may be placed on multiple cores providing the necessary number of hardware threads for all of the vCPUs. Method 4200 illustrates how to specify hardware multithreading parameters and how to use information about split core settings provides better control in placing vCPUs on host computer systems.

[000131] 클라우드 VM 요청 내의 스플릿 코어 및 하드웨어 멀티스레딩 파라미터를 고려하여 VM들을 배치시킬 수 있도록 하기 위해, 클라우드 매니저는 잠재적 호스트에서 CPU들 내의 물리적 코어들의 수를 알아야 할 뿐만 아니라, 잠재적 호스트 내의 CPU들에 의해서 지원되는 스레드들의 수와 잠재적 호스트 상에서 스플릿 코어가 인에이블되었는지 아닌지도 또한 알아야 한다. 도 6을 다시 참조하면, 이것은 단계(610)에서 이용 가능한 자원들을 결정하는 것이 이용 가능한 CPU 코어들을 결정하는 것뿐만 아니라, 이들 CPU 코어들 상의 다수 스레드들도 또한 이용 가능한지, 그리고 스플릿 코어가 이들 코어들 상에서 인에이블되었는지를 결정하는 것도 포함한다는 것을 의미한다. 이를 달성하는 한가지 방법은 도 6의 단계(610)에서 이용 가능한 자원들의 일부로서 스플릿 코어가 잠재적 호스트 컴퓨터 시스템 상에서 인에이블되었는지에 관한 정보를 수집하는 것이다.[000131] In order to be able to place VMs in consideration of the split core and hardware multithreading parameters in the Cloud VM request, the cloud manager not only has to know the number of physical cores in the CPUs in the potential host, You should also know how many threads are supported by the split core and whether split core is enabled on the potential host. Referring back to Figure 6, it is determined that determining the available resources in step 610 not only determines the available CPU cores, but also if multiple threads on these CPU cores are also available, Lt; RTI ID = 0.0 > enabled. ≪ / RTI > One way to accomplish this is to collect information as to whether the split core is enabled on the potential host computer system as part of the resources available in step 610 of FIG.

[000132] 클라우드 매니저는, 호스트 컴퓨터 시스템들 상의 CPU들에 의해서 지원되는 다수의 하드웨어 스레드들을 포함하여, 호스트 컴퓨터 시스템들 상에서 이용 가능한 자원들과 한 실시 예에서 상기 CPU들이 인에이블된 스플릿 코어를 갖고 있는지 아닌지를 모니터한다. 클라우드 매니저는 하드웨어 멀티스레딩이 호스트 컴퓨터 시스템 상에서 허용되는지를 (한 실시 예에서, 호스트 컴퓨터 시스템 상에 요구되는 하드웨어 멀티스레딩의 양을) 명시하는 하드웨어 멀티스레딩 파라미터를 포함하는 가상 머신(VM)을 제공하기 위해 요청을 수신한다. 그 다음, 한 실시 예에서, 클라우드 매니저는 하드웨어 멀티스레딩 파라미터를 고려하여 VM을 위한 호스트 컴퓨터 시스템을 선정한다. 다른 실시 예에서, 클라우드 매니저는 하드웨어 멀티스레딩 파라미터, CPU에 의해서 지원되는 하드웨어 스레드들, 및 스플릿 코어 세팅들을 고려하여 VM을 위한 호스트 컴퓨터 시스템을 선정한다. 그 다음, 상기 VM은 하드웨어 멀티스레딩 파라미터를 사용하여 선정된 호스트 컴퓨터 시스템 상에 배치된다. 그 결과 가상 머신을 위한 호스트에서 CPU 자원들의 이용이 더 효율적이 된다.[000132] The cloud manager includes resources that are available on host computer systems, including multiple hardware threads supported by CPUs on host computer systems, and in one embodiment the CPUs have split core enabled Or not. The cloud manager provides a virtual machine (VM) that includes hardware multithreading parameters that specify whether hardware multithreading is allowed on the host computer system (in one embodiment, the amount of hardware multithreading required on the host computer system) To receive the request. Then, in one embodiment, the cloud manager selects a host computer system for the VM in consideration of the hardware multithreading parameters. In another embodiment, the cloud manager selects a host computer system for the VM in consideration of hardware multithreading parameters, hardware threads supported by the CPU, and split core settings. The VM is then placed on a selected host computer system using hardware multithreading parameters. As a result, the utilization of CPU resources on the host for the virtual machine becomes more efficient.

[000133] 당업자는 많은 변경들이 청구항들의 범위 내에서 가능함을 이해할 것이다. 따라서, 본 출원이 위에서 특정하게 도시되고 기술되었지만, 당업자는 형식과 상세 내용들에서 이들과 다른 변경들이 청구항들의 정신과 범위를 벗어남이 없이 가능할 수 있음을 이해할 것이다.[000133] Those skilled in the art will appreciate that many modifications are possible within the scope of the claims. Thus, while this application is particularly shown and described above, those skilled in the art will understand that these and other changes in form and details may be made therein without departing from the spirit and scope of the claims.

Claims (28)

호스트 컴퓨터 시스템을 모니터하고 호스트 컴퓨터 시스템을 선정하기 위한 장치에 있어서, 상기 장치는:
적어도 하나의 프로세서;
상기 적어도 하나의 프로세서에 결합된 메모리;
상기 메모리 내에 상주하고 상기 적어도 하나의 프로세서에 의해서 실행되는 클라우드 매니저(a cloud manager)를 포함하고, 상기 클라우드 매니저는:
호스트 모니터 메커니즘(a host monitor mechanism) 및 호스트 선정 메커니즘(a host selection mechanism)을 포함하며,
상기 호스트 모니터 메커니즘은:
가상 머신들이 배치될 수 있는 복수의 호스트 컴퓨터 시스템들 상에서 이용 가능한 다수의 CPU들을 결정하고;
상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU에 의해서 지원되는 다수의 하드웨어 스레드들을 결정하며; 그리고
상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU의 코어(a core)를 다수의 서브코어들(multiple subcores)로 스플릿 하기 위해 상기 CPU에 대해 스플릿 코어(split core)가 인에이블되었는지를 결정하며,
상기 호스트 선정 메커니즘은:
다수의 가상 CPU들(a number of virtual CPUs)과 하드웨어 멀티스레딩 파라미터(a hardware multithreading parameter) ― 하드웨어 멀티스레딩이 요구되는지를 명시함 ― 를 포함하는 가상 머신(VM) 요청을 수신하고;
상기 VM 요청 내 상기 다수의 가상 CPU들 및 상기 하드웨어 멀티스레딩 파라미터를 만족시키는 다수의 하드웨어 스레드들 및 스플릿 코어 세팅들을 갖는 다수의 CPU들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나를 선정하는
장치.
An apparatus for monitoring a host computer system and selecting a host computer system, the apparatus comprising:
At least one processor;
A memory coupled to the at least one processor;
A cloud manager residing in the memory and being executed by the at least one processor, the cloud manager comprising:
A host monitor mechanism and a host selection mechanism,
The host monitor mechanism comprises:
Determining a plurality of CPUs available on a plurality of host computer systems in which virtual machines may be deployed;
Determine a plurality of hardware threads supported by each CPU on the plurality of host computer systems; And
Determine whether a split core is enabled for the CPU to split a core of each CPU on the plurality of host computer systems into multiple subcores,
The host selection mechanism comprises:
Receiving a virtual machine (VM) request comprising a number of virtual CPUs and a hardware multithreading parameter specifying whether hardware multithreading is required;
Selecting one of the plurality of host computer systems comprising a plurality of virtual CPUs in the VM request and a plurality of CPUs having a plurality of hardware threads satisfying the hardware multi-threading parameter and split core settings
Device.
제1항에 있어서, 상기 클라우드 매니저는:
상기 선정된 호스트 컴퓨터 시스템 상에 복수의 가상 CPU들(vCPU들)을 배치하기 위해 상기 하드웨어 멀티스레딩 파라미터 및 상기 선정된 호스트 컴퓨터 상의 스플릿 코어 세팅들을 사용하는 가상 CPU(vCPU) 배치 메커니즘(a virtual CPU (vCPU) placement mechanism)을 더 포함하는
장치.
The method of claim 1, wherein the cloud manager comprises:
A virtual CPU (vCPU) placement mechanism using the hardware multithreading parameters and split core settings on the selected host computer to place a plurality of virtual CPUs (vCPUs) on the selected host computer system; (vCPU) placement mechanism
Device.
삭제delete 삭제delete 제1항에 있어서, 상기 클라우드 매니저는:
상기 선정된 호스트 컴퓨터 시스템 상에 복수의 가상 CPU들(vCPU들)을 배치하기 위해 상기 하드웨어 멀티스레딩 파라미터 및 상기 선정된 호스트 컴퓨터 상의 스플릿 코어 세팅들을 사용하는 가상 CPU(vCPU) 배치 메커니즘(a virtual CPU (vCPU) placement mechanism)을 더 포함하고,
상기 하드웨어 멀티스레딩 파라미터의 제1 값은 하드웨어 멀티스레딩이 턴 오프(turn off)이며, 상기 선정된 호스트 컴퓨터 시스템 상에서 요구되지 않음을 표시하는
장치.
The method of claim 1, wherein the cloud manager comprises:
A virtual CPU (vCPU) placement mechanism using the hardware multithreading parameters and split core settings on the selected host computer to place a plurality of virtual CPUs (vCPUs) on the selected host computer system; (vCPU) placement mechanism,
Wherein the first value of the hardware multithreading parameter indicates that hardware multithreading is turned off and is not required on the selected host computer system
Device.
제5항에 있어서, 상기 하드웨어 멀티스레딩 파라미터의 제1 값이 하드웨어 멀티스레딩이 턴 오프(turn off)임을 표시할 때, 상기 vCPU 배치 메커니즘은 상기 선정된 호스트 컴퓨터 시스템의 다른 물리적 코어 상에(on a different physical core) 상기 VM요청 내의 각 vCPU를 배치하는
장치.
6. The method of claim 5, wherein when the first value of the hardware multithreading parameter indicates that hardware multithreading is turn off, the vCPU placement mechanism is on a different physical core of the selected host computer system a different physical core) Place each vCPU in the VM request
Device.
제1항에 있어서, 상기 클라우드 매니저는:
상기 선정된 호스트 컴퓨터 시스템 상에 복수의 가상 CPU들(vCPU들)을 배치하기 위해 상기 하드웨어 멀티스레딩 파라미터 및 상기 선정된 호스트 컴퓨터 상의 스플릿 코어 세팅들을 사용하는 가상 CPU(vCPU) 배치 메커니즘(a virtual CPU (vCPU) placement mechanism)을 더 포함하고,
상기 하드웨어 멀티스레딩 파라미터의 제2 값은 상기 선정된 호스트 컴퓨터 시스템 상의 다수의 하드웨어 스레드들에 대한 수치(a numerical value)로서 상기 선정된 호스트 컴퓨터 시스템 상에서 하드웨어 멀티스레딩이 요구됨을 표시하는
장치.
The method of claim 1, wherein the cloud manager comprises:
A virtual CPU (vCPU) placement mechanism using the hardware multithreading parameters and split core settings on the selected host computer to place a plurality of virtual CPUs (vCPUs) on the selected host computer system; (vCPU) placement mechanism,
Wherein the second value of the hardware multithreading parameter indicates that a hardware multithreading is required on the selected host computer system as a numerical value for a plurality of hardware threads on the selected host computer system
Device.
제7항에 있어서, 상기 하드웨어 멀티스레딩 파라미터의 제2 값이 다수의 하드웨어 스레드들에 대한 수치(a numerical value)를 표시할 때, 상기 vCPU 배치 메커니즘은 상기 선정된 호스트 컴퓨터 시스템의 다른 하드웨어 스레드 상에 상기 VM요청 내의 각 vCPU를 배치하는
장치.
8. The method of claim 7, wherein when the second value of the hardware multithreading parameter indicates a numerical value for a plurality of hardware threads, the vCPU placement mechanism is operable on a different hardware thread of the selected host computer system To place each vCPU in the VM request
Device.
제1항에 있어서, 상기 하드웨어 멀티스레딩 파라미터의 제3 값은 상기 선정된 호스트 컴퓨터 시스템 상에서 하드웨어 스레딩이 턴 온(turn on) 또는 턴 오프(turn off) 되었는지에 상관없이 상기 선정된 호스트 컴퓨터 시스템이 선정되었음을 표시하는
장치.
2. The method of claim 1, wherein the third value of the hardware multithreading parameter is selected such that regardless of whether hardware threading is turned on or turned off on the selected host computer system, Indicating that it has been selected
Device.
제1항에 있어서, 상기 VM 요청은 메모리 요건과 디스크 요건을 더 포함하는
장치.
The method of claim 1, wherein the VM request further comprises memory requirements and disk requirements
Device.
제1항에 있어서, 상기 호스트 모니터 메커니즘은 상기 복수의 호스트 컴퓨터 시스템들 각각 상의 메모리의 양과 디스크 공간의 양을 더 결정하는
장치.
2. The system of claim 1, wherein the host monitor mechanism further determines an amount of memory and an amount of disk space on each of the plurality of host computer systems
Device.
제1항에 있어서, 상기 VM 요청 내의 가상 CPU들의 수가 상기 하드웨어 멀티스레딩 파라미터의 값보다 더 클 때, 상기 호스트 선정 메커니즘은 각각의 CPU가 복수의 하드웨어 스레드들을 갖는 복수의 CPU들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나를 선정하는
장치.
2. The method of claim 1, wherein when the number of virtual CPUs in the VM request is greater than a value of the hardware multithreading parameter, the host selection mechanism determines whether each of the plurality of CPUs comprises a plurality of CPUs having a plurality of hardware threads Selecting one of the host computer systems
Device.
제1항에 있어서, 상기 클라우드 매니저는 상기 하드웨어 멀티스레딩 파라미터를 사용하는 적어도 하나의 VM을 재조정하는 VM 재조정(resize) 메커니즘을 더 포함하는
장치.
2. The method of claim 1, wherein the cloud manager further comprises a VM resize mechanism to reschedule at least one VM using the hardware multithreading parameter
Device.
호스트 컴퓨터 시스템 상에 복수의 가상CPU들(vCPUs)을 배치하기 위해 적어도 하나의 프로세서에 의해 실행되는 컴퓨터-구현 방법에 있어서, 상기 방법은:
가상 머신들이 배치될 수 있는 복수의 호스트 컴퓨터 시스템들 상에서 이용 가능한 CPU들의 수를 결정하는 단계(determining);
상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU에 의해서 지원되는 하드웨어 스레드들의 수를 결정하는 단계(determining);
vCPU들의 수 및 하드웨어 멀티스레딩 파라미터 ― 상기 하드웨어 멀티스레딩 파라미터는 하드웨어 멀티스레딩이 요구되는지를 명시하고, 하드웨어 멀티스레딩이 요구될 때, 코어당 하드웨어 스레드들의 최소수(a minimum number)를 명시함 ― 를 포함하는 가상 머신(VM) 요청을 수신하는 단계(receiving);
상기 하드웨어 멀티스레딩 파라미터를 만족시키고 그리고 상기 VM 요청 내의 vCPU들의 수를 만족시키는 하드웨어 스레드들의 수를 갖는 다수의 CPU들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나를 선정하는 단계(selecting); 및
하드웨어 멀티스레딩 파라미터를 사용하여 상기 선정된 호스트 컴퓨터 시스템 상에 상기 복수의 vCPU들을 배치하는 단계(placing)를 포함하는
컴퓨터-구현 방법.
A computer-implemented method executed by at least one processor to place a plurality of virtual CPUs (vCPUs) on a host computer system, the method comprising:
Determining the number of available CPUs on a plurality of host computer systems in which virtual machines may be deployed;
Determining the number of hardware threads supported by each CPU on the plurality of host computer systems;
The number of vCPUs and the hardware multithreading parameters - The hardware multithreading parameters specify whether hardware multithreading is required and specify a minimum number of hardware threads per core when hardware multithreading is required - Receiving a virtual machine (VM) request that includes;
Selecting one of the plurality of host computer systems including a plurality of CPUs satisfying the hardware multithreading parameter and having a number of hardware threads satisfying a number of vCPUs in the VM request; And
Placing a plurality of vCPUs on the selected host computer system using hardware multithreading parameters,
Computer-implemented method.
삭제delete 제14항에 있어서, 상기 컴퓨터-구현 방법은:
상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU가 스플릿 코어를 인에이블되게 하였는지, 그리고 인에이블되게 하였다면, 코어당 다수의 서브코어들을 인에이블되게 하였는지를 결정하는 단계를 더 포함하고,
그리고 상기 선정하는 단계는 상기 VM 요청을 만족시키는 다수의 하드웨어 스레드들을 갖는 다수의 CPU들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나에 더하여, 상기 다수의 vCPU들과 상기 VM 요청 내의 상기 하드웨어 멀티스레딩 파라미터를 만족시키는 스플릿 코어 세팅들을 선정하는
컴퓨터-구현 방법.
15. The computer-implemented method of claim 14, wherein the computer-
Further comprising determining if each CPU on the plurality of host computer systems has enabled and enabled a split core and has enabled a number of subcores per core,
And wherein the selecting step comprises, in addition to one of the plurality of host computer systems comprising a plurality of CPUs having a plurality of hardware threads satisfying the VM request, the plurality of vCPUs and the hardware multithreading Selecting the split core settings that satisfy the parameters
Computer-implemented method.
제16항에 있어서, 상기 컴퓨터-구현 방법은 상기 선정된 호스트 컴퓨터 시스템 상에 복수의 vCPU들을 배치하기 위해 상기 선정된 호스트 컴퓨터 시스템 상에서 상기 하드웨어 멀티스레딩 파라미터 및 상기 스플릿 코어 세팅들을 사용하는 단계를 더 포함하는
컴퓨터-구현 방법.
17. The computer-implemented method of claim 16, further comprising using the hardware multi-threading parameter and the split core settings on the selected host computer system to place a plurality of vCPUs on the predetermined host computer system Included
Computer-implemented method.
제14항에 있어서, 상기 하드웨어 멀티스레딩 파라미터의 제1 값은 하드웨어 멀티스레딩이 턴 오프(turn off) 이고, 따라서 상기 선정된 호스트 컴퓨터 시스템 상에서 요구되지 않음을 표시하는
컴퓨터-구현 방법.
15. The method of claim 14, wherein the first value of the hardware multithreading parameter indicates that hardware multithreading is turned off and therefore not required on the selected host computer system
Computer-implemented method.
제18항에 있어서, 상기 하드웨어 멀티스레딩 파라미터의 제1 값이 하드웨어 멀티스레딩이 턴오프(turn off)임을 표시할 때, 상기 컴퓨터-구현 방법은 상기 선정된 호스트 컴퓨터 시스템 내 다른 물리적 코어 상에 상기 VM 요청 내의 각 vCPU를 배치하는 단계를 더 포함하는
컴퓨터-구현 방법.
19. The method of claim 18, wherein when the first value of the hardware multithreading parameter indicates that hardware multi-threading is turned off, the computer- Further comprising placing each vCPU in a VM request
Computer-implemented method.
제14항에 있어서, 상기 하드웨어 멀티스레딩 파라미터의 제2 값은 하드웨어 멀티스레딩이 상기 선정된 호스트 컴퓨터 시스템 상에서 요구됨을 상기 선정된 호스트 컴퓨터 시스템 상에서 코어당 최소수의 하드웨어 스레드들에 대한 수치(a numerical value)로 표시하는
컴퓨터-구현 방법.
15. The method of claim 14, wherein the second value of the hardware multithreading parameter is a numerical value for a minimum number of hardware threads per core on the selected host computer system that hardware multithreading is required on the selected host computer system. value)
Computer-implemented method.
제20항에 있어서, 상기 하드웨어 멀티스레딩 파라미터의 제2 값이 다수의 하드웨어 스레드들에 대한 수치(a numerical value)를 표시할 때, 상기 컴퓨터-구현 방법은 상기 선정된 호스트 컴퓨터 시스템 내 다른 하드웨어 스레드 상에 상기 VM 요청 내의 각 vCPU를 배치하는 단계를 더 포함하는
컴퓨터-구현 방법.
21. The computer-implemented method of claim 20, wherein when the second value of the hardware multithreading parameter indicates a numerical value for a plurality of hardware threads, the computer- Further comprising placing each vCPU in the VM request on
Computer-implemented method.
제14항에 있어서, 상기 하드웨어 멀티스레딩 파라미터의 제3 값은 상기 선정된 호스트 컴퓨터 시스템 상에서 하드웨어 스레딩이 턴 온(turn on) 또는 턴 오프(turn off) 되었는지에 상관없이 상기 선정된 호스트 컴퓨터 시스템이 선정되었음을 표시하는
컴퓨터-구현 방법.
15. The method of claim 14, wherein the third value of the hardware multithreading parameter is selected such that regardless of whether hardware threading is turned on or turned off on the selected host computer system, Indicating that it has been selected
Computer-implemented method.
제14항에 있어서, 상기 VM 요청은 메모리 요건과 디스크 요건을 더 포함하는
컴퓨터-구현 방법.
15. The method of claim 14, wherein the VM request further comprises memory requirements and disk requirements
Computer-implemented method.
제14항에 있어서, 상기 컴퓨터-구현 방법은 메모리의 양과 디스크 공간의 양을 상기 복수의 호스트 컴퓨터 시스템들의 각각에서 추가로 결정하는 단계를 더 포함하는
컴퓨터-구현 방법.
15. The method of claim 14, wherein the computer-implemented method further comprises determining an amount of memory and an amount of disk space at each of the plurality of host computer systems
Computer-implemented method.
제14항에 있어서, 상기 VM 요청 내의 vCPU들의 수가 상기 하드웨어 멀티스레딩 파라미터의 값보다 더 클 때, 상기 컴퓨터-구현 방법은 각각이 복수의 하드웨어 스레드들을 갖는 복수의 CPU들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나를 선정하는 단계를 더 포함하는
컴퓨터-구현 방법.
15. The computer-implemented method of claim 14, wherein when the number of vCPUs in the VM request is greater than the value of the hardware multithreading parameter, the computer-implemented method further comprises: Further comprising the step of selecting one of the systems
Computer-implemented method.
제14항에 있어서, 상기 컴퓨터-구현 방법은 상기 하드웨어 멀티스레딩 파라미터를 사용하는 VM을 재조정하는 단계를 더 포함하는
컴퓨터-구현 방법.
15. The computer-implemented method of claim 14, further comprising the step of re-calibrating a VM using the hardware multi-threading parameter
Computer-implemented method.
호스트 컴퓨터 시스템 상에 복수의 가상 CPU들(vCPUs)을 배치하기 위해 적어도 하나의 프로세서에 의해 실행되는 컴퓨터-구현 방법에 있어서, 상기 방법은:
가상 머신들이 배치될 수 있는 복수의 호스트 컴퓨터 시스템들 상에서 이용 가능한 CPU들의 수, 메모리의 양, 및 디스크 공간의 양을 결정하는 단계(determining);
상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU에 의해서 지원되는 하드웨어 스레드들의 수를 결정하는 단계(determining);
가상 머신(VM) 요청을 수신하는 단계(receiving) ― 상기 VM요청은 가상 머신을 위한 메모리의 최소량을 명시하는 메모리요건, 가상 머신을 위한 디스크의 최소량을 명시하는 디스크요건 및 가상 머신을 위한 가상 CPU들(vCPUs)의 수와 하드웨어 멀티스레딩 파라미터를 명시하는 CPU요건을 포함하고, 상기 하드웨어 멀티스레딩 파라미터는 하드웨어 멀티스레딩이 상기 호스트 컴퓨터 시스템 상에서 요구되는지를 명시하며, 하드웨어 멀티스레딩이 요구될 때, 코어당 하드웨어 스테드들의 최소수를 명시하고, 상기 하드웨어 멀티스레딩 파라미터의 제1 값은 하드웨어 멀티스레딩이 턴오프(turn off)임을 표시하며, 상기 하드웨어 멀티스레딩 파라미터의 제2 값은 코어당 하드웨어 스레드들의 최소수에 대한 수치를 표시하고, 상기 하드웨어 멀티스레딩 파라미터의 제3 값은 상기 호스트 컴퓨터 시스템 상에서 하드웨어 스레딩이 턴 온(turn on) 또는 턴 오프(turn off) 되었는지에 상관없이 상기 호스트 컴퓨터 시스템이 선정되었음을 표시함 ―;
상기 하드웨어 멀티스레딩 파라미터를 만족시키고 그리고 상기 VM 요청 내 다수의 vCPU들을 만족시키는 다수의 하드웨어 스레드들을 갖는 다수의 CPU들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나를 선정하는 단계(selecting); 및
상기 하드웨어 멀티스레딩 파라미터를 사용하여 상기 선정된 호스트 컴퓨터 시스템 상에 상기 복수의 vCPU들을 배치하는 단계(placing) ― 상기 배치하는 단계는 상기 하드웨어 멀티스레딩 파라미터가 하드웨어 멀티스레딩이 턴오프(turn off)임을 표시할 때는 선정된 상기 호스트 컴퓨터 시스템 내의 다른 물리적 코어 상에 상기 VM요청 내의 각 vCPU를 배치하고, 상기 하드웨어 멀티스레딩 파라미터가 하드웨어 스레드들의 수에 대한 수치를 표시할 때는 선정된 상기 호스트 컴퓨터 시스템 내의 다른 하드웨어 스레드 상에 상기 VM요청 내의 각 vCPU를 배치함 ― 를 포함하는
컴퓨터-구현 방법.
A computer-implemented method executed by at least one processor to place a plurality of virtual CPUs (vCPUs) on a host computer system, the method comprising:
Determining the number of available CPUs, the amount of memory, and the amount of disk space on a plurality of host computer systems in which virtual machines may be deployed;
Determining the number of hardware threads supported by each CPU on the plurality of host computer systems;
Receiving a virtual machine (VM) request, the VM request comprising a memory requirement specifying a minimum amount of memory for the virtual machine, a disk requirement specifying a minimum amount of disk for the virtual machine, and a virtual CPU Wherein the hardware multithreading parameter specifies that the hardware multithreading is required on the host computer system and that when hardware multithreading is required, Wherein a first value of the hardware multithreading parameter indicates that hardware multithreading is a turn off and a second value of the hardware multithreading parameter indicates that the hardware threads A numerical value for the minimum number, and a value of the hardware multithreading parameter 3 indicates that the host computer system is selected regardless of whether hardware threading is turned on or off on the host computer system;
Selecting one of the plurality of host computer systems comprising a plurality of CPUs satisfying the hardware multithreading parameter and having a plurality of hardware threads satisfying a plurality of vCPUs in the VM request; And
Placing the plurality of vCPUs on the selected host computer system using the hardware multithreading parameter, wherein the placing comprises: determining that the hardware multithreading parameter is hardware multi-threading turned off Placing each vCPU in the VM request on a different physical core in the selected host computer system when displaying, and when the hardware multithreading parameter indicates a numerical value for the number of hardware threads, Placing each vCPU in the VM request on a hardware thread
Computer-implemented method.
삭제delete
KR1020167033176A 2014-06-06 2015-06-04 Selecting a host for a virtual machine using a hardware multithreading parameter KR101884549B1 (en)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US14/297,724 2014-06-06
US14/297,677 2014-06-06
US14/297,677 US9384027B2 (en) 2014-06-06 2014-06-06 Selecting a host for a virtual machine using a hardware multithreading parameter
US14/297,707 US9400672B2 (en) 2014-06-06 2014-06-06 Placement of virtual CPUS using a hardware multithreading parameter
US14/297,724 US9304805B2 (en) 2014-06-06 2014-06-06 Provisioning virtual CPUs using a hardware multithreading parameter in hosts with split core processors
US14/297,707 2014-06-06
US14/305,703 US9372705B2 (en) 2014-06-06 2014-06-16 Selecting a host for a virtual machine using a hardware multithreading parameter
US14/305,703 2014-06-16
US14/305,955 2014-06-16
US14/305,853 US9400673B2 (en) 2014-06-06 2014-06-16 Placement of virtual CPUS using a hardware multithreading parameter
US14/305,853 2014-06-16
US14/305,955 US9304806B2 (en) 2014-06-06 2014-06-16 Provisioning virtual CPUs using a hardware multithreading parameter in hosts with split core processors
PCT/IB2015/054229 WO2015186088A1 (en) 2014-06-06 2015-06-04 Selecting a host for a virtual machine using a hardware multithreading parameter

Publications (2)

Publication Number Publication Date
KR20160147958A KR20160147958A (en) 2016-12-23
KR101884549B1 true KR101884549B1 (en) 2018-08-29

Family

ID=56682546

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167033176A KR101884549B1 (en) 2014-06-06 2015-06-04 Selecting a host for a virtual machine using a hardware multithreading parameter

Country Status (5)

Country Link
JP (1) JP6628742B2 (en)
KR (1) KR101884549B1 (en)
CN (1) CN106462446B (en)
DE (1) DE112015000216T5 (en)
GB (1) GB2541340B (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110673928B (en) * 2019-09-29 2021-12-14 天津卓朗科技发展有限公司 Thread binding method, thread binding device, storage medium and server

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130031559A1 (en) 2011-07-27 2013-01-31 Alicherry Mansoor A Method and apparatus for assignment of virtual resources within a cloud environment
JP2013186654A (en) 2012-03-07 2013-09-19 Ntt Docomo Inc Host providing system and host providing method
US20130263129A1 (en) 2012-03-30 2013-10-03 Renesas Electronics Corporation Semiconductor device
US20130297916A1 (en) 2012-05-01 2013-11-07 Renesas Electronics Corporation Semiconductor device

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352952B2 (en) * 2008-12-01 2013-01-08 Citrix Systems, Inc. Systems and methods for facilitating virtualization of a heterogeneous processor pool
US8850442B2 (en) * 2011-10-27 2014-09-30 Verizon Patent And Licensing Inc. Virtual machine allocation in a computing on-demand system
US20140007097A1 (en) * 2012-06-29 2014-01-02 Brocade Communications Systems, Inc. Dynamic resource allocation for virtual machines

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130031559A1 (en) 2011-07-27 2013-01-31 Alicherry Mansoor A Method and apparatus for assignment of virtual resources within a cloud environment
JP2013186654A (en) 2012-03-07 2013-09-19 Ntt Docomo Inc Host providing system and host providing method
US20130263129A1 (en) 2012-03-30 2013-10-03 Renesas Electronics Corporation Semiconductor device
US20130297916A1 (en) 2012-05-01 2013-11-07 Renesas Electronics Corporation Semiconductor device

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
J. C. Lopez 외 1명. 'Evaluation of a resource selection mechanism for complex network services'. 10th IEEE International Symposium on High Performance Distributed Computing, 2001.08., pp.171-180.

Also Published As

Publication number Publication date
CN106462446A (en) 2017-02-22
GB2541340A (en) 2017-02-15
DE112015000216T5 (en) 2016-09-01
GB201620786D0 (en) 2017-01-18
GB2541340B (en) 2017-07-19
KR20160147958A (en) 2016-12-23
CN106462446B (en) 2019-10-08
JP2017520830A (en) 2017-07-27
JP6628742B2 (en) 2020-01-15

Similar Documents

Publication Publication Date Title
US9619274B2 (en) Provisioning virtual CPUs using a hardware multithreading parameter in hosts with split core processors
US10606624B2 (en) Placement of virtual machines on physical hosts
US9639390B2 (en) Selecting a host for a virtual machine using a hardware multithreading parameter
US10216538B2 (en) Automated exploitation of virtual machine resource modifications
US9876732B2 (en) Managing provisioning for cloud resource allocations
US9762660B2 (en) Deploying a portion of a streaming application to one or more virtual machines according to hardware type
US10613889B2 (en) Ordering optimization of host machines in a computing environment based on policies
US9619294B2 (en) Placement of virtual CPUs using a hardware multithreading parameter
KR101884549B1 (en) Selecting a host for a virtual machine using a hardware multithreading parameter
WO2015186088A1 (en) Selecting a host for a virtual machine using a hardware multithreading parameter

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant