KR101884549B1 - 하드웨어 멀티스레딩 파라미터를 사용한 가상 머신을 위한 호스트의 선택 - Google Patents

하드웨어 멀티스레딩 파라미터를 사용한 가상 머신을 위한 호스트의 선택 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
English (en)
Other versions
KR20160147958A (ko
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,707 external-priority patent/US9400672B2/en
Priority claimed from US14/297,724 external-priority patent/US9304805B2/en
Priority claimed from US14/297,677 external-priority patent/US9384027B2/en
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Priority claimed from PCT/IB2015/054229 external-priority patent/WO2015186088A1/en
Publication of KR20160147958A publication Critical patent/KR20160147958A/ko
Application granted granted Critical
Publication of KR101884549B1 publication Critical patent/KR101884549B1/ko

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을 위해 하나의 호스트 컴퓨터 시스템을 선정한다.

Description

하드웨어 멀티스레딩 파라미터를 사용한 가상 머신을 위한 호스트의 선택{SELECTING A HOST FOR A VIRTUAL MACHINE USING A HARDWARE MULTITHREADING PARAMETER}
[0001] 본 출원은 일반적으로 가상 머신들을 호스트 컴퓨터 시스템들에 배치하는 것에 관한 것이고, 더 구체적으로는 하드웨어 멀티스레딩 파라미터(a hardware multithreading parameter)를 사용하여 가상 머신을 위해 호스트를 선정하는 것(selecting)에 관한 것이다.
[0002] 클라우드 환경에서, 클라우드 매니저(a cloud manager)는 가상 머신들을 호스트 컴퓨터 시스템들에 배치하여 가상 서버들을 생성한다. 통상적으로 클라우드 매니저는 가상 머신 이미지(the virtual machine image)가 시스템 자원들, 즉 메모리, 디스크 및 CPU와 같은 시스템 자원들을 위해 요구하는 것을 명시하는 요청을 수신한다. 그 다음, 클라우드 매니저는 요구된 시스템 자원들을 갖고 있는 이용 가능한 호스트 컴퓨터 시스템을 결정하고, 이용 가능한 호스트 컴퓨터 시스템들 중 하나를 선정하여, 가상 머신들을 그 선정된 호스트 컴퓨터 시스템에 배치한다.
[0003] 오픈스택(OpenStack)은 사설 및 공공 클라우드들을 구축하기 위한 오픈-소스 소프트웨어(open-source software)이다. 오픈스택에서, "플레이버스(flavors)"이라 불리는 가상 하드웨어 템플레이트들(virtual hardware templates)은 가상 머신들을 위해 필요한 시스템 자원들을 명시한다. 예를 들어, 오픈스택에서 플레이버는 가상 시스템을 위해 메모리의 사이즈(size of memory), 루트 디스크의 사이즈(root disk size) 및 가상 CPU들의 수를 명시할 수 있다. 가상 머신이 배치될 필요가 있을 때, 가상 머신을 위해 필요한 자원들을 명시하는 플레이버를 갖고 있는 클라우드 매니저에게 콜(a call)을 한다. 그러면, 클라우드 매니저는 플레이버에 명시된 자원들을 가지고 있는 하나 또는 그 이상의 호스트 컴퓨터 시스템들을 찾아서, 상기 플레이버를 만족시키는 호스트 컴퓨터 시스템들 중 하나에 가상 머신을 배치한다.
[0004] 호스트 내의 하드웨어 멀티스레딩은 가상 머신들을 호스트 컴퓨터 시스템으로 제공하는 것(the provisioning)을 복잡하게 할 수 있다. 종래 기술에서는, 만일 하이퍼스레딩(hyperthreading)이 호스트 컴퓨터 시스템 상에 인에이블된다면(enabled), 하드웨어 스레드의 수는 가상 머신을 위해 호스트 컴퓨터 시스템을 선정할 때 고려되고 그리고 가상 CPU들은 물리적 코어들에 상관 없이 하드웨어 스레드들에 할당된다. 만일 하이퍼스레딩이 호스트 컴퓨터 시스템 상에서 인에이블되지 않는다면, 오직 물리적 프로세서 코어들만 가상 머신을 위해 호스트 컴퓨터 시스템을 선정할 때 고려되고, 그리고 가상 CPU들은 VM이 선정된 호스트 컴퓨터 시스템 상에 제공될 때 오직 물리적 프로세서 코어들에 대해서만 할당된다. 각각의 코어 내에 많은 하드웨어 스레드들을 포함하는 POWER와 같은 현재 프로세서 아키텍처들에서, 이것은 처리 자원들을 매우 비효율적으로 사용하는 결과를 초래한다.
[0005] 프로세서들이 스플릿 코어들(split cores)을 갖고 있을 때 가상 머신들을 제공하면 더욱 복잡하게 될 수 있다. 스플릿 코어 프로세서들이란 다수의 서브코어들로 나누어져 있는 CPU 코어를 말하며, 이 서브코어들은 각각 다수의 하드웨어 스레드들을 포함할 수 있고, 게스트 운영 체제에 대해서는 하나의 코어로서 기능한다. 예를 들어, 8개의 하드웨어 스레드들을 갖는 스플릿 코어가 될 수 있는 하나의 코어는, 4개의 서브코어들로 나누어질 수 있고 이들 서브코어들의 각각은 2개의 하드웨어 스레드들을 지원할 수 있다. 스플릿 코어를 인에이블하는 것은 동적으로 이루어지는데, 이것은 스플릿 하는 것이 호스트 운영 체제 상에서 프로그램에 의해서 변경될 수 있음을 의미하는 것이다. 알려진 클라우드 매니저들은 스플릿 코어 프로세서들을 스플릿 코어들을 갖지 않는 프로세서들과 전혀 다르게 취급하지 않는다. 따라서, 알려진 클라우드 매니저들은 가상 머신들을 제공할 때 스플릿 코어 프로세서들을 사용하는 것의 장점들을 실현할 수 없다.
[0006] 제1 실시 예에 따라, 장치가 제공되는데, 상기 장치는: 적어도 하나의 프로세서; 상기 적어도 하나의 프로세서에 결합된 메모리; 상기 메모리 내에 상주하고 상기 적어도 하나의 프로세서에 의해서 실행되는 클라우드 매니저를 포함하고, 상기 클라우드 매니저는: 가상 머신들이 배치될 수 있는 복수의 호스트 컴퓨터 시스템들 상에서 이용 가능한 CPU들의 수를 결정하고 그리고 추가로 상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU에 의해서 지원되는 하드웨어 스레드들의 수를 결정하는 호스트 모니터 메커니즘; 및 다수의 가상 CPU들 및 하나의 하드웨어 멀티스레딩 파라미터를 포함하는 가상 머신(VM) 요청을 수신하는 호스트 선정 메커니즘 ― 상기 호스트 선정 메커니즘은 상기 VM 요청을 만족시키는 수의 하드웨어 스레드들을 갖는 다수의 CPU들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나를 선정함 ― 을 포함한다.
[0007] 제2 실시 예에 따라, 가상 머신을 배치하기 위해 호스트 컴퓨터 시스템을 선정하기 위한 적어도 하나의 프로세서에 의해 실행되는 컴퓨터-구현 방법을 제공하는데, 상기 방법은: 가상 머신들이 배치될 수 있는 복수의 호스트 컴퓨터 시스템들 상에서 이용 가능한 CPU들의 수를 결정하는 단계; 상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU에 의해서 지원되는 하드웨어 스레드들의 수를 결정하는 단계; 다수의 가상 CPU들 및 하나의 하드웨어 멀티스레딩 파라미터를 포함하는 가상 머신(VM) 요청을 수신하는 단계; 및 상기 VM 요청을 만족시키는 수의 하드웨어 스레드들을 갖는 다수의 CPU들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나를 선정하는 단계를 포함한다.
[0008] 본 발명은 컴퓨터 프로그램으로서 구현될 수 있다.
[0009] 바람직한 실시 예에 따라, 클라우드 매니저는, 호스트 컴퓨터 시스템들 상의 CPU들에 의해서 지원되는 다수의 하드웨어 스레드들을 포함하여, 호스트 컴퓨터 시스템들 상에서 이용 가능한 자원들을 모니터한다. 클라우드 매니저는 호스트 컴퓨터 시스템 상에서 요구되는 하드웨어 멀티스레딩의 양을 명시하는 하드웨어 멀티스레딩 파라미터를 포함하는 가상 머신(VM)을 제공하기 위해 요청을 수신한다. 그 다음, 클라우드 매니저는 하드웨어 멀티스레딩 파라미터를 고려하여 VM을 위한 호스트 컴퓨터 시스템을 선정한다.
[00010] 한 실시 예에 따라, 하드웨어 멀티스레딩 파라미터를 사용하여 가상 CPU들을 배치하는 것을 처리하는 솔루션이 제공된다.
[00011] 본 출원은, 한 실시 예에 따라, 일반적으로 호스트 컴퓨터 시스템들에 대해 가상 머신들을 배치하는 것에 관한 것이며, 더 구체적으로는 하드웨어 멀티스레딩 파라미터를 사용하여 호스트 컴퓨터 시스템에 대하여 가상 CPU들을 배치하는 것에 관한 것이다.
[00012] 한 실시 예에 따라, 스플릿 코어 프로세서들을 갖는 호스트들에서 하드웨어 멀티스레딩 파라미터를 사용하여 가상 CPU들을 배치하기 위한 솔루션이 제공된다.
[00013] 본 출원은, 한 실시 예에 따라, 일반적으로 호스트 컴퓨터 시스템들에 대해 가상 머신들을 배치하는 것에 관한 것이며, 더 구체적으로는 하드웨어 멀티스레딩 파라미터를 사용하여 하나 또는 그 이상의 스플릿 코어 프로세서들을 포함하는 호스트 컴퓨터 시스템에 대하여 가상 CPU들을 배치하는 것에 관한 것이다.
[00014] 한 실시 예에 따라, 장치가 제공되는데, 상기 장치는: 적어도 하나의 프로세서; 상기 적어도 하나의 프로세서에 결합된 메모리; 상기 메모리 내에 상주하고 상기 적어도 하나의 프로세서에 의해서 실행되는 클라우드 매니저를 포함하고, 상기 클라우드 매니저는: 가상 머신들이 배치될 수 있는 복수의 호스트 컴퓨터 시스템들 상에서 이용 가능한 CPU들의 수를 결정하고 그리고 추가로 상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU에 의해서 지원되는 하드웨어 스레드들의 수를 결정하는 호스트 모니터 메커니즘; 다수의 가상 CPU들 및 하나의 하드웨어 멀티스레딩 파라미터를 포함하는 가상 머신(VM) 요청을 수신하는 호스트 선정 메커니즘 ― 상기 호스트 선정 메커니즘은 상기 VM 요청을 만족시키는 수의 하드웨어 스레드들을 갖는 다수의 CPU들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나를 선정함 ―; 및 상기 선정된 호스트 컴퓨터 시스템 상에 복수의 가상 CPU들(vCPU들)을 배치하기 위해 상기 하드웨어 멀티스레딩 파라미터를 사용하는 가상 CPU(vCPU) 배치 메커니즘을 포함한다.
[00015] 한 실시 예에 따라, 호스트 컴퓨터 시스템 상에 복수의 가상 CPU들(vCPU들)을 배치하기 위해 적어도 하나의 프로세서에 의해 실행되는 컴퓨터-구현 방법이 제공되는데, 상기 방법은: 가상 머신들이 배치될 수 있는 복수의 호스트 컴퓨터 시스템들 상에서 이용 가능한 CPU들의 수를 결정하는 단계; 상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU에 의해서 지원되는 하드웨어 스레드들의 수를 결정하는 단계; 다수의 가상 CPU들 및 하나의 하드웨어 멀티스레딩 파라미터를 포함하는 가상 머신(VM) 요청을 수신하는 단계; 상기 VM 요청을 만족시키는 수의 하드웨어 스레드들을 갖는 다수의 CPU들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나를 선정하는 단계; 및 상기 선정된 호스트 컴퓨터 시스템 상에 상기 복수의 vCPU들을 배치하기 위해 상기 하드웨어 멀티스레딩 파라미터를 사용하는 단계를 포함한다.
[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를 배치함에 의해서 함 ― 를 포함한다.
[00017] 한 실시 예에 따라, 위의 단락에서 기술한 방법에서, 하드웨어 멀티스레딩 파라미터를 사용하여 상기 VM을 재조정하는 단계(resizing)를 더 포함하는 방법이 제공된다.
[00018] 한 실시 예에 따라, 장치가 제공되는데, 상기 장치는: 적어도 하나의 프로세서; 상기 적어도 하나의 프로세서에 결합된 메모리; 상기 메모리 내에 상주하고 상기 적어도 하나의 프로세서에 의해서 실행되는 클라우드 매니저를 포함하고, 상기 클라우드 매니저는: 가상 머신들이 배치될 수 있는 복수의 호스트 컴퓨터 시스템들 상에서 이용 가능한 CPU들의 수, 상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU에 의해서 지원되는 하드웨어 스레드들의 수, 그리고 상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU를 위해 스플릿 코어가 인에이블 되었는지를 결정하는 호스트 모니터 메커니즘; 및 다수의 가상 CPU들 및 하나의 하드웨어 멀티스레딩 파라미터를 포함하는 가상 머신(VM) 요청을 수신하는 호스트 선정 메커니즘 - 상기 호스트 선정 메커니즘은 다수의 하드웨어 스레드들을 갖는 다수의 CPU들과 상기 다수의 CPU들 및 상기 VM 내의 하드웨어 멀티스레딩 파리미터를 만족시키는 스플릿 코어 세팅들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나를 선정함 - 을 포함한다.
[00019] 한 실시 예에 따라, 호스트 컴퓨터 시스템 상에 복수의 가상 CPU들(vCPU들)을 배치하기 위해 적어도 하나의 프로세서에 의해 실행되는 컴퓨터-구현 방법이 제공되는데, 상기 방법은: 가상 머신들(VM)이 배치될 수 있는 복수의 호스트 컴퓨터 시스템들 상에서 이용 가능한 CPU들의 수를 결정하는 단계; 상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU에 의해서 지원되는 하드웨어 스레드들의 수를 결정하는 단계; 상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU가 인에이블된 스플릿 코어를 가지고 있는지를, 만일 가지고 있다면, 코어 당 서브코어들의 수를 결정하는 단계; 다수의 가상 CPU들 및 하나의 하드웨어 멀티스레딩 파라미터를 포함하는 가상 머신(VM) 요청을 수신하는 단계 ; 및 다수의 하드웨어 스레드들을 갖는 다수의 CPU들과 상기 다수의 가상 CPU들 및 상기 VM 요청 내의 하드웨어 멀티스레딩 파라미터를 만족시키는 스플릿 코어 세팅들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나를 선정하는 단계를 포함한다.
[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를 배치함에 의해서 함 ― 를 포함한다.
[00021] 한 실시 예에 따라, 클라우드 매니저는, 호스트 컴퓨터 시스템들 상의 CPU들에 의해서 지원되는 다수의 하드웨어 스레드들을 포함하여, 호스트 컴퓨터 시스템들 상에서 이용 가능한 자원들을 모니터한다. 클라우드 매니저는 하드웨어 멀티스레딩이 호스트 컴퓨터 시스템 상에서 허용되는지를 명시하는 하드웨어 멀티스레딩 파라미터를 포함하는 가상 머신(VM)을 제공하기 위해 요청을 수신한다. 그 다음, 클라우드 매니저는 하드웨어 멀티스레딩 파라미터를 고려하여 VM을 위한 호스트 컴퓨터 시스템을 선정한다. 그 다음, 상기 VM은 하드웨어 멀티스레딩 파라미터를 사용하여 상기 선정된 호스트 컴퓨터 시스템 상에 배치된다.
[00022] 한 실시 예에 따라, 클라우드 매니저는, 호스트 컴퓨터 시스템들 상의 CPU들에 의해서 지원되는 다수의 하드웨어 스레드들을 포함하여, 호스트 컴퓨터 시스템들 상에서 이용 가능한 자원들과 상기 CPU들이 인에이블된 스플릿 코어를 갖고 있는지 아닌지를 모니터한다. 클라우드 매니저는 하드웨어 멀티스레딩이 호스트 컴퓨터 시스템 상에서 허용되는지를 명시하는 하드웨어 멀티스레딩 파라미터를 포함하는 가상 머신(VM)을 제공하기 위해 요청을 수신한다. 그 다음, 클라우드 매니저는 하드웨어 멀티스레딩 파라미터, CPU에 의해서 지원되는 하드웨어 스레드들, 및 스플릿 코어 세팅들을 고려하여 VM을 위한 호스트 컴퓨터 시스템을 선정한다. 그 다음, 상기 VM은 하드웨어 멀티스레딩 파라미터를 사용하여 선정된 호스트 컴퓨터 시스템 상에 배치된다. 그 결과는 가상 머신을 위한 호스트 내의 CPU자원들의 이용이 더 효율적이 된다.
[00023] 전술한 그리고 기타 특징들 및 장점들은, 첨부된 도면들에서 예시된 바와 같이, 아래의 상세한 설명으로부터 명백하다.
[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들을 배치하는 그리고 호스트가 스플릿 코어들을 가질 때의 방법의 흐름도이다.
[00067] 클라우드 매니저는, 호스트 컴퓨터 시스템들 상에서 CPU들에 의해서 지원되는 하드웨어 스레드들의 수와 CPU들이 인에이블된 스를릿 코어를 갖는지 아닌지를 포함하여, 호스트 컴퓨터 시스템들 상의 이용 가능한 자원들을 모니터한다(monitor). 클라우드 매니저는 호스트 컴퓨터 시스템 상에서 하드웨어 멀티스레딩이 허용되는지를(또는, 한 실시 예에서, 호스트 컴퓨터 시스템 상에서 요구되는 하드웨어 멀티스레딩의 양을) 명시하는 하드웨어 멀티스레딩 파라미터를 포함하는 가상 머신(VM)을 제공하기 위한 요청을 수신한다. 그 다음, 클라우드 매니저는 하드웨어 멀티스레딩 파라미터, CPU에 의해서 지원되는 하드웨어 스레드들, 및 스플릿 코어 세팅들을 고려하여 호스트 컴퓨터 시스템을 선정한다. 그 다음, VM은 하드웨어 멀티스레딩 파라미터를 사용하여 선정된 호스트 컴퓨터 시스템 상에 배치된다. 그 결과 가상 머신을 위해 호스트 내의 CPU 자원들의 이용은 좀더 효율적이 된다.
[00068] 비록 본 출원이 클라우드 컴퓨팅에 관한 상세한 설명을 포함한다 할지라도, 여기서 설명된 구현은 클라우드 컴퓨팅 환경에 한정되는 것이 아님을 먼저 이해해야 한다. 사실, 본 발명의 실시 예들은 지금 알려진 또는 나중에 개발될 모든 유형의 컴퓨팅 환경에서도 구현 가능하다.
[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)을 포함할 수 있다.
[00070] 특성들은 다음과 같다:
주문형 셀프-서비스(On-demand self-service): 클라우드 소비자는 서비스 제공자와 대화할 필요 없이 필요에 따라 자동적으로, 서버 시간 및 네트워크 저장 매체와 같은, 컴퓨팅 능력들을 일방적으로 제공(provision)할 수 있다.
광역 네트워크 액세스(Broad network access): 네트워크를 통해서 혼성의 씬 또는 씩 클라이언트 플랫폼들(heterogeneous thin or thick client platforms)(예를 들어, 모바일폰, 휴대용 컴퓨터, 및 PDA)에 의한 사용을 장려하는 표준 메커니즘들을 통해 액세스되는 능력들을 이용할 수 있다.
자원 풀링(Resource pooling): 제공자의 컴퓨팅 자원들은 멀티-테넌트 모델(a multi-tenant model)을 사용하여 다수의 소비자들에게 서비스하도록 풀에 넣어 두어서(pooled), 수요에 따라 다른 물리적 그리고 가상의 자원들이 동적으로 할당되고 재할당된다. 소비자는 일반적으로 제공된 자원들의 정확한 위치에 관한 제어 또는 지식을 갖고 있지 않지만 추상화의 더 높은 수준(예를 들어, 국가, 주, 또는 데이터센터)에서 위치를 명시할 수도 있다는 점에서 위치 독립성이 있다.
기민한 탄력성(Rapid elasticity): 급격하게 확장하기 위해(to quickly scale out) 능력들이 기민하게 그리고 탄력적으로, 어떤 경우들에서는 자동으로, 제공될 수 있고(provisioned), 급격하게 축소하기 위해(to quickly scale in) 신속하게 해제될 수 있다(released). 소비자에게 제공할 수 있는 가능성이 종종 무제한이고 언제든지 얼마든 구매할 수 있는 것처럼 보인다.
측정 가능한 서비스(Measured service): 클라우드 시스템은 자원 사용을 자동으로 제어하고 최적화하는데, 서비스의 유형(예를 들어, 스토리지, 처리, 대역폭, 및 활성 사용자 계정)에 적절한 추상화 수준에서(at some level of abstraction) 계측 기능을 이용하여서 그렇게 한다. 자원 사용량은 모니터되고, 제어되며, 그리고 보고될 수 있는데, 이로써 이용하는 서비스의 제공자와 사용자 모두에게 투명성을 제공한다.
[00071] 서비스 모델들(Service Models)은 다음과 같다:
소프트웨어 서비스(Software as a Service)(SaaS): 소비자에게 제공되는 서비스는 클라우드 인프라스트럭처 상에서 실행되는 제공자의 애플리케이션들을 사용하게 해주는 것이다. 애플리케이션들은 웹 브라우저(예를 들어, 웹기반 이메일) 같은 씬(thin) 클라이언트 인터페이스를 통해 여러 클라이언트 디바이스들에서 액세스 가능하다. 소비자는 네트워크, 서버, 운영체제, 스토리지, 또는 개별 애플리케이션 성능을 포함하는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않는다. 단, 제한된 사용자-특화 애플리케이션 구성 세팅들은 예외로서 가능하다.
플랫폼 서비스(Platform as a Service)(PaaS): 소비자에게 제공되는 서비스는 제공자에 의해 지원되는 프로그래밍 언어들 및 도구들을 이용하여 생성된 소비자-생성 또는 획득 애플리케이션들을 클라우드 인프라스트럭처에 배치하게 해주는 것이다. 소비자는 네트워크, 서버, 운영체제, 또는 저장 매체를 포함하는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않는다. 그러나 배치된 애플리케이션들에 대해서 그리고 가능한 경우 애플리케이션 호스팅 환경 구성들에 대해서 제어할 수 있다.
인프라스트럭처 서비스(Infrastructure as a Service)(IaaS): 소비자에게 제공되는 서비스는 처리, 저장 매체, 네트워크, 및 기타 기본 컴퓨팅 자원들을 제공하여 주는 것이며, 여기서 소비자는 임의의 소프트웨어를 배치 및 실행할 수 있고, 이 소프트웨어에는 운영체제와 애플리케이션들이 포함될 수 있다. 소비자는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않지만, 운영체제, 저장 매체, 배치된 애플리케이션들, 및 가능한 경우 선택된 네트워킹 컴포넌트들의 제한적인 제어(예를 들어, 호스트 방화벽)에 대하여 제어할 수 있다.
[00072] 배치 모델들(Deployment Models)은 다음과 같다:
사설 클라우드(Private cloud): 클라우드 인프라스트럭처는 오직 한 조직(an organization)을 위해서 운영되고, 그 조직 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(on-premises)에 위치할 수 있다.
커뮤니티 클라우드(Community cloud): 클라우드 인프라스트럭처는 여러 조직들에 의해 공유되고 관심사(예를 들어, 선교, 보안 요건, 정책, 및 규정 준수 심사)를 공유하는 특정 커뮤니티를 지원하며, 여러 조직들 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(on-premises)에 위치할 수 있다.
공공 클라우드(Public cloud): 클라우드 인프라스트럭처는 일반 대중 또는 대규모 산업 집단에서 이용할 수 있으며 클라우드 서비스를 판매하는 조직이 소유한다.
하이브리드 클라우드(Hybrid cloud): 클라우드 인프라스트럭처는 둘 또는 그 이상의 클라우드들(사설, 커뮤니티, 또는 공공)이 혼합된 구성이며, 이들은 고유한 독립체들로 있지만 데이터 및 애플리케이션 이식가능성(portability)을 가능하게 해주는 표준화된 또는 소유권 있는 기술(예를 들어, 클라우드들 사이의 부하 균형을 위한 클라우드 버스팅(cloud bursting))에 의해 서로 결합되어 있다.
[00073] 클라우드 컴퓨팅 환경은 무국적(statelessness), 낮은 결합(low coupling), 모듈 방식(modularity), 및 의미적 상호운용성(semantic interoperability)에 집중하는 서비스를 지향한다. 클라우드 컴퓨팅의 중심에는 상호 연결된 노드들의 네트워크를 포함하는 인프라스트럭처가 있다.
[00074] 이제 도 1을 참조하면, 클라우드 컴퓨팅 노드의 예가 도시되어 있다. 클라우드 컴퓨팅 노드(100)는 적절한 클라우드 컴퓨팅 노드의 한 예일 뿐이며 여기에 기술된 본 발명의 실시 예들의 사용 또는 기능의 범위에 관하여 어떠한 한정을 제안하려는 의도가 있는 것은 아니다. 여하간, 클라우드 컴퓨팅 노드(100)은 전술한 모든 기능이 구현가능하고 그리고/또는 수행하는 것이 가능하다.
[00075] 클라우드 컴퓨팅 노드(100)에, 컴퓨터 시스템/서버(110)가 위치하고, 이것은 다른 수많은 범용 또는 특수용 컴퓨팅 시스템 환경들 또는 구성들과 동작 가능하다. 컴퓨터 시스템/서버(110)와 함께 사용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템들, 환경들, 및/또는 구성들의 예들에는 개인용 컴퓨터 시스템들, 서버 컴퓨터 시스템들, 태블릿 컴퓨터 시스템들, 씬 클라이언트들(thin clients), 씩 클라이언트들(thick clients), 포켓용 또는 휴대용 디바이스들(handheld or laptop devices), 다중 프로세서 시스템들(multiprocessor systems), 마이크로프로세서-기반 시스템들(microprocessor-based systems), 셋톱박스들(set top boxes), 프로그램가능 소비자 가전들(programmable consumer electronics), 네트워크 PC들, 미니컴퓨터 시스템들, 메인프레임 컴퓨터 시스템들, 그리고 상기 시스템들 또는 디바이스들 중 어느 하나를 포함하는 분산 클라우드 컴퓨팅 환경들 및 그와 유사한 것들이 포함되나 이에 한정되지는 않는다.
[00076] 컴퓨터 시스템/서버(110)는 컴퓨터 시스템에 의해 실행되는 프로그램 모듈들 같은 컴퓨터 시스템 실행 가능한 명령들의 일반적인 맥락에서 기술될 수 있다. 일반적으로, 프로그램 모듈들에는 특정한 태스크들을 수행하거나 특정한 추상적인 데이터 유형들을 구현하는 루틴들(routines), 프로그램들, 객체들(objects), 컴포넌트들, 로직, 데이터 구조들 등이 포함될 수 있다. 컴퓨터 시스템/서버(110)는 분산 클라우드 컴퓨팅 환경들에서 실시될 수 있으며, 여기서 태스크들은 통신 네트워크를 통해 연결되는 원격 처리 디바이스들에 의해 수행된다. 분산 클라우드 컴퓨팅 환경에서, 프로그램 모듈들은 메모리 저장 매체 디바이스들을 포함하여 로컬 및 원격 컴퓨터 시스템 저장 매체 모두에 위치할 수 있다.
[00077] 도 1에 도시된 바와 같이, 클라우드 컴퓨팅 노드(100) 내의 컴퓨터 시스템/서버(110)는 범용 컴퓨팅 디바이스의 형태로 도시된다. 컴퓨터 시스템/서버(110)의 컴포넌트들은 하나 또는 그 이상의 프로세서들 또는 처리 장치들(120), 시스템 메모리(130), 및 시스템 메모리(130)를 프로세서 장치(120)에 연결하는 것을 포함하여 다양한 시스템 컴포넌트들을 연결하는 버스(122)를 포함할 수 있으나 이에 한정되지는 않는다.
[00078] 버스(122)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스, 가속 그래픽 포트(accelerated graphics port), 및 다양한 버스 아키텍처들 중 하나를 사용하는 프로세서 또는 로컬 버스를 포함하여 하나 또는 그 이상의 다양한 유형의 버스 구조들 중 하나를 대표한다. 한정되지 않는 예로서, 그러한 아키텍처들에는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 확장 ISA(EISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 PCI(Peripheral Component Interconnect) 버스가 포함된다.
[00079] 컴퓨터 시스템/서버(110)는 통상적으로 다양한 컴퓨터 시스템 읽기 가능 매체를 포함한다. 그러한 매체는 컴퓨터 시스템/서버(110)에 의해 액세스될 수 있는 이용 가능한 모든 매체일 수 있고, 휘발성 및 비휘발성 매체, 탈착 및 비탈착 매체 모두를 포함한다. 탈착 매체의 한 예가 디지털 비디오 디스크(DVD)(192)를 포함하기 위해 도1에 도시되었다.
[00080] 시스템 메모리(130)는, 펌웨어(132)와 같은, 휘발성 또는 비-휘발성 메모리 형태의 컴퓨터 시스템 읽기 가능 매체를 포함할 수 있다. 펌웨어(132)는 컴퓨터 시스템/서버(110)의 하드웨어에 대해 인터페이스를 제공한다. 시스템 메모리(130)는 또한, 랜덤 액세스 메모리(RAM)(134) 및/또는 캐시 메모리(136) 같은, 휘발성 메모리 형태의 컴퓨터 시스템 읽기 가능 매체를 포함할 수 있다. 컴퓨터 시스템/서버(110)는 다른 탈착/비탈착, 휘발성/비휘발성 컴퓨터 시스템 저장 매체를 더 포함할 수 있다. 단지 예시로서 말하면, 저장 시스템(140)은 비탈착, 비휘발성 자기 매체(도시되지 않으며 통상적으로 "하드 드라이브"라 부름)에서/로 읽어오고 쓸 수 있다. 도시되진 않지만, 탈착 가능 비휘발성 자기 디스크(예를 들어, "플로피 디스크")로부터 읽어오고 그것에 쓰기 위한 자기 디스크 드라이브, 및 CD-ROM, DVD-ROM 또는 기타 광 매체 같은 탈착 가능 비휘발성 광 디스크로부터 읽어오고 그것에 쓰기 위한 광 디스크 드라이브가 제공될 수 있다. 이러한 경우에, 각각은 하나 또는 그 이상의 데이터 매체 인터페이스들에 의해 버스(122)에 연결될 수 있다. 아래에 묘사되고 기술되는 바와 같이, 메모리(130)는 아래에서 더 상세하게 기술되는 기능들을 실행하도록 구성된 일 세트(적어도 하나)의 프로그램 모듈들을 갖는 적어도 하나의 프로그램 제품을 포함할 수 있다.
[00081] 운영체제, 하나 또는 그 이상의 애플리케이션 프로그램들, 기타 프로그램 모듈들, 및 프로그램 데이터뿐 아니라, 일 세트(적어도 하나)의 프로그램 모듈들(152)을 갖는, 프로그램/유틸리티(150)는, 예로서 메모리(130)에 저장될 수 있고, 이에 한정되지 않는다. 상기 운영체제, 하나 또는 그 이상의 애플리케이션 프로그램들, 기타 프로그램 모듈들, 및 프로그램 데이터 또는 이들의 몇몇 조합의 각각은 네트워킹 환경의 구현을 포함할 수 있다. 프로그램 모듈들(152)은 일반적으로 여기에 기술된 바와 같은 본 발명의 실시 예들의 기능들 및/또는 방법들을 실행한다.
[00082] 컴퓨터 시스템/서버(110)는 또한, 키보드, 포인팅 디바이스, 디스플레이(180), 디스크 드라이브, 등과 같은, 하나 또는 그 이상의 외부 디바이스들(190); 사용자가 컴퓨터 시스템/서버(110)와 상호작용할 수 있게 해주는 하나 또는 그 이상의 디바이스들; 및/또는 컴퓨터 시스템/서버(110)가 하나 또는 그 이상의 다른 컴퓨팅 디바이스들과 통신할 수 있게 해주는 기타 디바이스들(예를 들어, 네트워크 카드, 모뎀 등)과도 통신할 수 있다. 그러한 통신은 입력/출력(I/O) 인터페이스들(170)을 통해 일어날 수 있다. 또한, 컴퓨터 시스템/서버(110)는 근거리 통신망(LAN), 일반 광역 통신망(WAN), 및/또는 공공 네트워크(예를 들어, 인터넷) 등의 하나 또는 그 이상의 네트워크들과 네트워크 어댑터(160)를 통해 통신할 수 있다. 도시된 바와 같이, 네트워크 어댑터(160)는 컴퓨터 시스템/서버(110)의 다른 컴포넌트들과 버스(122)를 통해 통신한다. 도시되지는 않았지만, 다른 하드웨어 및/또는 소프트웨어 컴포넌트들도 컴퓨터 시스템/서버(110)와 함께 사용될 수 있다는 것을 이해해야 한다. 예들은 다음과 같으며, 이에 한정되지 않는다: 마이크로코드, 디바이스 드라이버들, 중복 처리 장치들(redundant processing units), 외부 디스크 드라이브 어레이들, RAID 시스템들, 테이프 드라이브들, 및 데이터 아카이브 저장 시스템들 등.
[00083] 이제 도 2를 참조하면, 예시적인 클라우드 컴퓨팅 환경(200)이 도시된다. 도시된 바와 같이, 클라우드 컴퓨팅 환경(200)은 하나 또는 그 이상의 클라우드 컴퓨팅 노드들(100)을 포함하며, 이들은 예를 들어 개인 휴대 정보 단말기(PDA) 또는 휴대폰(210A), 데스크탑 컴퓨터(210B), 휴대용 컴퓨터(210C), 및/또는 자동차용 컴퓨터 시스템(210N)과 통신할 수 있다. 노드들(100)은 서로 통신할 수 있다. 이들은 여기에 기술된 바와 같은 사설, 커뮤니티, 공공, 또는 하이브리드 클라우드들 또는 이들의 조합 등의 하나 또는 그 이상의 네트워크들에서 물리적으로 또는 가상으로 그룹화될 수 있다(도시되지 않음). 이것은 클라우드 소비자가 로컬 컴퓨팅 디바이스 상에 자원들을 유지할 필요가 없도록 클라우드 컴퓨팅 환경(200)이 인프라스트럭처, 플랫폼들 및/또는 소프트웨어를 서비스로서 제공할 수 있게 해준다. 도 2에 도시된 컴퓨팅 디바이스들(210A-N)의 유형들은 단지 예시의 목적으로 기술한 것이며 컴퓨팅 노드들(100)과 클라우드 컴퓨팅 환경(200)은 모든 유형의 네트워크 및/또는 네트워크 주소지정가능 연결을 통해서 (예를 들어, 웹 브라우저를 사용하여) 모든 유형의 컴퓨터화된 디바이스와 통신할 수 있다는 것을 이해해야 한다.
[00084] 이제 도 3을 참조하면, 도 2의 클라우드 컴퓨팅 환경(200)에 의해 제공되는 일 세트의 기능별 추상화 계층들이 도시된다. 도 3에 도시된 컴포넌트들, 계층들, 및 기능들은 단지 예시의 목적이며 본 출원과 청구항들은 이것에 한정되지 않는다는 것을 미리 이해해야 한다. 도시된 바와 같이, 다음의 계층들과 그에 대응하는 기능들이 제공된다.
[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는 전세계 여러 국가들에 등록된 인터내셔널 비지니스 머신즈 코포레이션의 상표들이다.)
[00086] 가상화 계층(320)은 추상화 계층을 제공하며 이로부터 다음의 가상 실체들의 예들이 제공될 수 있다: 가상 서버들; 가상 저장 매체; 가상 사설 네트워크를 포함하는, 가상 네트워크들; 가상 애플리케이션들 및 운영체제들; 및 가상 클라이언트들.
[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).
[00088] 워크로드 계층(340)은 클라우드 컴퓨팅 환경이 이용될 수 있는 기능들의 예들을 제공한다. 이 계층에서 제공될 수 있는 워크로드들과 기능들의 예들은 다음과 같다: 맵핑 및 네비게이션; 소프트웨어 개발 및 라이프사이클 관리; 가상 교실 교육 전달; 데이터 분석 처리; 및 트랜잭션 처리; 및 모바일 데스크탑.
[00089] 본 발명은 시스템, 방법, 및/또는 컴퓨터 프로그램 제품일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 읽기 가능 저장 매체를 포함할 수 있으며 이 매체 상에 프로세서가 본 발명의 특징들을 수행하도록 하기 위한 컴퓨터 읽기 가능 프로그램 명령들을 갖는다.
[00090] 상기 컴퓨터 읽기 가능 저장 매체는 명령 실행 디바이스에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 디바이스일 수 있다. 상기 컴퓨터 읽기 가능 저장 매체는, 예를 들면, 전자 저장 디바이스, 자기 저장 디바이스, 광 저장 디바이스, 전자기 저장 디바이스, 반도체 저장 디바이스, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 읽기 가능 저장 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함될 수 있다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 읽기-전용 메모리(ROM), 소거 및 프로그램가능 읽기-전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 읽기-전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 기록된 홈에 있는 융기된 구조들 같이 기계적으로 인코딩된 디바이스, 및 전술한 것들의 모든 적절한 조합. 여기에서 사용될 때, 컴퓨터 읽기 가능 저장 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파관이나 기타 전송 매체(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들)를 통해 전파되는 전자기파들, 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.
[00091] 여기에 기술되는 컴퓨터 읽기 가능 명령들은 컴퓨터 읽기 가능 저장 매체로부터 각각 컴퓨팅/처리 디바이스들로 다운로드되거나 또는, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 또는 외부 컴퓨터 또는 외부 저장 디바이스로 다운로드될 수 있다. 상기 통신망(네트워크)은 구리 전송 케이블, 광학 전송 섬유, 무선 전송, 라우터, 방화벽, 스위치, 게이트웨이 컴퓨터 및/또는 엣지 서버를 포함할 수 있다. 각 컴퓨팅/처리 디바이스 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망(네트워크)으로부터 컴퓨터 읽기 가능 프로그램 명령들을 수신하고 그 컴퓨터 읽기 가능 프로그램 명령들을 각각의 컴퓨팅/처리 디바이스 내의 컴퓨터 읽기 가능 저장 매체에 저장하기 위해 전송한다.
[00092] 본 발명의 연산들을 실행하기 위한 컴퓨터 읽기 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사 언어 등의 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 그와 유사한 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 또는 그 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 또는 소스 코드나 목적 코드일 수 있다. 상기 컴퓨터 읽기 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 모든 유형의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 실시 예들에서, 예를 들어 프로그램 가능 로직 회로, 필드-프로그램 가능 게이트 어레이들(FPGA), 또는 프로그램 가능 로직 어레이들(PLA)을 포함한 전자 회로는 본 발명의 실시 예들을 수행하기 위해, 전자 회로를 맞춤화하도록 상기 컴퓨터 읽기 가능 프로그램 명령들의 상태 정보를 활용하여 상기 컴퓨터 읽기 가능 프로그램 명령들을 실행할 수 있다.
[00093] 여기에서는 본 발명의 실시 예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 순서 예시도들 및/또는 블록도들을 참조하여 본 발명의 특징들을 기술한다. 순서 예시도들 및/또는 블록도들의 각각의 블록과 순서 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 읽기 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.
[00094] 이 컴퓨터 읽기 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 장치의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치의 프로세서를 통해서 실행되어, 상기 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이 컴퓨터 읽기 가능 프로그램 명령들은 또한 컴퓨터 읽기 가능 스토리지 매체에 저장될 수 있으며, 컴퓨터, 프로그램가능 데이터 처리 장치 및/또는 기타 디바이스들에 지시하여 명령들이 저장된 상기 컴퓨터 읽기 가능 스토리지 매체가 상기 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 특징들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.
[00095] 상기 컴퓨터 읽기 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 장치, 또는 다른 디바이스에 로드되어, 상기 컴퓨터, 기타 프로그램가능 장치 또는 다른 디바이스에서 일련의 연산 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램가능 장치, 또는 다른 장치 상에서 실행되는 명령들이 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.
[00096] 도면들 내 순서도 및 블록도들은 본 발명의 여러 실시 예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능(functionality), 및 연산(operation)을 예시한다. 이와 관련하여, 상기 순서도 또는 블록도들 내 각 블록은 상기 명시된 논리적 기능(들)을 구현하기 위한 하나 또는 그 이상의 실행 가능한 명령들을 포함한 모듈, 세그먼트 또는 명령들의 일부분을 나타낼 수 있다. 일부 다른 구현들에서, 상기 블록에 언급되는 기능들은 도면들에 언급된 순서와 다르게 일어날 수도 있다. 예를 들면, 연속으로 도시된 두 개의 블록들은 실제로는 사실상 동시에 실행될 수도 있고, 또는 이 두 블록들은 때때로 관련된 기능에 따라서는 역순으로 실행될 수도 있다. 블록도들 및/또는 순서 예시도의 각 블록, 및 블록도들 및/또는 순서 예시도 내 블록들의 조합들은 특수목적용 하드웨어 및 컴퓨터 명령들의 명시된 기능들 또는 동작들, 또는 이들의 조합들을 수행하는 특수목적용 하드웨어-기반 시스템들에 의해 구현될 수 있다는 것에 또한 유의한다.
[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)이 사용될 수 있다는 점이다.
[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들을 재조정할 수 있게 해준다.
[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 상의 자원들을 위한 최소 요건들을 명시한다.
[000100] 도 6을 참조하면, 방법(600)은 잠재적 호스트 컴퓨터 시스템들 상에서 이용 가능한 자원들을 모니터하기 위해 도 4의 호스트 모니터 메커니즘(440)에 의해서 수행되는 것이 바람직하다. 잠재적 호스트 컴퓨터 시스템들 상에서 이용 가능한 자원들이 결정되고(단계 610) 그리고 로그된다(단계 620). 방법(600)을 구현하는 한 알려진 방식은 드라이버(a driver)를 사용하는 것이며, 이는 호스트에게 자신의 이용 가능한 자원들을 결정하도록 질의를 보낸다.
[000101] 도 7을 참조하면, 방법(700)은 클라우드 VM 요청을 수신함에 의해서 시작한다(단계 710). 그 다음, 클라우드 VM 요청 내의 자원 요건들이 잠재적 호스트 컴퓨터 시스템들 상에서 이용 가능한 자원들과 비교된다(단계 720). 단계(720)에서 이용 가능한 자원들은 도 6의 단계(620)에서 생성된 로그(the log)로부터 읽혀질 수 있음에 유의한다. 그 다음, 클라우드 VM 요청 내의 자원 요건들을 만족시키는 자원들을 갖는 호스트가 선정된다(단계 730). 그 다음, VM은 선정된 호스트 컴퓨터 시스템 상에 배치된다(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들을 비효율적이 되게 하는데, 이는 일부 워크로드들이 다른 코어들 상의 스레드들을 이용함으로부터 유익을 얻더라도 다른 워크로드들은 동일 코어를 위한 스레드들에 의해서 더 나은 서비스를 받을 수 있기 때문이다.
[000103] 도 9의 단계(920)은 VM 요청을 만족시키는 호스트 컴퓨터 시스템을 선정하기 위한 모든 적절한 기준 또는 휴리스틱(any suitable criteria or heuristic)을 포함할 수 있다. 예를 들어, 물리적 코어들의 수를, 2.0과 같은, 무리한 비율(overcommit ratio)로 증가 시킬 수도 있다. 따라서, 만일 호스트가 3개의 이용 가능한 코어들을 갖는다면, 3개의 물리적 코어들에 대해 2.0의 무리한 비율을 곱하면 6개의 이용 가능한 프로세서들이 만들어지는데, 이는 6개의 vCPU들을 요구하는 VM은 호스트 상에 배치될 수 있지만 7개의 vCPU들을 요구하는 VM은 배치될 수 없다는 것을 의미한다. 간단한 예가 예시될 것이다.
[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를 위한 유효한 잠재적 호스트이다.
[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) 파악할 수 없기 때문이다.
[000106] 종래 기술은 물리적 프로세서 코어 또는 하드웨어 스레드 중 어느 하나를 인식할 수는 있지만 모두를 가상 CPU가 배치될 수 있는 실체로서 인식하지는 못한다. 하이퍼스레딩이 없는, 도 8에서 도시한 단일의 듀얼 코어 CPU는 2개의 이용 가능한 CPU들을 갖는데, vCPU들이 배치될 수 있는 2개의 물리적 코어들(820 및 840)의 형태로 갖는다. 하이퍼스레딩이 있는, 단일의 듀얼 코어 CPU는 더 많은 vCPU들을 지원할 수 있다; 그러나, vCPU들이 동일 물리적 코어 상의 하드웨어 스레드들에 의해서 실행되는지 또는 다른 코어들 상의 하드웨어 스레드들에 의해서 실행되는지는 결정되지는 않는다. 본 출원과 청구항들은 여기서 vCPU들이, 단일 물리적 코어 또는 단일 하드웨어 스레드에 단지 할당되는 것이 아니라, 다수의 하드웨어 스레드들에 할당될 필요가 있음을 인정하여, 이에 관해서 상세하게 작성하였다.
[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들과 동일한 물리적 코어 상에 위치함으로써 더 나은 처리 결과를 얻을 수 있을 것이다.
[000108] 도 14를 참조하여 위에서 설명한 바와 같은 물리적 코어들에 걸쳐 분산된 많은 사용되지 않는 스레드들 또는 vCPU들의 문제를 피하기 위해서, 잠재적 호스트들을 식별하고 VM들을 배치하기 위한 새로운 방법은 클라우드 VM 요청 내의 하드웨어 멀티스레딩 파라미터를 사용하여 하드웨어 스레드들을 고려하는데, vCPU는 단지 하나의 물리적 코어 또는 단일 하드웨어 스레드 대신에 하나의 물리적 코어 내의 다수의 하드웨어 스레드들에 대해서 할당될 수 있다는 원리에 기초하여서 고려한다. 이것은 하드웨어 멀티스레딩과 관련된 클라우드 VM 요청 내의 새로운 파라미터를 사용하여 행해진다. 여기서 설명하는 구체적인 예들에서, 이 하드웨어 멀티스레딩 파라미터는 "SMT" 파라미터라 하는데, 이는 대칭 멀티스레딩(Symmetric Multithreading)을 뜻하며, 이는 CPU들 상의 하드웨어 멀티스레딩을 기술하기 위해 종래 기술에서도 알려진 용어이다. 도 15를 참조하면, 방법(1500)은, 한 실시 예에서, 호스트 컴퓨터를 선정하기 위해서, 코어당 하드웨어 스레드들의 수 및 스플릿 코어 세팅들에 관한 호스트들 상의 정보와 함께, 클라우드 VM 요청 내의 SMT 파라미터를 사용함에 의해서 시작된다(단계 1510). 일단 호스트 컴퓨터 시스템이 선정되면, 클라우드 VM 요청 내의 동일 SMT 파라미터는 선정된 호스트 상에 VM을 배치할 때 vCPU들을 위한 배치 결정들을 내리기 위해 사용될 수 있다(단계 1520). 한 실시 예에서, 코어당 하드웨어 스레드들의 수 및 스플릿 코어 세팅들에 관한 호스트 상의 정보도 또한 선정된 호스트 상에 VM을 배치할 때 vCPU들을 위한 배치 결정들을 내리는데 사용될 수 있다(1520).
[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개의 스레드들이 사용되지 않는 결과를 초래한다.
[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들이 동일 코어 상에서 실행되는지가 제어될 수 있다.
[000111] 도 16-19의 예들은 하드웨어 멀티스레딩 파라미터가 vCPU들을 어떻게 배치할지에 관하여 더 많은 제어를 어떻게 제공할 수 있는지를 보여준다. 예를 들어, 만일 2 vCPU들을 갖는 VM이 동일 데이터 상에서 연산하는 작업들을 실행한다면, 상기 2 vCPU들은, 도 17 및 18의 예에서 도시한 바와 같이, 동일 코어 내의 2개의 다른 하드웨어 스레드들에 대해서 배치되는 것이 바람직할 수 있는데, 왜냐하면 동일 코어 상에서 실행하는 2개의 스레드들은 그 코어에 이용 가능한 캐시 메모리에 대한 매우 높은 성능의 액세스를 가질 것이기 때문이다. 만일 2 vCPU들을 갖는 VM이 서로 독립적인 작업들을 실행한다면, 상기 2 vCPU들은, 도 19 및 20의 예에서 도시한 바와 같이, 2개의 다른 코어들에 대해서 배치되는 것이 바람직할 수 있다.
[000112] 도 21의 제3 CPU 요건(1610C)은 도 16에 도시한 CPU 요건(1610)에 대한 다른 적절한 예이고 8 vCPU들(2120) 및 8의 값을 갖는 SMT 파라미터(2130)을 포함한다. 도 14에 도시한 바와 같은 Power8 6코어 CPU(1410)을 갖는 잠재적 호스트를 위해, 잠재적 호스트는 모두 8개의 스레드들이 사용되는 하나의 코어를 갖게 될 것이며, 그 결과 도 22에서 도시한 바와 같이, 사용되지 않는 스레드는 하나도 없게 될 것이다.
[000113] 도 23의 제4 CPU 요건(1610D)은 도 16에 도시한 CPU 요건(1610)에 대한 또 다른 적절한 예이고 12 vCPU들(2320) 및 4의 값을 갖는 SMT 파라미터(2330)을 포함한다. 도 14에 도시한 바와 같은 Power8 6코어 CPU(1410)을 갖는 잠재적 호스트를 위해, 잠재적 호스트는 각각의 코어에서 4개의 스레드들이 사용되는 3개의 코어를 갖게 될 것이며, 그 결과 도 24에서 도시한 바와 같이, 12개의 사용되지 않는 스레드들을 초래하게 될 것이다. 이들 단순한 예들은 호스트 컴퓨터 시스템을 선정함에 있어서 하드웨어 멀티스레딩 파라미터를 명시하는 것이 vCPU들을 호스트 컴퓨터 시스템에 어떻게 배치할지에 관하여 제어를 어떻게 제공할 수 있는지를 보여준다.
[000114] 도 17-24에 도시한 예들은 vCPU가 각각의 이용 가능한 스레드에 대해서 배치될 수 있다고 가정함에 유의한다. 도 9-12에 관한 위의 논의는 CPU들의 수를 일정량만큼 증가시키기 위한 "무리한 비율(overcommit ratio)"에 관한 것이었으며, 유사한 무리한 비율이 본 출원 및 청구항들에 따른 호스트 컴퓨터 시스템 선정에서도 적용될 수 있다.
[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)은 종료된다.
[000116] 일단 호스트 컴퓨터 시스템이 선정되면, VM을 위한 vCPU들은 선정된 호스트 상에 배치될 수 있다. 도 26을 참조하면, 방법(2600)인 vCPU들이 선정된 호스트에 배치될 필요가 있을 때 시작된다(2610). SMT 파라미터가 off일 때(단계 2620=YES), 각각의 vCPU는 다른 물리적 코어 상에 배치된다(단계 2630). SMT 파라미터가 on일 때(단계 2620=NO), vCPU들은 동일 물리적 코어 상의 다른 하드웨어 스레드들 상에 배치될 수 있다(단계 2640). 그 다음, 방법(2600)은 종료된다.
[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에 대해 다른 값을 가질 수도 있다.
[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 자원들의 이용을 개선할 수 있다.
[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 파라미터를 사용하는 것을 가능하게 한다.
[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개의 하드웨어 스레드들을 갖는다. 각각의 코어를 서브코어들로 나눔으로써, 서브코어들은 코어들 대신에 가상 머신들에 할당될 수 있고, 이것은 상당한 수의 사용되지 않은 하드웨어 스레드들을 절약하는 결과를 가져오게 한다.
[000121] 스플릿 코어 호스트들이 제공될 때(present), 클라우드 매니저는 VM을 위한 호스트가 스플릿 코어들을 지원하는지 아닌지를 결정할 수 있기 때문에 유리하다. 도 31을 참조하면, CPU 요건(3110)은 도 5에서 도시한 클라우드 VM 요청(510)의 일부인 것이 바람직하다. CPU 요건(3110)은 vCPU들(3120)의 수와 하드웨어 멀티스레딩 파라미터(3130)을 명시한다. 아래의 예들은 스플릿 코어들이 호스트의 선정과 그 호스트 상에 vCPU들을 배치하는 것에 어떻게 영향을 주는지를 예시한다.
[000122] 도 32를 참조하면, CPU 요건(3110A)는 도 31에서 도시한 CPU 요건(3110)에 대한 하나의 적절한 예이고, 2 vCPU들(3220) 및 2의 값을 갖는 SMT 파라미터(3230)을 포함한다. 도 30에서 도시한 바와 같이 스플릿 코어가 인에이블된 Power8 6 코어 CPU(3010)을 갖는 잠재적 호스트에서, 이 잠재적 호스트는 2개의 스레드들이 사용되는 하나의 서브코어를 가질 수 있고, 그 결과 도 33에서 도시한 바와 같이, 3개의 서브코어들은 다른 VM들에 의해서 사용될 수 있다.
[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들에 의해서 사용될 수 있다.
[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개 또는 그 이상의 물리적 코어들 상에 배치될 수도 있다.
[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개 또는 그 이상의 물리적 코어들 상에 배치될 수도 있다.
[000126] 도 32, 34, 36 및 38의 CPU 요건들의 예들의 모두는 호스트가 인에이블된(enabled) 스플릿 코어들을 가질 때의 경우를 위한 것이다. 호스트가 디스에이블된(disabled) 스플릿 코어들을 가질 때, 결과는, 호스트들이 스플릿 코어가 디스에이블되는 세팅을 갖는다는 것을 제외하고는, 위에서 상세하게 논의한 도 17-24에서 도시한 예들과 유사하다.
[000127] 도 32, 36 및 38의 예들은 모두 2의 값을 갖는 SMT 파라미터를 갖는다. Power8 서브코어는 2개의 스레드들을 포함하기 때문에, SMT 파라미터에 2개의 스레드들을 명시하는 것은 Power8 CPU 상에 vCPU들을 가장 효율적으로 배치할 수 있게 해준다. 그러나, SMT 파라미터는 서브코어 상의 스레드들의 수보다 더 클 수도 있음에 유의한다. 예를 들어, 만일 도 36의 SMT 파라미터(3630)이 4의 값에 세트되었다면, 스레드가 2개인 서브코어들을 갖는 호스트들은 요청을 만족시키지 못할 것이다. 그러므로, 스플릿 코어들을 갖지 않는 호스트들은 SMT 세팅이 서브코어를 위한 스레드들의 수를 초과 할 때 잠재적 호스트들이 아니다.
[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들의 더 효율적인 배치를 가져올 호스트 컴퓨터 시스템의 선정에서 어떻게 더 나은 제어를 제공하는지를 예시한다.
[000129] 도 41을 참조하면, 필터 PowerKVMSMTFilter가 사용되어 클라우드 매니저는 SMT=4 또는 SMT=8인 VM이 요청될 때 인에이블된 스플릿 코어 모드를 갖는 호스트들을 거를 수 있다(filter out). 이 필터는 클라우드 매니저가 더 신속하게 VM을 위한 잠재적 호스트들의 수를 줄이는 것(narrow down)을 도울 수 있다.
[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들을 배치하는 데에 있어서 어떻게 더 나은 제어를 제공하는지를 예시한다.
[000131] 클라우드 VM 요청 내의 스플릿 코어 및 하드웨어 멀티스레딩 파라미터를 고려하여 VM들을 배치시킬 수 있도록 하기 위해, 클라우드 매니저는 잠재적 호스트에서 CPU들 내의 물리적 코어들의 수를 알아야 할 뿐만 아니라, 잠재적 호스트 내의 CPU들에 의해서 지원되는 스레드들의 수와 잠재적 호스트 상에서 스플릿 코어가 인에이블되었는지 아닌지도 또한 알아야 한다. 도 6을 다시 참조하면, 이것은 단계(610)에서 이용 가능한 자원들을 결정하는 것이 이용 가능한 CPU 코어들을 결정하는 것뿐만 아니라, 이들 CPU 코어들 상의 다수 스레드들도 또한 이용 가능한지, 그리고 스플릿 코어가 이들 코어들 상에서 인에이블되었는지를 결정하는 것도 포함한다는 것을 의미한다. 이를 달성하는 한가지 방법은 도 6의 단계(610)에서 이용 가능한 자원들의 일부로서 스플릿 코어가 잠재적 호스트 컴퓨터 시스템 상에서 인에이블되었는지에 관한 정보를 수집하는 것이다.
[000132] 클라우드 매니저는, 호스트 컴퓨터 시스템들 상의 CPU들에 의해서 지원되는 다수의 하드웨어 스레드들을 포함하여, 호스트 컴퓨터 시스템들 상에서 이용 가능한 자원들과 한 실시 예에서 상기 CPU들이 인에이블된 스플릿 코어를 갖고 있는지 아닌지를 모니터한다. 클라우드 매니저는 하드웨어 멀티스레딩이 호스트 컴퓨터 시스템 상에서 허용되는지를 (한 실시 예에서, 호스트 컴퓨터 시스템 상에 요구되는 하드웨어 멀티스레딩의 양을) 명시하는 하드웨어 멀티스레딩 파라미터를 포함하는 가상 머신(VM)을 제공하기 위해 요청을 수신한다. 그 다음, 한 실시 예에서, 클라우드 매니저는 하드웨어 멀티스레딩 파라미터를 고려하여 VM을 위한 호스트 컴퓨터 시스템을 선정한다. 다른 실시 예에서, 클라우드 매니저는 하드웨어 멀티스레딩 파라미터, CPU에 의해서 지원되는 하드웨어 스레드들, 및 스플릿 코어 세팅들을 고려하여 VM을 위한 호스트 컴퓨터 시스템을 선정한다. 그 다음, 상기 VM은 하드웨어 멀티스레딩 파라미터를 사용하여 선정된 호스트 컴퓨터 시스템 상에 배치된다. 그 결과 가상 머신을 위한 호스트에서 CPU 자원들의 이용이 더 효율적이 된다.
[000133] 당업자는 많은 변경들이 청구항들의 범위 내에서 가능함을 이해할 것이다. 따라서, 본 출원이 위에서 특정하게 도시되고 기술되었지만, 당업자는 형식과 상세 내용들에서 이들과 다른 변경들이 청구항들의 정신과 범위를 벗어남이 없이 가능할 수 있음을 이해할 것이다.

Claims (28)

  1. 호스트 컴퓨터 시스템을 모니터하고 호스트 컴퓨터 시스템을 선정하기 위한 장치에 있어서, 상기 장치는:
    적어도 하나의 프로세서;
    상기 적어도 하나의 프로세서에 결합된 메모리;
    상기 메모리 내에 상주하고 상기 적어도 하나의 프로세서에 의해서 실행되는 클라우드 매니저(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들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나를 선정하는
    장치.
  2. 제1항에 있어서, 상기 클라우드 매니저는:
    상기 선정된 호스트 컴퓨터 시스템 상에 복수의 가상 CPU들(vCPU들)을 배치하기 위해 상기 하드웨어 멀티스레딩 파라미터 및 상기 선정된 호스트 컴퓨터 상의 스플릿 코어 세팅들을 사용하는 가상 CPU(vCPU) 배치 메커니즘(a virtual CPU (vCPU) placement mechanism)을 더 포함하는
    장치.
  3. 삭제
  4. 삭제
  5. 제1항에 있어서, 상기 클라우드 매니저는:
    상기 선정된 호스트 컴퓨터 시스템 상에 복수의 가상 CPU들(vCPU들)을 배치하기 위해 상기 하드웨어 멀티스레딩 파라미터 및 상기 선정된 호스트 컴퓨터 상의 스플릿 코어 세팅들을 사용하는 가상 CPU(vCPU) 배치 메커니즘(a virtual CPU (vCPU) placement mechanism)을 더 포함하고,
    상기 하드웨어 멀티스레딩 파라미터의 제1 값은 하드웨어 멀티스레딩이 턴 오프(turn off)이며, 상기 선정된 호스트 컴퓨터 시스템 상에서 요구되지 않음을 표시하는
    장치.
  6. 제5항에 있어서, 상기 하드웨어 멀티스레딩 파라미터의 제1 값이 하드웨어 멀티스레딩이 턴 오프(turn off)임을 표시할 때, 상기 vCPU 배치 메커니즘은 상기 선정된 호스트 컴퓨터 시스템의 다른 물리적 코어 상에(on a different physical core) 상기 VM요청 내의 각 vCPU를 배치하는
    장치.
  7. 제1항에 있어서, 상기 클라우드 매니저는:
    상기 선정된 호스트 컴퓨터 시스템 상에 복수의 가상 CPU들(vCPU들)을 배치하기 위해 상기 하드웨어 멀티스레딩 파라미터 및 상기 선정된 호스트 컴퓨터 상의 스플릿 코어 세팅들을 사용하는 가상 CPU(vCPU) 배치 메커니즘(a virtual CPU (vCPU) placement mechanism)을 더 포함하고,
    상기 하드웨어 멀티스레딩 파라미터의 제2 값은 상기 선정된 호스트 컴퓨터 시스템 상의 다수의 하드웨어 스레드들에 대한 수치(a numerical value)로서 상기 선정된 호스트 컴퓨터 시스템 상에서 하드웨어 멀티스레딩이 요구됨을 표시하는
    장치.
  8. 제7항에 있어서, 상기 하드웨어 멀티스레딩 파라미터의 제2 값이 다수의 하드웨어 스레드들에 대한 수치(a numerical value)를 표시할 때, 상기 vCPU 배치 메커니즘은 상기 선정된 호스트 컴퓨터 시스템의 다른 하드웨어 스레드 상에 상기 VM요청 내의 각 vCPU를 배치하는
    장치.
  9. 제1항에 있어서, 상기 하드웨어 멀티스레딩 파라미터의 제3 값은 상기 선정된 호스트 컴퓨터 시스템 상에서 하드웨어 스레딩이 턴 온(turn on) 또는 턴 오프(turn off) 되었는지에 상관없이 상기 선정된 호스트 컴퓨터 시스템이 선정되었음을 표시하는
    장치.
  10. 제1항에 있어서, 상기 VM 요청은 메모리 요건과 디스크 요건을 더 포함하는
    장치.
  11. 제1항에 있어서, 상기 호스트 모니터 메커니즘은 상기 복수의 호스트 컴퓨터 시스템들 각각 상의 메모리의 양과 디스크 공간의 양을 더 결정하는
    장치.
  12. 제1항에 있어서, 상기 VM 요청 내의 가상 CPU들의 수가 상기 하드웨어 멀티스레딩 파라미터의 값보다 더 클 때, 상기 호스트 선정 메커니즘은 각각의 CPU가 복수의 하드웨어 스레드들을 갖는 복수의 CPU들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나를 선정하는
    장치.
  13. 제1항에 있어서, 상기 클라우드 매니저는 상기 하드웨어 멀티스레딩 파라미터를 사용하는 적어도 하나의 VM을 재조정하는 VM 재조정(resize) 메커니즘을 더 포함하는
    장치.
  14. 호스트 컴퓨터 시스템 상에 복수의 가상CPU들(vCPUs)을 배치하기 위해 적어도 하나의 프로세서에 의해 실행되는 컴퓨터-구현 방법에 있어서, 상기 방법은:
    가상 머신들이 배치될 수 있는 복수의 호스트 컴퓨터 시스템들 상에서 이용 가능한 CPU들의 수를 결정하는 단계(determining);
    상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU에 의해서 지원되는 하드웨어 스레드들의 수를 결정하는 단계(determining);
    vCPU들의 수 및 하드웨어 멀티스레딩 파라미터 ― 상기 하드웨어 멀티스레딩 파라미터는 하드웨어 멀티스레딩이 요구되는지를 명시하고, 하드웨어 멀티스레딩이 요구될 때, 코어당 하드웨어 스레드들의 최소수(a minimum number)를 명시함 ― 를 포함하는 가상 머신(VM) 요청을 수신하는 단계(receiving);
    상기 하드웨어 멀티스레딩 파라미터를 만족시키고 그리고 상기 VM 요청 내의 vCPU들의 수를 만족시키는 하드웨어 스레드들의 수를 갖는 다수의 CPU들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나를 선정하는 단계(selecting); 및
    하드웨어 멀티스레딩 파라미터를 사용하여 상기 선정된 호스트 컴퓨터 시스템 상에 상기 복수의 vCPU들을 배치하는 단계(placing)를 포함하는
    컴퓨터-구현 방법.
  15. 삭제
  16. 제14항에 있어서, 상기 컴퓨터-구현 방법은:
    상기 복수의 호스트 컴퓨터 시스템들 상의 각 CPU가 스플릿 코어를 인에이블되게 하였는지, 그리고 인에이블되게 하였다면, 코어당 다수의 서브코어들을 인에이블되게 하였는지를 결정하는 단계를 더 포함하고,
    그리고 상기 선정하는 단계는 상기 VM 요청을 만족시키는 다수의 하드웨어 스레드들을 갖는 다수의 CPU들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나에 더하여, 상기 다수의 vCPU들과 상기 VM 요청 내의 상기 하드웨어 멀티스레딩 파라미터를 만족시키는 스플릿 코어 세팅들을 선정하는
    컴퓨터-구현 방법.
  17. 제16항에 있어서, 상기 컴퓨터-구현 방법은 상기 선정된 호스트 컴퓨터 시스템 상에 복수의 vCPU들을 배치하기 위해 상기 선정된 호스트 컴퓨터 시스템 상에서 상기 하드웨어 멀티스레딩 파라미터 및 상기 스플릿 코어 세팅들을 사용하는 단계를 더 포함하는
    컴퓨터-구현 방법.
  18. 제14항에 있어서, 상기 하드웨어 멀티스레딩 파라미터의 제1 값은 하드웨어 멀티스레딩이 턴 오프(turn off) 이고, 따라서 상기 선정된 호스트 컴퓨터 시스템 상에서 요구되지 않음을 표시하는
    컴퓨터-구현 방법.
  19. 제18항에 있어서, 상기 하드웨어 멀티스레딩 파라미터의 제1 값이 하드웨어 멀티스레딩이 턴오프(turn off)임을 표시할 때, 상기 컴퓨터-구현 방법은 상기 선정된 호스트 컴퓨터 시스템 내 다른 물리적 코어 상에 상기 VM 요청 내의 각 vCPU를 배치하는 단계를 더 포함하는
    컴퓨터-구현 방법.
  20. 제14항에 있어서, 상기 하드웨어 멀티스레딩 파라미터의 제2 값은 하드웨어 멀티스레딩이 상기 선정된 호스트 컴퓨터 시스템 상에서 요구됨을 상기 선정된 호스트 컴퓨터 시스템 상에서 코어당 최소수의 하드웨어 스레드들에 대한 수치(a numerical value)로 표시하는
    컴퓨터-구현 방법.
  21. 제20항에 있어서, 상기 하드웨어 멀티스레딩 파라미터의 제2 값이 다수의 하드웨어 스레드들에 대한 수치(a numerical value)를 표시할 때, 상기 컴퓨터-구현 방법은 상기 선정된 호스트 컴퓨터 시스템 내 다른 하드웨어 스레드 상에 상기 VM 요청 내의 각 vCPU를 배치하는 단계를 더 포함하는
    컴퓨터-구현 방법.
  22. 제14항에 있어서, 상기 하드웨어 멀티스레딩 파라미터의 제3 값은 상기 선정된 호스트 컴퓨터 시스템 상에서 하드웨어 스레딩이 턴 온(turn on) 또는 턴 오프(turn off) 되었는지에 상관없이 상기 선정된 호스트 컴퓨터 시스템이 선정되었음을 표시하는
    컴퓨터-구현 방법.
  23. 제14항에 있어서, 상기 VM 요청은 메모리 요건과 디스크 요건을 더 포함하는
    컴퓨터-구현 방법.
  24. 제14항에 있어서, 상기 컴퓨터-구현 방법은 메모리의 양과 디스크 공간의 양을 상기 복수의 호스트 컴퓨터 시스템들의 각각에서 추가로 결정하는 단계를 더 포함하는
    컴퓨터-구현 방법.
  25. 제14항에 있어서, 상기 VM 요청 내의 vCPU들의 수가 상기 하드웨어 멀티스레딩 파라미터의 값보다 더 클 때, 상기 컴퓨터-구현 방법은 각각이 복수의 하드웨어 스레드들을 갖는 복수의 CPU들을 포함하는 상기 복수의 호스트 컴퓨터 시스템들 중 하나를 선정하는 단계를 더 포함하는
    컴퓨터-구현 방법.
  26. 제14항에 있어서, 상기 컴퓨터-구현 방법은 상기 하드웨어 멀티스레딩 파라미터를 사용하는 VM을 재조정하는 단계를 더 포함하는
    컴퓨터-구현 방법.
  27. 호스트 컴퓨터 시스템 상에 복수의 가상 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를 배치함 ― 를 포함하는
    컴퓨터-구현 방법.
  28. 삭제
KR1020167033176A 2014-06-06 2015-06-04 하드웨어 멀티스레딩 파라미터를 사용한 가상 머신을 위한 호스트의 선택 KR101884549B1 (ko)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US14/297,707 2014-06-06
US14/297,707 US9400672B2 (en) 2014-06-06 2014-06-06 Placement of virtual CPUS using a hardware multithreading parameter
US14/297,724 2014-06-06
US14/297,677 2014-06-06
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,677 US9384027B2 (en) 2014-06-06 2014-06-06 Selecting a host for a virtual machine using a hardware multithreading parameter
US14/305,853 US9400673B2 (en) 2014-06-06 2014-06-16 Placement of virtual CPUS using a hardware multithreading parameter
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,955 US9304806B2 (en) 2014-06-06 2014-06-16 Provisioning virtual CPUs using a hardware multithreading parameter in hosts with split core processors
US14/305,955 2014-06-16
US14/305,703 2014-06-16
US14/305,853 2014-06-16
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 (ko) 2016-12-23
KR101884549B1 true KR101884549B1 (ko) 2018-08-29

Family

ID=56682546

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167033176A KR101884549B1 (ko) 2014-06-06 2015-06-04 하드웨어 멀티스레딩 파라미터를 사용한 가상 머신을 위한 호스트의 선택

Country Status (5)

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

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110673928B (zh) * 2019-09-29 2021-12-14 天津卓朗科技发展有限公司 线程绑定方法、装置、存储介质及服务器

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 (ja) 2012-03-07 2013-09-19 Ntt Docomo Inc ホスト提供システム及びホスト提供方法
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 (ja) 2012-03-07 2013-09-19 Ntt Docomo Inc ホスト提供システム及びホスト提供方法
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
JP2017520830A (ja) 2017-07-27
CN106462446A (zh) 2017-02-22
DE112015000216T5 (de) 2016-09-01
GB201620786D0 (en) 2017-01-18
KR20160147958A (ko) 2016-12-23
GB2541340B (en) 2017-07-19
CN106462446B (zh) 2019-10-08
GB2541340A (en) 2017-02-15
JP6628742B2 (ja) 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 (ko) 하드웨어 멀티스레딩 파라미터를 사용한 가상 머신을 위한 호스트의 선택
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