KR20120008026A - 가상 머신들을 위한 가상 불균일 메모리 아키텍처 - Google Patents
가상 머신들을 위한 가상 불균일 메모리 아키텍처 Download PDFInfo
- Publication number
- KR20120008026A KR20120008026A KR1020117022331A KR20117022331A KR20120008026A KR 20120008026 A KR20120008026 A KR 20120008026A KR 1020117022331 A KR1020117022331 A KR 1020117022331A KR 20117022331 A KR20117022331 A KR 20117022331A KR 20120008026 A KR20120008026 A KR 20120008026A
- Authority
- KR
- South Korea
- Prior art keywords
- virtual
- numa
- computer system
- virtual machine
- nodes
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/254—Distributed memory
- G06F2212/2542—Non-uniform memory access [NUMA] architecture
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
가상 머신들에 대한 가상 NUMA 아키텍처를 실현하기 위한 기술들이 본 명세서에 개시된다.
Description
가상화 기술은 다수의 파티션들 사이의 하드웨어 자원들의 공유를 가능하게 하며, 파티션들 각각은 게스트 운영 체제를 호스트할 수 있다. 일반적으로, 가상 머신 기술은 서버들을 통합하여 그들의 이식성을 향상시키는 데 사용될 수 있다. 가상 머신들이 더 커지고, 그들의 작업 부하가 증가함에 따라, 이들을 쉽게 통합하며/하거나 이들을 하나의 컴퓨터에서 다른 컴퓨터로 이식하기 위한 능력이 더 어려워진다.
따라서, 더 큰 가상 머신들을 통합 및/또는 이식하기 위한 능력을 향상시키기 위한 기술들이 필요하다.
본 발명의 일 실시예는 방법을 설명한다. 이 예에서, 상기 방법은 관리 시스템에 의해, 데이터 센터 내의 컴퓨터 시스템들의 물리적 토폴로지(physical topology)를 나타내는 정보를 수신하는 단계; 가상 머신을 인스턴스화하기 위한 요청을 수신하되, 상기 요청은 상기 가상 머신에 대한 특성을 나타내는 단계; 상기 컴퓨터 시스템들의 상기 물리적 토폴로지 및 상기 가상 머신에 대한 상기 특징에 기초하여, 상기 가상 머신에 대한 가상 NUMA 노드들의 수를 결정하는 단계; 및 요청을 상기 데이터 센터 내의 컴퓨터 시스템으로 전송하되, 상기 요청은 상기 컴퓨터 시스템에게 상기 결정된 수의 가상 NUMA 노드들을 갖는 상기 가상 머신을 인스턴스화하도록 지시하는 단계를 포함하지만, 이에 한정되지 않는다. 위의 것에 더하여, 다른 양태들이 본 발명의 일부를 형성하는 청구항들, 도면들 및 텍스트에서 설명된다.
본 발명의 일 실시예는 방법을 설명한다. 이 예에서, 상기 방법은 가상 머신을 인스턴스화하기 위한 요청을 수신하는 단계; 상기 가상 머신을 생성하되, 상기 가상 머신은 복수의 가상 NUMA 노드를 포함하는 토폴로지를 갖고, 상기 복수의 가상 NUMA 노드의 각각은 적어도 하나의 가상 프로세서 및 소정 범위의 게스트 물리 어드레스들을 포함하며, 상기 가상 머신의 상기 토폴로지는 상기 컴퓨터 시스템의 상기 물리적 토폴로지와 무관하게 생성되는 단계; 및 상기 가상 NUMA 노드들을 포함하는 상기 가상 머신을 인스턴스화하는 단계를 포함하지만, 그에 한정되지 않는다. 위의 것에 더하여, 다른 양태들이 본 발명의 일부를 형성하는 청구항들, 도면들 및 텍스트에서 설명된다.
본 발명의 일 실시예는 방법을 설명한다. 이 예에서, 상기 방법은 가상 머신에 대한 복수의 가상 NUMA 노드를 생성하되, 상기 복수의 가상 NUMA 노드의 각각은 적어도 하나의 가상 프로세서 및 게스트 물리 어드레스들의 적어도 하나의 메모리 블록을 포함하며, 상기 복수의 가상 NUMA 노드는 임의의 컴퓨팅 시스템의 물리적 토폴로지와 무관하게 생성되는 단계; 및 컴퓨터 시스템 상에서 상기 가상 머신을 인스턴스화하되, 상기 가상 머신은 상기 복수의 가상 NUMA 노드를 포함하는 단계를 포함하지만, 이에 한정되지 않는다. 위의 것에 더하여, 다른 양태들이 본 발명의 일부를 형성하는 청구항들, 도면들 및 텍스트에서 설명된다.
본 발명의 하나 이상의 다양한 양태들은 본 명세서에서 설명되는 본 발명의 양태들을 실행하기 위한 회로 및/또는 프로그래밍을 포함할 수 있지만, 이에 한정되지 않으며, 이러한 회로 및/또는 프로그래밍은 시스템 설계자의 설계 선택들에 따라 본 명세서에서 설명되는 양태들을 실행하도록 구성되는 하드웨어, 소프트웨어 및/또는 펌웨어의 사실상 임의의 조합일 수 있다는 것을 이 분야의 기술자는 알 수 있다.
전술한 것은 요약이며, 따라서 필연적으로 상세의 간소화, 일반화 및 생략을 포함한다. 이 분야의 기술자들은 본 요약이 예시적일 뿐 어떠한 식으로도 한정적이 아님을 의도한다는 것을 이해할 것이다.
도 1은 본 발명의 양태들을 구현할 수 있는 예시적인 컴퓨터 시스템을 도시한다.
도 2는 본 발명의 양태들을 실시하기 위한 동작 환경을 도시한다.
도 3은 본 발명의 양태들을 실시하기 위한 동작 환경을 도시한다.
도 4는 실시예들에서 메모리가 어떻게 배열될 수 있는지를 도시한다.
도 5는 본 발명의 양태들을 실시하는 예시적인 동작 환경을 도시한다.
도 6은 본 발명의 양태들을 실시하는 예시적인 동작 환경을 도시한다.
도 7은 본 발명의 양태들을 실시하는 예시적인 동작 환경을 도시한다.
도 8은 본 발명의 양태들을 실시하기 위한 동작 절차를 도시한다.
도 9는 도 8의 동작 절차(800)의 대안적인 실시예를 도시한다.
도 10은 본 발명의 양태들을 실시하기 위한 동작 절차를 도시한다.
도 11은 도 10의 동작 절차(1000)의 대안적인 실시예를 도시한다.
도 12는 도 11의 동작 절차(1000)의 대안적인 실시예를 도시한다.
도 13은 본 발명의 양태들을 실시하기 위한 동작 절차를 도시한다.
도 14는 도 13의 동작 절차(1300)의 대안적인 실시예를 도시한다.
도 2는 본 발명의 양태들을 실시하기 위한 동작 환경을 도시한다.
도 3은 본 발명의 양태들을 실시하기 위한 동작 환경을 도시한다.
도 4는 실시예들에서 메모리가 어떻게 배열될 수 있는지를 도시한다.
도 5는 본 발명의 양태들을 실시하는 예시적인 동작 환경을 도시한다.
도 6은 본 발명의 양태들을 실시하는 예시적인 동작 환경을 도시한다.
도 7은 본 발명의 양태들을 실시하는 예시적인 동작 환경을 도시한다.
도 8은 본 발명의 양태들을 실시하기 위한 동작 절차를 도시한다.
도 9는 도 8의 동작 절차(800)의 대안적인 실시예를 도시한다.
도 10은 본 발명의 양태들을 실시하기 위한 동작 절차를 도시한다.
도 11은 도 10의 동작 절차(1000)의 대안적인 실시예를 도시한다.
도 12는 도 11의 동작 절차(1000)의 대안적인 실시예를 도시한다.
도 13은 본 발명의 양태들을 실시하기 위한 동작 절차를 도시한다.
도 14는 도 13의 동작 절차(1300)의 대안적인 실시예를 도시한다.
실시예들은 하나 이상의 컴퓨터들에서 실행될 수 있다. 도 1 및 아래의 설명은 본 발명을 구현할 수 있는 적절한 컴퓨팅 환경의 간단한 일반 설명을 제공하는 것을 의도한다. 이 분야의 기술자는 일부 실시예들에서 도 1의 컴퓨터 시스템이 컴퓨터 시스템들(200, 300, 600, 700)을 실현할 수 있다는 것을 알 수 있다. 이러한 실시예들에서, 컴퓨터 시스템들은 도 1에 설명된 컴포넌트들의 일부 또는 전부 및 본 발명의 양태들을 인스턴스화하도록 구성된 회로를 포함할 수 있다.
본 명세서를 통해 사용되는 회로라는 용어는 하드웨어 인터럽트 제어기들, 하드 드라이브들, 네트워크 어댑터들, 그래픽 프로세서들, 하드웨어 기반 비디오/오디오 코덱들과 같은 하드웨어 컴포넌트들, 및 이러한 하드웨어를 동작시키는 데 사용되는 펌웨어/소프트웨어를 포함할 수 있다. 동일 또는 다른 실시예들에서, 회로라는 용어는 펌웨어에 의해 또는 소정 방식으로 설정된 스위치들에 의해 기능(들)을 수행하도록 구성된 마이크로프로세서들을 포함할 수 있다. 동일 또는 다른 실시예들에서, 회로라는 용어는 하나 이상의 논리 프로세서들, 예컨대 다중 코어 범용 처리 유닛의 하나 이상의 코어를 포함할 수 있다. 이 예에서, 논리 프로세서(들)는 메모리, 예컨대 RAM, ROM, 펌웨어 및/또는 가상 메모리로부터 로딩되는 기능(들)을 수행하도록 동작할 수 있는 논리를 구현하는 소프트웨어 명령어들에 의해 구성될 수 있다. 회로가 하드웨어와 소프트웨어의 결합을 포함하는 실시예들에서, 구현자는 논리를 구현하는 소스 코드를 작성할 수 있으며, 이어서 소스 코드는 논리 프로세서에 의해 처리될 수 있는 기계 판독 가능 코드로 컴파일된다. 이 분야의 기술자는 현재의 기술 상태가 하드웨어, 소프트웨어 또는 하드웨어/소프트웨어의 결합 사이에 거의 차이가 없을 정도로 진화한 것을 알 수 있으므로, 기능들을 실현하기 위한 하드웨어 대 소프트웨어의 선택은 단지 설계 선택일 뿐이다. 따라서, 이 분야의 기술자는 소프트웨어 프로세스가 등가의 하드웨어 구조로 변환될 수 있고, 하드웨어 구조 자체도 등가의 소프트웨어 프로세스로 변환될 수 있다는 것을 알 수 있으므로, 하드웨어 구현 대 소프트웨어 구현의 선택은 설계 선택의 하나이며, 구현자에게 일임된다.
이제, 도 1을 참조하면, 예시적인 범용 컴퓨팅 시스템이 도시되어 있다. 범용 컴퓨팅 시스템은 논리 프로세서(21), 시스템 메모리(22), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트들을 논리 프로세서(21)에 결합하는 시스템 버스(23)를 포함하는 통상의 컴퓨터(20) 등을 포함할 수 있다. 시스템 버스(23)는 임의의 다양한 버스 아키텍처를 이용하는 메모리 버스 또는 메모리 제어기, 주변 장치 버스 및 로컬 버스를 포함하는 임의의 다양한 타입의 버스 구조일 수 있다. 시스템 메모리는 판독 전용 메모리(ROM)(24) 및 랜덤 액세스 메모리(RAM)(25)를 포함할 수 있다. 이를테면 시동 중에 컴퓨터(20) 내의 요소들 사이의 정보 전송을 돕는 기본 루틴들을 포함하는 기본 입출력 시스템(BIOS)(26)이 ROM(24)에 저장된다. 컴퓨터(20)는 하드 디스크(도시되지 않음)로부터 판독하고 그에 기입하기 위한 하드 디스크 드라이브(27), 이동식 자기 디스크(29)로부터 판독하거나 그에 기입하기 위한 자기 디스크 드라이브(28), 및 CD-ROM 또는 다른 광학 매체들과 같은 이동식 광 디스크(31)로부터 판독하거나 그에 기입하기 위한 광 디스크 드라이브(30)를 더 포함할 수 있다. 하드 디스크 드라이브(27), 자기 디스크 드라이브(28) 및 광 디스크 드라이브(30)는 하드 디스크 드라이브 인터페이스(32), 자기 디스크 드라이브 인터페이스(33) 및 광 드라이브 인터페이스(34)에 의해 각각 시스템 버스(23)에 접속되는 것으로 도시된다. 드라이브들 및 이들과 관련된 컴퓨터 판독 가능 저장 매체들은 컴퓨터(20)용의 컴퓨터 판독 가능 명령어들, 데이터 구조들, 프로그램 모듈들 및 기타 데이터의 비휘발성 저장을 제공한다. 본 명세서에서 설명되는 예시적인 환경은 하드 디스크, 이동식 자기 디스크(29) 및 이동식 광 디스크(31)를 사용하지만, 이 분야의 기술자들은 컴퓨터가 액세스할 수 있는 데이터를 저장할 수 있는 다른 타입들의 컴퓨터 판독 가능 저장 매체들, 이를테면 자기 카세트들, 플래시 메모리 카드들, 디지털 비디오 디스크들, 베르누이 카트리지들, 랜덤 액세스 메모리들(RAM들), 판독 전용 메모리들(ROM들) 등도 예시적인 동작 환경에서 사용될 수 있다는 것을 알아야 한다. 일반적으로, 소정 실시예들에서, 그러한 컴퓨터 판독 가능 매체들은 본 발명의 양태들을 구현하는 프로세서 실행 가능 명령어들을 저장하는 데 사용될 수 있다.
운영 체제(35), 하나 이상의 애플리케이션 프로그램들(36), 다른 프로그램 모듈들(37) 및 프로그램 데이터(38)를 포함하는 다수의 프로그램 모듈이 하드 디스크, 자기 디스크(29), 광 디스크(31), ROM(24) 또는 RAM(25)에 저장될 수 있다. 사용자는 키보드(40) 및 포인팅 장치(42)와 같은 입력 장치들을 통해 컴퓨터(20)에 명령들 및 정보를 입력할 수 있다. 다른 입력 장치들(도시되지 않음)은 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 및 다른 입력 장치들은 종종, 시스템 버스에 결합되는 직렬 포트 인터페이스(46)를 통해 논리 프로세서(21)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버설 직렬 버스(USB)와 같은 다른 인터페이스에 의해 접속될 수도 있다. 디스플레이(47) 또는 다른 타입의 디스플레이 장치도 비디오 어댑터(48)와 같은 인터페이스를 통해 시스템 버스(23)에 접속될 수 있다. 디스플레이(47)에 더하여, 컴퓨터들은 통상적으로 스피커들 및 프린터들과 같은 다른 주변 출력 장치들(도시되지 않음)을 포함한다. 도 1의 예시적인 시스템은 호스트 어댑터(55), 소형 컴퓨터 시스템 인터페이스(SCSI) 버스(56), 및 SCSI 버스(56)에 접속된 외부 저장 장치(62)도 포함한다.
컴퓨터(20)는 원격 컴퓨터(49)와 같은 하나 이상의 원격 컴퓨터들에 대한 논리적 접속들을 이용하여 네크워킹된 환경에서 동작할 수 있다. 원격 컴퓨터(49)는 다른 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치 또는 다른 일반 네트워크 노드일 수 있으며, 도 1에는 메모리 저장 장치(50)만이 도시되었지만, 통상적으로는 컴퓨터(20)와 관련하여 전술한 요소들 중 다수 또는 모두를 포함할 수 있다. 도 1에 도시된 논리 접속들은 근거리 네트워크(LAN)(51) 및 광역 네트워크(WAN)(52)를 포함할 수 있다. 그러한 네트워킹 환경들은 사무실들, 기업 광역 컴퓨터 네트워크들, 인트라넷들 및 인터넷에서 일반적이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(20)는 네트워크 인터페이스 또는 어댑터(53)를 통해 LAN(51)에 접속될 수 있다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(20)는 통상적으로 인터넷과 같은 광역 네트워크(52)를 통해 통신을 설정하기 위한 모뎀(54) 또는 기타 수단을 포함할 수 있다. 내장형 또는 외장형일 수 있는 모뎀(54)은 직렬 포트 인터페이스(46)를 통해 시스템 버스(23)에 접속될 수 있다. 네트워킹된 환경에서, 컴퓨터(30)와 관련하여 도시된 모듈들 또는 이들의 부분들은 원격 메모리 저장 장치에 저장될 수 있다. 도시된 네트워크 접속들은 예시적이며, 컴퓨터들 사이에 통신 링크를 설정하기 위한 다른 수단들이 사용될 수 있다는 것을 알 것이다. 더욱이, 본 발명의 다양한 실시예들은 컴퓨터화된 시스템들에 특히 적합한 것으로 생각되지만, 본 명세서의 어떤 것도 본 발명을 그러한 실시예들로 한정하는 것을 의도하지 않는다.
이제, 도 2 및 3을 참조하면, 이들은 컴퓨터 시스템들의 고레벨 블록도들을 도시한다. 도면에 도시된 바와 같이, 컴퓨터 시스템(200)은 저장 장치(208), 예컨대 하드 드라이브, 네트워크 인터페이스 제어기(NIC)(210), 그래픽 카드(234), 적어도 하나의 논리 프로세서(212) 및 랜덤 액세스 메모리(RAM)(214)와 같은 물리 하드웨어 장치들을 포함할 수 있다. 컴퓨터 시스템(200)은 도 1의 컴퓨터(20)와 유사한 컴포넌트들도 포함할 수 있다. 하나의 논리 프로세서가 도시되지만, 다른 실시예들에서 컴퓨터 시스템(200)은 다수의 논리 프로세서, 예컨대 프로세서마다 다수의 실행 코어들 및/또는 다수의 실행 코어들을 각자 가질 수 있는 다수의 프로세서를 구비할 수 있다. 도 2의 설명을 계속하면, 이 분야에서 가상 머신 모니터로서 지칭될 수 있는 하이퍼바이저(hypervisor)(202)가 도시되어 있다. 도시된 실시예에서 하이퍼바이저(202)는 컴퓨터 시스템(200)의 하드웨어에 대한 액세스를 제어하고 중재하기 위한 실행 가능 명령어들을 포함한다. 대체로, 하이퍼바이저(202)는 자식 파티션 1 내지 자식 파티션 N(N은 1보다 큰 정수)과 같은 파티션들이라고 하는 실행 환경들을 생성할 수 있다. 실시예들에서, 자식 파티션은 하이퍼바이저(202)에 의해 지원되는 격리의 기본 단위로서 간주될 수 있는데, 즉 각각의 자식 파티션은 하이퍼바이저(202) 및/또는 부모 파티션의 제어하에 있는 하드웨어 자원들의 세트, 예컨대 메모리, 장치들, 논리 프로세서 사이클들 등에 맵핑될 수 있다. 실시예들에서, 하이퍼바이저(202)는 독립형 소프트웨어 제품, 마더보드의 펌웨어 내에 내장된 운영 체제의 일부, 특수화된 집적 회로들 또는 이들의 결합일 수 있다.
도시된 예에서, 컴퓨터 시스템(200)은 오픈 소스 커뮤니티에서 도메인 0으로도 간주될 수 있는 부모 파티션(204)을 포함한다. 부모 파티션(204)은 오픈 소스 커뮤니티에서 백엔드 드라이버들로도 알려진 가상화 서비스 제공자들(VSP들)(228)을 이용함으로써 자식 파티션들 1-N에서 실행되는 게스트 운영 체제들에 자원들을 제공하도록 구성될 수 있다. 이러한 예시적인 아키텍처에서, 부모 파티션(204)은 기반 하드웨어에 대한 액세스를 게이트할 수 있다. 일반적으로, VSP들(228)은 오픈 소스 커뮤니티에서 프론트엔드 드라이버들로도 알려진 가상화 서비스 클라이언트들(VSC들)을 통해 하드웨어 자원들로 인터페이스들을 다중화하는 데 사용될 수 있다. 각각의 자식 파티션은 가상 프로세서들(230, 232)과 같은 하나 이상의 가상 프로세서들을 포함할 수 있으며, 게스트 운영 체제들(220, 222)은 가상 프로세서들 상에서 실행할 스레드들을 관리하고 스케줄할 수 있다. 일반적으로, 가상 프로세서들(230, 232)은 특정 아키텍처를 갖는 물리 프로세서의 표현을 제공하는 실행 가능 명령어들 및 관련 상태 정보이다. 예컨대, 하나의 가상 머신은 인텔 x86 프로세서의 특성들을 갖는 가상 프로세서를 구비할 수 있는 반면, 다른 가상 프로세서는 PowerPC 프로세서의 특성들을 가질 수 있다. 이 예에서, 가상 프로세서들은 컴퓨터 시스템의 논리 프로세서들에 맵핑될 수 있으며, 따라서 가상 프로세서들을 실현하는 명령어들은 논리 프로세서들에 의해 백킹(backing)될 것이다. 따라서, 이러한 실시예들에서는, 예를 들어 다른 논리 프로세서가 하이퍼바이저 명령어들을 실행하고 있는 동안에, 다수의 가상 프로세서가 동시에 실행될 수 있다. 일반적으로 그리고 도면에 도시된 바와 같이, 파티션 내의 가상 프로세서들, 다양한 VSC들 및 메모리의 결합은 가상 머신(240 또는 242)과 같은 가상 머신으로 간주될 수 있다.
일반적으로, 게스트 운영 체제들(220, 222)은 예를 들어 마이크로소프트(등록상표), 애플(등록상표), 오픈 소스 커뮤니티 등으로부터의 운영 체제들과 같은 임의의 운영 체제를 포함할 수 있다. 게스트 운영 체제들은 사용자/커널 동작 모드들을 포함할 수 있으며, 스케줄러들, 메모리 관리자들 등을 포함할 수 있는 커널들을 구비할 수 있다. 각각의 게스트 운영 체제(220, 222)는 전자 상거래 서버들, 이메일 서버들 등 및 게스트 운영 체제들 자체와 같은 애플리케이션들을 저장하고 있을 수 있는 관련 파일 시스템들을 구비할 수 있다. 게스트 운영 체제들(220, 222)은 가상 프로세서들(230-232) 상에서 실행할 스레드들을 스케줄할 수 있으며, 그러한 애플리케이션들의 인스턴스들이 실행될 수 있다.
이제, 도 3을 참조하면, 이 도면은 사용 가능한 대안적인 아키텍처를 도시한다. 도 3은 도 2의 것들과 유사한 컴포넌트들을 도시하지만, 이 실시예에서 하이퍼바이저(202)는 가상화 서비스 제공자(228) 및 장치 드라이버들(224)을 포함할 수 있으며, 부모 파티션(204)은 구성 유틸리티들(236)을 포함할 수 있다. 이러한 아키텍처에서, 하이퍼바이저(202)는 도 2의 하이퍼바이저(202)와 동일 또는 유사한 기능을 수행할 수 있다. 도 3의 하이퍼바이저(202)는 독립형 소프트웨어 제품이거나, 마더보드의 펌웨어 내에 내장된 운영체제의 일부이거나, 또는 하이퍼바이저(202)의 일부가 특수화된 집적 회로들에 의해 실현될 수 있다. 이 예에서, 부모 파티션(204)은 하이퍼바이저(202)를 구성하는 데 사용될 수 있는 명령어들을 구비할 수 있지만, 하드웨어 액세스 요청들은 부모 파티션(204)으로 전송되는 것이 아니라 하이퍼바이저(202)에 의해 처리될 수 있다.
이제, 도 4를 참조하면, 이 도면은 가상 머신들을 포함하는 실시예들에서 메모리가 어떻게 배열될 수 있는지를 도시한다. 예컨대, 컴퓨터 시스템(200)과 같은 컴퓨터 시스템은 메모리 어드레스들을 갖는 RAM(214)을 구비할 수 있다. 시스템 물리 메모리 어드레스들을 가상 머신들에 보고하는 대신에, 하이퍼바이저(202)는 시스템 물리 어드레스들에 대한 상이한 어드레스들, 예컨대 게스트 물리 어드레스들(GPA들)을 게스트 운영 체제들의 메모리 관리자들에게 제공할 수 있다. 이어서, 게스트 운영 체제들은 게스트 물리 어드레스들을 조작할 수 있으며, 하이퍼바이저(202)는 GPA들과 SPA들에 의한 관계를 유지한다. 도면에 도시된 바와 같이, 일 실시예에서, GPA들 및 SPA들은 메모리 블록들 내에 배열될 수 있다. 일반적으로, 메모리 블록은 메모리의 하나 이상의 페이지들을 포함할 수 있다. GPA들과 SPA들 사이의 관계는 "강화된 새도우 페이지 테이블 알고리즘(Enhanced Shadow Page Table Algorithms)"이라는 제목의 동일 출원인에 의한 미국 특허 출원 제11/128,665호에 설명된 것들과 같은 새도우 페이지 테이블에 의해 유지될 수 있으며, 상기 출원의 내용은 그 전체가 본 명세서에 참조로서 통합된다. 동작에 있어서, 게스트 운영 체제가 블록 1의 GPA에 데이터를 저장할 때, 데이터는 실제로는 시스템 상의 블록 6과 같은 상이한 SPA에 저장될 수 있다.
간단히, 도 5는 본 발명의 양태들을 실시하기 위한 동작 환경을 도시한다. 예컨대, 다수의 컴퓨터 시스템(504-510)이 데이터 센터(500) 내에 함께 결합될 수 있다(4개의 컴퓨터 시스템이 도시되지만, 이 분야의 기술자는 데이터 센터가 더 많거나 적은 컴퓨터 시스템을 포함할 수 있다는 것을 알 수 있다). 도시된 컴퓨터 시스템들은 상이한 토폴로지들을 가질 수 있으며, 더욱이 이들은 상이한 특성들, 예컨대 상이한 수의 RAM, 상이한 RAM 속도, 상이한 수의 논리 프로세서 및/또는 상이한 속도를 갖는 논리 프로세서들을 가질 수 있다.
관리 시스템(502)은 도 1의 컴퓨터(20) 및/또는 컴퓨터 시스템들(200, 300, 600 또는 700)과 유사한 컴포넌트들을 가질 수 있다. 즉, 일 실시예에서, 관리 시스템(502)은 도 6 또는 도 7과 관련하여 후술하는 내용을 포함하는 컴퓨터 시스템일 수 있다.
도면들의 일반 개요를 계속 설명하면, 도 6은 대칭 다중 처리 토폴로지(SMP) 또는 "플랫(flat)" 토폴로지를 갖는 컴퓨터 시스템(600)을 도시한다. 일반적으로, SMP는 단일 공유 메모리에 접속되는 복수의 프로세서를 포함하는 컴퓨터 아키텍처이다. 이러한 배열에서, 메모리 제어기(602)는 메모리로의 그리고 메모로부터의 데이터의 흐름을 관리할 수 있다. 메모리 액세스는 각각의 논리 프로세서(212A-F)에 대해 균일할 수 있으며, 각각의 논리 프로세서는 메모리의 전체 범위, 즉 시스템 물리 어드레스들(622-632)에 액세스할 수 있다. 이러한 토폴로지는 비교적 적은 수의 프로세서를 갖는 컴퓨터 시스템들에 대해 양호하게 동작하지만, 컴퓨터 시스템이 모두가 공유 메모리 버스에 대한 액세스를 위해 경쟁하는 다수의 프로세서를 포함하는 경우에는 시스템의 성능이 저하될 수 있다. 더욱이, 컴퓨터 시스템의 복잡성이 크게 증가하며, 이는 또한 프로세서당 가격을 상승시킨다.
간단히, 컴퓨터 시스템(600)은 컴퓨터(200 또는 300)와 동일 또는 유사한 컴포넌트들을 포함할 수 있다. 도면에 도시된 바와 같이, 컴퓨터 시스템(600)은 RAM(214)에 대한 액세스를 게이트하는 메모리 제어기(602)를 통해 함께 결합되는 복수의 논리 프로세서(212A-212F)를 구비할 수 있다(6개의 논리 프로세서가 도시되지만, 컴퓨터 시스템은 더 많거나 적은 논리 프로세서를 구비할 수 있다). 전술한 바와 유사하게, 각각의 논리 프로세서(212A-212F)는 상이한 특성들, 예컨대, 클럭 속도, 캐시 크기 등을 가질 수 있다. 이러한 배열에서, 메모리 제어기(602)는 RAM(214)으로의 그리고 그로부터의 데이터의 흐름을 관리할 수 있다.
하이퍼바이저(202)는 인스턴스화될 수 있으며, 컴퓨터 시스템(600)의 하드웨어를 제어할 수 있다. 하이퍼바이저(202)는 가상 NUMA 노드들(606-612)과 같은 가상 NUMA 노드들을 각자 구비할 수 있는 하나 이상의 가상 머신들(240, 242)을 관리할 수 있다. 가상 NUMA 노드들(606-612)은 게스트 애플리케이션들 또는 게스트 운영 체제들(220, 222)과 같은 게스트 운영 체제들에 가상 토폴로지들을 보고함으로써 가상 머신의 자원들을 조직하는 데 사용될 수 있다. 도면에 도시된 바와 같이, 각각의 가상 NUMA 노드(606-612)는 하나 이상의 가상 프로세서들(230A-D, 232A-D) 및 게스트 물리 어드레스들(614-616, 618-620)을 가질 수 있다. 일반적으로, 하이퍼바이저(202)는 하나 이상의 논리 프로세서들 및 RAM(214)으로부터의 시스템 물리 어드레스들로 각각의 가상 NUMA 노드(606-612)를 백킹할 수 있다. 즉, 하이퍼바이저(202)는 하나 이상의 논리 프로세서들을, 가상 프로세서 스레드들을 실행하는 데 사용될 수 있는 이상적인 프로세서들로서 설정할 수 있다.
간단히, 도 7은 NUMA 노드들(702-706)을 포함하는 토폴로지를 갖는 컴퓨터 시스템(700)을 도시한다. NUMA 노드들을 갖는 컴퓨터 시스템들은 일반적으로 더 작은 컴퓨터 시스템들 또는 셀들로 구성되는 컴퓨터 시스템들로서 간주될 수 있다. 이 예에서, 각각의 NUMA 노드(606-612)는 하나 이상의 논리 프로세서들 및 로컬 메모리를 포함할 수 있다. 하나의 NUMA 노드 내의 메모리가 로컬 메모리로서 간주되고, 다른 NUMA 노드들 내의 메모리는 원격 메모리로서 간주되는데, 그 이유는 노드 내의 프로세서들만이 동일 메모리 버스에 접속되기 때문이다. NUMA 노드들은 하나의 NUMA 노드 내의 프로세서들이 다른 NUMA 노드들 내의 메모리에 일관된 방식으로 액세스할 수 있게 하는 캐시 일관성 도메인 상호접속들에 의해 상호접속된다. 따라서, 시스템 물리 어드레스들(622-632)은 각각의 프로세서에 대해 균일하다. 또는, 달리 말하면, 시스템 물리 어드레스 20,000은 컴퓨터 시스템 내의 모든 프로세서에 대해 동일하다. 차이점은, 일부 프로세서들에 대해서는 메모리 어드레스 20,000이 예를 들어 그들의 NUMA 노드 내의 로컬 메모리 어드레스이고, 다른 프로세서들에 대해서는 메모리 어드레스 20,000이 예를 들어 그들의 NUMA 노드 밖의 원격 메모리 어드레스라는 것이다. 일반적으로, 로컬 메모리는 원격 메모리보다 빠르게 액세스될 수 있으며, 로컬 대 원격 액세스 시간 사이의 관계는 NUMA 비율이라고 한다. 1 대 2의 NUMA 비율은 특정 원격 시스템 물리 어드레스에 액세스하는 것이 로컬 시스템 물리 어드레스에 액세스하는 것보다 2배 많은 프로세서 사이클을 필요로 한다는 것을 의미한다. NUMA는 임의의 하나의 메모리 버스 상의 프로세서들의 수를 제한함으로써 SMP 시스템들에 의해 유발되는 병목 현상을 완화하며, 일반적으로 동일 수의 논리 프로세서를 갖는 SMP 컴퓨터 시스템보다 덜 비싸다.
컴퓨터 시스템(700)은 컴퓨터(200 또는 300)와 동일 또는 유사한 컴포넌트들을 포함할 수 있다. 도면에 도시된 바와 같이, 이러한 동작 환경에서, 컴퓨터 시스템(700)은 상호접속들(708)에 의해 접속되는 3개의 NUMA 노드(702-706)를 포함한다(그러나, 컴퓨터는 더 많거나 적은 NUMA 노드를 가질 수 있다). 전술한 바와 유사하게, 각각의 NUMA 노드 내의 프로세서들의 수가 달라질 수 있고, 프로세서들의 특성들이 달라질 수 있으며, 각각의 노드가 그 자신의 RAM을 가질 수 있다.
도 7과 유사하게, 하이퍼바이저(202)는 컴퓨터 시스템(700)의 하드웨어를 제어한다. 게스트 운영 체제들 또는 모놀리식 애플리케이션들이 부팅될 때, 이들은 전술한 바와 유사하게 가상 머신들(240, 242)의 토폴로지들을 검출할 수 있다. 각각의 가상 NUMA 노드(606-612)는 하나 이상의 NUMA 노드들로부터 하나 이상의 이상적인 프로세서들 및 메모리를 할당받을 수 있다.
컴퓨터 시스템(600, 700)은 2개의 가상 머신(240, 242)을 포함하는 것으로 도시되지만, 다른 실시예들에서 이들은 더 많거나 적은 가상 머신을 실행할 수 있다. 더욱이, 각각의 가상 머신은 2개의 가상 NUMA 노드를 갖는 것으로 도시되지만, 다른 실시예들에서 가상 머신들은 더 많거나 적은 가상 NUMA 노드를 가질 수 있다. 또한, 가상 NUMA 노드들은 2개의 가상 프로세서를 갖는 것으로 도시되지만, 다른 실시예들에서 가상 NUMA 노드들은 더 많거나 적은 가상 프로세서를 가질 수 있다. 더욱이, 각각의 가상 NUMA 노드는 다른 가상 NUMA 노드들과 다른 토폴로지를 가질 수 있는데, 예컨대 하나의 가상 NUMA 노드는 4개의 가상 프로세서 및 8 기가바이트의 RAM을 갖는 반면, 다른 가상 NUMA 노드는 2개의 가상 프로세서 및 4 기가바이트의 RAM을 가질 수 있다.
이하에서는 프로세스들의 구현들을 나타내는 일련의 흐름도들이 설명된다. 이해의 편의를 위해 흐름도들은 처음의 흐름도들이 전반적인 "큰 그림"의 관점을 통해 구현들을 설명하고, 후속 흐름도들이 추가 사항들 및/또는 상세들을 더 제공하도록 조직된다. 더욱이 이 분야의 기술자는 파선들에 의해 도시되는 동작 절차가 옵션으로 간주된다는 것을 알 수 있다.
이제, 도 8을 참조하면, 이 도면은 동작들 800-808을 포함하는 본 발명의 양태들을 실시하기 위한 동작 절차를 나타낸다. 동작 절차는 동작 800에서 시작하고, 동작 802는 관리 시스템에 의해, 데이터 센터 내의 컴퓨터 시스템들의 물리적 토폴로지를 나타내는 정보를 수신하는 단계를 나타낸다. 예를 들어 그리고 도 5를 참조하면, 관리 시스템(502)의 논리 프로세서는 데이터 센터(500) 내의 컴퓨터 시스템들(504-510)의 물리적 토폴로지를 식별하는 정보를 취득할 수 있는 하나 이상의 프로그램들을 실행할 수 있다. 일 실시예에서, 관리 시스템(502)은 NIC를 포함할 수 있으며, 프로그램은 NIC를 이용하여 각각의 컴퓨터 시스템(504-510)에 조회할 수 있다. 이 예에서, 각각의 컴퓨터 시스템(504-510)은 그의 토폴로지를 식별하는 정보로 응답할 수 있다. 다른 실시예에서, 정보는 정보를 입력하는 관리자로부터 취득될 수 있다. 어느 경우에나, 정보는 각각의 컴퓨터 시스템이 (존재할 경우) 얼마나 많은 NUMA 노드를 갖는지, 각각의 컴퓨터 시스템이 얼마나 많은 RAM을 갖는지, RAM의 속도, RAM이 어떻게 배열되는지, 프로세서 속도, 각각의 프로세서가 얼마나 많은 코어를 갖는지 등을 식별하는 정보를 포함할 수 있지만, 이에 한정되지 않는다.
도 8의 설명을 계속하면, 동작 804는 가상 머신을 인스턴스화하기 위한 요청을 수신하는 단계를 나타내며, 요청은 가상 머신에 대한 특성을 나타낸다. 관리 시스템(502)은 예컨대 관리 시스템(502) 상에서 실행되는 사용자 인터페이스로부터 또는 컴퓨터 시스템(504-510)으로부터 가상 머신(240)을 시동하기 위한 요청을 수신할 수 있다. 이 예에서, 요청은 가상 머신(240)에 대한 원하는 특성을 포함할 수 있다. 예를 들어, 특성은 가상 머신에 할당되는 원하는 RAM의 양, 원하는 가상 프로세서들의 수 또는 원하는 I/O 장치들일 수 있다.
도면의 설명을 계속하면, 동작 806은 컴퓨터 시스템들의 물리적 토폴로지 및 가상 머신에 대한 특성에 기초하여, 가상 머신에 대한 가상 NUMA 노드들의 수를 결정하는 단계를 나타낸다. 관리 시스템(502)이 가상 머신에 대한 특성, 예컨대 6개의 가상 프로세서를 수신하면, 관리 시스템(502)은 이 정보와 데이터 센터(500) 내의 컴퓨터 시스템들의 토폴로지들을 설명하는 정보를 함께 이용하여, 가상 머신(240)에 대해 얼마나 많은 가상 NUMA 노드가 생성되어야 하는지를 결정할 수 있다. 예컨대, 관리 시스템(502)은 데이터 센터(500)에 대한 가상 NUMA 노드의 최적 크기를 결정한 후에, 원하는 특성을 갖는 가상 머신을 구축하기 위해 얼마나 많은 가상 NUMA 노드가 필요한지를 결정할 수 있다.
일반적으로, 가상 NUMA 노드의 크기는 데이터 센터(500) 내의 가상 머신의 동작에 영향을 미친다. 예컨대, 가상 NUMA 노드의 크기가 증가함에 따라, 예를 들어 메모리 및/또는 프로세서들에서, 가상 NUMA 노드의 이식성은 감소한다. 또는, 달리 말하면, 큰 가상 NUMA 노드들은 가상 머신을 이식시키기가 더 어려워질 수 있다. 이것은 가상 NUMA 노드가 가상 NUMA 노드를 실현하기에 충분한 "플랫" 자원들을 갖는 NUMA 노드 또는 컴퓨터 시스템에 할당되는 것이 필요하기 때문이 발생한다. 예를 들어, 가상 NUMA 노드가 너무 큰 경우, 예를 들어 너무 많은 RAM 또는 너무 많은 가상 프로세서를 갖는 경우, 이 가상 NUMA 노드는 데이터 센터(500) 내의 더 작은 NUMA 노드들과 어울리지 못할 수 있을 것이며, 따라서 가상 머신을 이식시키는 능력이 제한된다. 더욱이, 더 큰 가상 NUMA 노드가 단순히 다수의 더 작은 NUMA 노드들에 할당되는 경우, 로컬 메모리 및 원격 메모리 액세스 시간들 사이에 존재하는 차이로 인해, 또한 게스트 운영 체제가 로컬 대 원격 메모리 액세스 시간들의 차이를 나타내는 정보를 포함하지 않을 수 있기 때문에, 가상 머신의 성능이 저하될 것이다.
한편, 가상 NUMA 노드의 크기가 감소함에 따라, 게스트 운영 체제의 성능이 악영향을 받을 수 있다. 이러한 비효율은 게스트 운영 체제가 애플리케이션들 및 그 자신의 실행을 단일 가상 NUMA 노드들로 분리하려고 시도하기 때문에 발생할 수 있다. 이 경우에 게스트 운영 체제는 제한될 것이고, 성능이 감소할 것이다.
따라서, 일 실시예에서, 관리 시스템(502)은 데이터 센터(500)에 대한 최적 가상 NUMA 노드 크기를 결정함으로써 이식성과 효율 사이의 균형을 맞출 수 있다. 예컨대, 일 실시예에서, 관리 시스템(502)의 논리 프로세서는 프로그램을 실행하여, 데이터 센터 내의 NUMA 노드의 평균 크기, 예컨대 논리 프로세서들의 평균 수, RAM의 평균 양 등을 결정하고, 가상 NUMA 노드의 크기를 시스템 내의 평균 NUMA 노드와 동일하거나 그보다 작게 설정할 수 있다. 다른 실시예에서, 프로그램은 가상 NUMA 노드의 크기를 데이터 센터(500) 내의 가장 작은 NUMA 노드보다 약간 작게 설정하도록 구성될 수 있다. 가상 NUMA 노드의 크기는 평균 크기 또는 최소 크기보다 약간 작게 설정될 수 있으며, 따라서 컴퓨터 시스템이 과중하게 커미트되는 경우에, 둘 이상의 가상 NUMA 노드가 단일 NUMA 노드에 할당될 수 있다. 구체적인 예에서, 최소 NUMA 노드가 4개의 논리 프로세서 및 8 기가바이트의 RAM을 갖는 경우, 가상 NUMA 노드의 크기는 예를 들어 2개의 가상 프로세서 및 4 기가바이트의 RAM으로 설정될 수 있다.
가상 NUMA 노드의 크기가 결정되면, 그리고 이전 단락의 예를 계속 설명하면, 가상 NUMA 노드의 크기와 원하는 특성을 함께 이용하여 가상 머신(240)을 생성한다. 예컨대, 사용자가 10 기가바이트의 RAM을 갖는 6 프로세서 가상 머신을 원하는 것으로 지시하고, 가상 NUMA 노드가 2개의 프로세서 및 4 기가바이트의 RAM을 갖는 경우, 관리 시스템(502)은 가상 머신이 3개의 가상 NUMA 노드를 포함할 것임을 지시하는 구성 파일을 생성할 수 있다.
도 8의 설명을 계속하면, 동작 808은 요청을 데이터 센터 내의 컴퓨터 시스템으로 전송하는 단계를 나타내며, 요청은 결정된 수의 가상 NUMA 노드를 갖는 가상 머신을 인스턴스화하도록 컴퓨터 시스템에게 지시한다. 구성 파일이 생성되면, 관리 시스템(502)은 가상 머신(240)을 인스턴스화할 데이터 센터(500) 내의 컴퓨터 시스템을 선택하고, 구성 파일을 선택된 컴퓨터 시스템으로 전송한다. 예컨대, 관리 시스템(502)은 어느 컴퓨터 시스템들이 가상 머신을 수용할 수 있는지, 예컨대 어느 컴퓨터가 가상 머신을 실행할 물리적 자원들을 갖는지 그리고 어느 컴퓨터 시스템이 최저 작업 부하를 갖는지를 결정하고, 가상 머신(240)을 그 컴퓨터로 전송할 수 있다. 동일 또는 다른 실시예에서, 사용자는 가상 머신(240)에 대한 우선 순위를 지시할 수 있는데, 예컨대 더 중요한 가상 머신들에 이들의 상대적 중요성을 나타내는 정보가 첨부될 수 있다. 이 예에서, 관리 시스템(502)은 높은 우선 순위의 가상 머신들을 더 낮은 작업 부하들을 갖는 컴퓨터 시스템들로 전송하도록 구성될 수 있으며, 더 적은 컴퓨터 시스템들 상에 더 낮은 우선 순위의 가상 머신들을 통합하려고 시도할 수 있다. 이 예에서, 가상 머신은 더 높은 우선 순위의 가상 머신을 위한 공간을 만들기 위해 컴퓨터 시스템으로부터 "밀려날" 수도 있다.
이제, 도 9를 참조하면, 이 도면은 동작들 910-914를 포함하는 도 8의 동작 절차의 대안적인 실시예를 도시한다. 동작 910을 참조하면, 이 동작은 컴퓨터 시스템이 스트레스를 받고 있음을 지시하는 신호를 수신하고, 컴퓨터 시스템에게 가상 머신을 제2 컴퓨터 시스템으로 전송하도록 지시하는 신호를 컴퓨터 시스템으로 전송하는 단계를 나타낸다. 예를 들어 그리고 도 5를 참조하면, 관리 시스템(502)은 예컨대 컴퓨터 시스템(504)과 같은 컴퓨터 시스템으로부터 신호를 수신할 수 있다. 신호는 컴퓨터 시스템의 자원들이 스트레스를 받고 있음을 지시할 수 있다. 이 예에서, 가상 머신에 할당되는 RAM의 양은 유동적일 수 있다. 즉, RAM의 양은 실행 시간 동안에 조정될 수 있다. 예컨대, 컴퓨터 시스템(504)의 자원들은 컴퓨터 시스템이 많은 수의 가상 머신 또는 과중한 작업 부하들을 갖는 가상 머신들을 실행하고 있다는 사실로 인해 오버커미트될 수 있다. 이러한 상황에서, 컴퓨터 시스템(504)의 하이퍼바이저는 컴퓨터 시스템이 메모리 부족 상태에 있음을 지시하는 신호를 관리 시스템(502)으로 전송할 수 있는데, 예를 들어 신호는 가상 머신들 내에서 상당한 페이징이 발생하고 있거나, 페이징되지 않는 메모리 할당들은 실패할 수도 있다는 것을 지시할 수 있다. 다른 예에서는, 게스트 운영 체제(220) 및 임의의 가상 머신(220) 내의 작업 부하를 실행하는 데에 수용 불가하게 긴 양의 시간이 걸린다. 이러한 예에서, 관리 시스템(502)은 가상 머신(240)을 수용할 수 있는 다른 컴퓨터를 찾음으로써 스트레스 받는 컴퓨터 시스템(504)의 작업 부하를 줄이고, 컴퓨터 시스템(504)에게 가상 머신(240)을 새로운 컴퓨터 시스템, 예컨대 컴퓨터 시스템(506)으로 이식시키라고 지시하는 신호를 컴퓨터 시스템(504)으로 전송하도록 구성될 수 있다. 하이퍼바이저(202)는 신호를 수신할 수 있으며, 가상 머신(240)을 새로운 컴퓨터 시스템, 예를 들어 컴퓨터 시스템(506, 508 또는 510)으로 이식시킬 수 있다.
도 9의 설명을 계속하면, 동작 912는 컴퓨터 시스템에게 가상 머신을 제1 NUMA 노드로부터 제2 NUMA 노드로 이동시키라고 지시하는 신호를 컴퓨터 시스템으로 전송하는 단계를 나타낸다. 예를 들어 그리고 도 5를 참조하면, 관리 시스템(502)은 컴퓨터 시스템(504)에게 가상 머신을 하나의 NUMA 노드로부터 다른 NUMA 노드로 이동시키라고 지시하는 신호를 컴퓨터 시스템으로 전송할 수 있다. 이 예에서, 컴퓨터 시스템(504)의 아키텍처는 도 7의 컴퓨터(700)의 아키텍처와 유사할 수 있다. 도 7의 하이퍼바이저(202)는 그에게 가상 머신(240)을 하나의 NUMA 노드로부터 다른 NUMA 노드로, 예컨대 NUMA 노드 704로부터 702로 이동시키라고 지시하는 신호를 수신할 수 있다. 이 예에서는, 게이트 OS(220) 내의 메모리 압력이 높거나, 가상 프로세서들(230A-D)에 대한 하이퍼바이저 스레드들이 논리 프로세서들(212E, 212G) 상에서 충분히 빠르게 스케줄되지 못할 수 있다. 이 예에서, 관리 시스템(502)은 데이터 센터(500)를 스캐닝하여, 가상 머신(240)이 예를 들어 NUMA 노드 702로 이동되어야 하는 것으로 결정할 수 있으며, 하이퍼바이저(202)는 가상 NUMA 노드들(606, 608)을 NUMA 노드(702)에 재할당할 수 있다.
일 실시예에서, 동작 806은 데이터 센터에서 최고 NUMA 비율을 결정하는 단계를 나타내는 동작 914를 포함할 수 있다. 예컨대, 이 실시예에서, 관리 시스템(502)의 프로세서는 프로그램을 실행하여, 데이터 센터(500) 내에 존재하는 최고 NUMA 비율을 결정하고, 가상 머신(240)에 대한 가상 NUMA 노드들의 수를 결정할 때 이 정보를 이용할 수 있다. 예컨대, NUMA 비율은 원격 대 로컬 메모리의 액세스 사이의 프로세서 사이클들의 비용 비율이다. 2 대 1의 NUMA 비율은 특정 원격 메모리 어드레스에 액세스하는 것이 로컬 메모리 어드레스에 액세스하는 것보다 2배 많은 프로세서 사이클을 필요로 한다는 것을 의미한다. 일 실시예에서, 관리 시스템(502)은 데이터 센터(500)에서 검출된 최고 NUMA 비율을 이용하여, 가상 NUMA 노드들(606-608)에 의해 보고되는 NUMA 비율을 설정할 수 있다. 이러한 정보는 구성 파일 내에 저장되고, 가상 머신을 인스턴스화할 컴퓨터 시스템으로 전송될 수 있다. 하이퍼바이저(202)는 가상 NUMA 노드들(606-608)에 대한 NUMA 비율을 지시하는 데이터 구조를 가상 머신의 펌웨어 테이블 내에 생성할 수 있으며, 게스트 운영 체제(220) 또는 모놀리식 애플리케이션이 부팅할 때, NUMA 비율을 이용하여, 스레드 스케줄링 결정들을 행할 수 있다.
이제, 도 10을 참조하면, 이 도면은 동작들 1000-1006을 포함하는 동작 절차를 나타낸다. 동작 1000은 동작 절차를 시작하며, 동작 1002는 가상 머신을 인스턴스화하기 위한 요청을 수신하는 단계를 나타낸다. 예컨대 그리고 도 6 및 7을 참조하면, 하이퍼바이저(202)는 가상 머신(240)과 같은 가상 머신을 생성하기 위한 요청을 수신할 수 있다. 예컨대, 요청은 관리 시스템(502), 도 2 또는 3의 부모 파티션 등으로부터 수신될 수 있다. 요청은 새로운 가상 머신에 대한 것일 수 있거나, 이전에 저장된 가상 머신을 인스턴스화하기 위한 요청일 수 있다. 가상 머신이 새로운 가상 머신인 본 발명의 일 실시예에서, 가상 머신(240)의 특성은 예를 들어 관리자에 의해 설정될 수 있다. 관리자는 가상 머신이 처음에 얼마나 많은 메모리를 가져야 하는지, 가상 머신이 다른 가상 머신들에 대해 어떤 타입의 우선 순위를 가져야 하는지, 가상 머신이 얼마나 많은 가상 프로세서를 가져야 하는지, 가상 머신이 어떤 타입의 I/O 장치들을 가져야 하는지 등을 설정할 수 있다.
동작 1004를 참조하면, 이 동작은 복수의 가상 NUMA 노드를 포함하는 토폴로지를 갖는 가상 머신을 생성하는 단계를 나타내며, 복수의 가상 NUMA 노드 각각은 적어도 하나의 가상 프로세서 및 소정 범위의 게이트 물리 어드레스들을 포함하고, 가상 머신의 토폴로지는 컴퓨터 시스템의 물리 토폴로지와 무관하게 생성된다. 예컨대, 하이퍼바이저(202)는 요청에 응답하여 복수의 가상 NUMA 노드(606-608)를 갖는 가상 머신(240)을 구축할 수 있다. 도 6을 참조하면, 가상 NUMA 노드들(606-608) 각각은 하나 이상의 가상 프로세서들(230A-D) 및 게스트 물리 어드레스들(614, 616)을 가질 수 있다. 이 실시예에서, 가상 NUMA 노드들(606-605)은 기반 하드웨어의 토폴로지와 무관하게 생성될 수 있다. 즉, 가상 머신의 토폴로지는 도 6 및 7에 도시된 바와 같은 기반 하드웨어와 무관하다. 따라서, 이 실시예에서, 각각의 가상 머신의 토폴로지는 가상 머신을 실행하는 컴퓨터 시스템의 기반 물리 토폴로지와 분리된다.
도 10의 설명을 계속하면, 동작 1006은 가상 NUMA 노드들을 포함하는 가상 머신을 인스턴스화하는 단계를 나타낸다. 일 실시예에서, 하이퍼바이저(202)는 논리 프로세스를 실행할 수 있으며, 복수의 가상 NUMA 노드를 갖는 가상 머신이 인스턴스화될 수 있다. 예를 들어 그리고 도 6 및/또는 도 7을 참조하면, 가상 NUMA 노드들(606-608)을 갖는 가상 머신(240)이 컴퓨터 시스템(600 또는 700)에 의해 실행될 수 있다. 가상 머신(240)의 게스트 물리 어드레스들은 RAM으로부터의 시스템 물리 어드레스들로 백킹될 수 있으며, 가상 프로세서들은 하나 이상의 논리 프로세서들에 의해 백킹될 수 있다. 예컨대, 게스트 물리 어드레스들(614)의 블록들은 시스템 물리 어드레스들(622)의 블록들로 백킹될 수 있으며, 게스트 물리 어드레스들(616)의 블록들은 시스템 물리 어드레스들(624)의 블록들에 의해 백킹될 수 있다. 이어서, 하이퍼바이저 스레드들은 가상 프로세서들을 백킹하는 논리 프로세서들 상에서 스케줄될 수 있으며, 가상 프로세서들을 지시하는 명령어들이 실행될 수 있다. 가상 머신이 인스턴스화된 후에, 게스트 운영 체제(220)는 가상 NUMA 노드(606)의 가상 프로세서(230A) 상에서 실행할 프로세스를 스케줄할 수 있다. 이 예에서, 게스트 운영 체제(220)의 메모리 관리자는 게스트 물리 어드레스들의 범위를 선택하고, 어드레스들의 범위를 프로세스에 할당할 수 있다. 이 예에서, 게스트 운영 체제(220)는 가상 NUMA 노드(606)로부터 게스트 물리 어드레스들을 선택하도록 구성될 수 있다. 이 경우, 가상 머신이 더 작은 부분들로 분할되어 컴퓨터 시스템 전역에 분산된다는 사실로 인해, 가상 머신을 이식/복원하는 능력이 향상된다.
일 실시예에서, 가상 머신 BIOS 또는 부트 펌웨어는 가상 머신의 토폴로지, 예컨대 가상 머신이 가상 NUMA 노드들을 갖는지의 여부, 임의의 가상 NUMA 노드의 크기 및 가상 NUMA 노드들에 대한 NUMA 비율들을 모놀리식 애플리케이션의 게스트 운영 체제에게 설명할 수 있다. 데이터 구조가 처리될 수 있고, 게스트 OS 또는 애플리케이션은 가상 NUMA 노드들의 존재를 이용하도록 그 자신을 구성할 수 있다. 예를 들어, 게스트 운영 체제(220)는 NUMA를 알지 못하는 애플리케이션의 스레드들을 가상 NUMA 노드와 유사화하려고(affinitize) 시도하며, 따라서 애플리케이션의 실행은 로컬 상태로 유지될 수 있다. 다른 예에서는, SQL 서버와 같은 데이터베이스 관리 프로그램이 가상 NUMA 노드들에 국한된 록들(locks)을 할당할 수 있으며, 데이터베이스는 가상 NUMA 노드들 전반에 판독/기입 요청들을 분산시킬 수 있다. 또 다른 예에서, 게스트 운영 체제(220)는 가상 머신 내의 각각의 가상 NUMA 노드에 대한 페이지 풀들을 생성할 수 있다.
이제, 도 11을 참조하면, 이 도면은 동작들 1108-1124를 포함하는 도 10의 동작 절차(1000)의 대안적인 실시예를 나타낸다. 도면에 도시된 바와 같이, 동작 1108은 가상 머신을 저장하는 단계를 나타낸다. 예컨대, 일 실시예에서, 가상 머신(240)은 하드 드라이브와 같은 컴퓨터 판독 가능 저장 매체에 저장될 수 있다. 일 실시예에서, 가상 머신(240)은 그 내용 전체가 본 명세서에 참조로서 통합된 "병행 가상 머신 스냅샷 및 복원(Concurrent Virtual Machine Snapshots and Restore)"이라는 제목의 미국 특히 출원 제11/487,031호에 설명된 기술들을 이용하여 저장될 수 있다.
도 11의 설명을 계속하면, 동작 1110은 가상 머신을 원격 컴퓨팅 시스템으로 전송하는 단계를 나타낸다. 예컨대 그리고 도 5를 참조하면, 일 실시예에서 가상 머신(240)의 상태가 하나 이상의 구성 파일들 내에 저장되며, 다른 컴퓨터 시스템으로, 예컨대 컴퓨터 시스템 504로부터 506으로 전송될 수 있다. 컴퓨터 시스템(506)의 하이퍼바이저는 파일 또는 파일들을 판독하며, 가상 머신(240)을 인스턴스화할 수 있다. 특정 예에서, 컴퓨터 시스템(504)의 하이퍼바이저는 가상 머신(240)을 컴퓨터 시스템(506)으로 전송하기로 결정할 수 있다.
가상 머신 토폴로지는 가상 머신을 이식 및 복원하는 능력에 영향을 미친다. 구체적으로, 기반 하드웨어의 토폴로지가 검출되게 하는 능력 및 가상 NUMA 노드들의 크기는 가상 머신이 얼마나 양호하게 실행되는지 그리고 가상 머신이 쉽게 이식될 수 있는지에 영향을 미친다. 예컨대, 가상 NUMA 노드들의 크기는 가상 머신을 이식하는 능력에 영향을 미친다. 즉, 가상 NUMA 노드의 크기가 커짐에 따라, 가상 NUMA 노드의 이식성이 감소하고, 가상 NUMA 노드의 크기가 감소함에 따라, 가상 머신의 성능도 감소한다. 게다가, 기반 컴퓨터의 토폴로지를 검출할 수 있는 가상 머신들은, NUMA를 아는 운영 체제들 및 애플리케이션들이 이들이 검출하는 제1 토폴로지에 기초하여 부트 시간에 그 자신들을 최적화하고, 이러한 최적화들은 가상 머신이 미래에 이식될 수 있는 컴퓨터들 상에서 양호하게 동작하지 못할 수 있다는 사실로 인해 쉽게 이식되지 못한다. 따라서, 게스트 운영 체제의 부팅시에 가상 NUMA 노드들을 게스트 운영 체제에 노출시킴으로써, 운영 체제는 NUMA 노드들을 사용하도록 최적화될 수 있다. 가상 NUMA 노드들의 크기를 올바르게 조절함으로써, 가상 머신은 데이터 센터(500) 내의 많은 다양한 컴퓨터 시스템들에 대해 최적화될 수 있다.
예를 들어 그리고 도 6을 참조하면, 가상 머신(240)은 둘 이상의 가상 NUMA 노드(606, 608)를 포함할 수 있다. 하이퍼바이저(202)는 논리 프로세서들(212A-D)로 가상 프로세서들(230A-D)을 백킹할 수 있다. 게스트 운영 체제(220)가 부팅될 때, 게스트 운영 체제는 가상 NUMA 노드들(606, 608)을 검출할 수 있으며, 프로세스들의 스케줄링 및 실행을 최적화하도록 구성될 수 있다. 소정 시간 후에, 가상 머신(240)은 도 7에 도시된 것과 유사한 물리 토폴로지를 갖는 컴퓨터 시스템으로 이식될 수 있다. 도 7의 하이퍼바이저(202)는 논리 프로세서들(212A, 212B)로 가상 프로세서들(230A, 230B)을 백킹하고, 논리 프로세서들(212E, 212F)로 가상 프로세서들(230C, 230D)을 백킹할 수 있다. 게스트 운영 체제(220)는 기반 컴퓨터 토폴로지가 SMP로부터 NUMA로 변경된 경우에도 그가 도 6의 컴퓨터 시스템 상에서 실행될 때 동작했던 것과 동일한 방식으로 계속 동작할 수 있다.
도 11의 설명을 계속하면, 동작 1112는 가상 머신을 하나 이상의 다른 NUMA 노드들로 이식하는 단계를 나타낸다. 예를 들어 그리고 도 7을 참조하면, 하이퍼바이저(202)는 NUMA 노드(702) 상에서 실행하도록 가상 NUMA 노드들(606-608)을 스케줄하고, 예컨대 NUMA 노드(704) 상에서 실행하도록 가상 NUMA 노드들(606-605)을 얼마간 더 늦게 스케줄할 수 있다. 이 예에서 하이퍼바이저(202)는 NUMA 노드(702)가 스트레스를 받을 때 가상 머신(240)을 이식할 수 있다. 예컨대, 게스트 운영 체제(220, 222)는 가상 머신(240)이 메모리 부족 상태에 있음을 지시하는 신호들을 생성할 수 있다. 이 예에서, 하이퍼바이저(202)는 가상 머신(240)을 다른 NUMA 노드로 이동시킴으로써 NUMA 노드(702) 상의 작업 부하를 줄이도록 구성될 수 있다.
도 11의 설명을 계속하면, 동작 1114는 가상 머신을 제1 NUMA 노드에 할당하고, 가상 머신을 복수의 NUMA 노드 중 제2 NUMA 노드로 이식하는 단계를 나타낸다. 예를 들어 그리고 도 7을 참조하면, 일 실시예에서 가상 머신(240)은 하이퍼바이저(202)에 의해 제1 NUMA 노드(606)에 할당될 수 있다. 즉, 하이퍼바이저 명령어들이 논리 프로세서들(212A-212I)에 의해 실행될 수 있고, 가상 머신(240)이 예를 들어 NUMA 노드(702)에 할당될 수 있다. 이 예에서, 가상 프로세서들(230A-230D)은 논리 프로세서들(212A-212D) 상에서 실행되도록 설정될 수 있다. 얼마간 더 늦게, 예를 들어 다른 가상 머신이 초기화되거나 오프라인으로 취해질 때, 하이퍼바이저(202)가 논리 프로세서(212A-212I)에 의해 실행될 수 있고, 논리 프로세서는 가상 머신(240)을 컴퓨터 시스템(700) 내의 다른 NUMA 노드로 이식할 수 있다. 구체적으로 그리고 이전 예를 참조하면, 하이퍼바이저(202)가 실행될 수 있고, 가상 머신(240)이 NUMA 노드(702)로부터 NUMA 노드(704)로 이동될 수 있다. 예컨대, 가상 프로세서(230A, 230B)가 논리 프로세서(212E)에 할당될 수 있고, 가상 프로세서(230C, 230D)가 논리 프로세서(212F)에 할당될 수 있으며, 게스트 물리 어드레스들(614, 616)이 시스템 물리 어드레스들(622-624)에 의해 백킹될 수 있다.
도 11의 설명을 계속하면, 동작 1116은 복수의 가상 NUMA 노드에 대한 NUMA 비율들을 생성하고, 복수의 NUMA 노드에 대한 NUMA 비율들을 게스트 운영 체제에 보고하는 단계를 나타낸다. 예컨대, 일 실시예에서, 하이퍼바이저(202)는 가상 NUMA 노드들(606-608)에 대한 NUMA 비율들을 생성할 수 있고, 이 정보는 도 6 또는 도 7의 게스트 운영 체제(220)에 보고될 수 있다. 일 실시예에서, 하이퍼바이저(202)는 가상 NUMA 노드들에 대한 NUMA 비율을 지시하는 데이터 구조를 가상 머신의 펌웨어 테이블 내에 생성할 수 있으며, 게스트 운영 체제(220)가 부팅될 때, 게스트 운영 체제는 테이블을 판독하고 그 정보를 이용하여 스레드 스케줄링 결정을 행할 수 있다. 예컨대, 게스트 운영 체제 또는 NUMA를 아는 애플리케이션은 NUMA 비율들을 이용하여, 원격 NUMA 노드로부터의 자원들을 사용할지의 여부를 결정할 수 있다. 예컨대, 운영 체제는 실행될 준비가 된 대기 스레드를 가질 수 있다. 이 예에서, 운영 체제는 이상적인 프로세서가 자유롭게 되는 소정량의 시간을 기다리도록 구성될 수도 있으며, 그렇지 않은 경우에 운영 체제는 소정의 NUMA 비율보다 작은 NUMA 비율을 갖는 원격 프로세서 상에 스레드를 스케줄할 것이다. 이 경우, 스케줄러가 기다릴 시간의 양은 NUMA 비율에 의존한다.
이제, 동작 1118을 참조하면, 이 동작은 제1 가상 NUMA 노드로부터 제1 게스트 물리 어드레스에 그리고 제2 가상 NUMA 노드로부터 제2 게스트 물리 어드레스에 액세스하기 위한 요청을 게스트 운영 체제로부터 수신하고, 제2 게스트 물리 어드레스에 액세스하는 데 필요한 액세스 시간을 증가시키고, 제1 및 제2 게스트 물리 어드레스들에 액세스하는 데 필요한 증가된 액세스 시간을 게스트 운영 체제에 보고하는 단계를 나타낸다. 동작 1116과 유사하게, NUMA 비율들이 게스트 운영 체제(220)에 보고될 수 있지만, 이 실시예에서 게스트 운영 체제(220)는 NUMA 비율들이 정확한지를 결정하기 위한 명령어들을 포함할 수 있다. 즉, 게스트 운영 체제(220)는 메모리의 다양한 영역들에 대한 액세스 시간을 검사함으로써 보고된 NUMA 비율들이 잘못되었는지를 파악하기 위해 검사할 수 있다. 이 예에서, 하이퍼바이저(202)는 가상 머신(240)의 부트 프로세스를 모니터링하도록 구성될 수 있으며, 하이퍼바이저(202)는 특정 가상 NUMA 노드에 원격인 메모리에 대한 액세스를 느리게 할 수 있다. 즉, 하이퍼바이저(202)는 가상 프로세서(230A)가 게스트 물리 어드레스들(614)에 액세스할 때보다 가상 프로세서(230A)가 게스트 물리 어드레스들(616)에 액세스할 때에 더 큰 액세스 시간들을 생성하도록 구성될 수 있다. 이 예에서는, 게스트 물리 어드레스들(614, 616)이 시스템 물리 어드레스들(622, 624)과 같은 단일 NUMA 노드로부터의 시스템 물리 어드레스들에 의해 백킹될 수 있으므로, 지연은 허구일 수 있다.
일 실시예에서, 하이퍼바이저(202)는 가상 프로세서(230A)의 가상 프로세서 페이지 테이블들로부터 원격 게스트 물리 어드레스들(616)을 제거함으로써 액세스 시간을 증가시킬 수 있다. 가상 프로세서(230A)는 원격 메모리에 액세스하려고 시도할 때 실패할 것이며, 하이퍼바이저 명령어들이 실행될 수 있다. 이어서, 하이퍼바이저(202)는 페이지 테이블들을 고정시키고, 메모리 어드레스로부터의 반환 신호를 원하는 시간 양 동안 지연시킬 수 있다. 가상 프로세서(230A)가 원격 메모리에 액세스에 하는 데에 얼마나 오래 걸리는지를 식별하는 반환 신호 정보를 수신할 때 지연이 발생한다.
도 11의 설명을 계속하면, 동작 1120은 단일 NUMA 노드로부터 취득된 시스템 메모리 어드레스들을 가상 머신에 할당하고, 가상 프로세서를 실행할 프로세서를 할당하는 단계를 나타내며, 프로세서는 NUMA 노드로부터 취득된다. 예를 들어, 일 실시예에서, 가상 NUMA 노드들(606-608)을 생성하는 단계는 시스템 물리 어드레스들을 할당하고, 가상 머신(240)을 백킹하도록 동일 NUMA 노드(702)로부터의 프로세서를 할당하는 단계를 포함할 수 있다. 예를 들어 그리고 도 7을 참조하면, 하이퍼바이저(202)는 NUMA 노드(702)의 시스템 물리 어드레스들(622-624)의 하나 이상의 블록들을 취득하고, 이들을 이용하여 게스트 물리 어드레스들(622-624)을 백킹할 수 있다. 게다가, 하이퍼바이저(202)는 가상 프로세서들(230A)을 예컨대 NUMA 노드(702)의 하나 이상의 논리 프로세서들(212A-212D)과 유사화할 수 있다.
도 11의 설명을 계속하면, 동작 1122는 복수의 가상 NUMA 노드 중 제1 가상 NUMA 노드를 컴퓨터 시스템의 제1 NUMA 노드에 맵핑하고, 복수의 가상 NUMA 노드 중 제2 가상 NUMA 노드를 컴퓨터 시스템의 제2 NUMA 노드에 맵핑하는 단계를 나타낸다. 예를 들어 그리고 도 7을 참조하면, 논리 프로세서(212A)와 같은 논리 프로세서는 하이퍼바이저 명령어들을 실행할 수 있고, 가상 NUMA 노드(606, 608)와 같은 가상 NUMA 노드들을 NUMA 노드(702)와 같은 NUMA 노드와 유사화할 수 있다. 구체적으로, 논리 프로세서는 명령어들을 실행하여, 시스템 물리 어드레스들(622)로 게스트 물리 어드레스들(614-616)을, 시스템 물리 어드레스들(624)로 게스트 물리 어드레스들(618-620)을, 논리 프로세서들(212A-D)로 가상 프로세서들(230A-D, 232A-D)을 백킹할 수 있다.
동작 1124와 관련하여, 이 동작은 복수의 가상 NUMA 노드 중 제1 가상 NUMA 노드를 컴퓨터 시스템의 제1 NUMA 노드에 맵핑하고, 복수의 가상 NUMA 노드 중 제2 가상 NUMA 노드를 컴퓨터 시스템의 제2 NUMA 노드에 맵핑하는 단계를 나타낸다. 예를 들어 그리고 도 7을 참조하면, 논리 프로세서(212A)와 같은 논리 프로세서는 하이퍼바이저 명령어들을 실행할 수 있으며, 가상 NUMA 노드(606)를 NUMA 노드(702)에 할당하고, 가상 NUMA 노드(608)를 NUMA 노드(704)에 할당할 수 있다. 이 예에서, 하이퍼바이저(202)가 실행될 때, 하이퍼바이저 스케줄러는 논리 프로세서들(212A-D) 상에 가상 프로세서들(230A-B)로부터의 스레드들을 스케줄하고, 논리 프로세서들(212E-G) 상에 가상 프로세서(230C 또는 D)로부터의 스레드들을 스케줄할 수 있다.
도 12를 참조하면, 이 도면은 도 9의 동작 절차의 대안적인 실시예를 나타낸다. 도면에 도시된 바와 같이, 절차는 일 실시예에서 가상 NUMA 노드들에 대한 NUMA 비율들이 복수의 컴퓨터 시스템을 포함하는 데이터 센터에서 검출된 중간 NUMA 비율보다 큰 것을 나타내는 동작 1226을 포함할 수 있다. 예를 들어 그리고 도 5를 참조하면, 관리 시스템(502)은 데이터 센터(500) 내의 컴퓨터 시스템들(504-510)의 물리적 토폴로지를 취득할 수 있다. 일 실시예에서, 프로그램은 각각의 컴퓨터 시스템(504-510)에 조회할 수 있고, 컴퓨터들은 정보로 응답할 수 있다. 관리 시스템(502)이 각각의 컴퓨터 시스템의 토폴로지를 설명하는 정보를 취득하면, 프로그램은 어느 컴퓨터 시스템이 최고, 예컨대 최악의 NUMA 비율을 갖는지 그리고/또는 기초가 되는 중간 NUMA 비율을 결정할 수 있다. 관리 시스템(502)은 이 정보를 이용하여, 가상 NUMA 노드들이 부팅시에 게스트 운영 체제들에 보고할 NUMA 비율을 생성할 수 있다. 이 예에서, 관리 시스템(502)은 가상 NUMA 비율을 데이터 센터(500)에서 검출된 최고 NUMA 비율보다 크거나 중간값으로 설정할 수 있으며, 따라서 NUMA 노드들의 절반보다 높거나, 임의의 가상 머신이 실제로 실행될 임의의 물리 토폴로지보다 나쁜 상태를 반영하도록 가상 NUMA 노드들을 구성할 수 있다.
이제, 도 13을 참조하면, 이 도면은 동작들 1300, 1302 및 1304를 포함하는 본 발명의 양태들을 실시하기 위한 동작 절차를 나타낸다. 동작 1300이 동작 절차를 개시하며, 동작 1302는 가상 머신에 대한 복수의 가상 NUMA 노드를 생성하는 단계를 나타내며, 복수의 가상 NUMA 노드의 각각은 적어도 하나의 가상 프로세서 및 적어도 하나의 게스트 물리 어드레스들의 메모리 블록을 포함하고, 복수의 가상 NUMA 노드는 임의의 컴퓨터 시스템의 물리 토폴로지와 무관하게 생성된다. 일 실시예에서, 도 6 또는 도 7의 212E와 같은 논리 프로세서는 하이퍼바이저 명령어들을 실행하며, 프로세서는 가상 머신(240)에 대한 가상 NUMA 노드들(606-608)을 생성할 수 있다. 전술한 것과 유사하게, 가상 머신(240)은 예를 들어 가상 머신의 특성들에 따라 더 많은 가상 NUMA 노드를 가질 수 있으며, 예를 들어 가상 머신(240)은 둘 이상의 가상 NUMA 노드를 가질 수 있다. 하이퍼바이저(202)는 게스트 물리 어드레스들을 각각의 가상 NUMA 노드(606, 608)에 할당할 수 있다. 전술한 것과 마찬가지로, 가상 머신(240)의 토폴로지는 컴퓨터 시스템의 기반 토폴로지와 무관하다. 예컨대, 가상 머신이 최후에 인스턴스화되는 컴퓨터 시스템은 도 6의 컴퓨터 시스템(600) 또는 도 7의 컴퓨터 시스템(700)과 유사한 토폴로지를 가질 수 있다.
도 13의 설명을 계속하면, 동작 1304는 컴퓨터 시스템 상에서 복수의 가상 NUMA 노드를 포함하는 가상 머신을 인스턴스화하는 단계를 나타낸다. 도 6 또는 도 7을 참조하면, 하이퍼바이저(202)는 가상 머신(240)에 대한 가상 NUMA 노드 구성을 생성한 후에 컴퓨터 시스템에 의해 실행될 수 있다. 즉, 하이퍼바이저(202)는 가상 머신(240)을 시동하기 위한 명령어들을 스케줄한다. 일례에서, 하이퍼바이저(202)는 가상 머신(240)으로부터의 명령어들을 실행할 하나 이상의 논리 프로세서들을 선택할 수 있으며, 하이퍼바이저(202)는 논리 프로세서 상에서 가상 머신(240)을 인스턴스화하기 위한 명령어들을 스케줄할 수 있다. 가상 머신 명령어들은 프로세서에 의해 실행될 수 있으며, 가상 머신(240)이 인스턴스화될 수 있다. 이 예에서, 가상 머신(240)은 둘 이상의 가상 NUMA 노드를 설명하는 부트 테이블들을 포함할 수 있다. 게스트 운영 체제 또는 모놀리식 애플리케이션이 부팅되어, 부트 테이블들로부터 가상 NUMA 노드들을 발견하고, 명령어들을 실행하여, 가상 머신(240)의 토폴로지를 이용하도록 그들 자신을 구성할 수 있다.
이제, 도 14를 참조하면, 이 도면은 추가적인 동작들 1406-1412를 포함하는 도 13의 동작 절차(1300)의 대안적인 실시예를 나타낸다. 이제, 동작 1406을 참조하면, 이 동작은 컴퓨터 시스템의 NUMA 노드 상에서 실행하도록 제1 가상 NUMA 노드 및 제2 가상 NUMA 노드를 할당하는 단계를 나타낸다. 예를 들어 그리고 도 7을 참조하면, 일 실시예에서 컴퓨터 시스템은 NUMA 노드들을 포함하는 아키텍처를 가질 수 있다. 이 예에서, 하이퍼바이저(202)는 복수의 가상 NUMA 노드 중 2개를 신호 NUMA 노드에 할당할 수 있다. 예를 들어 그리고 도 7을 참조하면, 하이퍼바이저 명령어들이 논리 프로세서에 의해 실행될 수 있고, 가상 NUMA 노드(606, 608)가 예를 들어 NUMA 노드(702) 상에서 실행되도록 할당될 수 있다.
도 14의 설명을 계속하면, 동작 1408은 컴퓨터 시스템의 제1 NUMA 노드 상에서 실행하도록 복수의 가상 NUMA 노드 중 제1 가상 NUMA 노드를 할당하고, 컴퓨터 시스템의 제2 NUMA 노드 상에서 실행하도록 복수의 가상 NUMA 노드 중 제2 가상 NUMA 노드를 할당하는 단계를 나타낸다. 예를 들어 그리고 도 7을 참조하면, 논리 프로세서(212B)와 같은 논리 프로세서는 하이퍼바이저 명령어들을 실행할 수 있으며, 가상 NUMA 노드(606)를 NUMA 노드(704)에 할당하고, 가상 NUMA 노드(608)를 NUMA 노드(706)에 할당할 수 있다. 이 예에서, 하이퍼바이저(202)가 실행될 때, 하이퍼바이저 스케줄러는 논리 프로세서들(212F, 212G) 상에 가상 프로세서들(230A-B)로부터의 스레드들을 스케줄하고, 논리 프로세서들(212H, 212I) 상에 가상 프로세서(230C 또는 D)로부터의 스레드들을 스케줄할 수 있다.
도 14의 설명을 계속하면, 동작 1410은 복수의 가상 NUMA 노드에 대한 NUMA 비율들을 생성하고, NUMA 비율들을 게스트 운영 체제에 보고하는 단계를 나타낸다. 예컨대, 일 실시예에서 하이퍼바이저(202)는 가상 NUMA 노드들에 대한 NUMA 비율들을 생성할 수 있고, 이 정보는 도 6 또는 도 7의 게스트 운영 체제(220)에 보고될 수 있다.
도 14의 설명을 계속하면, 동작 1412는 가상 머신과 관련된 NUMA 노드가 오버커미트된 것으로 결정하고, 가상 머신을 하나 이상의 다른 NUMA 노드들로 이식하는 단계를 나타낸다. 예를 들어 그리고 도 7을 참조하면, 하이퍼바이저(202)는 NUMA 노드(702) 상에서 실행하도록 가상 NUMA 노드들(606-612)을 스케줄할 수 있다. 즉, NUMA 노드(702)는 가상 머신들(240, 242)을 호스트하도록 구성될 수 있다. 이 예에서, 하이퍼바이저(202)는 NUMA 노드(702)가 스트레스를 받고 있음을 지시하는 신호를 수신할 수 있다. 예컨대, 게스트 운영 체제(220, 222)는 가상 머신들(240-242)이 메모리 부족 상태에 있음을 지시하는 신호들을 생성할 수 있다. 이 예에서, 하이퍼바이저(202)는 가상 머신을 다른 NUMA 노드로 이동시킴으로써 NUMA 노드(702) 상의 작업 부하를 줄이도록 구성될 수 있다. 이 예에서, 하이퍼바이저(202)는 NUMA 노드(704) 상에서 실행하도록 가상 머신(240)의 가상 NUMA 노드들(606, 608)을 재할당할 수 있다.
전술한 설명은 예들 및/또는 동작 도면들을 통해 시스템들 및/또는 프로세스들의 다양한 실시예들을 설명하였다. 그러한 블록도들 및/또는 예들이 하나 이상의 기능들 및/또는 동작들을 포함하는 한, 그러한 블록도들 또는 예들 내의 각각의 기능 및/또는 동작은 광범위한 하드웨어, 소프트웨어, 펌웨어 또는 이들의 사실상 임의의 조합에 의해 개별적으로 그리고/또는 공동으로 구현될 수 있다는 것을 이 분야의 기술자들은 이해할 것이다.
본 명세서에서 본 발명의 특정 양태들이 도시되고 설명되었지만, 본 명세서에서 설명된 본 발명 및 그의 더 넓은 양태들로부터 벗어나지 않고, 본 명세서에서의 가르침들에 기초하여, 변경들 및 개량들이 이루어질 수 있으며, 따라서 첨부된 청구항들은 본 명세서에서 설명된 본 발명의 진정한 사상 및 범위 내에 있는 바와 같은 모든 그러한 변경들 및 개량들을 그들의 범위 내에 포함하여야 한다는 것을 이 분야의 기술자들은 알 것이다.
Claims (20)
- 관리 시스템(502)에 의해, 데이터 센터(500) 내의 컴퓨터 시스템(504-510)의 물리적 토폴로지(physical topology)를 나타내는 정보를 수신하는 단계,
가상 머신(240)을 인스턴스화하기 위한 요청을 수신하되, 상기 요청은 상기 가상 머신에 대한 특성을 나타내는 단계,
상기 컴퓨터 시스템(504-510)의 상기 물리적 토폴로지 및 상기 가상 머신(240)에 대한 상기 특징에 기초하여, 상기 가상 머신(240)에 대한 가상 NUMA 노드의 수를 결정하는 단계, 및
요청을 상기 데이터 센터(500) 내의 컴퓨터 시스템(504)으로 전송하되, 상기 요청은 상기 컴퓨터 시스템(504)에게 상기 결정된 수의 가상 NUMA 노드를 갖는 상기 가상 머신(240)을 인스턴스화하도록 지시하는 단계를 포함하는
방법.
- 제 1 항에 있어서,
상기 컴퓨터 시스템(504-510)이 스트레스를 받고 있음을 나타내는 신호를 수신하는 단계, 및
상기 컴퓨터 시스템(504)에게 상기 가상 머신(240)을 제2 컴퓨터 시스템(506, 508, 또는 510)으로 전송하도록 지시하는 신호를 상기 컴퓨터 시스템(504)으로 전송하는 단계를 더 포함하는
방법.
- 제 1 항에 있어서,
상기 컴퓨터 시스템(504)에게 상기 가상 머신을 제1 NUMA 노드(704)로부터 제2 NUMA 노드(702)로 이동시키라고 지시하는 신호를 상기 컴퓨터 시스템(504)으로 전송하는 단계를 더 포함하는
방법.
- 제 1 항에 있어서,
상기 가상 머신(240)에 대한 상기 가상 NUMA 노드의 수를 결정하는 단계는 상기 데이터 센터(500) 내의 최고 NUMA 비율을 결정하는 단계를 더 포함하는
방법.
- 가상 머신(240)을 인스턴스화하기 위한 요청을 수신하기 위한 회로,
상기 가상 머신(240)을 생성하되, 상기 가상 머신(240)은 복수의 가상 NUMA 노드(606, 608)를 포함하는 토폴로지를 갖고, 상기 복수의 가상 NUMA 노드 각각은 적어도 하나의 가상 프로세서(230A-D) 및 소정 범위의 게스트 물리 어드레스(614, 616)를 포함하며, 상기 가상 머신(240)의 상기 토폴로지는 상기 컴퓨터 시스템(700)의 상기 물리적 토폴로지와 무관하게 생성되는 회로, 및
상기 가상 NUMA 노드(606, 608)를 포함하는 상기 가상 머신(240)을 인스턴스화하기 위한 회로를 포함하는
컴퓨터 시스템.
- 제 5 항에 있어서,
상기 가상 머신(240)을 저장하기 위한 회로를 더 포함하는
컴퓨터 시스템.
- 제 5 항에 있어서,
상기 가상 머신(240)을 원격 컴퓨팅 시스템(506)으로 전송하기 위한 회로를 더 포함하는
컴퓨터 시스템.
- 제 5 항에 있어서,
상기 가상 머신(240)을 하나 이상의 다른 NUMA 노드(704)로 이식하기 위한 회로를 더 포함하는
컴퓨터 시스템.
- 제 5 항에 있어서,
상기 가상 머신(240)을 제1 NUMA 노드(702)에 할당하기 위한 회로; 및
상기 가상 머신(240)을 상기 복수의 NUMA 노드 중 제2 NUMA 노드(704)로 이식하기 위한 회로를 더 포함하는
컴퓨터 시스템.
- 제 5 항에 있어서,
상기 복수의 가상 NUMA 노드(606-608)에 대한 NUMA 비율을 생성하기 위한 회로, 및
체제(220)에 보고하기 위한 회로를 더 포함하는
컴퓨터 시스템.
- 제 5 항에 있어서,
제1 가상 NUMA 노드(614)로부터의 제1 게스트 물리 어드레스 및 제2 가상 NUMA 노드(616)로부터의 제2 게스트 물리 어드레스에 액세스하기 위한 게스트 운영 체제(220)로부터의 요청을 수신하기 위한 회로,
상기 제2 게스트 물리 어드레스(616)에 액세스하는 데 필요한 액세스 시간을 증가시키기 위한 회로, 및
상기 제1 및 제2 게스트 물리 어드레스(616)에 액세스하는 데 필요한 상기 증가된 액세스 시간을 상기 게스트 운영 체제(220)에 보고하기 위한 회로를 더 포함하는
컴퓨터 시스템.
- 제 5 항에 있어서,
단일 NUMA 노드(702)로부터 취득된 시스템 메모리 어드레스(622-624)를 상기 가상 머신(240)에 할당하기 위한 회로, 및
상기 가상 프로세서(230A)를 실행할 프로세서(212A)를 할당하되, 상기 프로세서(212A)는 상기 NUMA 노드(702)로부터 취득되는 회로를 더 포함하는
컴퓨터 시스템.
- 제 5 항에 있어서,
상기 가상 머신(240)을 인스턴스화하기 위한 상기 회로는
상기 복수의 가상 NUMA 노드 중 제1 가상 NUMA 노드(606)를 상기 컴퓨터 시스템(700)의 제1 NUMA 노드(702)에 맵핑하기 위한 회로, 및
상기 복수의 가상 NUMA 노드 중 제2 가상 NUMA 노드(608)를 상기 컴퓨터 시스템(700)의 제1 NUMA 노드(702)에 맵핑하기 위한 회로를 더 포함하는
컴퓨터 시스템.
- 제 5 항에 있어서,
상기 가상 머신(240)을 인스턴스화하기 위한 상기 회로는
상기 복수의 가상 NUMA 노드 중 제1 가상 NUMA 노드를 상기 컴퓨터 시스템의 제1 NUMA 노드에 맵핑하기 위한 회로, 및
상기 복수의 가상 NUMA 노드 중 제2 가상 NUMA 노드를 상기 컴퓨터 시스템의 제2 NUMA 노드에 맵핑하기 위한 회로를 더 포함하는
컴퓨터 시스템.
- 제 10 항에 있어서,
상기 가상 NUMA 노드(606-608)에 대한 상기 NUMA 비율은 데이터 센터(500)에서 검출된 중간 NUMA 비율보다 크며, 상기 데이터 센터(500)는 복수의 컴퓨터 시스템(504-510)을 포함하는
컴퓨터 시스템.
- 프로세서 실행 가능한 명령어를 포함하는 컴퓨터 판독 가능 저장 매체에 있어서,
가상 머신(240)에 대한 복수의 가상 NUMA 노드(606-608)를 생성하되, 상기 복수의 가상 NUMA 노드(606-608) 각각은 적어도 하나의 가상 프로세서(212E) 및 게스트 물리 어드레스의 적어도 하나의 메모리 블록을 포함하며, 상기 복수의 가상 NUMA 노드는 임의의 컴퓨터 시스템의 물리적 토폴로지와 무관하게 생성되는 명령어, 및
컴퓨터 시스템(700) 상에서 상기 복수의 가상 NUMA 노드(606-608)를 포함하는 상기 가상 머신(240)을 인스턴스화하기 위한 명령어를 포함하는
컴퓨터 판독 가능 저장 매체.
- 제 16 항에 있어서,
상기 컴퓨터 시스템(700)의 NUMA 노드(702) 상에서 실행하도록 제1 가상 NUMA 노드(606) 및 제2 가상 NUMA 노드(608)를 할당하기 위한 명령어를 더 포함하는
컴퓨터 판독 가능 저장 매체.
- 제 17 항에 있어서,
상기 컴퓨터 시스템(700)의 제1 NUMA 노드(704) 상에서 실행하도록 상기 복수의 가상 NUMA 노드 중 제1 가상 NUMA 노드(606)를 할당하기 위한 명령어, 및
상기 컴퓨터 시스템(700)의 제1 NUMA 노드(702) 상에서 실행하도록 상기 복수의 가상 NUMA 노드 중 제2 가상 NUMA 노드(608)를 할당하기 위한 명령어를 더 포함하는
컴퓨터 판독 가능 저장 매체.
- 제 17 항에 있어서,
상기 복수의 가상 NUMA 노드(606-608)에 대한 NUMA 비율을 생성하기 위한 명령어, 및
상기 NUMA 비율을 게스트 운영 체제(220)에 보고하기 위한 명령어를 더 포함하는
컴퓨터 판독 가능 저장 매체.
- 제 17 항에 있어서,
상기 가상 머신(240)과 관련된 NUMA 노드(702)가 오버커미트(overcommit)된 것으로 결정하기 위한 명령어, 및
상기 가상 머신(240)을 하나 이상의 다른 NUMA 노드(704)로 이식하기 위한 명령어를 더 포함하는
컴퓨터 판독 가능 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/412,258 US9535767B2 (en) | 2009-03-26 | 2009-03-26 | Instantiating a virtual machine with a virtual non-uniform memory architecture |
US12/412,258 | 2009-03-26 | ||
PCT/US2010/028038 WO2010111151A2 (en) | 2009-03-26 | 2010-03-19 | Virtual non-uniform memory architecture for virtual machines |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120008026A true KR20120008026A (ko) | 2012-01-25 |
KR101722276B1 KR101722276B1 (ko) | 2017-03-31 |
Family
ID=42781792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020117022331A KR101722276B1 (ko) | 2009-03-26 | 2010-03-19 | 가상 머신들을 위한 가상 불균일 메모리 아키텍처 |
Country Status (9)
Country | Link |
---|---|
US (2) | US9535767B2 (ko) |
EP (1) | EP2411916B1 (ko) |
JP (1) | JP5507661B2 (ko) |
KR (1) | KR101722276B1 (ko) |
CN (1) | CN102365626B (ko) |
BR (1) | BRPI1009274A2 (ko) |
CA (2) | CA2753229C (ko) |
RU (1) | RU2571366C2 (ko) |
WO (1) | WO2010111151A2 (ko) |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9535767B2 (en) | 2009-03-26 | 2017-01-03 | Microsoft Technology Licensing, Llc | Instantiating a virtual machine with a virtual non-uniform memory architecture |
US9529636B2 (en) | 2009-03-26 | 2016-12-27 | Microsoft Technology Licensing, Llc | System and method for adjusting guest memory allocation based on memory pressure in virtual NUMA nodes of a virtual machine |
US8780923B2 (en) * | 2010-01-15 | 2014-07-15 | Dell Products L.P. | Information handling system data center bridging features with defined application environments |
US8904382B2 (en) * | 2010-06-17 | 2014-12-02 | International Business Machines Corporation | Creating instances of cloud computing environments |
US9733963B2 (en) | 2010-09-17 | 2017-08-15 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Optimizing virtual graphics processing unit utilization |
US8667441B2 (en) | 2010-11-16 | 2014-03-04 | International Business Machines Corporation | Clock optimization with local clock buffer control optimization |
KR101145144B1 (ko) * | 2010-11-23 | 2012-05-14 | 한국과학기술정보연구원 | 가상머신 스케줄링 방법 및 시스템 |
US9250863B1 (en) * | 2010-12-28 | 2016-02-02 | Amazon Technologies, Inc. | Managing virtual machine migration |
US8725483B2 (en) | 2011-01-19 | 2014-05-13 | International Business Machines Corporation | Minimizing the maximum required link capacity for three-dimensional interconnect routing |
US8621057B2 (en) * | 2011-03-07 | 2013-12-31 | International Business Machines Corporation | Establishing relationships among elements in a computing system |
US9183030B2 (en) * | 2011-04-27 | 2015-11-10 | Microsoft Technology Licensing, Llc | Virtual processor allocation techniques |
US20130007370A1 (en) * | 2011-07-01 | 2013-01-03 | Oracle International Corporation | Method and apparatus for minimizing working memory contentions in computing systems |
US8856495B2 (en) * | 2011-07-25 | 2014-10-07 | International Business Machines Corporation | Automatically routing super-compute interconnects |
US9164809B2 (en) * | 2012-09-04 | 2015-10-20 | Red Hat Israel, Ltd. | Virtual processor provisioning in virtualized computer systems |
US20140229940A1 (en) * | 2013-02-14 | 2014-08-14 | General Dynamics C4 Systems, Inc. | Methods and apparatus for synchronizing multiple processors of a virtual machine |
US10114662B2 (en) * | 2013-02-26 | 2018-10-30 | Red Hat Israel, Ltd. | Updating processor topology information for virtual machines |
US10061622B2 (en) * | 2013-02-26 | 2018-08-28 | Red Hat Israel, Ltd. | Updating memory topology information for virtual machines |
US9348654B2 (en) * | 2013-11-19 | 2016-05-24 | International Business Machines Corporation | Management of virtual machine migration in an operating environment |
JP6287321B2 (ja) * | 2014-02-24 | 2018-03-07 | 富士通株式会社 | 情報処理装置、情報処理方法、および情報処理プログラム |
US9417902B1 (en) * | 2014-03-24 | 2016-08-16 | Amazon Technologies, Inc. | Managing resource bursting |
US9223574B2 (en) * | 2014-03-27 | 2015-12-29 | International Business Machines Corporation | Start virtual execution instruction for dispatching multiple threads in a computer |
US10146634B1 (en) | 2014-03-31 | 2018-12-04 | EMC IP Holding Company LLC | Image restore from incremental backup |
WO2015193947A1 (ja) * | 2014-06-16 | 2015-12-23 | 株式会社日立製作所 | 物理計算機及び仮想計算機移行方法 |
US10079797B2 (en) * | 2014-10-29 | 2018-09-18 | Vmware, Inc. | Methods, systems and apparatus to remotely start a virtual machine |
CN105677454B (zh) * | 2014-11-20 | 2019-08-27 | 华为技术有限公司 | 计算资源的整合方法、装置和系统 |
US10140218B2 (en) * | 2015-01-15 | 2018-11-27 | Red Hat Israel, Ltd. | Non-uniform memory access support in a virtual environment |
US9959233B2 (en) * | 2015-04-28 | 2018-05-01 | Red Hat Israel, Ltd. | NUMA-aware root bus selection |
US9798497B1 (en) * | 2015-06-08 | 2017-10-24 | Skytap | Storage area network emulation |
US10241674B2 (en) * | 2015-12-11 | 2019-03-26 | Vmware, Inc. | Workload aware NUMA scheduling |
JP6645275B2 (ja) * | 2016-03-04 | 2020-02-14 | 富士通株式会社 | 情報処理装置、仮想マシン移動方法、および仮想マシン制御プログラム |
US10095550B2 (en) | 2016-10-19 | 2018-10-09 | International Business Machines Corporation | Performance-based reallocating of logical processing units to sockets of a computer system |
CN114218012A (zh) * | 2017-04-17 | 2022-03-22 | 伊姆西Ip控股有限责任公司 | 用于在集群系统中备份和恢复数据的方法和系统 |
CN107168771A (zh) * | 2017-04-24 | 2017-09-15 | 上海交通大学 | 一种非一致性内存访问架构下的虚拟机调度装置及方法 |
EP3693848A1 (en) * | 2017-04-28 | 2020-08-12 | LZLabs GmbH | Containerized deployment of microservices based on monolithic legacy applications |
US10649943B2 (en) * | 2017-05-26 | 2020-05-12 | Dell Products, L.P. | System and method for I/O aware processor configuration |
US12117940B2 (en) | 2017-12-05 | 2024-10-15 | Red Hat, Inc. | Host address space identifier for non-uniform memory access locality in virtual machines |
US10613990B2 (en) * | 2017-12-05 | 2020-04-07 | Red Hat, Inc. | Host address space identifier for non-uniform memory access locality in virtual machines |
US10430227B2 (en) * | 2018-01-09 | 2019-10-01 | Microsoft Technology Licensing, Llc | Fast instantiation of virtual machines in distributed computing systems |
US10664323B2 (en) | 2018-03-07 | 2020-05-26 | Microsoft Technology Licensing, Llc | Live migration of virtual machines in distributed computing systems |
US10901911B2 (en) | 2018-11-21 | 2021-01-26 | Microsoft Technology Licensing, Llc | Faster computer memory access by reducing SLAT fragmentation |
US10503543B1 (en) * | 2019-02-04 | 2019-12-10 | Cohesity, Inc. | Hosting virtual machines on a secondary storage system |
WO2021086839A1 (en) * | 2019-10-30 | 2021-05-06 | TidalScale, Inc. | Goal-directed software-defined numa working set management |
CN114090223A (zh) * | 2020-08-24 | 2022-02-25 | 北京百度网讯科技有限公司 | 访存请求调度方法、装置、设备以及存储介质 |
US11740921B2 (en) * | 2020-11-23 | 2023-08-29 | Google Llc | Coordinated container scheduling for improved resource allocation in virtual computing environment |
US11928502B2 (en) * | 2021-04-29 | 2024-03-12 | VMware LLC | Optimized networking thread assignment |
US20230132345A1 (en) * | 2021-10-27 | 2023-04-27 | Dell Products L.P. | Numa node virtual machine provisioning system |
KR102676385B1 (ko) * | 2021-11-01 | 2024-06-19 | 한화시스템 주식회사 | 가상화 서버에서 가상머신 cpu 자원을 관리하는 장치 및 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050120160A1 (en) * | 2003-08-20 | 2005-06-02 | Jerry Plouffe | System and method for managing virtual servers |
KR20060071307A (ko) * | 2004-12-21 | 2006-06-26 | 마이크로소프트 코포레이션 | 가상 기기들을 위한 프로세서 토폴로지를 노출시키는시스템 및 방법 |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04274519A (ja) * | 1991-02-28 | 1992-09-30 | Nec Corp | プログラム高速化自動実行方式 |
US6075938A (en) * | 1997-06-10 | 2000-06-13 | The Board Of Trustees Of The Leland Stanford Junior University | Virtual machine monitors for scalable multiprocessors |
US6785888B1 (en) * | 1997-08-29 | 2004-08-31 | International Business Machines Corporation | Memory allocator for a multiprocessor computer system |
US6336170B1 (en) * | 1998-10-13 | 2002-01-01 | International Business Machines Corporation | Method and system in a distributed shared-memory data processing system for determining utilization of shared-memory included within nodes by a designated application |
US7140020B2 (en) * | 2000-01-28 | 2006-11-21 | Hewlett-Packard Development Company, L.P. | Dynamic management of virtual partition computer workloads through service level optimization |
US7433951B1 (en) | 2000-09-22 | 2008-10-07 | Vmware, Inc. | System and method for controlling resource revocation in a multi-guest computer system |
US7035963B2 (en) | 2000-12-27 | 2006-04-25 | Intel Corporation | Method for resolving address space conflicts between a virtual machine monitor and a guest operating system |
JP2002202959A (ja) * | 2000-12-28 | 2002-07-19 | Hitachi Ltd | 動的な資源分配をする仮想計算機システム |
US6785773B2 (en) * | 2001-03-29 | 2004-08-31 | International Business Machines Corporation | Verification of global coherence in a multi-node NUMA system |
US6842857B2 (en) * | 2001-04-12 | 2005-01-11 | International Business Machines Corporation | Method and apparatus to concurrently boot multiple processors in a non-uniform-memory-access machine |
US7536697B2 (en) | 2001-06-19 | 2009-05-19 | Accenture Global Services Gmbh | Integrating enterprise support systems |
US6886079B2 (en) * | 2001-06-21 | 2005-04-26 | International Business Machines Corporation | Dynamic history based mechanism for the granting of exclusive data ownership in a non-uniform memory access (NUMA) computer system |
US7159216B2 (en) * | 2001-11-07 | 2007-01-02 | International Business Machines Corporation | Method and apparatus for dispatching tasks in a non-uniform memory access (NUMA) computer system |
DE10159522A1 (de) | 2001-12-05 | 2003-06-26 | G L I Global Light Ind Gmbh | Verfahren zur Herstellung von LED-Körpern |
US7451459B2 (en) * | 2003-05-05 | 2008-11-11 | Microsoft Corporation | Systems, methods, and apparatus for indicating processor hierarchical topology |
US8417913B2 (en) * | 2003-11-13 | 2013-04-09 | International Business Machines Corporation | Superpage coalescing which supports read/write access to a new virtual superpage mapping during copying of physical pages |
US20050132362A1 (en) * | 2003-12-10 | 2005-06-16 | Knauerhase Robert C. | Virtual machine management using activity information |
US7231504B2 (en) * | 2004-05-13 | 2007-06-12 | International Business Machines Corporation | Dynamic memory management of unallocated memory in a logical partitioned data processing system |
EP1769353A2 (en) * | 2004-05-21 | 2007-04-04 | Computer Associates Think, Inc. | Method and apparatus for dynamic memory resource management |
US20060184938A1 (en) * | 2005-02-17 | 2006-08-17 | Intel Corporation | Method, apparatus and system for dynamically reassigning memory from one virtual machine to another |
US7334076B2 (en) | 2005-03-08 | 2008-02-19 | Microsoft Corporation | Method and system for a guest physical address virtualization in a virtual machine environment |
US20060206891A1 (en) * | 2005-03-10 | 2006-09-14 | International Business Machines Corporation | System and method of maintaining strict hardware affinity in a virtualized logical partitioned (LPAR) multiprocessor system while allowing one processor to donate excess processor cycles to other partitions when warranted |
RU47116U1 (ru) | 2005-04-06 | 2005-08-10 | Оао Акб "Автобанк-Никойл" | Система поддержки распределенного документооборота |
US7299337B2 (en) | 2005-05-12 | 2007-11-20 | Traut Eric P | Enhanced shadow page table algorithms |
US20070100845A1 (en) | 2005-10-31 | 2007-05-03 | Juergen Sattler | Customer relationship management integration system and method |
US7945913B2 (en) * | 2006-01-19 | 2011-05-17 | International Business Machines Corporation | Method, system and computer program product for optimizing allocation of resources on partitions of a data processing system |
US7596654B1 (en) * | 2006-01-26 | 2009-09-29 | Symantec Operating Corporation | Virtual machine spanning multiple computers |
US7984438B2 (en) * | 2006-02-08 | 2011-07-19 | Microsoft Corporation | Virtual machine transitioning from emulating mode to enlightened mode |
US20070250784A1 (en) | 2006-03-14 | 2007-10-25 | Workstone Llc | Methods and apparatus to combine data from multiple computer systems for display in a computerized organizer |
JP4702127B2 (ja) | 2006-03-22 | 2011-06-15 | 日本電気株式会社 | 仮想計算機システム及びその物理リソース再構成方法並びにプログラム |
US7434002B1 (en) * | 2006-04-24 | 2008-10-07 | Vmware, Inc. | Utilizing cache information to manage memory access and cache utilization |
US8607009B2 (en) | 2006-07-13 | 2013-12-10 | Microsoft Corporation | Concurrent virtual machine snapshots and restore |
US8453132B2 (en) * | 2006-07-28 | 2013-05-28 | Hewlett-Packard Development Company, L.P. | System and method for recompiling code based on locality domain and thread affinity in NUMA computer systems |
US20080071642A1 (en) | 2006-09-15 | 2008-03-20 | Leiba Lior | System and method for connecting external product catalog data to business applications |
US7788464B2 (en) * | 2006-12-22 | 2010-08-31 | Microsoft Corporation | Scalability of virtual TLBs for multi-processor virtual machines |
US8195866B2 (en) * | 2007-04-26 | 2012-06-05 | Vmware, Inc. | Adjusting available persistent storage during execution in a virtual computer system |
CN100489815C (zh) | 2007-10-25 | 2009-05-20 | 中国科学院计算技术研究所 | 一种内存共享的系统和装置及方法 |
CN101271401B (zh) | 2008-04-23 | 2010-04-14 | 北京航空航天大学 | 一种具备单一系统映像的服务器机群系统 |
US8799892B2 (en) * | 2008-06-09 | 2014-08-05 | International Business Machines Corporation | Selective memory donation in virtual real memory environment |
US8037280B2 (en) * | 2008-06-11 | 2011-10-11 | Vmware, Inc. | System and method for improving memory locality of virtual machines |
US8490094B2 (en) * | 2009-02-27 | 2013-07-16 | International Business Machines Corporation | Non-uniform memory access (NUMA) enhancements for shared logical partitions |
US9535767B2 (en) * | 2009-03-26 | 2017-01-03 | Microsoft Technology Licensing, Llc | Instantiating a virtual machine with a virtual non-uniform memory architecture |
US9529636B2 (en) | 2009-03-26 | 2016-12-27 | Microsoft Technology Licensing, Llc | System and method for adjusting guest memory allocation based on memory pressure in virtual NUMA nodes of a virtual machine |
-
2009
- 2009-03-26 US US12/412,258 patent/US9535767B2/en active Active
-
2010
- 2010-03-19 CA CA2753229A patent/CA2753229C/en active Active
- 2010-03-19 EP EP10756651.5A patent/EP2411916B1/en active Active
- 2010-03-19 CA CA3003789A patent/CA3003789C/en active Active
- 2010-03-19 BR BRPI1009274A patent/BRPI1009274A2/pt not_active Application Discontinuation
- 2010-03-19 RU RU2011139102/08A patent/RU2571366C2/ru not_active IP Right Cessation
- 2010-03-19 WO PCT/US2010/028038 patent/WO2010111151A2/en active Application Filing
- 2010-03-19 KR KR1020117022331A patent/KR101722276B1/ko active IP Right Grant
- 2010-03-19 CN CN2010800137822A patent/CN102365626B/zh active Active
- 2010-03-19 JP JP2012502135A patent/JP5507661B2/ja active Active
-
2016
- 2016-11-22 US US15/359,561 patent/US10908968B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050120160A1 (en) * | 2003-08-20 | 2005-06-02 | Jerry Plouffe | System and method for managing virtual servers |
KR20060071307A (ko) * | 2004-12-21 | 2006-06-26 | 마이크로소프트 코포레이션 | 가상 기기들을 위한 프로세서 토폴로지를 노출시키는시스템 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
BRPI1009274A2 (pt) | 2016-03-08 |
RU2571366C2 (ru) | 2015-12-20 |
EP2411916B1 (en) | 2020-08-19 |
US9535767B2 (en) | 2017-01-03 |
CN102365626B (zh) | 2013-05-29 |
RU2011139102A (ru) | 2013-03-27 |
EP2411916A4 (en) | 2013-01-30 |
WO2010111151A3 (en) | 2011-01-13 |
CA3003789C (en) | 2020-09-15 |
WO2010111151A2 (en) | 2010-09-30 |
US20170075617A1 (en) | 2017-03-16 |
JP5507661B2 (ja) | 2014-05-28 |
EP2411916A2 (en) | 2012-02-01 |
US20100251234A1 (en) | 2010-09-30 |
JP2012521611A (ja) | 2012-09-13 |
CA3003789A1 (en) | 2010-09-30 |
CA2753229A1 (en) | 2010-09-30 |
KR101722276B1 (ko) | 2017-03-31 |
CA2753229C (en) | 2018-10-30 |
US10908968B2 (en) | 2021-02-02 |
CN102365626A (zh) | 2012-02-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101722276B1 (ko) | 가상 머신들을 위한 가상 불균일 메모리 아키텍처 | |
RU2569805C2 (ru) | Виртуальная архитектура неоднородной памяти для виртуальных машин | |
US8443376B2 (en) | Hypervisor scheduler | |
US8898664B2 (en) | Exposure of virtual cache topology to a guest operating system | |
US11422750B2 (en) | Computer program product, system, and method to manage access to storage resources from multiple applications | |
JP2016541072A5 (ko) | ||
KR20130100689A (ko) | 확장가능한 맞춤형 균형 부하 물리 메모리 관리 구조 | |
US20100100892A1 (en) | Managing hosted virtualized operating system environments | |
CN116324706A (zh) | 分离式存储器池分配 | |
US7979660B2 (en) | Paging memory contents between a plurality of compute nodes in a parallel computer | |
US20190278715A1 (en) | System and method for managing distribution of virtual memory over multiple physical memories |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
N231 | Notification of change of applicant | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20200227 Year of fee payment: 4 |