KR20060071307A - 가상 기기들을 위한 프로세서 토폴로지를 노출시키는시스템 및 방법 - Google Patents

가상 기기들을 위한 프로세서 토폴로지를 노출시키는시스템 및 방법 Download PDF

Info

Publication number
KR20060071307A
KR20060071307A KR1020050103821A KR20050103821A KR20060071307A KR 20060071307 A KR20060071307 A KR 20060071307A KR 1020050103821 A KR1020050103821 A KR 1020050103821A KR 20050103821 A KR20050103821 A KR 20050103821A KR 20060071307 A KR20060071307 A KR 20060071307A
Authority
KR
South Korea
Prior art keywords
operating system
virtualizer
virtual
shared memory
memory location
Prior art date
Application number
KR1020050103821A
Other languages
English (en)
Inventor
에릭 피. 트러트
레네 안토니오 베가
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060071307A publication Critical patent/KR20060071307A/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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • 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/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Numerical Control (AREA)

Abstract

본 발명은 게스트 운영 체제가 현재 자신에게 할당된 호스트 자원들의 부분집합의 토폴로지(topology)를 인식하게 하는 것에 관한 것이다. 가상 기기 부팅 시점에서 SRAT(Static Resource Affinity Table)가 가상화기에 의해 이용되어 게스트(guest) 물리적 메모리 및 게스트 가상 프로세서들을 가상 노드로 그루핑(group)할 것이다. 그 이후에, 일 실시예에서, 가상 노드 후방의 호스트 가상 메모리는 필요한 경우 가상화기에 의해 변경될 수 있고, 이 가상화기는 그 가상 노드에서의 가상 프로세서들에 적절한 물리적 프로세서를 제공할 것이다.
토폴로지, 가상 기기, 운영 체제

Description

가상 기기들을 위한 프로세서 토폴로지를 노출시키는 시스템 및 방법{SYSTEMS AND METHODS FOR EXPOSING PROCESSOR TOPOLOGY FOR VIRTUAL MACHINES}
도 1은 본 발명의 양태가 포함될 수 있는 컴퓨터 시스템을 도시하는 블럭도.
도 2는 컴퓨터 시스템에 에뮬레이팅된 운영 환경을 위한 하드웨어 및 소프트웨어 아키텍처의 논리적 계층화를 도시하는 블럭도.
도 3a는 호스트 운영 체제가 (직접 또는 하이퍼바이저를 통해) 에뮬레이션을 수행하는 가상화된 컴퓨터 시스템을 도시하는 블럭도.
도 3b는 호스트 컴퓨터와 나란히 실행되는 가상 기기 모니터가 에뮬레이션을 수행하는 대안적인 가상화된 컴퓨팅 시스템을 도시하는 블럭도.
도 4는 본 발명의 몇몇의 실시예가 이용될 수 있는 멀티-코어 프로세서 및 NUMA 2-노드 시스템을 도시하는 블럭도.
도 5는 본 발명의 특정 실시예에 따라 가상화기가 가상 기기 메모리에서의 게스트 운영 체제에 동적인 프로세서 토폴로지 정보를 제공하는 한 방법을 도시하는 흐름도.
도 6은 본 발명의 몇몇의 실시예를 위한 2-열 공개(disclosing) 및 힌팅(hinting) 접근법을 도시하는 블럭도.
<도면의 주요 부분에 대한 부호의 설명>
104' : 가상 기기 모니터
104" : 호스트 운영 체제
402: 논리적 프로세서
406: 물리적 프로세서
416: 2개의 노드 시스템
602: 게스트 OS
604: OS 스케줄러
612: 가상 기기
622: 메모리
본 발명은 일반적으로 ("프로세서 가상화(virtualization)"라고도 알려진) 가상 기기 분야 및 가상 기기 환경에서 실행되는 운영 체제에 관한 것으로, 보다 상세히는 가상 기기의 프로세서 토폴로지(topology)를 가상 기기 상에서 실행되는 게스트 운영 체제에 노출시키는 시스템 및 방법에 관한 것이며, 상기 토폴로지는 호스트 컴퓨터 시스템 프로세서 및 메모리 자원의 할당에 기초하여 동적이다.
컴퓨터는 특정 집합의 시스템 명령어를 실행시키도록 설계된 범용 CPU 즉 "프로세서"를 포함한다. 유사한 아키텍처 또는 설계 사양들을 가지는 프로세서 그룹은 동일한 프로세서 계열(family)의 멤버들이라고 고려될 수 있다. 현재 프로세 서 계열들의 예는 아리조나주 피닉스 소재의 모토로라사가 제조한 모토로라 680X0 프로세서 계열, 캘리포니아주 서니베일 소재의 인텔사가 제조한 인텔 80X86 프로세서 계열, 및 모토로라사가 제조하고 캘리포니아주 쿠퍼티노 소재의 애플 컴퓨터사가 제조한 컴퓨터에 이용되는 파워PC(PowerPC) 프로세서 계열을 포함한다. 프로세서 그룹은 이들의 유사한 아키텍처 및 설계 고려사항 때문에 동일한 계열에 있을 수 있지만, 프로세서들은 이들의 클럭(clock) 속도 및 다른 성능 파라미터에 따라 계열 내에서 매우 다를 수 있다.
각각의 마이크로프로세서 계열은 프로세서 계열에 고유한 명령어들을 실행한다. 프로세서 또는 프로세서 계열이 실행할 수 있는 명령어의 총체적인 집합은 프로세서의 명령어 집합으로서 알려져 있다. 예로서, 인텔 80X86 프로세서 계열이 이용하는 명령어 집합은 파워PC 프로세서 계열이 이용하는 명령어 집합과 호환되지 않는다. 인텔 80X86 명령어 집합은 CISC(Complex Instruction Set Computer) 포맷에 기초한다. 모토로라 파워PC 명령어 집합은 RISC(Reduced Instruction Set Computer) 포맷에 기초한다. CISC 프로세서들은 많은 수의 명령어를 이용하며, 이 프로세서들 중 몇몇은 다소 복잡한 기능들을 수행할 수 있지만, 일반적으로 실행에 많은 클럭 싸이클을 요구한다. RISC 프로세서들은 적은 수의 이용가능한 명령어를 이용하여 훨씬 높은 속도로 실행되는 보다 간단한 집합의 기능을 수행한다.
컴퓨터 시스템들 간의 프로세서 계열의 고유성은 또한 통상적으로 컴퓨터 시스템들의 하드웨어 아키텍처의 다른 엘리먼트들 간에서 비호환성을 일으킨다. 인텔 80X86 프로세서 계열의 프로세서를 가지고 제조된 컴퓨터 시스템은 파워PC 프로 세서 계열의 프로세서를 가지고 제조된 컴퓨터 시스템의 하드웨어 아키텍처와 상이한 하드웨어 아키텍처를 가질 것이다. 프로세서 명령어 집합 및 컴퓨터 시스템의 하드웨어 아키텍처의 고유성 때문에, 애플리케이션 소프트웨어 프로그램들은 통상적으로 특정 운영 체제를 실행하는 특정 컴퓨터 시스템 상에서 실행되도록 작성된다.
가상 기기
컴퓨터 제조업체들은 컴퓨터 제조업체의 제품군과 관련된 마이크로프로세서 계열 상에서 소수의 애플리케이션을 실행하기 보다는 많은 애플리케이션을 실행시킴으로써 자신들의 시장 공유성을 극대화시키길 원한다. 컴퓨터 시스템 상에서 실행될 수 있는 애플리케이션 프로그램 및 운영 체제의 수를 확장시키기 위하여, 호스트라 칭하는 한 유형의 CPU를 가지는 소정의 컴퓨터가 이 호스트 컴퓨터로 하여금 게스트라 칭하는 관련되지 않은 유형의 CPU의 명령어를 에뮬레이팅(emulate)할 수 있게 하는 가상화기 프로그램을 포함할 수 있는 기술 분야가 개발되어 왔다. 그러므로, 호스트 컴퓨터는 하나 이상의 호스트 명령어가 소정의 게스트 명령어에 응답하여 호출되도록 할 수 있는 애플리케이션을 실행시킬 것이며, 이렇게 하여 호스트 컴퓨터는 자신만의 하드웨어 아키텍처용으로 설계된 소프트웨어 및 관련되지 않은 하드웨어 아키텍처를 가지는 컴퓨터들용으로 작성된 소프트웨어를 모두 실행시킬 수 있다.
보다 구체적인 예로서, 예를 들어, 애플 컴퓨터사가 제조한 컴퓨터 시스템이 PC-기반 컴퓨터 시스템용으로 작성된 프로그램 및 운영 체제를 실행시킬 수 있다. 가상화기 프로그램들을 이용하여 복수의 서로 호환되지 않는 운영 체제들을 하나의 CPU 상에서 동시에 실행시키는 것이 또한 가능할 수 있다. 후자와 같은 구성에서, 각 운영 체제는 다른 운영체제와 호환되지 않더라도, 가상화기 프로그램들은 몇 가지 운영 체제 각각을 호스팅할 수 있으므로 다른 호환되지 않은 운영 체제들이 동일한 호스트 컴퓨터 시스템에서 동시에 실행될 수 있게 한다.
게스트 컴퓨터 시스템이 호스트 컴퓨터 시스템 상에서 에뮬레이팅될 때, 게스트 컴퓨터 시스템은 단지 하나의 특정한 하드웨어 아키텍처의 동작의 순수한 소프트웨어 표현으로서 호스트 컴퓨터 시스템에 존재하기 때문에 이 게스트 컴퓨터 시스템을 "가상 기기"라 칭한다. 가상화기(virtualizer), 에뮬레이터, 직접-실행기, 가상 기기, 및 프로세서 에뮬레이션이란 용어는 때때로 본 기술 분야에서 숙련된 기술을 가진 자에 의해 알려지고 인식된 하나 또는 몇몇의 접근법을 이용하는 전체 컴퓨터 시스템의 하드웨어 아키텍처를 에뮬레이팅하거나 모방하는 능력을 지칭하는 데에 교환적으로 사용된다. 또한, 임의의 형태로 된 용어 "에뮬레이션"을 이용하는 것은 모두 이러한 폭넓은 의미를 전달하는 것을 의도하며 가상 기기에서 에뮬레이션의 명령어 실행 개념들과 운영 체제 명령어들의 직접 실행을 구별하는 것으로 의도하지 않는다. 그러므로, 예를 들면, 캘리포니아주의 샌 마티오(san mateo) 소재의 커넥틱스사(connectix corporation)가 제조한 가상 PC 소프트웨어는 (명령어 실행 에뮬레이션 및/또는 직접 실행에 의해) 인텔 80X86 펜티엄 프로세서 및 다양한 마더보드(motherboard) 컴포넌트와 카드들을 포함하는 전체적인 컴퓨터를 "에뮬레이팅"하고, 이들 컴포넌트의 동작은 호스트 기기 상에서 실행되고 있는 가상 기기에서 "에뮬레이팅"된다. 파워PC 프로세서를 구비한 컴퓨터 시스템과 같은, 호스트 컴퓨터의 하드웨어 아키텍처 및 운영 체제 소프트웨어 상에서 실행되는 가상화기 프로그램은 전체적인 게스트 컴퓨터 시스템의 동작을 모방한다.
가상화기 프로그램은 에뮬레이팅된 환경 내에서 실행되는 소프트웨어(예를 들면, 운영 체제, 애플리케이션, 등)가 전송한 명령어들과 호스트 기기의 하드웨어 아키텍처 간의 교환으로서 작용한다. 가상화기 프로그램은 물리적 컴퓨터 하드웨어에서 직접 실행되는 운영 체제인 (그리고 본 명세서에서 이하 보다 상세히 기술될 하이퍼바이저(hypervisor)를 포함할 수 있는) 호스트 운영 체제(HOS)일 수 있다. 대안으로, 에뮬레이팅된 환경은 또한 호스트 운영 체제와 관련하여 동작하고 나란히 실행될 수 있는 하드웨어 바로 상위에서 실행되는 소프트웨어 계층인 가상 기기 모니터(VMM)일 수 있으며, 이는 VMM이 가상화되는 하드웨어와 동일한 인터페이스들을 노출시킴으로써 호스트 기기의 자원 모두(및 특정 가상 자원들)를 가상화할 수 있다. 이러한 가상화에 의해 가상화기(및 호스트 컴퓨터 시스템 자체)는 자신의 상위에서 실행되는 운영 체제 계층들에게 표시되지 않게 될 수 있다.
요약하자면, 프로세서 에뮬레이션은 게스트 운영 체제가 물리적 하드웨어 및 호스트 운영 체제 모두를 포함하는 호스트 컴퓨터 시스템에서 실행되는 가상화기가 생성한 가상 기기 상에서 실행되도록 한다.
프로세서 및 메모리 토폴로지
현대 운영 체제 스케줄러들은 성능을 극대화시키기 위해 기기의 프로세서 및 메모리 토폴로지를 고려한다. 이는 일반적으로 시동 중에 이루어지며, 물리적 하 드웨어에서 실행되는 운영 체제에서는, 물리적 하드웨어의 프로세서 토폴로지가 일정하게 유지되기 때문에 이와 같이 이루어지는 것이 대개는 적절하다. 윈도우즈 운영 체제(윈도우즈 XP, 윈도우즈 2003) 및 다른 운영 체제들은 통상적으로 (a) BIOS SRAT(Static Resource Affinity Table) 내의 메모리 및 프로세서 노드 토폴로지 정보를 검사하는 방식 및 (b) 특정한 SMT(Simultaneous Multithreading, a.k.a. 하이퍼스레딩(hyperthreading)) 및 멀티코어 토폴로지(multicore topology)를 결정하기 위하여 자신에-포함된 프로세서 식별자 데이터(x86/x64 프로세서 내의 CPUID)를 판독하는 방식인 2가지 방식에 의하여 부팅 시에 시스템의 토폴로지를 결정한다.
본 명세서에서 사용된, 용어 "프로세서 토폴로지"는 넓게는 운영 체제에 의해 알려질 경우, 이론적으로 운영 체제가 그 관련된 프로세서 자원들을 더 잘 이용할 수 있게 할 수 있는 프로세서 및 관련된 메모리의 물리적 특징들을 참조하는 것으로 의도된다. 프로세서 토폴로지는 SMT, 멀티코어, 및 BIOS SRAT 데이터 및/또는 정보와 같은 정적인 프로세서 정보; 프로세서, 메모리, 및 I/O 자원 구성과 같은 정적인 NUMA 정보; 및 이들의 임의의 변형물을 포함할 수 있지만 이에 한정되지 않는다.
그러나, 가상 기기 환경에서 "호스팅 에이전트"(호스트 운영 체제, 가상 기기 모니터, 및/또는 하이퍼바이저)를 위한 물리적 프로세서 토폴로지는 일정하게 유지되는 반면, 가상화기, 즉 가상 기기에 할당되는 물리적 자원들은 시간이 지남에 따라 급속하게 변할 수 있어, 가상 기기에서 실행되는 게스트 운영 체제에 의해 이루어지는 토폴로지 가정들은 정확하지 않게 되며 그러므로 효과적이지 않게 된다.
토폴로지의 동적인 특성은 가상 프로세서에 대해 항상 동일한 물리적 프로세서 할당들을 사용하거나 특정 노드로 할당들을 제한함으로써 완화될 수 있지만, 이는 모든 호스트 자원을 최적으로 이용하게 하는 가상화기의 능력에 심각하고 부정적인 영향을 미치게 될 것이다. 그러므로, 본 기술 분야에서는 모든 호스트 자원을 최적으로 이용하게 하는 가상화기의 능력에 부정적인 영향을 미치지 않고 가상 토폴로지 변경에 대한 비효율성을 바로잡는 수단이 필요하다.
본 발명의 다양한 실시예는 게스트 운영 체제가 현재 자신에게 할당된 호스트 자원들의 부분집합의 토폴로지를 인식하게 하는 시스템 및 방법에 관한 것이다. 특정한 이들 실시예에서는, 가상 기기 부팅시에 SRAT(Static Resource Affinity Table)가 가상화기에 의해 이용되어 게스트 물리적 메모리 및 게스트 가상 프로세서들을 가상 노드로 그루핑(group)할 것이다. 그 이후에 가상 노드 후방의 호스트 물리적 메모리는 필요한 경우 가상화기에 의해 변경될 수 있고, 이 가상화기는 그 가상 노드에서의 가상 프로세서들에 적절한 물리적 프로세서들을 제공할 것이다.
상술한 발명이 이루고자 하는 기술적 과제 및 후술될 바람직한 실시예의 상세한 설명은 첨부된 도면에 관련하여 읽을 때에 보다 잘 이해된다. 본 발명을 예시하기 위하여, 도면에는 본 발명의 예시적인 구조가 도시되지만, 본 발명은 개시 된 특정 방법 및 도구들로 한정되지 않는다.
본 발명의 요지는 법적인 요구사항을 충족시키기 위한 특수성을 가지고 개시된다. 그러나, 설명 그 자체는 본 특허의 범위를 한정한다고 의도되지 않는다. 오히려, 본 발명은 청구된 요지가 다른 현재 또는 미래 기술과 관련하여 본 명세서에서 기술된 단계들과 유사한 단계들의 조합 또는 다른 단계들을 포함하도록, 다른 방식으로도 구현될 수 있다고 간주된다. 또한, 용어 "단계"가 본 명세서에서 구현된 방법들의 서로 다른 구성요소들을 연결하기 위하여 이용될 수 있지만, 이 용어는 개별적인 단계들의 순서가 명확하게 기술되지 않는 한 및 이러한 경우를 제외하고 본 명세서에 개시된 다양한 단계들 간의 임의의 특정 순서를 내포하는 것으로 해석되어서는 안된다.
컴퓨터 환경
본 발명의 다양한 실시예가 컴퓨터에서 실행될 수 있다. 도 1 및 이하의 설명은 본 발명이 구현될 수 있는 적절한 컴퓨팅 환경의 간단하고 일반적인 설명을 제공하도록 의도된다. 요구사항은 아니지만, 본 발명은 클라이언트 워크스테이션 또는 서버와 같은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어의 일반적인 관점에서 기술될 것이다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 또한, 본 기술 분야에서 숙련된 기술을 가진 자라면 본 발명은 핸드헬드(hand-held) 장치, 멀티프로세서 시스템, 마이크로프로세서-기반 또는 프로그램가능한 가전제품(programmable consumer electronics), 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 다른 컴퓨터 시스템 구성과 함께 실행될 수 있다고 인식할 것이다. 본 발명은 또한 통신 네트워크를 통해 링크된 원격 프로세싱 장치에 의해 태스크를 수행하는 분산형 컴퓨팅 환경에서 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 국부 및 원격 메모리 저장 장치 내에 위치할 수 있다.
도 1에 도시된 바와 같이, 예시적인 범용 컴퓨팅 시스템은 프로세싱 유닛(21), 시스템 메모리(22), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(21)에 연결하는 시스템 버스(23)를 포함하는 통상적인 퍼스널 컴퓨터(20) 등을 포함한다. 시스템 버스(23)는 다양한 버스 아키텍처 중의 임의의 것을 사용하는 로컬 버스, 주변 버스, 및 메모리 버스 또는 메모리 컨트롤러를 포함하는 몇 가지 유형의 버스 구조 중의 임의의 것일 수 있다. 시스템 메모리는 ROM(24) 및 RAM(25)을 포함한다. 시동중과 같은 때에 퍼스널 컴퓨터(20) 내의 구성요소들 간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(26; BIOS)은 ROM(24)에 저장된다. 퍼스널 컴퓨터(20)는 도시되지 않은, 하드 디스크로부터 판독하거나 그 하드 디스크에 기록하는 하드 디스크 드라이브(27), 분리형 자기 디스크(29)로부터 판독하거나 그 자기 디스크에 기록하는 자기 디스크 드라이브(28), 및 CD-ROM 또는 기타 광 매체 등의 광 디스크(31)로부터 판독하거나 그 광 디스크에 기록하는 광 디스크 드라이브(30) 또한 포함할 수 있다. 하드 디스크 드라이브(27), 자기 디스크 드라이브(28), 및 광 디스크 드라이브(30)는 각각 하드 디스크 드라이브 인터페이스(32), 자기 디스크 드라이브 인터페이스(33), 및 광 드라이브 인터페이스(34)에 의하여 시스템 버스(23)에 접속된다. 드라이브 및 그 관련된 컴퓨터 판독가능 매체는 퍼스널 컴퓨터(20)를 위한 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 비휘발성 저장 장치를 제공한다. 본 명세서에 기술된 예시적인 환경은 하드 디스크, 분리형 자기 디스크(29), 및 분리형 광 디스크(31)를 채용하지만, 본 기술 분야에서 숙련된 기술을 가진 자라면 자기 카세트, 플래쉬 메모리 카드, DVD, 베르누이 카트리지, RAM, ROM 등과 같은, 컴퓨터에 의해 액세스될 수 있는 데이터를 저장할 수 있는 다른 유형의 컴퓨터 판독가능 매체 또한 예시적인 운영 환경에서 이용될 수 있음을 인식해야 한다.
운영 체제(35), 하나 이상의 애플리케이션 프로그램(36), 다른 프로그램 모듈(37) 및 프로그램 데이터(38)를 포함하는 복수의 프로그램 모듈은 하드 디스크, 자기 디스크(29), 광 디스크(31), ROM(24), RAM(26)에 저장될 수 있다. 사용자는 포인팅 장치(42) 및 키보드(40)와 같은 입력 장치를 통해 퍼스널 컴퓨터(20)에 명령 및 정보를 입력할 수 있다. (도시되지 않은) 기타 입력 장치는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 입력 장치 및 그외의 입력 장치는 시스템 버스에 연결된 직렬 포트 인터페이스(46)를 통해 종종 프로세싱 유닛(21)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버설 시리얼 포트(USB)와 같은 기타 인터페이스에 의해 접속될 수 있다. 모니터(47) 또는 다른 유형의 디스플레이 장치는 또한 비디오 어댑터(48) 등의 인터페이스를 통해 시스템 버스(23)에 접속된다. 모니터(47) 외에도, 퍼스널 컴퓨터는 통상적으로 스피커 및 프린터 등의 (도시되지 않은) 기타 주변 출력 장치를 포함한다. 도 1의 예시적인 시스템은 또한 호스트 어댑터(55), SCSI(Small Computer System Interface) 버스(56) 및 SCSI 버스(56)에 접속된 외장형 저장 장치(62)를 포함한다.
퍼스널 컴퓨터(20)는 원격 컴퓨터(49)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용한 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(49)는 다른 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치, 또는 기타 공통 네트워크 노드일 수 있으며, 비록 도 1에는 메모리 저장 장치(50)만이 도시되어 있지만, 퍼스널 컴퓨터(20)에 관하여 상술한 구성요소 중 다수 또는 모든 구성요소를 일반적으로 포함한다. 도 1에 도시된 논리적 접속은 근거리 통신망(LAN; 51) 및 원거리 통신망(WAN; 52)을 포함한다. 이러한 네트워크 환경은 사무실, 기업 광역 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워크 환경에서 사용되는 경우, 퍼스널 컴퓨터(20)는 네트워크 인터페이스 또는 어댑터(53)를 통해 LAN(51)에 접속된다. WAN 네트워크 환경에서 사용되는 경우, 퍼스널 컴퓨터(20)는 일반적으로 인터넷 등의 WAN(52)을 통해 통신을 구축하기 위한 모뎀(54) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(54)은 직렬 포트 인터페이스(46)를 통해 시스템 버스(23)에 접속된다. 네트워크 환경에서, 퍼스널 컴퓨터(20)에 관하여 도시된 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들 간의 통신 링크를 구축하는 그 외의 수단이 사용될 수 있다고 인식될 것이다. 또한, 본 발명의 다양한 실시예가 전산화된 시스템에 특히 매우 적 절한 것으로 생각되지만, 본 명세서에서는 본 발명을 이러한 실시예로 제한하려는 의도는 전혀 없다.
가상 기기들
개념적인 관점으로부터, 컴퓨터 시스템은 일반적으로 기초적인 하드웨어 계층에서 실행되는 하나 이상의 소프트웨어 계층을 포함한다. 이러한 계층화는 추상화를 위하여 이루어진다. 소정의 소프트웨어 계층을 위한 인터페이스를 정의함으로써, 그 계층은 이 계층 상위의 다른 계층들과는 다르게 구현될 수 있다. 잘-설계된 컴퓨터 시스템에서, 각 계층은 오직 이 계층 바로 아래의 계층에 대한 것만 알고 있다(그리고 이 바로 계층에만 의존한다). 이는 계층 또는 "스택"(복수의 인접한 계층들)이 상기 계층 또는 스택 상위의 계층에게 부정적인 영향을 미치지 않고 교체될 수 있게 한다. 예를 들면, 소프트웨어 애플리케이션들(상위 계층들)은 통상적으로 하위 레벨의 운영 체제(하위 계층들)에 의존하여 몇몇의 형태의 영속적인 저장 장치에 파일들을 기록하고, 이들 애플리케이션은 데이터를, 플로피 디스크에 기록하거나, 하드 드라이브에 기록하거나, 네트워크 폴더에 기록하는 것들 간의 차이점을 이해할 필요가 없다. 이러한 하위 계층이 파일을 기록하는 새로운 운영 체제 컴포넌트로 교체된다면, 상위 계층 소프트웨어 애플리케이션들의 동작에는 영향을 미치지 않는 상태를 유지한다.
계층화된 소프트웨어의 유연성은 가상 기기(VM)가 실제로는 다른 소프트웨어 계층인 가상 하드웨어 계층을 나타낼 수 있게 한다. 이렇게 하여, VM은 이 VM 상위의 소프트웨어 계층이 자신만의 사설 컴퓨터 시스템에서 실행되고 있다는 환영 (illusion)을 생성할 수 있으므로 VM들은 복수의 "게스트 시스템"이 단일한 "호스트 시스템"에서 동시에 실행될 수 있게 할 수 있다. 이러한 추상화 레벨은 도 2의 도시로 나타난다.
도 2는 컴퓨터 시스템에 에뮬레이팅된 운영 환경을 위한 하드웨어 및 소프트웨어 아키텍처의 논리적 계층화를 도시하는 도면이다. 이 도면에서, 에뮬레이션 프로그램(94)은 물리적 하드웨어 아키텍처(92)에서 직접 또는 간접적으로 실행된다. 에뮬레이션 프로그램(94)은 (a) 호스트 운영 체제 나란히 실행되는 가상 기기 모니터, (b) 본래 에뮬레이션 기능을 가지는 특수화된 호스트 운영 체제, 또는 (c) 상기 에뮬레이션을 수행하는 하이퍼바이저 컴포넌트를 구비한 호스트 운영 체제일 수 있다. 에뮬레이션 프로그램(92)은 (이 컴포넌트가 "가상 기기"라는, 즉, 실제로 존재하지 않지만 대신에 상기 에뮬레이션 프로그램(94)에 의해 에뮬레이팅된다는 사실을 나타내도록 점선으로 도시한) 게스트 하드웨어 아키텍처(96)를 에뮬레이팅한다. 게스트 운영 체제(98)는 상기 게스트 하드웨어 아키텍처(96)에서 실행되고, 소프트웨어 애플리케이션(100)은 게스트 운영 체제(98)에서 실행된다. 도 2의 에뮬레이팅된 운영 환경에서 - 에뮬레이션 프로그램(94)이 동작하기 때문에 - 소프트웨어 애플리케이션(100)은 소프트웨어 애플리케이션(100)이 호스트 운영 체제 및 하드웨어 아키텍처(92)와 일반적으로 호환되지 않은 운영 체제에서 동작하도록 설계된 경우에도 컴퓨터 시스템(90)에서 실행될 수 있다.
도 3a는 호스트 운영 체제(호스트 OS)(104)가 자신이 에뮬레이팅(또는 "가상화")하고 있는 하드웨어와 동일한 인터페이스들을 노출시킴으로써 - 또한, 호스트 OS가 자신의 상위에서 실행되는 운영 체제 계층들에게 표시되지 않게 할 수 있는 - 물리적 컴퓨터 하드웨어(102)의 자원들로의 액세스를 제공하는 물리적 컴퓨터 하드웨어(102) 바로 상위에서 실행되는 호스트 운영 체제 소프트웨어 계층(104)을 포함하는 가상화된 컴퓨터 시스템을 도시한다. 또한, 에뮬레이션을 수행하기 위한 호스트 운영 체제(102)는 특별하게 본래의 에뮬레이션 기능을 가지도록 설계된 운영 체제일 수 있거나, 또는, (도시되지 않은) 에뮬레이션을 수행하기 위해 포함된 하이퍼바이저 컴포넌트가 포함된 표준 운영 체제일 수 있다.
다시 도 3a를 참조해보면, 상기 호스트 OS(104)는, 예를 들면, 가상화된 인텔 386 프로세서일 수 있는 VM A(108), 및 예를 들면, 모토로라 680X0 계열의 프로세서들 중 하나의 가상화된 버전일 수 있는 VM B(110)인, 2개의 가상 기기(VM) 구현이다. 상술한 VM(108 및 110) 각각은 각각 게스트 운영 체제(게스트 OS) A(112) 및 게스트 OS B(114)이다. 상술한 게스트 OS A(112)을 실행시키는 것은 애플리케이션 A1(116) 및 애플리케이션 A2(118)인 2개의 애플리케이션이고, 상술한 게스트 OS B(114)를 실행시키는 것은 애플리케이션 B1(120)이다.
도 3a에 관련하여, (점선으로 도시된) VM A(108) 및 VM B(110)는 단지 소프트웨어 구조로서 존재하며, VM A(108) 및 VM B(110)를 Guest OS A(112) 및 Guest OS B(114) 각각에 나타낼 뿐만 아니라 Guest OS A(112) 및 Guest OS B(114)가 실제 물리적 컴퓨터 하드웨어(102)와 간접적으로 대화하는 데에 필요한 소프트웨어 단계 모두를 수행하기도 하는 특수화된 에뮬레이션 소프트웨어(들)의 실행에 의해 가능하게된 가상화된 컴퓨터 하드웨어를 표현한 것이라고 유의하는 것이 중요하다.
도 3b는 호스트 운영 체제(104")와 나란히 실행되는 가상 기기 모니터VMM(104')가 에뮬레이션을 수행하는 대안적인 가상화된 컴퓨팅 시스템을 도시한다. 특정 실시예에서 VMM은 호스트 운영 체제(104) 상위에서 실행되고 상기 호스트 운영 체제(104)를 통해서만 컴퓨터 하드웨어와 대화하는 애플리케이션일 수 있다. 다른 실시예에서, 도 3b에 도시된 바와 같이, VMM은 대신에 몇몇의 레벨에서는 호스트 운영 체제(104)를 통해 컴퓨터 하드웨어(102)와 간접적으로 대화하지만 다른 레벨들에서는 (호스트 운영 체제가 컴퓨터 하드웨어와 직접적으로 대화하는 방식과 유사하게) 컴퓨터 하드웨어(102)와 직접적으로 대화하는 부분적으로 독립된 소프트웨어 시스템을 포함할 수 있다. 또한 또 다른 실시예에서는, VMM은 모든 레벨에서, 호스트 운영 체제(104)를 이용하지 않고 (상기 컴퓨터 하드웨어(104)의 사용을 배치하고 충돌 등을 막는 것에 한해서는 여전히 상기 호스트 운영 체제(104)와 대화하지만) (호스트 운영 체제가 컴퓨터 하드웨어와 직접적으로 대화하는 방식과 유사하게) 컴퓨터 하드웨어(102)와 직접적으로 대화하는 완전히 독립된 소프트웨어 시스템을 포함할 수 있다.
가상 기기를 구현하는 이들 변형물 모두가 본 명세서에서 기술된 본 발명의 대안적인 실시예를 형성한다고 예상되며, 본 명세서에서는 어떤 것도 본 발명을 임의의 특정 에뮬레이션 실시예로 제한한다고 해석되어서는 안된다. 또한, (대체로 하드웨어 에뮬레이션 시나리오에서) 각각 VM A(108) 및/또는 VM B(110)를 통한 애플리케이션들(116, 118) 및 애플리케이션(120) 간의 대화에 대한 임의의 언급은 실제로는 애플리케이션들(116, 118) 및 애플리케이션(120)과 가상화를 생성한 가상 화기 간의 대화라고 해석되어야 한다. 마찬가지로, (대체로 컴퓨터 하드웨어(104) 상에서 직접적으로 또는 간접적으로 컴퓨터 명령어들을 실행시키기 위한) 호스트 운영 체제(104) 및/또는 컴퓨터 하드웨어(102)를 이용하는 애플리케이션 VM A(108) 및/또는 애플리케이션 VM B(110) 간의 대화에 대한 임의의 언급은 실제로는 가상화를 생성하였던 가상화기와 호스트 운영 체제(104) 및/또는 컴퓨터 하드웨어(102) 간의 대화라고 적절한 경우 해석되어야 한다.
프로세서 토폴로지
일반적으로, "프로세서"는 컴퓨터를 구동시키는 기본 명령어들에 응답하고 이 명령어들을 처리하는 논리 회로이며, 종종 중앙 프로세싱 유닛(CPU)의 줄임말로서 이용되는 용어이기도 하다. 퍼스널 컴퓨터 내의 또는 소형 장치들에 내장된 프로세서는 종종 마이크로프로세서라 칭한다.
프로세서 토폴로지에 관련하여, 본 명세서에서 기술된 바와 같이, 용어 "프로세서는" 구체적으로 물리적 프로세서를 말한다. "물리적 프로세서"는 다수의 작은 저항, 캐패시터, 및 트렌지스터가 적어도 하나의 논리 프로세서를 포함하는 적어도 하나의 프로세서 코어를 형성하는 반도체 웨이퍼("실리케이트")를 포함하는 - 때때로 "칩" 또는 "마이크로칩"이라 칭하는 - 집적 회로(IC)이다. 각 프로세서 코어는 시스템 명령어들을 실행시키는 기능을 구비하고, 각각의 논리적 프로세서는 (대칭적 멀티-스레딩 또는 "SMT"라고도 알려진) 하이퍼스레딩 기능을 제공하여 단일한 프로세서 코어가 2개의 스레드를 병렬적으로 실행시키는 것으로 보인다(그러므로 시스템에 2개의 코어가 있는 것으로 보인다).
각각의 물리적 프로세서는 CPU 마더보드에서 단일한 소켓(socket)에 고정된다. 물리적 프로세서는 (각각이 하나 이상의 논리적 프로세서들을 가지는) 하나 이상의 프로세서 코어를 가질 수 있다. 각각의 프로세서 코어는 통상적으로 자신 만의 레벨-1 캐쉬를 가지지만 물리적 프로세서 상의 다른 프로세서 코어들과 레벨-2 캐쉬는 공유할 것이다.
"멀티-코어 프로세서"는 향상된 성능, 감소된 전력 소모, 및/또는 복수의 태스크의 보다 효율적인 동시 처리(예를 들면, 병렬 처리)를 위하여 2개 이상의 코어를 가지는 물리적 프로세서이다. 예를 들면, "듀얼-코어 프로세서" - 이름에서 알 수 있듯이, 2개의 프로세서 코어를 가지는 멀티-코어 프로세서이다 - 는 동일한 컴퓨터에 설치된 2개의 개별적인 프로세서를 구비한 프로세서와 다소 유사하다. 그러나, 이들 2개의 코어는 단일한 물리적 프로세서에 상주하고 본질적으로 동일한 소켓에 플러그인되므로 이들 2개의 프로세서 코어 간의 접속은 개별적인 소켓들에 플러그인되는 2개의 단일-코어 프로세서들에서의 접속 보다 빠를 것이다.
이와 같은 성능 이득들과, 단일-코어 프로세서들이 가능한 복잡도 및 속도의 물리적 한계에 빨리 도달한다는 점 때문에 멀티-코어 프로세싱은 인기있게 성장하고 있다. 멀티-코어 제품들을 생산하거나 이 제품 상에서 작업하는 회사들은 AMD, ARM, 브로드컴, 인텔, 및 VIA를 포함한다. AMD 및 인텔은 모두 2005년까지 듀얼-코어 프로세서를 출시할 것으로 발표하였다.
도 4는 본 발명의 몇몇의 실시예가 이용될 수 있는 멀티-코어 프로세서 및 NUMA 2-노드 시스템을 도시하는 블럭도이다. 이 도면에서, 물리적 프로세서(406) 는 각각이 차례대로 2개의 논리적 프로세서(402)를 포함하는 2개의 프로세서 코어(404)를 포함한다. 물리적 프로세서(406)는 물리적 프로세서(406)의 두 코어(404) 모두에 의해 이용되고 공유되는 L3-캐쉬와 같은 메모리(408)에 연결된다. 이 도면은 이하 더 기술된다.
메모리 토폴로지
NUMA(비-균일 메모리 액세스)는 멀티프로세싱 시스템에서 물리적 프로세서들의 노드를 구성하여 이 프로세서들이 국부적으로 메모리를 지역적으로 공유할 수 있어, 성능을 향상시키고 시스템의 기능을 확장시킬 수 있는 방법이다. NUMA는 통상적으로 단일한 운영 체제 하에 동작하는 복수의 프로세서가 공통 버스 또는 "상호접속된" 경로를 통해 서로의 프로세서의 메모리를 액세스하는, "밀접하게 연결되어 모든 것을 공유하는" 시스템인 대칭적 멀티프로세싱(SMP) 시스템에 이용된다. 보통, SMP의 한계는 마이크로프로세서들이 추가될 때 공유되는 버스 또는 데이터 경로가 과부하되어 성능적 병목현상(bottleneck)이 일어나는 것이지만, NUMA는 노드의 마이크로프로세서들 간에 공유되는 중간 레벨의 메모리(노드 메모리)를 추가하므로 모든 데이터 액세스가 메인 버스를 항해하지 않아도 된다.
다시 도 4를 참조해보면, 2개의 노드 시스템(416)은 각각이 4개의 물리적 프로세서(406)를 가지는 2개의 노드(414)를 포함하며, 각각의 물리적 프로세서(406)는 자신 만의 L3 캐쉬를 가지며 이 L3 캐쉬는 상기 캐쉬 각각의 프로세서 코어들(404)에 의해 공유된다. 또한, 각각의 물리적 프로세서(406) 및 이와 관련된 L3 캐쉬 메모리(408)는 서로 연결되고 공유된 노드 메모리(412)와 연결된다. 노드 (414) 및 그 관련된 노드 메모리(412)는 또한 도시된 이러한 2개의 노드 시스템(416)에서 모두 연결된다.
NUMA 노드는 통상적으로 단일한 마더보드에서 로컬 버스를 통해 모두 공유 메모리("L3 캐쉬")에 상호접속된 4개의 물리적 프로세서로 구성된다. 이 유닛은 유사한 유닛들에 추가되어 공통 SMP 버스가 모든 노드를 상호접속시키는 대칭적 멀티프로세싱 시스템을 형성할 수 있다. 이러한 시스템은 통상적으로 16 내지 256 개의 마이크로프로세서를 포함한다. SMP 시스템에서 실행되는 애플리케이션 프로그램에게는, 모든 개별적인 프로세서 메모리는 단일 메모리처럼 보인다.
프로세서 코어가 특정 메모리 주소에 있는 데이터를 탐색할 때, 이 프로세서 코어는 먼저 자신의 L1 캐쉬에서 탐색한 다음 이 물리적 프로세서의 L2 캐쉬에서 탐색하고, 그 다음 NUMA 구성이 제공하는 L3 캐쉬에서 탐색한 후 다른 마이크로프로세서들의 주변에 위치된 "원격 메모리"에서 데이터를 탐색한다. 데이터는 SCI(scalable coherent interface) 기술을 이용하여 NUMA SMP 시스템의 클러스터들 간의 버스를 통해 이동한다. SCI는 복수의 클러스터의 노드들 간에서 소위 "캐쉬 일치" 또는 일관성을 조절한다.
프로세서 토폴로지의 노출
본 발명의 다양한 실시예는 게스트 운영 체제가 현재 자신에게 할당된 호스트 자원들의 부분집합의 토폴로지를 인식하도록 만드는 시스템 및 방법에 관한 것이다. 특정한 이들 실시예에서, 가상 기기 부팅 시점에서 SRAT가 가상화기에 의해 이용되어 게스트 물리적 메모리 및 게스트 가상 프로세서들을 가상 노드들로 그루 핑(group)할 것이다. 그 이후에 가상 노드 후방의 호스트 물리적 메모리는 필요할 경우 가상화기에 의해 변경될 수 있고, 이 가상화기는 그 가상 노드에서의 가상 프로세서들에 적절한 물리적 프로세서들을 제공할 것이다. 이러한 접근법은 가상 기기에서 실행되는 NUMA-인식 운영 체제가 더 수정되지 않고 최적의 성능을 스케줄링할 수 있게 한다.
특정 대안적인 실시예에서, 가상화기는 또한 가상 기기 메모리에서의 게스트 운영 체제에 동적인 프로세서 토폴로지 정보를 제공할 수 있다. 이러한 정보는 게스트 운영 체제의 내부 테이블에 직접적으로 위치할 수 있거나, 또는, 게스트 운영 체제가 추가적인 코드를 실행시켜 공유 메모리 위치로부터 이러한 정보를 취할 수 있다. (VM이 정기적으로 정보를 게스트 운영 체제에 공개하고, 게스트 운영 체제가 정기적으로 갱신된 정보를 검사하고 이에 따라 조절하는) "공개"라 칭하는 후자의 접근법은 게스트 운영 체제에 이 운영 체제로 하여금 이러한 동적인 정보를 주기적으로 획득하게 하는 추가적인 코드를 제공할 것을 요구한다.
도 5는 본 발명의 특정 실시예에 따라 가상화기가 가상 기기 메모리에서의 게스트 운영 체제에 동적인 프로세서 토폴로지 정보를 제공하는 한 방법을 도시하는 프로세스 흐름도이다. 이 도면에 있어서, 단계(502)에서 가상화기는 자신에게 할당된 물리적 하드웨어 자원들이 변경되었다고 인식하게 된다. 단계(504)에서, 가상화기는 자신이 가상화하고 있는 프로세서 토폴로지를 재구성한다. 단계(506)에서, 가상화기는 (게스트 운영 체제에 대한 프로세서 토폴로지 정보를 갱신함으로써) 갱신된 토폴로지 정보가 게스트 운영 체제의 내부 테이블에 직접 위치된다.
본 발명의 특정 실시예에서, 게스트 운영 체제는 가상 기기의 물리적 메모리 페이지가 가상화기 및 게스트 OS 모두에 의해 공유되어야 한다고 지정하는 가상 기기 호출(가상화기로의 호출)을 실행시킬 것이다. 이러한 페이지는 예를 들면, (a) 가상화기가 가상 기기 토폴로지를 변경시켜 상기 가상 기기로의 호스트 컴퓨터 시스템 자원 할당에 대한 변경들을 일치시킬 때마다 게스트 운영 체제에게 인터럽트를 보내야 할지 여부, (b) 통지 인터럽트를 위해 이용될 벡터, (c) 하이퍼바이저가 토폴로지 데이터를 갱신할 때마가 증가되는 생성 카운터, (d) 동일한 SMT 또는 하이퍼스레딩된 프로세서 코어에서의 모든 가상 프로세서의 비트-마스크(bit-mask), 및/또는 (e) 동일한 물리적 프로세서 내의 모든 가상 프로세서, 즉, 각각의 물리적 프로세서 내의 모든 코어 내의 모든 논리적 프로세서의 비트-마스크를 결정하도록 제어 필드를 공개 데이터와 함께 포함할 수 있다. 또한, 공개 데이터는 효율성을 위하여 (a) 스레드 우선순위, (b) I/O 우선순위 (c) 보호되는 메모리의 범위, (d) NUMA 노드, (e) 주변의 메모리 및 원거리에 위치한 메모리에 속하는 데이터 액세스, (f) 프로세서 속도 및 프로세서 전력 소비량, (g) 소켓, 및 각 코어 당 하이퍼스레딩, 및/또는 (h) 각 물리적 프로세서에 대한 공유 레벨과 같은 양태들 중 임의의 것을 검토할 수 있다.
"공개" 접근법 등이 이용될 때, 동적인 프로세서 및 NUMA 토폴로지 정보로의 액세스를 가지는 운영 체제의 스케줄러는 이러한 정보를 이용하여 자신만의 자원 할당 메카니즘(예를 들면, 프로세서 스케줄링, 메모리 할당, 등) 및 자원 이용 스킴들을 최적화할 수 있다. 본 발명의 특정한 또 다른 실시예에서, 게스트 OS는 ( 가상화기/가상 기기 호출들 또는 공유 메모리 페이지 중 하나를 통하여) 프로세스에서 가상화기에 자원 할당 선택사항들에 대한 힌트들을 제공하며 이를 (공개의 논리적 대화인) "힌팅"이라 칭한다. 예를 들면, 게스트 OS가 효율성을 위하여 2개의 가상 프로세서가 동일한 NUMA 노드 내의 2개의 프로세서 또는 동일한 프로세서 상의 2개의 코어에 할당되도록 하는 것이 바람직하다면, 이 게스트 OS는 VM에 이러한 힌트를 제공할 수 있고 가상 기기 스케줄러는 가상화된 프로세서들에 관하여, 이들이 임의의 소정의 시점에서 상기 VM에 할당된 기본적인 물리적 프로세서에 속할 때 이 힌트를 고려할 수 있다. 보다 상세히는, 이러한 힌트들은 효율성을 위하여 (a) 스레드 우선순위, (b) I/O 우선순위 및/또는 (c) 대기시간 정보와 같은 양태들 중 임의의 것을 검토할 수 있다. 그러므로, 본 발명의 실시예에서, - 독립적으로 자원들을 관리하는 - VM을 위한 스케줄러 및 게스트 운영 체체를 위한 스케줄러는 모두 전체 시스템의 효율성을 최대화하기 위하여 협력적으로 동작하는 "공개" 및 "힌팅"을 이용하고 채용한다.
도 6은 본 발명의 몇몇의 실시예를 위한 2-열 공개 및 힌팅 접근법을 도시하는 블럭도이다. 이 도면에서, 게스트 오퍼레이팅 시스템(602)은 OS 스케줄러(604)를 포함하고 가상 기기(612)는 VM 스케줄러(614)를 포함한다. VM 스케줄러(614)는 물리적 하드웨어의 여러 개의 논리적 프로세서들 상에서의 가상 기기 스레드들의 실행을 스케줄링하는데, 이는 이러한 논리적 프로세서들이 예를 들면 상기 물리적 하드웨어 자원들의 이용을 스케줄링하는 호스트 운영 체제에 의해 가상 기기에 이용가능해지기 때문이다(그리고 이것이 지속적으로 변경되기 때문이다). 가상 기기 에 할당되었던 공유 메모리(622)는 게스트 OS 스케줄러(604)에 의해 서로 이용되어 VM 스케줄러(614)에 "힌팅" 정보를 제공하고, 이 공유 메모리(622)는 또한 VM 스케줄러(614)에 의해 이용되어 게스트 OS 스케줄러(604)에 "공개" 정보를 제공한다. 예를 들면, 데이터 흐름(632)을 따르면, VM 스케줄러(614)는 공개하는 데이터(642)를 공유 메모리(622)에 기록하고, 데이터 흐름(634)을 따르면, 이 데이터는 OS 스케줄러(604)에 의해 판독되며 OS 스케줄러(604)에 의해 이용되어 이용가능한 (그리고 대때로 동적으로 변경되는) 현재 프로세서 자원들을 보다 효율적으로 이용한다. 반대로, 데이터 흐름(636)을 따르면, OS 스케줄러(604)는 "힌팅" 데이터(644)를 공유 메모리(622)에 기록하고, 데이터 흐름(638)을 따르면, 이러한 데이터는 VM 스케줄러(614)에 의해 판독되며 VM 스케줄러(614)에 의해 이용되어 현재 프로세서 자원들을 상기 게스트 운영 체제에 보다 효율적으로 할당(및/또는 요청)한다.
결론
본 명세서에서 기술된 다양한 시스템, 방법, 및 기술은 하드웨어 또는 소프트웨어, 또는 적절한 경우, 이 둘의 조합으로 구현될 수 있다. 그러므로, 본 발명의 방법 및 장치, 또는 특정 양태나 그 일부는, 플로피 디스켓, CD-ROM, 하드 드라이브 또는 임의의 다른 기기-판독가능 저장 매체와 같은 실질적인 매체에 구현되는 프로그램 코드(즉, 명령어)의 형태를 취할 수 있으며 여기에서 프로그램 코드가 컴퓨터와 같은 기기에 로딩되고 이 기기에 의해 실행된다면, 이 기기는 본 발명을 실행하는 기기가 된다. 프로그램 코드를 프로그램가능한 컴퓨터 상에서 실행시키는 경우에서, 컴퓨터는 일반적으로 프로세서, (휘발성 및 비휘발성 메모리 및/또는 저 장 엘리먼트를 포함하는) 프로세서가 판독가능한 저장 매체, 적어도 하나의 입력 장치, 및 적어도 하나의 출력 장치를 포함할 것이다. 하나 이상의 프로그램은 컴퓨터 시스템과 통신하는 고급 프로시저(high level procedural) 언어 또는 객체 지향 프로그래밍 언어로 구현되는 것이 바람직하다. 그러나, 프로그램(들)은 원하는 경우 어셈블리 또는 기기어로 구현될 수 있다. 임의의 경우에서, 이러한 언어는 컴파일되는 언어 또는 해석되는 언어일 수 있고 하드웨어 구현물과 결합될 수 있다.
본 발명의 방법 및 장치는 또한 전선 또는 케이블, 광섬유 또는 임의의 그 외의 전송 형태와 같은 몇몇의 전송 매체를 통해 전송되는 프로그램 코드의 형태로 구현될 수 있으며, 여기서 프로그램 코드가 수신되고 EPROM, 게이트 어레이, PLD(programmable logic device), 클라이언트 컴퓨터, 비디오 레코더 등과 같은 기기에 로딩(load)되고 이러한 기기에 의해 실행될 때, 이 기기는 본 발명을 실행시키는 장치가 된다. 범용 프로세서에서 실행될 때, 프로그램 코드는 프로세서와 결합하여 본 발명의 인덱싱된 기능을 수행하도록 동작하는 고유한 장치를 제공한다.
본 발명은 다양한 도면의 바람직한 실시예에 관련하여 기술되었지만, 다른 유사한 실시예들이 이용될 수 있거나 본 발명으로부터 벗어나지 않고 본 발명의 동일한 기능을 수행하도록 기술된 실시예에 수정 또는 추가가 이루어질 수 있다고 이해되어야 한다. 예를 들면, 본 발명의 예시적인 실시예는 퍼스널 컴퓨터의 기능을 에뮬레이팅하는 디지털 장치의 관점으로 기술되지만, 본 기술 분야에서 숙련된 기술을 가진 자라면, 본 발명은 이러한 디지털 장치로 한정되지 않고, 본 발명의 기 술은 게임 콘솔, 핸드헬드 컴퓨터, 휴대용 컴퓨터 등과 같은, 임의의 개수의 기존의 또는 새로운 컴퓨팅 장치 또는 환경에 적용될 수 있고, 유선 또는 무선으로 된 통신 네트워크를 통해 접속되고 이러한 네트워크를 통해 대화하는 임의의 개수의 컴퓨팅 장치에 적용될 수 있음을 인식할 것이다. 또한, 핸드헬드 장치 운영 체제 및 다른 애플리케이션 특정 하드웨어/소프트웨어 인터페이스 시스템을 포함하는 다양한 컴퓨터 플랫폼이, 특히 무선 네트워크 장치의 개수가 계속하여 증가하기 때문에 본 명세서에서 고려됨이 강조되어야 한다. 그러므로, 본 발명은 임의의 하나의 실시예로 제한되어서는 안되며, 특허 청구 범위에 따른 영역 및 범위로 해석되어야 한다.
마지막으로, 본 명세서에서 기술된 개시된 실시예들은 다른 프로세서 아키텍처, 컴퓨터-기반 시스템, 또는 시스템 가상화기에서의 사용을 위하여 적용될 수 있고, 이러한 실시예들은 본 명세서에서 이루어진 개시물들에 의해 명확하게 예측되므로, 본 발명은 본 명세서에서 기술된 특정 실시예로 한정되는 것이 아니라 보다 방대하게 해석되어야 한다. 마찬가지로, 프로세서 가상화 외의 다른 목적을 위한 종합적인 명령어의 사용 또한 본 명세서에서 이루어진 개시물에 의해 예측되고, 프로세서 가상화 외의 관점에서 종합적인 명령어들의 임의의 이러한 이용이 본 명세서에서 이루어진 개시물들에게 보다 광범위하게 해석되어야 한다.
본 발명의 다양한 실시예는 게스트 운영 체제가 현재 자신에게 할당된 호스트 자원들의 부분집합의 토폴로지를 인식하게 하는 시스템 및 방법에 관한 것이다. 특정한 이들 실시예에서는, 가상 기기 부팅 시점에서 SRAT(Static Resource Affinity Table)가 가상화기에 의해 이용되어 게스트 물리적 메모리 및 게스트 가상 프로세서들을 가상 노드로 그루핑(group)할 것이다. 그 이후에 가상 노드 후방의 호스트 물리적 메모리는 필요한 경우 가상화기에 의해 변경될 수 있고, 이 가상화기는 그 가상 노드에서의 가상 프로세서들에 적절한 물리적 프로세서들을 제공할 것이다.

Claims (20)

  1. 컴퓨터 시스템에서 실행되는 운영 체제의 성능을 최적화하는 방법으로서,
    상기 컴퓨터 시스템은 동적인 가상 프로세서 토폴로지(topology)를 가지며,
    상기 가상 프로세서 토폴로지에서의 적어도 하나의 변경을 반영하도록 시동 후에 상기 운영 체제를 적어도 하나의 업데이트로 갱신하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 운영 체제는 게스트 운영 체제이고,
    상기 컴퓨터 시스템은 가상 기기이고,
    상기 가상 기기는 호스트 컴퓨터 시스템에 의해 동적으로 할당된 자원들의 집합에 대한 변경에 기초하는 동적인 가상 프로세서 토폴로지를 가지는 방법.
  3. 제2항에 있어서,
    상기 갱신 단계는 상기 가상 기기와 연관되어 상기 게스트 운영 체제의 적어도 하나의 내부 테이블을 직접 갱신하는 가상화기에 의해 수행되는 방법.
  4. 제2항에 있어서,
    상기 갱신 단계는 상기 가상 기기와 연관되어 공유 메모리 위치를 공개물(disclosure)로 갱신하는 가상화기에 의해 수행되고, 상기 게스트 운영 체제는 후 속하여 상기 공유 메모리 위치를 액세스하고, 상기 공개물을 검색하며, 상기 공개물을 적용하는 방법.
  5. 제4항에 있어서,
    상기 게스트 운영 체제가 후속하여 상기 공유 메모리 위치를 액세스하는 단계는 스케줄에 따라 수행되거나 상기 가상 기기의 상기 에뮬레이터에 의해 생성된 인터럽트(interrupt)에 응답하여 수행되는 방법.
  6. 제4항에 있어서,
    상기 게스트 운영 체제는 공유 메모리 위치를 힌트(hint)로 갱신함으로써 상기 가상화기에 힌트를 제공하고, 상기 가상화기는 후속하여 상기 공유 메모리 위치를 액세스하고, 상기 힌트를 검색하고, 상기 힌트를 적용시키는 방법.
  7. 제2항에 있어서,
    하드웨어 제어 장치에 의해 구현되며, 상기 하드웨어 제어 장치는 방법의 각각의 엘리먼트를 구현하는 수단을 포함하는 방법.
  8. 컴퓨터 시스템에서 실행되는 운영 체제의 성능을 최적화하는 컴퓨터-판독가능 명령어를 포함하는 컴퓨터 판독가능 매체로서,
    상기 컴퓨터 시스템은 동적인 가상 프로세서 토폴로지를 가지며,
    상기 컴퓨터 판독가능 명령어는 상기 가상 프로세서 토폴로지에서의 적어도 하나의 변경을 반영하도록 시동 후에 상기 운영 체제를 적어도 하나의 업데이트로 갱신하는 명령어를 포함하는 컴퓨터 판독가능 매체.
  9. 제8항에 있어서,
    상기 운영 체제는 게스트 운영 체제이고,
    상기 컴퓨터 시스템은 가상 기기이고,
    상기 가상 기기는 호스트 컴퓨터 시스템에 의해 동적으로 할당된 자원들의 집합에 대한 변경에 기초하는 동적인 가상 프로세서 토폴로지를 가지는 컴퓨터 판독가능 매체.
  10. 제9항에 있어서,
    상기 갱신 단계가 상기 가상 기기와 연관되어 상기 게스트 운영 체제의 적어도 하나의 내부 테이블을 직접 갱신하는 가상화기에 의해 수행되게 하는 명령어를 더 포함하는 컴퓨터 판독가능 매체.
  11. 제9항에 있어서,
    상기 갱신 단계가 상기 가상 기기와 연관되어 공유 메모리 위치를 공개물로 갱신하는 가상화기에 의해 수행되고, 상기 게스트 운영 체제가 후속하여 상기 공유 메모리 위치를 액세스하고, 상기 공개물을 검색하며, 상기 공개물을 적용하게 하는 명령어들을 더 포함하는 컴퓨터 판독가능 매체.
  12. 제11항에 있어서,
    상기 게스트 운영 체제가 후속하여 상기 공유 메모리 위치를 액세스하는 단계가 스케줄에 따라 수행되거나 상기 가상 기기의 상기 에뮬레이터에 의해 생성된 인터럽트에 응답하여 수행되게 하는 명령어들을 더 포함하는 컴퓨터 판독가능 매체.
  13. 제11항에 있어서,
    상기 게스트 운영 체제가 공유 메모리 위치를 힌트로 갱신함으로써 상기 가상화기에 힌트를 제공하고, 상기 가상화기가 후속하여 상기 공유 메모리 위치를 액세스하고, 상기 힌트를 검색하고, 상기 힌트를 적용시키게 하는 명령어들을 더 포함하는 컴퓨터 판독가능 매체.
  14. 제9항에 있어서,
    상기 컴퓨터 판독가능 매체는 통신 매체를 통하여 전송되는 전자기 반송파 신호인 컴퓨터 판독가능 매체.
  15. 컴퓨터 시스템에서 실행되는 운영 체제의 성능을 최적화하는 시스템으로서,
    상기 컴퓨터 시스템은 동적인 가상 프로세서 토폴로지를 가지며,
    상기 시스템은 상기 가상 프로세서 토폴로지에서의 적어도 하나의 변경을 반영하도록 시동 후에 상기 운영 체제를 적어도 하나의 업데이트로 갱신하는 적어도 하나의 서브시스템을 포함하는 시스템.
  16. 제15항에 있어서,
    상기 운영 체제는 게스트 운영 체제이고,
    상기 컴퓨터 시스템은 가상 기기이고,
    상기 가상 기기는 호스트 컴퓨터 시스템에 의해 동적으로 할당된 자원들의 집합에 대한 변경에 기초하는 동적인 가상 프로세서 토폴로지를 가지는 시스템.
  17. 제16항에 있어서,
    상기 갱신 단계가 상기 가상 기기와 연관되어 상기 게스트 운영 체제의 적어도 하나의 내부 테이블을 직접 갱신하는 가상화기에 의해 수행되게 하는 적어도 하나의 서브시스템을 더 포함하는 시스템.
  18. 제16항에 있어서,
    상기 갱신 단계가 상기 가상 기기와 연관되어 공유 메모리 위치를 공개물로 갱신하는 가상화기에 의해 수행되고, 상기 게스트 운영 체제가 후속하여 상기 공유 메모리 위치를 액세스하고, 상기 공개물을 검색하며, 상기 공개물을 적용하게 하는 적어도 하나의 서브시스템을 더 포함하는 시스템.
  19. 제18항에 있어서,
    상기 게스트 운영 체제가 후속하여 상기 공유 메모리 위치를 액세스하는 단계가 스케줄에 따라 수행되거나 상기 가상 기기의 상기 에뮬레이터에 의해 생성된 인터럽트에 응답하여 수행되게 하는 적어도 하나의 서브시스템을 더 포함하는 시스템.
  20. 제18항에 있어서,
    상기 게스트 운영 체제가 공유 메모리 위치를 힌트로 갱신함으로써 상기 가상화기에 힌트를 제공하고, 상기 가상화기가 후속하여 상기 공유 메모리 위치를 액세스하고, 상기 힌트를 검색하고, 상기 힌트를 적용시키게 하는 적어도 하나의 서브시스템을 더 포함하는 시스템.
KR1020050103821A 2004-12-21 2005-11-01 가상 기기들을 위한 프로세서 토폴로지를 노출시키는시스템 및 방법 KR20060071307A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/018,337 US8621458B2 (en) 2004-12-21 2004-12-21 Systems and methods for exposing processor topology for virtual machines
US11/018,337 2004-12-21

Publications (1)

Publication Number Publication Date
KR20060071307A true KR20060071307A (ko) 2006-06-26

Family

ID=36406489

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050103821A KR20060071307A (ko) 2004-12-21 2005-11-01 가상 기기들을 위한 프로세서 토폴로지를 노출시키는시스템 및 방법

Country Status (8)

Country Link
US (2) US8621458B2 (ko)
EP (1) EP1674987B1 (ko)
JP (1) JP5048940B2 (ko)
KR (1) KR20060071307A (ko)
CN (1) CN1794177B (ko)
AT (1) ATE554445T1 (ko)
ES (1) ES2382470T3 (ko)
PL (1) PL1674987T3 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008021794A1 (en) * 2006-08-08 2008-02-21 Intel Corporation Virtualizing performance counters
KR20120008026A (ko) * 2009-03-26 2012-01-25 마이크로소프트 코포레이션 가상 머신들을 위한 가상 불균일 메모리 아키텍처
KR101221252B1 (ko) * 2008-01-11 2013-01-14 인터내셔널 비지네스 머신즈 코포레이션 구성 가상 토폴로지 변경의 수행
US8464253B2 (en) 2008-12-03 2013-06-11 Samsung Electronics Co., Ltd. Apparatus and method for providing services using a virtual operating system
US10705879B2 (en) 2009-03-26 2020-07-07 Microsoft Technology Licensing, Llc Adjusting guest memory allocation in virtual non-uniform memory architecture (NUMA) nodes of a virtual machine
WO2023136373A1 (ko) * 2022-01-13 2023-07-20 엘지전자 주식회사 신호 처리 장치, 및 이를 구비하는 차량용 디스플레이 장치

Families Citing this family (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8621458B2 (en) * 2004-12-21 2013-12-31 Microsoft Corporation Systems and methods for exposing processor topology for virtual machines
US20060149899A1 (en) * 2004-12-30 2006-07-06 Zimmer Vincent J Method and apparatus for ongoing block storage device management
US7716638B2 (en) * 2005-03-04 2010-05-11 Microsoft Corporation Methods for describing processor features
US8028295B2 (en) * 2005-09-30 2011-09-27 Intel Corporation Apparatus, system, and method for persistent user-level thread
US7406407B2 (en) * 2006-06-01 2008-07-29 Microsoft Corporation Virtual machine for operating N-core application on M-core processor
JP2008152594A (ja) 2006-12-19 2008-07-03 Hitachi Ltd マルチコアプロセッサ計算機の高信頼化方法
US8381209B2 (en) * 2007-01-03 2013-02-19 International Business Machines Corporation Moveable access control list (ACL) mechanisms for hypervisors and virtual machines and virtual port firewalls
US8856782B2 (en) 2007-03-01 2014-10-07 George Mason Research Foundation, Inc. On-demand disposable virtual work system
US20080229053A1 (en) * 2007-03-13 2008-09-18 Edoardo Campini Expanding memory support for a processor using virtualization
CN101043380B (zh) * 2007-04-20 2010-07-21 北京航空航天大学 虚拟机网络拓扑信息的处理方法及装置
US8762999B2 (en) * 2007-09-27 2014-06-24 Oracle America, Inc. Guest-initiated resource allocation request based on comparison of host hardware information and projected workload requirement
US8521966B2 (en) 2007-11-16 2013-08-27 Vmware, Inc. VM inter-process communications
US8881163B2 (en) * 2007-12-07 2014-11-04 Microsoft Corporation Kernel processor grouping
US8615757B2 (en) * 2007-12-26 2013-12-24 Intel Corporation Negotiated assignment of resources to a virtual machine in a multi-virtual machine environment
US8352950B2 (en) * 2008-01-11 2013-01-08 International Business Machines Corporation Algorithm to share physical processors to maximize processor cache usage and topologies
US7734900B2 (en) * 2008-01-11 2010-06-08 International Business Machines Corporation Computer configuration virtual topology discovery and instruction therefore
JP2009266027A (ja) * 2008-04-25 2009-11-12 Toshiba Corp 情報処理装置および制御方法
US8291426B2 (en) * 2008-06-02 2012-10-16 Microsoft Corporation Memory allocators corresponding to processor resources
US9201673B2 (en) 2008-07-30 2015-12-01 Microsoft Technology Licensing, Llc Efficient detection and response to spin waits in multi-processor virtual machines
US9098698B2 (en) 2008-09-12 2015-08-04 George Mason Research Foundation, Inc. Methods and apparatus for application isolation
US20100138829A1 (en) * 2008-12-01 2010-06-03 Vincent Hanquez Systems and Methods for Optimizing Configuration of a Virtual Machine Running At Least One Process
US8930953B2 (en) * 2009-01-16 2015-01-06 International Business Machines Corporation Dynamic checking of hardware resources for virtual environments
US8490094B2 (en) 2009-02-27 2013-07-16 International Business Machines Corporation Non-uniform memory access (NUMA) enhancements for shared logical partitions
WO2010106692A1 (en) * 2009-03-17 2010-09-23 Hitachi, Ltd. Storage system and its controlling method
JP5035299B2 (ja) * 2009-06-15 2012-09-26 株式会社日立製作所 マルチコアプロセッサ制御方法、その計算機システム、及び管理計算機のプログラム
US8898664B2 (en) * 2010-06-01 2014-11-25 Microsoft Corporation Exposure of virtual cache topology to a guest operating system
US8443376B2 (en) * 2010-06-01 2013-05-14 Microsoft Corporation Hypervisor scheduler
US8949499B2 (en) 2010-06-24 2015-02-03 International Business Machines Corporation Using a PCI standard hot plug controller to modify the hierarchy of a distributed switch
US8271710B2 (en) * 2010-06-24 2012-09-18 International Business Machines Corporation Moving ownership of a device between compute elements
US20120096462A1 (en) * 2010-10-18 2012-04-19 Electronics And Telecommunications Research Institute Dynamic virtualization technique for multicore processor system
WO2012083012A1 (en) * 2010-12-15 2012-06-21 Advanced Micro Devices, Inc. Device discovery and topology reporting in a combined cpu/gpu architecture system
US9489224B2 (en) 2010-12-28 2016-11-08 Nec Corporation Network virtualization system, physical node, and virtual interface identification method in virtual machine
US8812830B2 (en) 2011-08-31 2014-08-19 Microsoft Corporation Attestation protocol for securely booting a guest operating system
WO2013082437A1 (en) 2011-12-02 2013-06-06 Invincia, Inc. Methods and apparatus for control and detection of malicious content using a sandbox environment
CN103135964B (zh) * 2011-12-05 2015-09-23 联想(北京)有限公司 跨指令集调用函数的方法和电子设备
KR101850318B1 (ko) 2011-12-09 2018-04-20 삼성전자주식회사 가상 메모리 관리 장치 및 방법
EP2833264B1 (en) * 2012-03-29 2020-06-24 Hitachi, Ltd. Virtual computer schedule method
US9436493B1 (en) * 2012-06-28 2016-09-06 Amazon Technologies, Inc. Distributed computing environment software configuration
US9191435B2 (en) 2012-08-23 2015-11-17 TidalScale, Inc. Selective data migration or remapping of virtual processors to provide required data accessibility to processor cores
US9329880B2 (en) * 2013-02-13 2016-05-03 Red Hat Israel, Ltd. Counter for fast interrupt register access in hypervisors
US10331589B2 (en) 2013-02-13 2019-06-25 Red Hat Israel, Ltd. Storing interrupt location for fast interrupt register access in hypervisors
US9454573B1 (en) * 2013-02-25 2016-09-27 Emc Corporation Parallel processing database system with a shared metadata store
US9984083B1 (en) 2013-02-25 2018-05-29 EMC IP Holding Company LLC Pluggable storage system for parallel query engines across non-native file systems
US9342342B2 (en) * 2013-03-15 2016-05-17 International Business Machines Corporation Refreshing memory topology in virtual machine operating systems
EP3042305A4 (en) * 2013-09-05 2017-04-05 Tidalscale Inc. Selective resource migration
US10261875B2 (en) 2013-12-18 2019-04-16 Qualcomm Incorporated Runtime optimization of multi-core system designs for increased operating life and maximized performance
US9606843B2 (en) 2013-12-18 2017-03-28 Qualcomm Incorporated Runtime optimization of multi-core system designs for increased operating life and maximized performance
US20150169363A1 (en) * 2013-12-18 2015-06-18 Qualcomm Incorporated Runtime Optimization of Multi-core System Designs for Increased Operating Life and Maximized Performance
US9218185B2 (en) 2014-03-27 2015-12-22 International Business Machines Corporation Multithreading capability information retrieval
US9921848B2 (en) 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US9354883B2 (en) 2014-03-27 2016-05-31 International Business Machines Corporation Dynamic enablement of multithreading
US9417876B2 (en) 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
US9594660B2 (en) 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores
US9804846B2 (en) 2014-03-27 2017-10-31 International Business Machines Corporation Thread context preservation in a multithreading computer system
CN103995733B (zh) * 2014-05-27 2017-02-15 西安交通大学 一种基于物理资源穿透机制的轻量级嵌套虚拟化实现方法
US9400672B2 (en) * 2014-06-06 2016-07-26 International Business Machines Corporation Placement of virtual CPUS using a hardware multithreading parameter
US9304805B2 (en) * 2014-06-06 2016-04-05 Interinational Business Machines Corporation Provisioning virtual CPUs using a hardware multithreading parameter in hosts with split core processors
US9384027B2 (en) 2014-06-06 2016-07-05 International Business Machines Corporation Selecting a host for a virtual machine using a hardware multithreading parameter
EP3186925A4 (en) * 2014-08-27 2018-02-21 Adaptive Spectrum and Signal Alignment, Inc. Systems, methods, and apparatuses for implementing the virtualization of access node functions
US9542320B2 (en) 2015-01-12 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Multi-node cache coherency with input output virtualization
US10853104B2 (en) * 2015-02-27 2020-12-01 Plasma Business Intelligence, Inc. Virtual environment for simulating a real-world environment with a large number of virtual and real connected devices
US9335982B1 (en) 2015-04-28 2016-05-10 Microsoft Technology Licensing, Llc Processor emulation using multiple translations
US11240334B2 (en) * 2015-10-01 2022-02-01 TidalScale, Inc. Network attached memory using selective resource migration
US10091830B2 (en) * 2015-12-04 2018-10-02 T-Mobile Usa, Inc. Hub device
US10108462B2 (en) * 2016-02-12 2018-10-23 Microsoft Technology Licensing, Llc Virtualizing sensors
US10620992B2 (en) 2016-08-29 2020-04-14 TidalScale, Inc. Resource migration negotiation
CN106502760B (zh) * 2016-09-21 2019-06-21 华为技术有限公司 一种虚拟机亲和性策略可视化的方法及装置
US10891254B2 (en) * 2016-10-26 2021-01-12 Intel Corporation Switchable topology processor tile and computing machine
US10169069B2 (en) 2017-04-06 2019-01-01 International Business Machines Corporation System level update protection based on VM priority in a multi-tenant cloud environment
US10521273B2 (en) * 2017-06-08 2019-12-31 Cisco Technology, Inc. Physical partitioning of computing resources for server virtualization
US10579274B2 (en) 2017-06-27 2020-03-03 TidalScale, Inc. Hierarchical stalling strategies for handling stalling events in a virtualized environment
US11113088B2 (en) * 2017-07-26 2021-09-07 Dell Products, L.P. Generating and managing groups of physical hosts associated with virtual machine managers in an information handling system
US10817347B2 (en) 2017-08-31 2020-10-27 TidalScale, Inc. Entanglement of pages and guest threads
US11487574B2 (en) * 2017-09-19 2022-11-01 Microsoft Technology Licensing, Llc Targeted interrupts for virtual processors
US11175927B2 (en) 2017-11-14 2021-11-16 TidalScale, Inc. Fast boot
US10776150B2 (en) 2018-10-30 2020-09-15 Red Hat, Inc. Dynamically updating virtual central processing units
US11144326B2 (en) * 2019-02-19 2021-10-12 Cisco Technology, Inc. System and method of initiating multiple adaptors in parallel
US11249804B2 (en) 2019-10-07 2022-02-15 International Business Machines Corporation Affinity based optimization of virtual persistent memory volumes
US11954534B2 (en) 2021-06-21 2024-04-09 Red Hat, Inc. Scheduling in a container orchestration system utilizing hardware topology hints
US20230096040A1 (en) * 2021-09-30 2023-03-30 Fortinet, Inc. Artificial virtual machine for preventing malware execution by applying virtual machine characteristics in real computing environments

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5692193A (en) * 1994-03-31 1997-11-25 Nec Research Institute, Inc. Software architecture for control of highly parallel computer systems
EP0917056B1 (en) 1997-11-04 2008-01-09 Compaq Computer Corporation A multi-processor computer system and a method of operating thereof
US6247109B1 (en) 1998-06-10 2001-06-12 Compaq Computer Corp. Dynamically assigning CPUs to different partitions each having an operation system instance in a shared memory space
US6769076B1 (en) * 2000-02-07 2004-07-27 Freescale Semiconductor, Inc. Real-time processor debug system
JP2002041304A (ja) * 2000-07-28 2002-02-08 Hitachi Ltd 論理区画の予備リソース自動付与方法及び論理区画式計算機システム
JP2002202959A (ja) * 2000-12-28 2002-07-19 Hitachi Ltd 動的な資源分配をする仮想計算機システム
US7480911B2 (en) 2002-05-09 2009-01-20 International Business Machines Corporation Method and apparatus for dynamically allocating and deallocating processors in a logical partitioned data processing system
US7140021B2 (en) * 2002-09-13 2006-11-21 Microsoft Corporation Dynamic TCP partitioning
US7337442B2 (en) * 2002-12-03 2008-02-26 Microsoft Corporation Methods and systems for cooperative scheduling of hardware resource elements
US7103881B2 (en) 2002-12-10 2006-09-05 Intel Corporation Virtual machine to provide compiled code to processing elements embodied on a processor device
US7451459B2 (en) * 2003-05-05 2008-11-11 Microsoft Corporation Systems, methods, and apparatus for indicating processor hierarchical topology
US7430737B2 (en) * 2003-12-04 2008-09-30 Sun Microsystems, Inc. Processor and method for supporting compiler directed multithreading management
US7467381B2 (en) * 2003-12-16 2008-12-16 Intel Corporation Resource partitioning and direct access utilizing hardware support for virtualization
US20050132363A1 (en) 2003-12-16 2005-06-16 Vijay Tewari Method, apparatus and system for optimizing context switching between virtual machines
US7788670B2 (en) 2004-10-26 2010-08-31 Intel Corporation Performance-based workload scheduling in multi-core architectures
US8621458B2 (en) * 2004-12-21 2013-12-31 Microsoft Corporation Systems and methods for exposing processor topology for virtual machines
US7512826B2 (en) 2005-04-20 2009-03-31 International Business Machines Corporation Method, apparatus, and product for an efficient virtualized time base in a scaleable multi-processor computer
US8249853B2 (en) 2006-03-31 2012-08-21 Intel Corporation Exposing device features in partitioned environment

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008021794A1 (en) * 2006-08-08 2008-02-21 Intel Corporation Virtualizing performance counters
US8607228B2 (en) 2006-08-08 2013-12-10 Intel Corporation Virtualizing performance counters
US9244712B2 (en) 2006-08-08 2016-01-26 Intel Corporation Virtualizing performance counters
KR101221252B1 (ko) * 2008-01-11 2013-01-14 인터내셔널 비지네스 머신즈 코포레이션 구성 가상 토폴로지 변경의 수행
US8464253B2 (en) 2008-12-03 2013-06-11 Samsung Electronics Co., Ltd. Apparatus and method for providing services using a virtual operating system
US9459899B2 (en) 2008-12-03 2016-10-04 Samsung Electronics Co., Ltd. Apparatus and method for providing services using a virtual operating system
KR20120008026A (ko) * 2009-03-26 2012-01-25 마이크로소프트 코포레이션 가상 머신들을 위한 가상 불균일 메모리 아키텍처
US10705879B2 (en) 2009-03-26 2020-07-07 Microsoft Technology Licensing, Llc Adjusting guest memory allocation in virtual non-uniform memory architecture (NUMA) nodes of a virtual machine
US10908968B2 (en) 2009-03-26 2021-02-02 Microsoft Technology Licensing, Llc Instantiating a virtual machine with a virtual non-uniform memory architecture and determining a highest detected NUMA ratio in a datacenter
WO2023136373A1 (ko) * 2022-01-13 2023-07-20 엘지전자 주식회사 신호 처리 장치, 및 이를 구비하는 차량용 디스플레이 장치

Also Published As

Publication number Publication date
JP5048940B2 (ja) 2012-10-17
CN1794177A (zh) 2006-06-28
PL1674987T3 (pl) 2012-09-28
EP1674987A3 (en) 2007-10-24
ATE554445T1 (de) 2012-05-15
CN1794177B (zh) 2010-10-27
EP1674987A2 (en) 2006-06-28
US20140115588A1 (en) 2014-04-24
EP1674987B1 (en) 2012-04-18
US8621458B2 (en) 2013-12-31
US8972991B2 (en) 2015-03-03
ES2382470T3 (es) 2012-06-08
US20060136653A1 (en) 2006-06-22
JP2006178933A (ja) 2006-07-06

Similar Documents

Publication Publication Date Title
KR20060071307A (ko) 가상 기기들을 위한 프로세서 토폴로지를 노출시키는시스템 및 방법
US11010053B2 (en) Memory-access-resource management
CN105830026B (zh) 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法
Chen et al. Enabling FPGAs in the cloud
US9268394B2 (en) Virtualized application power budgeting
Li et al. Adaptive management of virtualized resources in cloud computing using feedback control
EP1628214B1 (en) Systems and methods for implementing an operating system in a virtual machine environment
JP5584220B2 (ja) コンフィギュレーション空間仮想化
US20180157519A1 (en) Consolidation of idle virtual machines
US8661435B2 (en) System and method for affinity dispatching for task management in an emulated multiprocessor environment
US11579908B2 (en) Containerized workload scheduling
US10445126B2 (en) Preloading enhanced application startup
US20090133099A1 (en) Methods and systems for transparent software license suspension
JP5030647B2 (ja) 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム
Avramidis et al. Live migration on ARM-based micro-datacentres
KR102570905B1 (ko) 클라우드 환경에서의 컨테이너 기반 자원의 최적화 시스템
US20190278715A1 (en) System and method for managing distribution of virtual memory over multiple physical memories
Zhang Designing and Building Efficient HPC Cloud with Modern Networking Technologies on Heterogeneous HPC Clusters
de Lacerda Ruivo et al. Efficient High-Performance Computing with Infiniband Hardware Virtualization
Karlsson Enea Hypervisor: Facilitating Multicore Migration with the Enea Hypervisor
CN114281529A (zh) 分布式虚拟化的客户操作系统调度优化方法、系统及终端
Prades et al. GPGPU as a service: Providing GPU-acceleration services to federated cloud systems
Meghanathan Virtualization as the Catalyst for Cloud Computing

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid