KR20040028805A - 프로세서로 산출하기 위한 시스템 - Google Patents

프로세서로 산출하기 위한 시스템 Download PDF

Info

Publication number
KR20040028805A
KR20040028805A KR10-2003-7017264A KR20037017264A KR20040028805A KR 20040028805 A KR20040028805 A KR 20040028805A KR 20037017264 A KR20037017264 A KR 20037017264A KR 20040028805 A KR20040028805 A KR 20040028805A
Authority
KR
South Korea
Prior art keywords
virtual processor
target
processor
cpu
virtual
Prior art date
Application number
KR10-2003-7017264A
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 KR20040028805A publication Critical patent/KR20040028805A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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

Abstract

본발명은 논리적으로 분할된 가상 프로세서 중에서 CPU의 분산을 조정한기 위한 장치, 프로그램 제품 및 방법을 제공한다. 가상 프로세서는 CPU를 산출하여 그 자체 실행의 근거가 될 수 있는 어커런스를 촉구하기 위하여 CPU를 산출할 수 있다. 이와같이 하여 프로그램 코드는 포기된 CPU를 지정된 가상 프로세서로 디스패치할 수 있다.

Description

프로세서로 산출하기 위한 시스템{System for Yielding to a Processor}
많은 컴퓨팅 애플리케이션의 속도 및 효율은 프로세싱 리소스의 가용성에 의존한다. 이때문에, 인터내셔날 비즈네스 머신즈 코포레이션에서 개발된 "가상 기계" 설계와 같은 컴퓨팅 아커텍쳐는 다수의 프로세서 간에 공통의 프로세싱 리소스를 공유한다. 그러한 아커텍쳐는 종래에는 하나이상의 물리적 콘트롤러 또는 중앙 처리 장치(CPUs)를 구비한 단일 컴퓨팅 기계에 의존할 수 있다. CPU는 다수의 가상 프로세서를 시물레이션하도록 구성된 소프트웨어를 실행할 수 있다.
그러한 멀티프로세서 환경은 논리적 "분할(partitioning)"의 개념적인 실행을 지원한다. 분할은 컴퓨팅 자산(asset)의 공유와 할당에 적합한 프로그램된 아커텍쳐를 제공한다. 파티션은 관리자에 의해 할당되어진 기계의 CPU, 메모리 및 다른 리소스의 일부를 논리적으로 포함할 수 있다. 이와같이 하여 관리자는 동일한 리소스를 하나 이상의 파티션에 할당할 수 있다. 다수의 가상 프로세서에 부가하여, 각각의 파티션은 추가적으로 오퍼레이팅 시스템을 호스트할 수 있다. 이러한 방식으로 각각의 파티션은 주로 별개의 컴퓨터인 것처럼 동작한다.
원칙적으로 각각의 가상 프로세서는 기반이 되는(underlying) 물리적 기계의 많은 물리적 리소스를 액세스할 수 있다. CPU에 덧붙여 예시적인 리소스에는 메모리 자산 및 하드웨어 레지스터가 포함될 수 있다. 부가적으로, 가상 프로세서는 상이한 가상 프로세서 간에 프로세싱 싸이클의 할당을 부분적으로 명령(dictate)하는 스케줄 또는 우선순위 방식을 공유한다. "하이퍼바이저(hypervisor)"라고 불리는 기저의 프로그램 또는 파티션 매니저는 이러한 방식을 이용하여 각각의 가상의 프로세서로 CPU를 할당하고 디스패치할 수 있다. 예를들어, 이 하이퍼바이저는 전체적으로 리소스를 공유하고 할당하기 위하여 오퍼레이팅 시스템으로부터 리소스에 대한 요청을 인터셉트할 수 있다.
이러한 방식으로, 가상 프로세서는 호스트 파티션 실행의 논리적 스레드로서 작용한다. 그와같이 하여 가상 프로세서는 리소스를 공유하면서 별개로 인스트럭션(instruction)을 실행할 수 있다. 일부 물리적 자산의 사용효율 (utilization)을 두배로 함으로써 분할된 환경은 더 나은 성능과 효율을 촉진할 수 있다. 파티션의 프로그램 가능한 유연성으로 인해 재부팅없이 동적인 로딩에서의 변화에 응답하는 것이 가능하다. 예를들어, 재 부팅 또는 운영자 개입을 요구할 필요없이 워크로드가 시프트함으로써, 열개의 가상 프로세서를 포함하는 두개의 파티션 각각은 공유된 물리적 시스템의 모든 열개의 CPU를 대신할 수 있다.
균형잡힌 리소스 할당을 촉진하기 위하여, 관리자는 가상 프로세서에 의해 액세스가능한 리소스의 수에 제한을 둘수 있다. 예를들어, 하이퍼바이저는 어떤 가상 프로세서로 유용한 CPU의 50%이상을 디스패치할 수 있다. 유사하게, 하이퍼바이저는 가상 프로세서의 CPU의 사용이 특정 지속시간을 초과하지 않는다는 것을 보증한다. 이러한 방식으로 가상의 프로세서는 만료시에 CPU의 "시간 구획(time slice)"으로 할당될 수 있으며 이의 종료시에 하이퍼바이저는 CPU의 가상 프로세서의 사용을 선취할 수 있다. 유사한 프로그래밍을 통하여 이론적으로는 복잡한 애플리케이션은 단일 프로세서에 의해 실행되기를 대기하는 대신에 많은 프로세서간에 분산될 수 있다. 그러나, 그러한 멀티프로세싱 시스템에 의해 제공되는 유연성에도 불구하고, 리소스 할당과 연관된 복잡성은 지속된다. 동적이라는 것으로부터 야기되는 그러한 장애의 일부는 오퍼레이팅 시스템의 프로세싱 요건을 서로 얽히게 한다. 예를들어, 어떤 가상 프로세스는 다른 프로세스의 이전 실행을 전제로 할 수 있다. 그러한 의존도는 그 자체의 복잡성과 비효율성을 멀티프로세싱 애플리케이션으로 도입할 수 있다. 공유된 프로세서 환경에서, 동일한 장애가 가상 프로세서에 대해 일어날 수 있다. 예를들어, 하이퍼바이저는, 그 자체의 CPU를 얻기 위해 스핀-록(spin-lock)을 유지하고 있는 선행요건인(prerequisite) 가상 프로세서를 대기하는 동안, 스핀-록을 요청하고 있는 가상 프로세서로 CPU를 할당한다. 그와같이 하여, 할당된 CPU가 가상 프로세서를 실행할 수 없을 뿐만 아니라 파티션내에서 다른 가상 프로세서가 실행되는 것이 방해된다.
어떤 관리자들은 프로그램된 산출(yield) 기능을 도입함으로써 멀티프로세서 비능률성을 해결하려고 시도한다. 예를들어, 가상 프로세서가 스핀하려고 할 때마다 가상 프로세서는 산출-활성(yield-to-active) 명령을 하이퍼바이저로송신(issue)할 수 있다. 가상 프로세서는 선행요건인 프로세서가 실행되거나 리소스가 가용성있게 되기를 대기하면서 "스핀"할 수 있다. 리소스의 보유자(holder)가 활성이 아닐 수 있기 때문에 가상 프로세서는 스핀하는 동안 CPU 싸이클을 소모하게 된다. 산출-활성 명령에 응답하여 가상 프로세서는 산출된 상태로 진입하고 그 CPU는 포기할 수 있다(relinquish). 하이퍼바이저는 산출된 CPU를 스케줄에 나타난 다음 가상 프로세서로 재할당 할 수 있다.
이와 같은 기술은 리소스를 관리하는데 있어서 개선점이 있음에도 불구하고 비효율성을 허용해야 한다. 즉, 산출 프로세스는 종종 하이퍼바이저가 모든 다른 가상 프로세서에 CPU를 순차적으로 할당하는 것을 기다리면서 연장된 기간동안 비활성을 유지해야만 한다. 다중 프로세싱 층 및 상호작용과 복합되어 그러한 비활성은 느린 처리 속도와 비효율성으로 나타난다. 결과적으로, 물리적 컴퓨팅 리소스를 관리하는 더욱 효율적인 방법이 필요하다.
본발명은 컴퓨팅 시스템에 관한 것이며, 특히 파티션(partition)들이 중앙 처리 장치(CPUs)를 공유하는 논리적으로 분할된 환경내에서 프로세서를 산출하는 것에 관한 것이다.
본명세서의 일부로서 포함되는 첨부된 도면은 상술한 본발명의 일반적인 설명 및 후술된 실시예의 상세한 설명과 함께 본발명의 실시예를 예시하고 본발명 원리의 설명을 제공한다.
도 1은 본발명과 부합되는 컴퓨터의 블록 다이아그램이다.
도 2는 도 1 의 컴퓨터의 주요한 소프트웨어 컴포넌트 및 리소스의 블록 다이아그램이다.
도 3은 도 1 및 도 2의 환경내에서 지원되는 파티션 중에 CPU를 재분배하는 하나의 방법을 실시하는 플로우 차트이다.
도 4는 도 3의 프로세스 단계와 연관된 순차적인 단계를 예시하는 플로우 차트이다.
본발명의 원리에 부합되는 한 실시예에는 논리적으로 분할된 데이타 프로세싱 시스템내에 CPU를 산출하도록 구성된 장치, 방법, 프로그램 제품이 포함된다. 그와 같은 시스템은 복수개의 가상 프로세서를 지원할 수 있다. 이와같이 하여, 상기 실시예는 가상 프로세서로부터의 요청을 개시할 수 있다. 이 요청은 가상 프로세서에 의해 제어되는 CPU의 산출을 촉구할 수 있다. 더욱 구체적으로, 상기 요청은 복수개의 가상 프로세서 중에서 타겟 가상 프로세서를 지정할 수 있다. 예를들어, 상기 신호는 포인터 및/또는 타겟 프로세서에 관한 상태 정보를 포함할 수 있다.
타겟 가상 프로세서는 산출하는 가상 프로세서가 산출하기 위해서 제어하고 요청하는 CPU에 대한 액세스를 요청할 수도 있다. 이후에 상기 실시예는 산출하는 가상 프로세서로부터 타겟 가상 프로세서로 CPU의 제어를 논리적으로 재할당하거나 "스위치-인(switch-in)" 할 수 있다. CPU를 타겟 가상 프로세서로 디스패치하기 전에, 하이퍼바이저는 산출하는 가상 프로세서가 아직 비활성이고 타겟 가상 프로세서는 그자체가 더 이상 산출상태가 아님을 검증할 수 있다. 하이퍼바이저는 디스패처로 제어를 전달하기 전에 산출하는 하이퍼바이저의 상태를 저장할 수 있다.
본발명의 산술한 또는 다른 목적 및 이점은 수반하는 도면및 이의 설명으로부터 명백해질 수 있다. 프로그램 코드는 산출하는 가상 프로세서의 상태를 저장할 수 있다.
본발명의 한 실시예는 논리적으로 분할된 가상 프로세서에 CPU를 재분배하고 조정하는(coordinate) 장치, 프로그램 제품 및 방법에 관한 것이다. 상기 실시예는 그 자체 실행의 근거가 되어지는 어커런스(occurrence)를 촉구하기 위하여 CPU를 산출할 수 있다. 일반적으로 상기 실시예는 CPU를 타겟이되는 가상 프로세서로 효과적으로 산출함으로써 가상 프로세서의 실행을 조정할 수 있다.
특히, 산출하는 가상 프로세서는 "타겟" 가상 프로세서를 결정하고 지정할 수 있다. 대표적인 타겟 프로세서는 산출하는 가상 프로세서에 의해 보유되는 CPU를 필요로 할 수 있다. 타겟이 되는 프로세서는 산출하는 프로세서의 실행전에 필요로되는 조건을 더 구체화할 수 있다. 본 실시예의 산출 특성은, 산출하는 프로세서에 의해 포기된 CPU 또는 메모리 리소스를 하이퍼바이저가 지정된 가상 프로세서로 재할당하게 할 수 있다. 타겟 프로세서를 인에이블링하는데 있어서, 본실시예의 방법은 산출하는 프로세서의 실행을 방해하는 조건을 제거할 수 있다. 그러한 실시예를 실행하는데 적절한 환경이 도 1 및 도 2에 예시되어 있다.
하드웨어 및 소프트웨어 환경
도면으로 돌아가서, 여러도면을 통해 동일한 번호는 동일한 부분을 표시한다. 도 1 은 본발명에 부합되는 데이타 프로세싱 장치 또는 컴퓨터(10)를 예시한다. 예를들어, 장치(10)은 포괄적으로 네트워크 서버, 중형(midrange) 컴퓨터, 메인프레임 컴퓨터 등과 같은 임의의 많은 다수-사용자 컴퓨터 시스템을 나타낸다. 그러나, 본발명은 예를들어, 다른 데이터 프로세싱 장치, 워크스테이션, 데스크탑 컴퓨터, 휴대용 컴퓨터 등과 같은 자립형 또는 단일 사용자 컴퓨터 시스템에서 또는 내장된 컨트롤러 등의 다른 컴퓨팅 디바이스에서 구현될 수 있다. 장치(10)의 하나의 적절한 구현은 인터내셔널 비즈네스 머신즈 사로부터 구입가능한 AS/400 또는 e 시리즈와 같은 중형(midrange) 컴퓨터 내에서이다.
장치(10)는 일반적으로, 예를들면 동적 랜덤 액세스 메모리(DRAM)의 어레이와 같은 주 저장장치(14)를 포함하는 메모리 서브시스템에 결합된 하나이상의 시스템 프로세서(12)를 포함한다. 또한 프로세서(12)와 주 저장장치(14) 사이에 삽입된 것으로 도시된 것은, 일반적으로 당업계에 잘 알려진 개별적인 프로세서 또는 멀티 프로세서를 위해 사용되는(serve) 어떤 캐쉬와 함께 하나이상의 데이타 레벨, 인스트럭션 및/또는 컴비네이션 캐쉬를 포함하는 캐쉬 서브시스템(16)이다. 더우기, 주 저장장치(14)는 시스템 버스(18)를 경유하여 다수 형태의 외부(I/O) 디바이스 및 각각이 하나이상의 외부 네트워크(26), 하나이상의 워크스테이션(28) 및/또는 직접 액세스 저장장치 디바이스(DASD, 30)와 같은 하나이상의 저장장치에 대한 외부 액세스를 제공하는 하나이상의 복수개의 인터페이스 디바이스(예를들어 입력/출력 버스 접속기구 인터페이스(20), 워크스테이션 콘트롤러(22)와 저장장치 콘트롤러(24))에 접속된다.
도 2는 파티션 관리자 또는 하이퍼바이저(46)에 의해 관리되는 복수개의 논리적 파티션(40, 42, 44)을 포함하는, 컴퓨터(10)에서 논리적으로 분할된 컴퓨팅환경을 구현하는데 유용한 주요 소프트웨어 컴포넌트와 리소스를 자세히 나타낸다. 어떤 숫자의 논리적 파티션도 당분야에서 공지된 대로 지원될 수 있다.
예시된 구현에 있어서, 논리적 파티션(40)은 제 1 파티션으로 동작하는 한편 논리적 파티션(42 및 44)은 제 2 파티션으로 동작한다. 이러한 관계에서 제 1 파티션은 컴퓨터(10)에서 제 2 논리적 파티션의 파워-온과 파워-오프를 다루는 것과 같은 컴퓨터에 대한 파티션 관리 기능의 일부를 공유하고 제 2 논리적 파티션의 메모리 덤프(dump)를 개시한다. 이와 같은 것으로, 하이퍼바이저(46)의 일부는 제 1 파티션 제어 블록(50)에 의해 도시되어 있으며 제 1 파티션(40)내 상주 오퍼레이팅 시스템(52)에 배치된다. 모든 논리적 파티션에 의해 액세스 가능한 다른 파티션 관리 서비스는 공유된 서비스 블록(48)에 의해 나타내어진다. 그러나, 파티션 관리 기능은 본발명에 부합되는 다른 구현에 있어서 임의의 특정 논리적 파티션 내에 구현될 필요가 없다.
각각의 논리적 파티션은 오퍼레이팅 시스템(예를들어, 논리적 파티션(40, 42 및 44) 각각에 대한 오퍼레이팅 시스템(52, 54, 및 56))을 이용하며 분할되지 않은 컴퓨터의 오퍼레이팅 시스템과 동일한 방법으로 논리적 파티션의 주요한 동작을 제어한다. 각각의 논리적 파티션(40-44)은 별개의 메모리 공간에서 실행되며 가상 메모리(60)로 표시된다. 더우기 각각의 논리적 파티션(40-44)은 컴퓨터(10)에서 가용성 있는 리소스의 정적으로 및/또는 동적으로 할당된 일부이다. 예를들어, 각각의 논리적 파티션은 가상 메모리(60)에서 사용하기 위한 가용성 있는 메모리 공간의 일부일 뿐만 아니라 하나이상의 프로세서(12)를 공유할 수 있다. 이러한 방식으로,주어진 프로세서는 하나이상의 논리적 파티션에 의해 이용될 수 있다. 예를들어 매스 저장장치, 백업 저장장치, 사용자 입력, 네트워크 연결 등과 같은 추가적인 리소스가 일반적으로 당업계에 공지된 방법으로 하나이상의 논리적 파티션에 할당된다. 리소스는 동일한 버스에서 리소스를 공유하는 다수의 논리적 파티션을 구비하여 여러가지 방법, 예를들어, 버스별로(bus-by-bus basis) 또는 리소스별로(resource-by-resource) 할당될 수 있다. 어떤 리소스는 한번에 다수의 논리적 파티션으로 할당될 수도 있다. 도 2는 예를 들어, 제 1 논리적 파티션(40)에 할당된 직접 액세스 저장장치 디바이스(DASD, 68), 제어 패널(70), 테이프 드라이브(72) 및 광학 디스크 드라이브(74)를 포함하며 버스(62)에 복수개의 리소스를 구비한 세개의 논리적 버스(62, 64 및 66)를 예시한다. 한편, 버스(64)는 예를들어, 제 2 논리적 파티션(42)에 할당된 구내 정보 통신망(local area network, LAN) 어댑터(76), 광학 디스크 드라이브(78)와 DASD(80) 및 제 2 논리적 파티션(44)에 할당된 LAN 어댑터(82 및 84)를 구비한, 리소스별(resource-by-resource) 방식으로 할당된 리소스를 가질 수 있다. 예를들어, 버스(66)는 버스상의 모든 리소스, 예를들어 DASD(86 및 88)가 동일한 논리적 파티션에 할당되도록 논리적 파티션(44)으로 특정하여 할당된 버스를 나타낸다.
도 2에 나타난 구체적인 리소스는 단지 예시에 불과하며 리소스의 어떤 조합이나 배열이 대안적인 임의의 논리적 파티션에 할당될 수 있음이 인식될 것이다. 더우기, 어떤 구현에 있어서, 다른 논리적 파티션의 요구를 돕기 위하여 동적 방식으로 재할당될 수 있다는 것이 인식될 것이다. 더우기, 리소스가 또한 특정 하드웨어 디바이스와 컴퓨터를 인터페이스하는데 사용되는 입력/출력 프로세서(IOP's)의 관점에서 나타나 질 수 있다는 것이 인식될 것이다.
이하에서 "컴퓨터 프로그램" 또는 단순히 "프로그램"이라고 언급되는 다양한 컴퓨터 소프트웨어 애플리케이션, 루틴, 컴포넌트, 프로그램, 오브젝트, 모듈, 데이타 구조등의 사용을 포함하는, 도 2에 예시된 다양한 소프트웨어 컴포넌트와 리소스 및 본발명의 실시예의 구현은 다양한 방법으로 구현될 수 있다. 상기 컴퓨터 프로그램은 일반적으로 컴퓨터의 다양한 메모리 및 저장장치 디바이스에서 다양한 시간에 상주하며, 컴퓨터에서 하나이상의 프로세서에 의해 판독되고 실행될 때, 컴퓨터가 본발명의 다양한 양상을 실시하는 구성요소 또는 단계를 실행하는데 필요한 단계를 수행하게 하는 하나이상의 인스트럭션(instructions)을 포함한다.
더우기, 본발명이 완전히 기능을 하는 컴퓨터와의 관계에서 기술되었고 이하에서 기술되는 동안, 본발명의 다양한 실시예가 다양한 형태의 프로그램 제품으로서 배포될 수 있다는 것과 본발명이 실제적으로 상기 배포를 실행하기 위해서 사용되는 특정한 형태의 신호를 포함하는 매체와 관계없이 본발명이 동일하게 적용된다는 사실을 이분야의 당업자는 인식할 수 있을 것이다. 신호를 포함하는 매체의 예에는 이에 한정되지는 않지만 다른 것들 중에서도 휘발성 및 비휘발성 메모리 디바이스, 플로피 및 다른 분리형 디스크, 하드 디스크 드라이브, 마그네틱 테입, 광학 디스크(예를들면, CD-ROM's, DVD's 등)와 같은 기록가능한 형태의 매체 및 디지탈 및 아날로그 통신 링크와 같은 전송 형태의 매체를 포함한다.
부가하여, 이하에서 기술되는 다양한 형태의 프로그램은 본발명의 특정 실시예에서 그들이 구현되어지는 애플리케이션에 근거하여 식별될 수 있다. 그러나, 후속되는 어떤 특정 프로그램의 명명은 단순히 편리를 위하여 사용되었고 따라서 본 발명은 그러한 명명에 의해 식별되고/식별되거나 함축되는 임의의 특정 애플리케이션의 사용에만 한정되어서는 안된다는 것이 인식되어야만 한다.
당분야에서 통상의 지식을 가진자는 도 1 및 2에 나타난 예시적인 환경이 본발명을 제한하는 것이 아님을 인식할 것이다. 사실, 당분야에서 통상의 지식을 가진 자는 다른 대안적인 하드웨어 및/또는 소프트웨어 환경이 본발명의 범주를 벗어남이 없이 이용될 수 있다는 것을 인식할 것이다.
산출-프로세서 기능(yield-to-processor function)
도 3의 플로우차트는 처음 두개 도면의 하드웨어 및 소프트웨어 환경에서 CPU를 산출하는 예시적인 실시예를 나타낸다. 일반적으로 예시된 프로세스 단계는 효과적으로 CPU를 산출함으로써 가상 프로세서의 실행을 조정한다. 도 3의 실시예에서 산출하는 가상 프로세서는 "타겟" 가상 프로세서를 결정하고 지정할 수 있다. 주목할 만한 것은, 타겟 프로세서는 산출하는 가상 프로세서와 동일한 파티션내에 위치될 수 있다. 한 예에서, 타겟 가상 프로세서는 산출하는 가상 프로세서에 의해 제어되는 CPU를 필요로 할 수도 있다. 타겟이 된 가상 프로세서는 산출하는 가상 프로세서의 실행 전에 필요로되는 조건(condition)을 더 실시할 수도 있다.
이러한 실시예의 산출 특성은 산출하는 오퍼레이팅 시스템에 의해 포기되어지는 CPU 또는 메모리 리소스를 하이퍼바이저 또는 파티션 관리자가 재할당하게 할 수 있다. 이러한 방식으로, 하이퍼바이저는 산출하는 가상 프로세서의 실행을 방해하는 조건을 완화하면서 타겟 가상 프로세서를 인에이블할 수 있다. 주목할 만한 것은, 상기 실시예의 타겟팅(targeting) 기능은 산출된 리소스를 차별없이 스트립(strip)하고 재할당하는 종래의 관리 애플리케이션으로부터 벗어났음을 나타낸다. 상술한 바와 같이, 타겟 산출하는 오퍼레이션에 촛점을 맞추는 그러한 선행 기술 애플리케이션의 무능력은 실제적인 처리 지연으로 나타날 수 있다.
도 3의 블록 150에서, 파티션의 가상 프로세서는 하이퍼바이저에 의해 CPU가 할당되는 것으로 인식할 수 있다. 가용성있는 CPU를 갖는 것으로 레지스터한 후에 가상 프로세서는 할당된 CPU를 이용할 수 있는지 여부를 블록 152에서 평가할 수 있다. 특히, 가상 프로세서는 스핀-록을 평가하여 그것이 현재 가용한지를 결정한다. 예를들어, 다른 가상 프로세서에 의해 유지되는 록(lock)에서 스핀하는 하이퍼바이저는 CPU를 가상 프로세서로 디스패치한다. 다른 예에서, 하이퍼바이저는 시간 구획되거나 디스패치된 CPU로의 가상 프로세서의 액세스를 선취할 수 있다.
그러한 상태가 도 3의 블록 152에서 탐지되면, 상기 실시예는 동일한 파티션내에 위치된 "타겟" 가상의 프로세서에 관련된 블록 154에서 정보를 검색하고 저장할 수 있다. 예시적인 타겟 가상 프로세서는 산출하는 가상 프로세서에 의해 제어되는 CPU를 필요로 할 수 있다. 역으로 산출하는 가상 프로세서는 논리적으로 타겟 가상 프로세서의 실행에 종속될 수 있다. 그와 같이 하여, 산출하는 가상 프로세서는 타겟 가상 프로세서가 실행되기를 대기하는 중이라고 말하여진다.
도 3의 블록 154에서 타겟 가상 프로세서로부터 검색된 정보는 타겟 가상 프로세서에 대한 타겟 카운트와 어드레스를 포함할 수 있다. 타겟 카운트는 각각의가상 프로세서의 저장장치 컴포넌트로 할당된 값과 관련될 수 있다. 이하에서 상세히 논의된다 하더라도, 그와같은 타겟 카운트는 프로세싱 상태를 결정하기 위해서 유지되고 사용된다. 하이퍼바이저는 점진적으로 프로그램된 어커런스에 응답하여 가상 프로세서의 타겟 카운트를 증가시킬 수 있다. 예를들어, 하이퍼바이저는 매번 가상 프로세서의 산출(yields)당 하나의 증분씩 타겟 카운트를 증가시키거나 선취될 수 있다.
한 실시예에서, 그와 같은 추가는 카운트를 홀수 값이 되게 할 수 있다. 유사하게, 하이퍼바이저는 가상 프로세서가 실행되기 시작할 때마다 점진적으로 타겟 카운트를 증가시킬 수 있다. 이러한 증분은 가상 프로세서의 타겟 카운트를 짝수로 되돌린다. 따라서, 짝수 타겟 카운트는 그들의 충족되어진 리소스 요건을 가지는(즉, 물리적 프로세서를 가지는) 가상 프로세서에 대응한다.
위에 논의된 타겟 카운트를 포함하는 타겟 가상 프로세서와 관련된 정보는 산출하는 가상 프로세서 및 하이퍼바이저 모두에 유용할 수 있다. 한 아커텍쳐는 파티션의 모든 가상 프로세서가 공유된 메모리 위치에서 그와같은 정보에 액세스하게 한다. 도 3의 블록 156에서 오퍼레이팅 시스템 또는 산출하는 가상의 프로세서는 "산출-프로세서(yield-to-processor)" 호출 신호(call signal)를 하이퍼바이저로 전송할 수 있다. 상기 호출은 블록 154에서 타겟 프로세서로부터 샘플로 취해진 정보의 스냅샷(snapshot)을 포함할 수 있다. 이과같이 하여, 상기 스냅 샷은 타겟 가상 프로세서에 대한 어드레스와 타겟 카운트를 포함할 수 있다. 이러한 방식으로, 하이퍼바이저는 블록 158에서 호출내에 제공된 타겟 카운트를 평가할 수 있다.주목할 만한 것은, 도 3을 이등분하는 단선은 하이퍼바이저 및 오퍼레이팅 시스템에 의해 수행되는 역할의 한계를 정한다. 더욱 구체적으로, 오퍼레이팅 시스템은 하이퍼바이저가 블록 158-165를 실행하는 동안 블록 150-156의 예시적인 단계를 개시한다.
전술한 바와 같이, 타겟 가상 프로세서의 산출 카운트가 블록 158에서 짝수로 결정된다면 하이퍼바이저는 블록 156에서 가상 프로세서의 산출에 후속하여 타겟 가상 프로세서로 CPU를 디스패치할 수 있다. 산출 조건이 충족되었기 때문에 산출하는 가상 프로세서는 그 자체의 CPU를 더 이상 포기할 필요가 없다. 예를들어, 타겟 가상 프로세서의 실행은 전에는 산출하는 가상 프로세서의 실행을 억제했었던 록(lock) 메카니즘을 제거할 수 있다. 결론적으로, 짝수 타겟 카운트는 실시예가 블록 150에서 산출하는 가상 프로세서가 사실 여전히 스핀하고 있는지 여부를 재 평가하도록 할 수 있다. 주목할 만한 것은, 따라서, 블록 156에서 가상 프로세서에 의해 만들어진 산출 호출은 하이퍼바이저가 가상 프로세서의 산출 카운트를 조정하도록 할 수 있다. 아래에 기술된 바와 같이, 이러한 특성은 산출하는 가상 프로세서를 지정하거나 타겟할 수 있는 다른 가상 프로세서에 영향을 미칠 수 있다.
도 3의 블록 158에서 홀수 타겟 카운트가 탐지되면 하이퍼바이저는 블록 160에서 실제 타겟 카운트와 산출 호출내에서 제공되는 타겟 카운트를 비교할 수 있다. 하이퍼바이저는 산출 호출이 수신되는 그 순간에 하드웨어 레지스터 또는 타겟 가상 프로세서를 샘플링함으로써 실제 타겟 카운트를 얻을 수 있다. 블록 160의 비교 단계에서 가상 프로세서가 산출하는 호출을 만들기 때문에 타겟 가상 프로세서가 필요로하는 CPU를 얻을 수 없다는 것을 확인할 수 있다. 그러한 시나리오하에서 호출에서 제공된 타겟 카운트는 하이퍼바이저에 의해 검증된 카운트에 매치(match)되지 않을 것이다. 결론적으로, 하이퍼바이저는 산출하는 가상 프로세서가 블록 150에서 그 이전의 상태를 재 평가하게 할 수 있다.
역으로, 제공된 산출 카운트가 블록 160에서 샘플로 취해진 실제 카운트와 매치된다면, 하이퍼바이저는 실제로 타겟 가상 프로세서는 CPU를 필요로 한다는 것이 인식될 수 있다. 그러나, CPU를 재할당하기 전에, 하이퍼바이저는 타겟 가상 프로세서가 "산출-활성(yield-to-active)" 호출 상태가 아님을 확인할 수 있다. 타겟 프로세서는 모든 산출하지 않는 가상 프로세스가 서비스될 때까지 리소스를 포기하기를 요청하면서 종래의 산출-활성 호출을 만들수 있다. 그러한 환경하에서 산출하는 타겟 가상 프로세서를 산출하는 것은 시스템 성능을 실속시키면서(stalling) 순환적이고 비 생산적이다(counter-productive). 따라서, 블록 162의 예방적 단계는 기능적 루프가 주어진 애플리케이션에서 형성되는 것을 방지할 수 있다. 그와 같이 하여, 블록 153에서 블록 156의 산출-프로세서 호출을 중단할 수 있다. 주목할 만한 것은, 상기 실시예의 이러한 특징은 선행기술 산출 애플리케이션의 한계내에서 본발명 실시예의 산출 프로그램이 실행되도록 더 허락한다.
도 3의 블록 163에서 하이퍼바이저는 타겟 프로세서를 대기하면서 산출하는 가상 프로세서에 대응하는 저장장치를 지정 또는 "마크(mark)"할 수 있다. 가상 프로세서에 대한 저장장치는 하이퍼바이저 저장장치 밖으로 할당된다. 그와 같이 하여 하이퍼바이저는 산출하는 프로세서가 타겟 프로세서를 대기하게 하면서 타겟 프로세서에 대응하는 저장장치를 추가적으로 마크할 수 있다. 블록 163에서 타겟과 가상 프로세서 사이의 각각의 관계를 묘사한 후에 하이퍼바이저는 블록 164에서 산출하는 가상 프로세서의 오퍼레이팅 시스템의 상태를 저장할 수 있다.
예를들어, 실시예는 가상 프로세서의 모든 조건이 충족되고 보존되도록 블록 164에서 가상 프로세서와 관련된 모든 레지스터를 기록할 수 있다. 이러한 방법으로 저장된 가상 프로세서는 단순히 CPU를 대기한다. 즉, 모든 논리적 물리적 조건이 충족되자마자 오퍼레이팅 시스템이 실행될 수 있도록 하이퍼바이저는 산출하는 가상의 프로세서의 보존된 상태를 재호출할 수 있다. 그러한 조건은 선행조건이 프로세서 실행과 CPU 할당 모두를 포함할 수 있다.
도 3의 블록 165에서 하이퍼바이저는 하이퍼바이저 디스패처로 제어(control)를 패스한다. 하이퍼바이저 디스패처는 주어진 CPU상에서 다음에 어떤 가상 프로세서가 작동할지를 결정하기 위해서 파티션의 가상 프로세서에 대응하는 코드 부분을 조정할 수 있다. 예를들어, 타겟 가상 프로세서가 다음의 가용성 있는 CPU의 시간 구획을 현재 수신할 수 있도록 하는 방식으로 하이퍼바이저 디스패처는 리소스-할당 스케쥴을 조작할 수 있다. 아래에서 상세히 논의되는 것처럼, 상기 하이퍼바이저의 디스패처가 결정되어 타겟 프로세서를 "스위치-인"한 후에 하이퍼바이저는 CPU를 타겟 가상 프로세서로 디스패치할 수 있다. 이러한 방식으로 타겟 프로세서는 가상 프로세서 상에 위치된 조건부 록을 완화시키면서 최종적으로 실행될 수 있다.
도 4의 플로우차트는 도 3의 블록 165에서 하이퍼바이저 디스패처에 의해 실행되는 프로세스와 부합되는 프로세스 단계를 나타낸다. 특히, 플로우차트는 디스패처가 CPU 리소스 상에 주어진 타겟 프로세스를 스위치-인하는지 여부를 결정해야만 하는 단계를 나타낸다. 즉, 하이퍼바이저는 CPU가 할당되어지는 가상 프로세서가 산출-프로세서 호출의 타겟임을 보증하기 위하여 블록 165-168을 실행해야만 한다.
이와같이 하여, 블록 166의 하이퍼바이저는, 제공된 모든 가상 프로세서의 적절한 평가 프로세스를 디스패처 회로가 개시하도록 디스패처 회로에 인스트럭션한다. 하이퍼바이저는 스위치-인 절차가 임박하다는 것을 디스패처에 인스트럭션함으로써 그러한 프로세스를 트리거할 수 있다. 응답하여, 하이퍼바이저 디스패처는 블록 167에서 가상의 저장장치를 검사하여 제공된 가상 프로세서가 산출-프로세서 호출의 타겟인지 여부를 결정할 수 있다.
블록 167의 조건이 충족어진다면 하이퍼바이저는 블록 169에서 작동하도록 준비된어진(ready-to-run) 산출된 프로세서의 저장장치를 마크할 수 있다. 상기 하이퍼바이저는 원래 산출하려고 하는 조건, 즉 타겟 프로세서가 실행되는 조건이 충족되었기 때문에 이러한 방식으로 산출하는 프로세서를 인코드하거나 지정한다. 이와같이 하여 산출된 가상 프로세서는 CPU가 하이퍼바이저를 경유하여 가용성있게 되기를 대기하기만 하면 된다.
산출하는 프로세서가 코드화되면 블록 168에서 하이퍼바이저는 하드웨어 상의 가상 프로세서(CPU)의 연관된 레지스터 및 상태(state)에 위치할 수 있으며 제어를 파티션으로 다시 리턴할 수 있다. 주목할 만한 것은, 블록 167에서 평가된 가상 프로세서가 산출-프로세서 호출의 타겟이 아니면 그 가상 프로세서의 상태는 블록 168에서 복구되고 제어는 파티션으로 패스된다. 이와같이 하여 하이퍼바이저는 그의 산출하는 조건이 충족되지 않고 남아있는 한, 산출된 가상 프로세서의 상태를 변경하지 않는다.
본발명은 다양한 실시예에 의해 예시되었다. 이 실시예들은 상세히 기재되었으나 이와같은 상세한 기재로 인하여 첨부된 특허청구 범위의 범주에서 본발명을 제한하거나 어떤 방식으로도 제한을 두려는 의도는 아니다.
당분야의 당업자에게는 부수적인 이점과 변형이 쉽게 인식될 것이다. 더 넓은 측면에서 본발명은 나타내어지고 기재된 구체적인 셜명, 대표적인 장치 및 방법, 예시적인 실시예에 제한되지는 않는다. 따라서, 출원인의 포괄적인 발명의 개념의 정신 및 범주에서 벗어남이 없이 상세한 설명으로부터 변형이 이루어질 수 있다.
본발명에 의하면 물리적 컴퓨팅 리소스를 관리하는 효율적인 방법이 제공된다.

Claims (20)

  1. 논리적으로 분할된 데이터 프로세싱 시스템에서 가상 프로세스를 산출하는 방법에 있어서, 상기 시스템은 복수개의 파티션을 지원하고 복수개의 파티션중 제 1 파티션은 적어도 하나의 CPU를 공유하는 복수개의 가상 프로세서를 포함하며,
    복수개의 가상 프로세서중에서 타겟 가상 프로세서를 지정하는 것을 포함하며, 가상 프로세서가 실행되면 산출하는 가상 프로세서로 CPU의 산출을 요청하는 단계와,
    요청된 산출에 응답하여 CPU에 의해 실행하기 위한 타겟 가상 프로세서를 스위칭-인(switching-in)하는 단계
    를 포함하는 가상 프로세스 산출 방법.
  2. 제 1 항에 있어서, 상기 타겟 가상 프로세서는 CPU에 대한 액세스를 필요로하고 산출하는 가상 프로세서는 CPU를 제어하는 방법.
  3. 제 1 항에 있어서, 타겟 가상 프로세서에 대한 상태 정보와 포인터를 포함하는 산출 명령을 가상 프로세서로부터 생성하는 단계를 더 포함하는 방법.
  4. 제 1 항에 있어서, 타겟 가상 프로세서로 상태 정보를 할당하는 단계를 더 포함하는 방법.
  5. 제 1 항에 있어서, 타겟 카운트를 타겟 가상 프로세서로 할당하는 단계를 더 포함하는 방법.
  6. 제 5 항에 있어서, 산출 명령에서 전달되는 제공된 카운트와 타겟 카운트를 비교하는 단계를 더 포함하는 방법.
  7. 제 1 항에 있어서, 산출-활성(yield-to-active) 명령에 응답하여 산출을 중단하는 단계를 더 포함하는 방법.
  8. 제 1 항에 있어서, 상기 타겟 프로세서를 대기하면서 산출하는 가상 프로세서를 지정하는 단계를 더 포함하는 방법.
  9. 제 1 항에 있어서, 산출하는 프로세서가 상기 타겟 가상 프로세서를 대기하게 하면서 상기 타겟 가상 프로세서를 지정하는 단계를 더 포함하는 방법.
  10. 제 1 항에 있어서, 상기 산출하는 가상 프로세서의 상태를 저장하는 단계를 더 포함하는 방법.
  11. 장치에 있어서,
    제 1 논리적 파티션은 적어도 하나의 CPU를 공유하는 복수개의 가상 프로세서를 포함하는, 복수개의 논리적 파티션을 포함하는 논리적으로 분할된 컴퓨터와,
    산출하는 가상 프로세서에 의해 제어되는 CPU의 산출에 대한 요청-상기 요청은 복수개의 가상 프로세서로부터 타겟 가상 프로세서를 지정함-을 개시하도록 구성되어지고 상기 산출하는 가상 프로세서로부터 타겟 가상 프로세서로 CPU의 제어를 논리적으로 재할당하도록 더 구성되어진, 컴퓨터에 상주하는 프로그램
    을 포함하는 장치.
  12. 제 11 항에 있어서, 상기 타겟 가상 프로세서는 CPU에 대한 액세스를 필요로하고 상기 산출하는 가상 프로세서는 CPU를 제어하는 장치.
  13. 제 11 항에 있어서, 상기 프로그램은 가상 프로세서로부터 타겟 가상 프로세서에 대한 상태 정보와 포인터를 포함하는 산출 명령의 생성을 개시하는 장치.
  14. 제 11 항에 있어서, 상기 프로그램은 상기 타겟 가상 프로세서로 타겟 카운트의 할당을 개시하는 장치.
  15. 제 14 항에 있어서, 상기 프로그램은 상기 산출 명령에서 전달되는 제공된 카운트와 타겟 카운트의 비교를 개시하는 장치.
  16. 제 11 항에 있어서, 상기 프로그램은 산출-활성(yield-to-active) 명령에 응답하여 상기 산출의 포기를 개시하는 장치.
  17. 제 11 항에 있어서, 상기 프로그램은 상기 타겟 프로세서를 대기하면서 상기 산출하는 가상 프로세서의 지정을 개시하는 장치.
  18. 제 11 항에 있어서, 상기 프로그램은 산출하는 프로세서가 상기 타겟 가상 프로세서를 대기하게 하면서 상기 타겟 가상 프로세서를 지정하는 장치.
  19. 프로그램 제품에 있어서,
    (a) 논리적으로 분할된 데이터 프로세싱 시스템에서 복수개의 가상 프로세서 중에서 산출하는 가상 프로세서에 의해 제어되는 CPU의 산출에 대한 요청-상기 요청은 복수개의 가상 프로세서로부터 타겟 가상 프로세서를 지정함-을 개시하도록 구성되어지고 산출하는 가상 프로세서로부터 타겟 가상 프로세서로 CPU의 제어를 논리적으로 재할당하도록 더 구성되어진 프로그램
    (b) 상기 제 1 프로그램을 포함하는 신호 포함 매체
    를 포함하는 프로그램 제품.
  20. 제 19항에 있어서, 상기 신호 포함 매체는 적어도 하나의 기록가능한 매체이고 전송-타입인 매체인 프로그램 제품.
KR10-2003-7017264A 2001-08-24 2002-07-24 프로세서로 산출하기 위한 시스템 KR20040028805A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/939,232 US7428485B2 (en) 2001-08-24 2001-08-24 System for yielding to a processor
US09/939,232 2001-08-24
PCT/EP2002/008233 WO2003019360A2 (en) 2001-08-24 2002-07-24 System for yielding to a processor

Publications (1)

Publication Number Publication Date
KR20040028805A true KR20040028805A (ko) 2004-04-03

Family

ID=25472787

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-7017264A KR20040028805A (ko) 2001-08-24 2002-07-24 프로세서로 산출하기 위한 시스템

Country Status (7)

Country Link
US (2) US7428485B2 (ko)
JP (1) JP4056471B2 (ko)
KR (1) KR20040028805A (ko)
CN (1) CN1278235C (ko)
AU (1) AU2002328960A1 (ko)
TW (1) TWI239450B (ko)
WO (1) WO2003019360A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110036172A (ko) * 2009-10-01 2011-04-07 삼성전자주식회사 가상 프로세서 관리 장치 및 방법
WO2011053002A3 (ko) * 2009-10-29 2011-11-03 주식회사 팀스톤 씨피유 가상화를 지원할 수 있는 컴퓨터 서버

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9032404B2 (en) 2003-08-28 2015-05-12 Mips Technologies, Inc. Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
US7594089B2 (en) 2003-08-28 2009-09-22 Mips Technologies, Inc. Smart memory based synchronization controller for a multi-threaded multiprocessor SoC
US20050050305A1 (en) * 2003-08-28 2005-03-03 Kissell Kevin D. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US7870553B2 (en) 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7836450B2 (en) 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7610473B2 (en) 2003-08-28 2009-10-27 Mips Technologies, Inc. Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor
US7418585B2 (en) 2003-08-28 2008-08-26 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7849297B2 (en) 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US7711931B2 (en) 2003-08-28 2010-05-04 Mips Technologies, Inc. Synchronized storage providing multiple synchronization semantics
US7765543B1 (en) * 2003-12-17 2010-07-27 Vmware, Inc. Selective descheduling of idling guests running on a host computer system
US7526421B2 (en) * 2004-02-27 2009-04-28 International Business Machines Corporation System and method for modeling LPAR behaviors in a simulation tool
US8224937B2 (en) * 2004-03-04 2012-07-17 International Business Machines Corporation Event ownership assigner with failover for multiple event server system
US8024726B2 (en) * 2004-05-28 2011-09-20 International Business Machines Corporation System for correct distribution of hypervisor work
US8271976B2 (en) * 2004-06-30 2012-09-18 Microsoft Corporation Systems and methods for initializing multiple virtual processors within a single virtual machine
US8955104B2 (en) * 2004-07-07 2015-02-10 University Of Maryland College Park Method and system for monitoring system memory integrity
US20060048160A1 (en) * 2004-09-02 2006-03-02 International Business Machines Corporation Method, apparatus, and computer program product for providing a self-tunable parameter used for dynamically yielding an idle processor
CN101963929B (zh) * 2004-12-31 2016-07-06 钟巨航 保存/恢复工作现场的方法
US7613897B2 (en) * 2005-03-30 2009-11-03 International Business Machines Corporation Allocating entitled processor cycles for preempted virtual processors
US8307371B2 (en) * 2005-12-20 2012-11-06 International Business Machines Corporation Method for efficient utilization of processors in a virtual shared environment
US8176485B2 (en) * 2006-05-15 2012-05-08 Microsoft Corporation Launching hypervisor under running operating system
US8276151B2 (en) * 2006-09-06 2012-09-25 International Business Machines Corporation Determination of running status of logical processor
US7844709B2 (en) * 2006-09-20 2010-11-30 International Business Machines Corporation Method and apparatus for managing central processing unit resources of a logically partitioned computing environment without shared memory access
GB0618894D0 (en) * 2006-09-26 2006-11-01 Ibm An entitlement management system
CN101553780A (zh) * 2006-12-11 2009-10-07 Nxp股份有限公司 Vliw处理器的虚拟功能单元
US8739162B2 (en) * 2007-04-27 2014-05-27 Hewlett-Packard Development Company, L.P. Accurate measurement of multithreaded processor core utilization and logical processor utilization
US7747814B2 (en) * 2007-06-26 2010-06-29 Microsoft Corporation Virtual machine state snapshots
US8495627B2 (en) * 2007-06-27 2013-07-23 International Business Machines Corporation Resource allocation based on anticipated resource underutilization in a logically partitioned multi-processor environment
US9164784B2 (en) * 2007-10-12 2015-10-20 International Business Machines Corporation Signalizing an external event using a dedicated virtual central processing unit
US8245236B2 (en) * 2008-02-27 2012-08-14 International Business Machines Corporation Lock based moving of threads in a shared processor partitioning environment
KR20090108868A (ko) * 2008-04-14 2009-10-19 삼성전자주식회사 가상 머신 관리 시스템 및 그의 프로세서 자원 관리방법
JP2010033125A (ja) * 2008-07-25 2010-02-12 Hitachi Ltd ストレージ装置及びデータ転送方法
US9384160B2 (en) * 2008-09-04 2016-07-05 Avago Technologies General Ip (Singapore) Pte. Ltd. Methods and controllers for affiliation managment
TW201015321A (en) * 2008-09-25 2010-04-16 Panasonic Corp Buffer memory device, memory system and data trnsfer method
US9086913B2 (en) 2008-12-31 2015-07-21 Intel Corporation Processor extensions for execution of secure embedded containers
US9086922B2 (en) * 2009-10-26 2015-07-21 Microsoft Technology Licensing, Llc Opportunistically scheduling and adjusting time slices
US8924534B2 (en) * 2009-10-27 2014-12-30 Vmware, Inc. Resource optimization and monitoring in virtualized infrastructure
JP5533538B2 (ja) 2010-10-12 2014-06-25 富士通株式会社 情報処理装置、エミュレーション処理プログラム及びエミュレーション処理方法
US8839240B2 (en) * 2010-11-29 2014-09-16 International Business Machines Corporation Accessing vendor-specific drivers for configuring and accessing a self-virtualizing input/output device
US9218195B2 (en) 2011-05-17 2015-12-22 International Business Machines Corporation Vendor-independent resource configuration interface for self-virtualizing input/output device
US9298516B2 (en) * 2013-10-01 2016-03-29 Globalfoundries Inc. Verification of dynamic logical partitioning
US10296227B2 (en) * 2015-08-18 2019-05-21 Oracle International Corporation System and method for dynamic cache distribution for in-memory data grids
TWI597666B (zh) * 2015-12-28 2017-09-01 緯創資通股份有限公司 共享裝置的使用方法及資源共享系統
US20220004484A1 (en) 2018-11-26 2022-01-06 Brian MARKUS Systems and methods for training systems to detect software bugs
CN112579177A (zh) * 2019-09-27 2021-03-30 宝能汽车集团有限公司 Hypervisor的CPU配置方法、系统以及车辆、存储介质
US11347558B2 (en) * 2019-12-09 2022-05-31 Nutanix, Inc. Security-aware scheduling of virtual machines in a multi-tenant infrastructure

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS55112651A (en) * 1979-02-21 1980-08-30 Fujitsu Ltd Virtual computer system
JPH0814795B2 (ja) 1986-01-14 1996-02-14 株式会社日立製作所 マルチプロセッサ仮想計算機システム
USRE36462E (en) 1986-01-16 1999-12-21 International Business Machines Corporation Method to control paging subsystem processing in virtual memory data processing system during execution of critical code sections
US4742447A (en) * 1986-01-16 1988-05-03 International Business Machines Corporation Method to control I/O accesses in a multi-tasking virtual memory virtual machine type data processing system
US4843541A (en) * 1987-07-29 1989-06-27 International Business Machines Corporation Logical resource partitioning of a data processing system
JPH02171934A (ja) * 1988-12-26 1990-07-03 Hitachi Ltd 仮想計算機システム
JPH02208740A (ja) * 1989-02-09 1990-08-20 Fujitsu Ltd 仮想計算機制御方式
US5179702A (en) * 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
US5357632A (en) * 1990-01-09 1994-10-18 Hughes Aircraft Company Dynamic task allocation in a multi-processor system employing distributed control processors and distributed arithmetic processors
EP0475282B1 (en) * 1990-09-14 1998-12-16 Hitachi, Ltd. Synchronous method and apparatus for processors
US5535321A (en) * 1991-02-14 1996-07-09 International Business Machines Corporation Method and apparatus for variable complexity user interface in a data processing system
US5325525A (en) * 1991-04-04 1994-06-28 Hewlett-Packard Company Method of automatically controlling the allocation of resources of a parallel processor computer system by calculating a minimum execution time of a task and scheduling subtasks against resources to execute the task in the minimum time
US5404563A (en) * 1991-08-28 1995-04-04 International Business Machines Corporation Scheduling normally interchangeable facilities in multiprocessor computer systems
US5325526A (en) * 1992-05-12 1994-06-28 Intel Corporation Task scheduling in a multicomputer system
CA2100540A1 (en) * 1992-10-19 1994-04-20 Jonel George System and method for performing resource reconfiguration in a computer system
US5596755A (en) * 1992-11-03 1997-01-21 Microsoft Corporation Mechanism for using common code to handle hardware interrupts in multiple processor modes
US5574914A (en) * 1993-01-04 1996-11-12 Unisys Corporation Method and apparatus for performing system resource partitioning
US5504670A (en) * 1993-03-31 1996-04-02 Intel Corporation Method and apparatus for allocating resources in a multiprocessor system
JP2900767B2 (ja) * 1993-09-20 1999-06-02 株式会社日立製作所 仮想計算機システムの仮想計算機走行時間間隔制御方式
US5692193A (en) 1994-03-31 1997-11-25 Nec Research Institute, Inc. Software architecture for control of highly parallel computer systems
US5640584A (en) * 1994-12-12 1997-06-17 Ncr Corporation Virtual processor method and apparatus for enhancing parallelism and availability in computer systems
US6199093B1 (en) * 1995-07-21 2001-03-06 Nec Corporation Processor allocating method/apparatus in multiprocessor system, and medium for storing processor allocating program
US5872963A (en) * 1997-02-18 1999-02-16 Silicon Graphics, Inc. Resumption of preempted non-privileged threads with no kernel intervention
US6418460B1 (en) * 1997-02-18 2002-07-09 Silicon Graphics, Inc. System and method for finding preempted threads in a multi-threaded application
US6269391B1 (en) * 1997-02-24 2001-07-31 Novell, Inc. Multi-processor scheduling kernel
JP3730740B2 (ja) * 1997-02-24 2006-01-05 株式会社日立製作所 並列ジョブ多重スケジューリング方法
JPH10260850A (ja) 1997-03-19 1998-09-29 Hitachi Ltd 仮想計算機システム
US6128728A (en) * 1997-08-01 2000-10-03 Micron Technology, Inc. Virtual shadow registers and virtual register windows
US6772419B1 (en) * 1997-09-12 2004-08-03 Hitachi, Ltd. Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS
US6078970A (en) * 1997-10-15 2000-06-20 International Business Machines Corporation System for determining adapter interrupt status where interrupt is sent to host after operating status stored in register is shadowed to host memory
US6542926B2 (en) * 1998-06-10 2003-04-01 Compaq Information Technologies Group, L.P. Software partitioned multi-processor system with flexible resource sharing levels
US6647508B2 (en) * 1997-11-04 2003-11-11 Hewlett-Packard Development Company, L.P. Multiprocessor computer architecture with multiple operating system instances and software controlled resource allocation
US6625638B1 (en) * 1998-04-30 2003-09-23 International Business Machines Corporation Management of a logical partition that supports different types of processors
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
US6381742B2 (en) * 1998-06-19 2002-04-30 Microsoft Corporation Software package management
US6105050A (en) * 1998-08-25 2000-08-15 International Business Machines Corporation System for resource lock/unlock capability in multithreaded computer environment
US6279046B1 (en) * 1999-05-19 2001-08-21 International Business Machines Corporation Event-driven communications interface for logically-partitioned computer
JP3659062B2 (ja) * 1999-05-21 2005-06-15 株式会社日立製作所 計算機システム
US6760783B1 (en) * 1999-05-21 2004-07-06 Intel Corporation Virtual interrupt mechanism
US6587938B1 (en) * 1999-09-28 2003-07-01 International Business Machines Corporation Method, system and program products for managing central processing unit resources of a computing environment
US6598069B1 (en) * 1999-09-28 2003-07-22 International Business Machines Corporation Method and apparatus for assigning resources to logical partition clusters
JP3575593B2 (ja) 1999-12-27 2004-10-13 インターナショナル・ビジネス・マシーンズ・コーポレーション オブジェクトのロック管理方法及び装置
US6912493B1 (en) * 2000-09-29 2005-06-28 International Business Machines Corporation Technique for configuring processors in system with logical partitions
US7146305B2 (en) * 2000-10-24 2006-12-05 Vcis, Inc. Analytical virtual machine
US20020161961A1 (en) * 2001-01-17 2002-10-31 Ajile Systems, Inc. Multiple virtual machine environment management system
US6957435B2 (en) * 2001-04-19 2005-10-18 International Business Machines Corporation Method and apparatus for allocating processor resources in a logically partitioned computer system
US20030014466A1 (en) * 2001-06-29 2003-01-16 Joubert Berger System and method for management of compartments in a trusted operating system
US7251814B2 (en) * 2001-08-24 2007-07-31 International Business Machines Corporation Yield on multithreaded processors
US6779065B2 (en) * 2001-08-31 2004-08-17 Intel Corporation Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads
US20050108711A1 (en) * 2003-11-13 2005-05-19 Infineon Technologies North America Corporation Machine instruction for enhanced control of multiple virtual processor systems

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110036172A (ko) * 2009-10-01 2011-04-07 삼성전자주식회사 가상 프로세서 관리 장치 및 방법
US9274852B2 (en) 2009-10-01 2016-03-01 Samsung Electronics Co., Ltd Apparatus and method for managing virtual processing unit
WO2011053002A3 (ko) * 2009-10-29 2011-11-03 주식회사 팀스톤 씨피유 가상화를 지원할 수 있는 컴퓨터 서버

Also Published As

Publication number Publication date
WO2003019360A3 (en) 2003-11-20
WO2003019360A2 (en) 2003-03-06
US8108196B2 (en) 2012-01-31
US20030055864A1 (en) 2003-03-20
CN1541357A (zh) 2004-10-27
US7428485B2 (en) 2008-09-23
US20080276246A1 (en) 2008-11-06
JP2005501333A (ja) 2005-01-13
AU2002328960A1 (en) 2003-03-10
JP4056471B2 (ja) 2008-03-05
TWI239450B (en) 2005-09-11
CN1278235C (zh) 2006-10-04

Similar Documents

Publication Publication Date Title
US7428485B2 (en) System for yielding to a processor
US9977689B2 (en) Dynamic scaling of management infrastructure in virtual environments
US7251814B2 (en) Yield on multithreaded processors
US9628535B2 (en) Data streaming infrastructure for remote execution in a constrained environment
RU2569805C2 (ru) Виртуальная архитектура неоднородной памяти для виртуальных машин
US6871264B2 (en) System and method for dynamic processor core and cache partitioning on large-scale multithreaded, multiprocessor integrated circuits
US8271989B2 (en) Method and apparatus for virtual processor dispatching to a partition based on shared memory pages
US8185907B2 (en) Method and system for assigning logical partitions to multiple shared processor pools
US8024726B2 (en) System for correct distribution of hypervisor work
US20060206891A1 (en) 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
US8140822B2 (en) System and method for maintaining page tables used during a logical partition migration
KR20070100367A (ko) 하나의 가상 머신에서 다른 가상 머신으로 메모리를동적으로 재할당하기 위한 방법, 장치 및 시스템
US9183061B2 (en) Preserving, from resource management adjustment, portions of an overcommitted resource managed by a hypervisor
KR20040065981A (ko) 스레드 유형에 근거한 컴퓨터 자원의 동적 할당
JP2006244481A (ja) クラスタシステムの仮想マシンをマイグレーションするためのシステム及び方法
KR20060108711A (ko) 액티비티 정보를 이용한 가상 머신 관리
JP2004288183A (ja) コンピューティングリソースを自動的に割り振る方法
WO2010066547A2 (en) Shared resource service provisioning using a virtual machine manager
JP2006127524A (ja) 物理リソースに対するアクセスを管理する方法、装置、およびプログラム
US20150186180A1 (en) Systems and methods for affinity dispatching based on network input/output requests
US8316159B2 (en) Demand-based DMA issuance for execution overlap
US11573833B2 (en) Allocating cores to threads running on one or more processors of a storage system
KR20230143025A (ko) 다중 가속기 환경에서 다중 gpgpu 응용의 자원 및 작업 할당 관리 프레임워크와 이의 실행 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application