KR101385873B1 - 컴퓨터로 구현되는 방법, 정보 처리 시스템 및 컴퓨터 프로그램 제품 - Google Patents

컴퓨터로 구현되는 방법, 정보 처리 시스템 및 컴퓨터 프로그램 제품 Download PDF

Info

Publication number
KR101385873B1
KR101385873B1 KR1020107025500A KR20107025500A KR101385873B1 KR 101385873 B1 KR101385873 B1 KR 101385873B1 KR 1020107025500 A KR1020107025500 A KR 1020107025500A KR 20107025500 A KR20107025500 A KR 20107025500A KR 101385873 B1 KR101385873 B1 KR 101385873B1
Authority
KR
South Korea
Prior art keywords
partition
interrupt
value
time
virtual
Prior art date
Application number
KR1020107025500A
Other languages
English (en)
Other versions
KR20110030426A (ko
Inventor
수자타 카쉬얍
브레트 로널드 올스제우스키
데이비드 알랜 헵킨
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20110030426A publication Critical patent/KR20110030426A/ko
Application granted granted Critical
Publication of KR101385873B1 publication Critical patent/KR101385873B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

컴퓨터 시스템 상에서 실행되는 가상 환경에 포함된 파티션 그룹으로부터 선택된 파티션에 대응하는 시간 소비값을 검색하는 접근방식이 제공된다. 가상 환경은 하이퍼바이저(Hypervisor)에 의해 제공된다. 시간 소비값은 선택된 파티션이 인터럽트를 처리하는데 소비한 시간의 양에 대응한다. 다수의 가상 CPU가 선택된 파티션에 할당된다. 시간 소비값(예를 들어, 선택된 파티션이 인터럽트를 처리하는데 소비한 시간의 백분율)은 하나 이상의 인터럽트 임계값에 비교된다. 파티션이 인터럽트를 처리하는데 소비한 시간이 임계값을 초과하는 것으로 비교에 의해 나타나는 경우, 선택된 파티션에 할당된 가상 CPU의 개수는 증가된다.

Description

컴퓨터로 구현되는 방법, 정보 처리 시스템 및 컴퓨터 프로그램 제품{SYSTEM AND METHOD FOR OPTIMIZING INTERRUPT PROCESSING IN VIRTUALIZED ENVIRONMENTS}
본 발명은 가상 환경에 관한 것으로, 특히 가상 환경에서 인터럽트의 처리를 최적화하기 위한 접근 방식에 관한 것이다.
가상 I/O(VIO) 서버 파티션은 논리 파티션들에 걸쳐 물리 디바이스를 공유하는 메카니즘을 제공한다. 이들 가상 I/O 서버 파티션은 "일반적인" 논리 파티션에 비해 특별화된 서비스를 제공하고 고유한 컴퓨팅 요건을 갖는다. VIO 서버 상에서의 컴퓨팅은 대개 외부 인터럽트에 의해 구동되고, 각 인터럽트 처리의 레이턴시(latency)를 최소화하는 것이 해결해야 할 과제이다. 서비스 시간은 논리 파티션에 할당된 컴퓨팅 리소스의 양(처리 용량)을 증가시킴으로써 감소될 수 있다.
시스템 관리자가 실제로 보다 많은 컴퓨팅 용량을 파티션에 할당하는 것 대신, 이렇게 하는 또 다른 기존의 수단은 파티션을 "언캡(uncap)하는 것이다. 파티션을 언캡핑하게 되면 파티션의 가상 CPU들 각각은 잠재적으로 처리 용량의 전체 물리적 프로세서의 가치(worth)를 소비해도 된다. 즉, 일 파티션이 2개의 가상 CPU을 가지고 있는 경우, 언캡 모드에서, 이 파티션은 컴퓨팅 용량의 최대(기껏해야) 2개의 물리적 프로세서의 가치를 소비할 수 있다. 각 논리 파티션은 서버 상의 물리적 프로세서의 전체 개수의 (시스템-관리자가 구성한) 일부인 "보장된(guaranteed)" 또는 "권리부여된(entitled)" 처리 용량을 요청할 수 있다.
논리 파티션의 가상 CPU의 개수를 파티션의 권리부여된 처리 용량을 만족시키는데 필요한 최소 개수로 유지하는 것에는 많은 이점이 있다. 가상 CPU의 개수를 보다 적게 하면 물리적 프로세서 내외로 스와핑(swapping)하는 다수의 가상 CPU(vCPU)의 문맥-전환 오버헤드(context-switch overheads)가 줄어든다. 또한, vCPU의 개수를 적게 하면 SMP 환경에서 잠금 경쟁(lock contention)이 보다 줄어든다. CPU 폴딩으로서 알려진 특징은 용량을 가장 적은 개수의 vCPU 축소함으로써 이러한 휴어리스틱(heuristic)을 실시하는 것을 시도한다. CPU 폴딩은 언캡 파티션 상에서 인터럽트 서비스 레이턴시의 증가를 야기할 수 있는데 그 이유는 파티션이 소비할 수 있는 이용 가능한 싸이클의 개수를 제한함으로써 파티션에 의해 달성 가능한 최대 처리 용량을 감소시키기 때문이다. 예를 들어 두 개의 vCPU 및 0.4 프로세서의 전체 할당 용량을 갖는 언캡 파티션은 CPU 폴딩이 없다면, 잠재적으로 처리 용량의 두 개의 전체 물리적 CPU의 가치를 소비할 수 있다. CPU 폴딩은 이 파티션을 0.4의 처리 용량을 갖는 단일 vCPU로 축소할 수 있으며 그에 따라 그의 최대 잠재 처리 용량을 1개의 물리적 CPU 가치로 감소시킨다. 자연적으로, CPU 폴딩 메카니즘은 시간에 따라 이용되는 가상 프로세스의 개수를 증가 또는 감소시키는 알고리즘을 갖는다. 이상적으로 이들 알고리즘은 보존적일 수 있으며 그에 따라 가상 프로세서의 개수는 불필요하게 망설여지는 일이 없다.
전통적인 CPU 폴딩 메카니즘의 도전 과제는 이들 메카니즘이 인터럽트 처리에 필요한 것보다 긴 주기성을 갖는 알고리즘을 사용한다는 것이다. 이들 두 개의 요건(감소된 인터럽트 서비스 레이턴시, 및 vCPU 개수의 축소)은 특히 인터럽트 가중 환경에서 서로 상반된다.
전술한 도전 과제는 컴퓨터 시스템 상에서 실행되는 가상 환경에 포함된 파티션 그룹으로부터 선택된 파티션에 대응하는 시간 소비 값을 검색하는 접근방식을 사용하여 해결된다. 가상 환경은 하이퍼바이저(Hypervisor)에 의해 제공된다. 시간 소비값은 선택된 파티션이 인터럽트를 처리하는데 소비한 시간의 양에 대응한다. 다수의 가상 CPU가 선택된 파티션에 할당된다. 시간 소비 값(예를 들어, 선택된 파티션이 인터럽트를 처리하는데 소비한 시간의 백분율)은 하나 이상의 인터럽트 임계값에 비교된다. 파티션이 인터럽트를 처리하는데 소비한 시간이 임계값을 초과하는 것으로 비교에 의해 나타나는 경우, 선택된 파티션에 할당된 가상 CPU의 개수는 증가된다.
전술한 내용은 개요이며, 그에 따라 부득이하게 상세한 설명의 단순화, 일반화 및 생략을 포함하며, 따라서, 상기 개요는 단지 예시적일 뿐이고 어떠한 식으로도 국한되지 않음을 당업자라면 알 수 있을 것이다. 오직 청구항에 의해서만 정의되는 본 발명의 그 밖의 다른 측면, 특징 및 장점은 이하의 비제한적인 상세한 설명에서 분명해질 것이다.
본 발명의 바람직한 실시예가 후속하는 도면을 참조하여 단지 예시로서 설명돌 것이다.
도 1은 본 명세서에서 기술된 방법이 본 발명의 바람직한 실시예에 따라 구현될 수 있는 데이터 처리 시스템의 블록도를 나타내는 도면,
도 2는 본 발명의 방법들이 네트워크 환경에서 동작하는 다양한 정보 처리 시스템 상에서 수행될 수 있음을 나타기 위해 도 1에 도시되어 있는 정보 처리 시스템 환경을 연장시킨 도면,
도 3은 본 발명의 바람직한 실시예에 따라 가상 I/O 서버(VIOS) 파티션을 포함하는 가상 환경을 사용하는 컴퓨터 시스템을 나타내는 도면,
도 4는 본 발명의 바람직한 실시예에 따라 처리 용량 및 인터럽트 백분율 임계값을 다양한 가상 파티션에 할당하기 위해 시스템 관리자에 의해 수행되는 설정 프로세싱을 나타내는 흐름도,
도 5는 본 발명의 바람직한 실시예에 따라 가상 파티션에 할당된 가상 CPU(vCPU)를 폴딩/언폴딩하기 위해 운영 시스템이 취하는 단계를 나타내는 흐름도,
도 6은 본 발명의 바람직한 실시예에 따라 파티션이 인터럽트를 서비싱하는데 소비하는 시간의 양을 분석하기 위해 운영 시스템이 수행하는 루틴에 의해 실행되는 단계를 나타내는 흐름도.
본 발명의 다양한 실시예의 완전한 이해를 제공하기 위해 후속하는 상세한 설명 및 도면에서 소정의 특정 세부사항이 설명된다. 그러나, 본 발명의 다양한 실시예를 불필요하게 모호하게 하는 것을 피하기 위해, 컴퓨팅 및 소프트웨어 기술과 연관된 소정의 잘 알려져 있는 세부사항은 후속하는 상세한 설명에는 기술되지 않는다. 더 나아가, 당업자라면 이하에서 설명되는 세부사항들 중 하나 또는 그 이상이 없더라도 본 발명의 다른 실시예를 실시할 수 있음을 이해할 것이다. 끝으로, 후속하는 상세한 설명에서는 단계 및 시퀀스를 참조하여 다양한 방법이 개시되어 있지만, 그와 같은 설명은 본 발명의 실시예의 명확한 실시를 제공하기 위함이며, 이들 단계 및 단계들의 시퀀스는 반드시 요구 및 필요한 것으로 취급되어서는 안된다. 대신, 이하에서는 본 발명의 예시적인 실시예의 상세한 설명을 제공되고 제한적인 의미로서 여겨져서는 안된다.
후속하는 상세한 설명은 일반적으로 전술한 바와 같은 개요를 따를 것이며, 요에 따라 본 발명의 다양한 측면 및 실시예의 정의를 더 설명 및 연장할 것이다. 이를 위해, 본 상세한 설명은 우선 본 발명의 실시예와 연관된 소프트웨어 및/또는 하드웨어 기술을 구현하기에 적합한 도 1의 컴퓨팅 환경을 설명한다. 최근의 컴퓨팅 기술은 다수의 별개의 디바이스에 걸쳐 수행될 수 있음을 강조하기 위해, 기본 컴퓨팅 환경의 연장으로서의 네트워크 환경이 도 2에 도시되어 있다.
도 1은 본 명세서에서 기술한 컴퓨팅 동작을 실행할 수 있는 컴퓨터 시스템의 간단한 예시인 정보 처리 시스템(100)을 나타낸다. 정보 처리 시스템(100)은 프로세서 인터페이스 버스(112)에 결합된 하나 이상의 프로세서(110)을 포함한다. 프로세서 인터페이스 버스(112)는 프로세서(110)를 메모리 제어기 허브(MCH)로도 알려져 있는 노스브릿지(115)에 연결한다. 노스브릿지(115)는 시스템 메모리(120)에 연결되고 시스템 메모리를 엑세스하기 위한 수단을 프로세서(110)에게 제공한다. 그래픽 제어기(125)도 노스브릿지(115)에 연결된다. 일 실시예에서, PCI 익스프레스 버스(118)는 노스브릿지(115)를 그래픽 제어기(125)에 연결하는데 사용된다. 그래픽 제어기(125)는 컴퓨터 모니터와 같은 디스플레이 디바이스(130)에 연결된다. 노스브릿지(125) 및 사우스브릿지(135)는 버스(119)를 사용하여 서로 연결된다. 일 실시 예에서, 버스는 노스브릿지(115)와 사우스브릿지(135) 사이에서 각 방향으로 데이터를 고속으로 전달하는 DMI(Direct Media Interface) 버스이다.
또 다른 실시예에서, PCI 버스가 사용되어 노스브릿지와 사우스브릿지를 연결한다. I/O 제어기 허브(ICH)로도 알려져 있는 사우스브릿지(135)는 노스브릿지에 의해 제공된 성능보다 낮은 속도로 동작하는 성능을 일반적으로 구현하는 칩이다. 사우스브릿지(135)는 전형적으로 다양한 구성 요소를 연결하는데 사용되는 다양한 버스를 제공한다. 이들 버스는 PCI 및 PCI 익스프레스 버스, ISA 버스, 시스템 관리 버스(SMBus 또는 SMB), 로우 핀 카운트(LPC) 버스를 포함할 수 있다. LPC 버스는 부트 ROM(196) 및 "레거시" I/O 디바이스("수퍼 I/O" 칩을 사용함)와 같은 저 대역 디바이스를 연결하는데 자주 사용된다. "레거시" I/O 디바이스(198)는 직렬 및 병렬 포트, 키보드, 마우스, 플로피 디스크 제어기를 포함할 수 있다. LPC 버스는 또한 사우스브릿지(135)를 TPM(Trust Platform Module)(195)에 연결하는데 사용된다. 흔히 사우스브릿지(135)에 포함되는 다른 구성요소들은 직접 메모리 액세스(DMA) 제어기와, 프로그램가능 인터럽트 제어기(PIC)와, 하드 디스크 드라이브와 같은 비휘발성 저장 디바이스(185)에 버스(184)를 이용하여 사우스브릿지(135)를 연결하는 저장 디바이스 제어기를 포함한다.
익스프레스카드(155)는 핫-플러그가능 디바이스(hot-pluggable device)를 정보 처리 시스템에 연결하는데 사용되는 슬롯이다. 익스프레스카드(155)는 PCI 익스프레스 및 USB 접속 모두를 지원하는데, 그 이유는 범용 직렬 버스(USB) 및 PCI 익스프레스 버스 모두를 사용하여 사우스브릿지(135)에 연결되기 때문이다. 사우스브릿지(135)는 USB에 연결되는 디바이스에 USB 접속을 제공하는 USB 제어기(140)를 포함한다. 이들 디바이스는 웹캠(카메라)(150), 적외선(IR) 수신기(148), 무선 개인 영역 네트워크(PAN)를 제공하는 블루투쓰 디바이스(146), 키보드 및 트랙패드(144), 및 그 밖의 다른 USB 접속 디바이스(142), 예를 들어, 마우스, 탈착가능 비휘발성 저장 디바이스(145), 모뎀, 네트워크 카드, ISDN 접속, 팩스, 프린터, USB 허브, 및 다수의 다른 유형의 USB 접속 디바이스를 포함한다. 탈착가능 비휘발성 저장 디바이스(145)는 USB 접속 디바이스로 도시되어 있지만, 탈착가능 비휘발성 저장 디바이스(145)는 파이어와이어 인터페이스와 같은 다른 인터페이스를 사용하여 접속될 수 있다.
무선 근거리망(LAN) 디바이스(175)는 PCI 또는 PCI 익스프레스 버스(172)를 통해 사우스브릿지(135)에 연결된다. LAN 디바이스(175)는 전형적으로 정보 처리 시스템(100)과 다른 컴퓨터 시스템 또는 디바이스 사이에서 무선 통신하는데 모두 동일한 프로토콜을 사용하는 오버-디-에어(over-the-air) 변조 기법의 IEEE 802.11 표준 중 하나를 구현한다. 광학 저장 디바이스(190)는 직렬 ATA(SATA) 버스(188)를 사용하여 사우스브릿지(135)에 연결된다. 직렬 ATA 어댑터 및 디바이스는 고속 직렬 링크를 통해 통신한다. 직렬 ATA 버스는 또한 사우스브릿지(135)를 하드 디스크 드라이브와 같은 다른 형태의 저장 디바이에 연결하는데 사용된다. 사운드 카드와 같은 오디오 회로(160)는 버스(158)를 통해 사우스브릿지(135)에 연결된다. 오디오 회로(160)는 오디오 라인-인 및 광학 디지털 오디오 인 포트(162), 광학 디지털 출력 및 헤드폰 잭(164), 내부 스피커(166) 및 내부 마이크로폰(168)과 같은 기능을 제공하는데 사용된다. 이더넷 제어기(170)는 PCI 또는 PCI 익스프레스 버스와 같은 버스를 사용하여 사우스브릿지(135)에 연결된다. 이더넷 제어기(170)는 근거리망(LAN), 인터넷, 및 다른 공중 및 사설 컴퓨터 네트워크와 같은 컴퓨터 네트워크에 정보 처리 시스템(100)을 연결하는데 사용된다.
도 1은 하나의 정보 처리 시스템을 도시하고 있지만, 정보 처리 시스템은 여러 형태를 취할 수 있다. 예를 들어, 정보 처리 시스템은 데스크탑, 서버, 휴대용기기, 랩탑, 노트북, 또는 다른 형태의 팩터 컴퓨터 또는 데이터 처리 시스템의 형태를 취할 수 있다. 또한, 정보 처리 시스템은 PDA(personal digital assistant), 게임 디바이스, ATM 머신, 휴대용 전화기 디바이스, 통신 디바이스 또는 프로세서와 메모리를 포함하는 다른 디바이스와 같은 다른 형태의 팩터를 취할 수 있다.
도 1에 도시되어 있고 본 명세서에서 기술되어 있는 보안 기능을 제공하기 위한 TPM(195)은 하드웨어 보안 모듈(HSM)의 일예이다. 따라서, 본 명세서에서 기술되고 청구된 TPM은 TCG(Trusted Computing Groups) 표준에 부합하고 "Trusted Platform Module(TPM) Specificatoin Version 1.2"의 제목을 갖는 하드웨어 보안 디바이스를 포함하나, 여기에 국한되지 않는 임의의 유형의 HSM을 포함한다. TPM은 도 2에 도시되어 있는 바와 같이, 임의의 수의 정보 처리 시스템에 포함될 수 있는 하드웨어 보안 서브시스템이다.
도 2는 본 명세서에서 기술된 방법이 네트워크 환경에서 동작하는 다양한 정보 처리 시스템 상에서 수행될 수 있음을 나타내기 위해 도 1에 도시되어 있는 정보 처리 시스템 환경을 연장한 것이다. 정보 처리 시스템의 유형은 휴대용 컴퓨터/이동 전화기(210)와 같은 작은 휴대용 디바이스로부터 메인프레임 컴퓨터(270)와 같은 큰 메인프레임 시스템에 이른다. 휴대용 컴퓨터(210)의 예는 PDA와, MP3 재생기, 휴대용 텔레비전 및 CD 플레이어와 같은 개인 오락 디바이스를 포함한다. 정보 처리 시스템의 다른 예는 펜, 태블릿, 컴퓨터(220), 랩탑, 또는 노트북, 컴퓨터(230), 워크스테이션(240), 개인용 컴퓨터 시스템(250) 및 서버(260)를 포함한다. 도 2에 개별적으로 도시되어 있지 않은 다른 유형의 정보 처리 시스템은 정보 처리 시스템(280)으로 표현된다. 도시되어 있는 바와 같이, 다양한 정보 처리 시스템이 컴퓨터 네트워크(200)를 통해 함께 네트워크를 형성할 수 있다. 다양한 정보 처리 시스템을 상호연결하는데 사용될 수 있는 컴퓨터 네트워크의 유형은 근거리망(LAN), 무선 근거리망(WLAN), 인터넷, 공중 전화 교환망(PSTN), 다른 무선 네트워크, 및 정보 처리 시스템을 상호연결하는데 사용될 수 있는 임의의 다른 네트워크 토폴로지를 포함한다. 다수의 정보 처리 시스템은 하드 드라이브 및/또는 비휘발성 메모리와 같은 비휘발성 데이터 저장소를 포함한다. 도 2에 도시되어 있는 정보 처리 시스템의 일부는 별도의 비휘발성 데이터 저장소를 구비하는 것으로 도시되어 있다(서버(260)는 비휘발성 데이터 저장소(265)를 갖는 것으로 도시되어 있고, 메인프레임 컴퓨터(270)는 비휘발성 데이터 저장소(285)를 갖는 것으로 도시되어 있다). 비휘발성 데이터 저장소는 다양한 정보 처리 시스템에 외부적이거나 또는 정보 처리 시스템 중 하나에 내부적일 수 있는 구성요소일 수 있다. 또한, 탈착가능 비휘발성 저장 디바이스(145)는 탈착가능 비휘발성 저장 디바이스(145)를 USB 포트 또는 정보 처리 시스템의 다른 커넥터에 연결하는 것과 같은 다양한 기법을 사용하여 둘 이상의 정보 처리 시스템 사이에서 공유될 수 있다.
도 3은 가상 I/O 서버(VIOS) 파티션을 포함하는 가상 환경을 사용하는 컴퓨터 시스템을 나타낸다. 컴퓨터 시스템(300)은 다수의 가상 파티션(파티션(375,376,377,380))을 구비하는 것으로 도시되어 있다. 파티션은 하이퍼바이저(305)에 의해 조정되는 가상 환경의 일부이다. 파티션들 중 하나(파티션(380))는 가상 I/O 서버(VIOS)인 전용 파티션이다. 암시되어 있는 바와 같이, VIOS 파티션은 다른 파티션에 I/O 서비스를 제공한다. 다른 파티션에 대한 I/O 서비스의 VOIS 처리를 용이하게 하기 위해, 하나 이상의 통신 채널(391,392,393)이 다른 파티션과 VIOS 파티션 사이에서 수립된다.
네트워크 어댑터(315) 및 하드웨어 디바이스(320)는 하이퍼바이저(305)에 의해 관리되는 다양한 인터페이스를 사용하여 컴퓨터 시스템에 접속한다. 일 실시예에서, 하드웨어 (물리적) 인터럽트가 하드웨어 인터페이스들 중 하나에서 발생하는 경우, 하이퍼바이저는 이 인터럽트를 처리를 위해 VIOS 파티션(380)에 전달한다. 도시되어 있는 바와 같이, 네트워크 어댑터(315)는 컴퓨터 시스템과 네트워크 서버 및 디바이스(335) 사이에서 통신을 용이하게 하기 위해 컴퓨터 시스템을 컴퓨터 네트워크(200)에 연결하는데 사용된다. 또 다른 실시예에서, 하드웨어는 파티션들 중 하나에서 실행되는 운영 시스템들 중 하나에 의해 관리("소유")된다. 이 실시예에서, I/O 인터럽트는 물리적 프로세서(예를 들어, 다양한 파티션을 구동하는 프로세서)에 전달된다. 이 실시예에서, I/O 인터럽트가 전달되는 파티션이 현재 인터럽트가 발생하는 시간에 프로세서 상에서 실행되는 경우, 파티션은 인터럽트를 직접 수신한다. 다른 한편으로, 또 다른 파티션이 현재 프로세서 상에서 실행되는 경우, 파티션은 하이퍼바이저를 호출하고 "네버 마인드(never mind)" 응답을 수신하고 이 인터럽트는 이후에 올바른 파티션에 전달하기 위해 하이퍼바이저 내에 큐잉된다. 더 나아가, 현재 프로세서 상에서 구동되는 파티션이 없는 경우, 하이퍼바이저는 인터럽트를 큐잉하고, 일부 경우, 올바른 파티션이 인터럽트를 처리할 수 있도록 올바른 파티션을 기동시킨다.
인터럽트를 처리하고 다른 파티션에 I/O 서비스를 제공함에 있어서의 그 역할 때문에, VIOS 파티션(380)은 일반적으로 다른 파티션(375,376,377)보다 인터럽트를 처리하는데 많은 시간을 소비한다. 그러나, CPU 폴딩 덕택에, VIOS 파티션(및 하드웨어 인터럽트를 처리하는데 많은 시간을 소비하는 임의의 다른 파티션)은 그의 가상 CPU를 폴딩(감소)시킬 수 있다. 이러한 감소는 가상 CPU.
파티션이 생성될 때, 시스템 관리자는 파티션에 대해 "원하는" 개수의 가상 CPU(vCPU)를 구성하고, 소정의 권리부여된 용량을 파티션(가상 CPU 권한부여 값)에 할당한다. 하이퍼바이저는 멀티-프로그램 환경에서 OS가 프로세스(또는 쓰레드)를 스위칭하는 방식과 유사하게, vCPU를 물리적 프로세서 내 및 밖으로 스위칭한다. 따라서, vCPU 개수의 감소는 시스템에 대한 문맥-전환 오버헤드를 적게 한다. 파티션의 수명 동안, CPU 폴딩은 잠재적으로 파티션의 vCPU의 개수를 시스템 관리자의 "원하는" 개수로부터 시스템 결정 "최적의"개수로 잠재적으로 킥인(kick-in) 및 감소시킬 수 있다. 폴딩 알고리즘은 전통적으로 처리 용량을 최소 개수의 vCPU로 집약하는 쪽으로 구성된다. 가상 CPU의 개수를 줄이는 것이 예를 들어 VIOS 파티션(380)의 인터럽트 가중 환경에 대한 최선의 해결책이 되지 않을 수 있다. VIOS 파티션(380)과 같은 인터럽트 집약 파티션에 대한 CPU 폴딩의 효과를 상쇄시키기 위해, 운영 시스템은 파티션이 인터럽트를 서비싱하는데 소비하는 전체 처리 시간의 백분율을 언폴딩 vCPU에 대한 트리거로서 사용한다. 인터럽트 가중 환경에서, 이것은 보다 많은 컴퓨팅 리소스를 보다 쉽게 가능하도록 함으로써 특히 언캡핑된 파티션에 대한 인터럽트 서비스 레이턴시를 감소시킨다. 캡핑된 파티션에 대해서도, vCPU를 추가(언폴딩)하는 것은 유휴하고, 이용가능한 물리적 프로세서를 갖는 서버 상에서 인터럽트 레이턴시를 감소시키는데 도움을 줄 수 있다. 이용가능한 물리적 프로세서가 존재하는 경우 vCPU를 언폴딩하게 되면 상이한 물리적 프로세서 상에서 다수의 인터럽트를 동시에 처리할 수 있고, 따라서, 서비스 레이턴시를 감소시킬 수 있다. 언캡 파티션에서, 추가의 이점은 보다 많은 vCPU가 추가되는 경우 파티션에 대한 최대 달성가능 처리 용량이 증가한다는 것이다. 전체 사용 중인 시간(overall busy time)보다, 전체 인터럽트 처리 시간을 트리거로서 사용하는 것 너머의 원리는 계산 쓰레드(사용 중인 시간에는 기여하나, 인터럽트 처리 시간에는 기여하지 않음)가 인터럽트에 비해, 보다 "완화된" 응답 시간 요건을 갖는 경향이 있다는 것이다. 따라서, 인터럽트에 속박되지 않은 환경은 언폴딩의 이점을 가질 가능성이 적고, 보다 덜 적극적으로 언폴딩할 수 있다.
IBM의 AIXTM 운영 시스템과 같은 다수의 운영 시스템은 인터럽트를 처리하는데 소비한 시간의 양을 연속적으로 카운팅한다. 이 메트릭(metric)은 파티션(예를 들어, 파티션(375,376,377,380))이 인터럽트를 처리하는데 소비한 파티션 사용 중인 시간의 백분율을 계산하기 위해 운용 시스템에 의해 사용된다. 이 백분율이 관리자 정의(조정가능) 임계값을 초과하는 경우, 이 백분율은 vCPU를 언폴딩하기 위한 트리거로서 사용되되, vCPU의 현재 개수는 파티션 생성 동안에 지정된 vCPU의 "바람직한" 개수보다 작다. 인터럽트를 처리하는데 소비한 시간을 계산하는 것이 다소 저렴한데, 그 이유는 운영 시스템은 그의 정상 동작의 일부로서 이 정보를 유지하기 때문이다.
일 실시예에서, 폴딩/언폴딩 결정을 내리는 운용 시스템은 하이퍼바이저 내에 실행되는 운영 시스템이며, 그에 따라, 하이퍼바이저는 본질적으로 파티션(예를 들어, 파티션(375,376,377,380))에 할당된 vCPU를 폴딩/언폴딩한다. 또 다른 실시예에서, 개별적인 파티션 내에서 구동되는 운용 시스템은 폴딩 알고리즘을 실행시키며, 따라서 폴딩/언폴딩 결정에 기초하여, 다수의 vCPU가 그들의 특정 파티션에 할당되는 방식을 결정한다. 임의의 경우, 본 명세서에서 사용되는 바와 같이, "운영 시스템"이라는 용어는 다수의 vCPU가 파티션에 할당되는 방식, 운영 시스템이 하이퍼바이저 내에서 실행되는지 또는 특정 파티션들 중 하나 내에서 실행되는지 여부를 결정하는 프로세스를 지칭한다.
이러한 계산은 저렴하기 때문에, 체크 간의 시간 간격은 다소 공격적으로 설정될 수 있다. 예를 들어, 디스패처(dispatcher)는 각 인터럽트가 서비싱된 이후 업데이트되는 메트릭을 잠재적으로 야기할 수 있는 새로운 쓰레드를 디스패치하도록 호출될 때마다 시간 소비 값을 계산할 수 있다. 다시 말해, 파티션이 인터럽트를 처리하는데 소비한 시간의 양에 기초한 언폴딩 결정은 운영 시스템에 의해 다수의 상이한 지점에서 이루어질 수 있다. 결정은 고정된 시간 간격에서(예를 들어, 매 10초마다) 시간 소비 값을 조사함으로써 이루어질 수 있거나, 또는 결정을 내릴 필요성은 새로운 쓰레드(또는 유휴 쓰레드)를 디스패치하도록 디스패처가 호출되는 경우와 같은 이벤트에 의해 트리거될 수 있다. 핑-퐁 효과를 피하기 위해, vCPU를 폴딩하는 결정은 보다 덜 공격적으로 이루질 수 있다. 다시 말해, 파티션이 인터럽트를 처리하는데 소비한 시간의 양에 기초하여 vCPU를 언폴딩하는 결정은 파티션 리소스(예를 들어, CPU) 활용에 기초하여 vCPU를 폴딩하는 결정보다 빈번히 이루어질 수 있다.
도 4는 다양한 가상 파티션에 처리 용량 및 인터럽트 백분율 임계값을 할당하기 위해 시스템 관리자에 의해 수행되는 설정 프로세싱을 나타내는 흐름도이다. 프로세싱은 참조번호(400)에서 시작되고, 단계(410)에서, 가상 환경에서 하이퍼바이저에 의해 관리되는 파티션은 시스템 구성 데이터 저장소(420)로부터 선택된다. 시스템 구성 데이터 저장소(420)는 하이퍼바이저에 의해 관리되는 임의의 가상 I/O 서버(VIOS) 파티션을 포함한 다양한 파티션에 대한 정보를 저장하는데 사용된다. 시스템 관리자가 선택된 파티션에 컴퓨팅 용량을 할당하기를 희망하는지 여부에 대한 결정(결정(430))이 이루어진다. 시스템 관리자가 선택된 파티션에 컴퓨팅 용량을 할당하기로 결정하면, 결정(430)은 "예"브랜치(435)로 분기하고, 단계(440)에서, 시스템 관리자는 "권리부여된" 처리 용량("권리부여 값")을 선택된 파티션에 할당한다. 일 실시예에서, 시스템 관리자는 선택된 파티션을 "언캡"하기로 결정할 수 있다. 파티션을 언캡하면 파티션의 가상 CPU 각각은 잠재적으로 처리 용량의 전체 물리적 프로세서의 가치를 소비해도 된다. 즉, 일 파티션이 2개의 가상 CPU을 가지고 있는 경우, 언캡 모드에서, 이 파티션은 컴퓨팅 용량의 최대(기껏해야) 2개의 물리적 (실제) 프로세서의 가치를 소비할 수 있다. 단계(450)에서, 할당된 "권리부여 값"은 비휘발성 파티션 할당 용량 데이터 저장소(460)에 저장된다.
결정단계(430)로 되돌아가서, 시스템 관리자가 컴퓨팅 용량을 선택된 파티션에 할당하지 않기로 결정하는 경우, 결정단계(430)는 단계(440,450)를 우회하는 "아니오" 브랜치(465)로 분기한다. 시스템 관리자가 또 다른 파티션을 선택하기로 판단하는지 여부가 결정된다(결정단계(470)). 시스템 관리자가 또 다른 파티션을 선택하기를 원하는 경우, 결정단계(470)는 단계(410)에서 다음 파티션을 선택하도록 루프백(loop back)하는 "예" 브랜치(474)로 분기한다. 이러한 루핑(looping)은 시스템 관리자가 더 이상 추가의 파티션을 선택하는 것을 원하지 않을 때까지 계속되는데, 원하지 않을 때, 결정단계(470)는 "아니오" 브랜치(476)로 분기한다.
단계(480)에서, 시스템 관리자는 하나 이상의 인터럽트 백분율 임계값을 설정 및 저장한다. 파티션이 인터럽트 백분율 임계값들 중 하나에 도달(hit)하는 경우, 그의 vCPU는 보다 많은 인터럽트 처리 시간을 소모하는 파티션이 보다 많은 vCPU(단계(440)에서 설정된 "권리부여된" vCPU의 양까지)를 가지도록 "언폴딩"될 것이다. 일 실시예에서, 인터럽트 백분율 임계값은 각 파티션이 vCPU를 "언폴딩"하기 위해 동일한 인터럽트 백분율 임계값을 사용하도록 시스템 전반에 기초하여 설정된다. 또 다른 실시예에서, 각 파티션이 상이한 인터럽트 백분율 임계값 및 디폴트 인터럽트 백분율 임계값(이 경우, 인터럽트 백분율 임계값은 특정 파티션에 대해 설정되지 않음)을 가지도록 각 파티션은 별개로 조정될 수 있다. 이들 인터럽트 백분율 임계값은 비휘발성 인터럽트 백분율 임계값 데이터 저장소(490)에 저장된다. 이후, 설정 프로세싱은 단계(495)에서 종료한다.
도 5는 가상 파티션에 할당된 가상 CPU(vCPU)를 폴딩/언폴딩하기 위해 운영 시스템이 취하는 단계들을 나타내는 흐름도이다. 프로세싱은 단계(500)에서 시작되고, 이후, 단계(510)에서, 하이퍼바이저는 파티션 할당 용량 데이터 저장소(460)에 저장된 권리부여 값에 기초하여 가상 CPU의 할당을 초기화한다.
사전정의된 프로세스(515)에서, 운영 시스템은 파티션이 인터럽트를 처리하는데 소비하는 시간의 양을 주기적으로 체크한다(사전정의된 프로세스(515), 도 6 및 그에 대응하는 상세한 설명). 앞서 설명한 바와 같이, 몇몇 시스템에서, 파티션이 인터럽트를 처리하는데 소비하는 시간의 양을 체크하는데 사용되는 데이터는 쉽게 이용가능하고, 따라서, 사전정의된 프로세스(515)는 이들 환경에서 보다 적극적으로 (예를 들어, 단계(530) 내지 단계(580)에 도시되어 있는 vCPU를 폴딩하는데 사용되는 활용 체크보다 빈번히) 수행될 수 있다.
사전정의된 프로세스(515)가 수행되는 동일한 시간 간격에서 주기적으로, 그러나 반드시 그럴 필요는 없이, 운영 시스템은 단계(520)에서 파티션의 활용을 체크한다. 파티션의 활용이 체크되는 경우, 단계(530)에서, 예를 들어 운영 시스템로부터 검색되고 메모리(540)로부터 판독되는 파티션의 CPU 활용 메트릭과 같은 다양한 컴퓨터 시스템 리소스 메트릭을 사용하여 가상 CPU 폴딩/언폴딩 알고리즘이 처리된다. 폴딩/언폴딩 알고리즘의 실행에 기초하여, 주어진 파티션에 대해 보다적은 수의 가상 CPU가 필요한지 여부가 결정된다(결정단계(550)). 보다 적은 수의 파티션이 필요한 경우, 결정단계(550)는 "예" 브랜치(555)로 분기하고, 이 후, 단계(560)에서, 파티션에 할당된 가상 CPU의 개수는 감소("폴딩")되고 이 감소된 값은 가상 CPU를 파티션에 할당할 때 사용되는 가상 CPU 메모리 영역(575)에 저장된다.
한편으로, 폴딩/언폴딩 알고리즘에 기초하여 보다 적은 가상 CPU가 필요하지않는 경우, 결정단계(550)는 "아니오" 브랜치(565)로 분기하고, 이후, 파티션이 보다 많은 가상 CPU를 필요로 하는지 여부와 파티션에 할당된 가상 CPU의 현재 개수가 가상 CPU의 파티션의 "권리부여 값"보다 적은 지 여부가 결정된다(결정단계(570)). 파티션이 보다 많은 가상 CPU를 필요로 하고 파티션에 할당된 가상 CPU의 현재 개수가 가상 CPU의 파티션의 "권리부여 값"보다 적은 경우, 결정단계(570)는 "예" 브랜치(572)로 분기하고, 이후, 단계(580)에서, 파티션에 할당된 가상 CPU의 개수는 파티션의 권리부여 값 이하인 값까지 증가("언폴딩")된다. 이 증가된 값은 가상 CPU를 파티션에 할당할 때 사용되는 가상 CPU 메모리 영역(575)에 저장된다.
다른 한편, (a) 파티션에 대해 보다 많은 가상 CPU가 필요하지 않거나, 및/또는 (b) 파티션이 이미 사용하도록 권리부여된 만큼 많은 가상 CPU를 이미 사용하고 있는 경우(예를 들어, 사용되는 vCPU=권리부여 값), 결정단계(570)는 단계(580)를 우회하는 "아니오" 브랜치(585)로 분기하고 인터럽트를 서비싱하는데 소비한 파티션의 시간에 대한 다음 주기 체크 또는 파티션의 시스템 리소스 활용에 대한 다음 체크를 대기하도록 루프백한다.
도 6은 파티션이 인터럽트를 서비싱하는데 소비하는 시간의 양을 분석하기 위해 운영 시스템이 수행하는 루틴에 의해 실행되는 단계를 나타내는 흐름도이다. 프로세싱은 단계(600)에서 시작되고, 이후, 단계(610)에서, 이 파티션에 할당된 가상 CPU의 "권리부여 값"이 파티션 할당 용량 데이터 저장소(460)로부터 검색된다. 이 파티션에 할당된 가상 CPU의 현재 개수가 이 파티션에 할당된 가상 CPU의 권리부여된 값과 동일하지 여부가 결정된다(결정단계(620)). 이 파티션에 할당된 가상 CPU의 현재 개수가 파티션의 권리부여 값과 동일하지 않는 경우(예를 들어, 현재 개수가 권리부여 값보다 작은 경우), 결정단계(620)는 파티션이 인터럽트를 처리하는데 소비하는 시간의 양에 기초하여 추가의 가상 CPU가 이 파티션에 할당되아여 하는지 여부를 결정하기 위해 "아니오" 브랜치(625)로 분기한다.
단계(630)에서, 이 파티션이 인터럽트를 처리하는데 소비한 시간의 양은 이 파티션이 인터럽트를 처리하는데 소비한 시간의 양(예를 들어, 프로세서 싸이클, 실제 CPU 시간 등)의 운영 시스템에 의해 유지되는 카운터인 메모리 영역(640)으로부터 검색된다. 단계(650)에서, 시간의 양 값은 백분율(파티션이 인터럽트를 처리하는데 소비하는 파티션의 시간의 백분율)로 변환된다. 이 계산된 백분율은 메모리 영역(660)에 저장된다. 단계(670)에서, 파티션의 현재 인터럽트 시간 백분율 값은 시스템 관리자에 의해 설정되고 데이터 저장소(490)에 저장된 시간 백분율 임계값에 비교된다. 이 비교에 기초하여, 파티션의 현재 인터럽트 시간 백분율이 임계값을 초과하는지 여부가 결정된다(결정단계680)). 파티션의 현재 인터럽트 시간 백분율이 임계값을 초과하는 경우, 결정단계(680)는 "예" 브랜치(685)로 분기하고, 이후, 단계(690)에서, 파티션에 할당된 가상 CPU의 개수는 파티션의 권리부여 값 이하의 값까지 증가("언폴딩")된다. 이 증가된 값은 가상 CPU를 파티션에 할당할 때 사용되는 가상 CPU 메모리(575)에 저장된다. 다른 한편으로, 파티션의 현재 인터럽트 시간 백분율이 임계값을 초과하지 않는 경우, 결정단계(680)는 단계(690)를 우회하는 "아니오"브랜치(692)로 분기한다. 이후, 프로세싱은 단계(695)에서 호출 루틴(도 5 참조)으로 복귀한다.
결정단계(620)로 돌아가서, 이 파티션에 할당된 가상 CPU의 현재 개수가 파티션의 권리부여 값과 동일한 경우(예를 들어, 가상 CPU의 현재 개수가 권리부여 값과 동일한 경우), 결정단계(620)는 단계(630) 내지 단계(690)를 우회하는 "예" 브랜치(694)로 분기한다. 이후, 프로세싱은 단계(695)에서 호출 루틴(도 5 참조)으로 복귀한다.
본 발명의 바람직한 실시예들 중 하나는 클라이언트 애플리케이션, 즉 컴퓨터의 랜덤 액세스 메모리에 상주할 수 있는 코드 모듈 내의 인스트럭션 세트 또는 다른 기능성 설명 자료이다. 컴퓨터가 요구할 때까지, 인스트럭션 세트는 또 다른 컴퓨터 메모리 내에, 예를 들어, 하드 디스크 드라이브, 또는 광학 디스크(CD ROM에 사용됨) 또는 플로피 디스크(플로피 디스크 드라이브에 사용됨)와 같은 착탈가능 메모리 내에 저장될 수 있거나, 또는 인터넷 또는 다른 컴퓨터 네트워크를 통해 다운로드될 수 있다. 따라서, 본 발명의 실시예는 컴퓨터에 사용되는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 또한, 본 명세서에서 기술한 다양한 방법은 편의상 소프트웨어에 의해 선택적으로 활성 또는 구성되는 범용 컴퓨터 내에서 구현되지만, 당업자라면, 이러한 방법은 하드웨어, 펌웨어 또는 필요한 방법 단계를 수행하도록 구성된 보다 특화된 장치에서 수행될 수 있다. 기능적 설명 자료는 기능을 머신에 전달하는 정보이다. 기능적 설명 자료는 컴퓨터 프로그램, 인스트럭션, 룰, 팩트, 컴퓨터가능 기능의 정의, 객체 및 데이터 구조를 포함하나 여기에 국한되지 않는다.
본 발명의 특정 실시예가 도시되고 설명되었지만, 본 명세서의 내용에 기초하여, 당업자라면, 변형 및 수정이 이루질 수 있음을 알 수 있을 것이다. 더 나아가, 본 발명은 첨부한 청구항에 의해서만 정의됨을 이해될 것이다. 당업자라면, 소개된 청구항 요소의 특정 개수가 의도되는 경우, 이러한 의도는 청구항에 명시적으로 기재될 것이며, 이러한 기재가 없다면, 이러한 제한은 주어지지 않는다. 비제한적인 예로서, 또한 이해를 돕기 위해, 후속하는 청구항은 청구항 요소를 기재하기 위해 "적어도 하나" 및 "하나 이상의"의 안내 문구의 사용을 포함한다. 그러나, 이러한 문구의 사용은 동일한 청구항이 "하나 이상" 또는 "적어도 하나"의 소개 문구 및 "단수"의 표현을 포함하는 경우에도, "단수"로 표현된 청구항 요소의 소개가 이러한 소개된 청구항 요소를 포함하는 임의의 특정 청구항을 그러한 요소를 오직 하나만을 포함하는 발명으로 제한함을 의미하는 것으로 해석되어서는 안된다.

Claims (10)

  1. 컴퓨터 시스템 상에서 실행되는 가상 환경에 포함된 복수의 파티션으로부터 하나의 파티션을 선택하는 단계;
    상기 선택된 파티션의 하나 이상의 리소스 활용을 제 1 시간 간격에 기초하여 주기적으로 체크하는 단계 -상기 체크하는 단계는 상기 선택된 파티션에 할당된 가상 CPU의 개수를 상기 리소스 활용에 기초하여 변경하는 폴딩(folding) 알고리즘을 실행하는 단계를 포함함-;
    상기 제 1 시간 간격보다 짧은 제2 시간 간격에 기초하여,
    컴퓨터 시스템 상에서 실행되는 가상 환경에 포함된 복수의 파티션으로부터 선택된 파티션에 대응하는 시간 소비 값을 검색하는 단계 -상기 시간 소비 값은 상기 선택된 파티션이 인터럽트를 처리하는데 소비한 시간의 양에 대응하고 다수의 가상 CPU가 상기 선택된 파티션에 할당됨-;
    상기 시간 소비 값을 하나 이상의 인터럽트 임계값에 비교하는 단계;
    상기 시간 소비 값이 상기 인터럽트 임계값 중 하나보다 크다는 것이 상기 비교에 의해 밝혀지면, 상기 선택된 파티션에 할당되는 가상 CPU의 개수를 증가시키는 단계;를 수행하는 컴퓨터로 구현되는 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 증가시키는 단계 이전에, 상기 선택된 파티션에 대응하는 가상 CPU 권리부여(entitlement) 값과 상기 선택된 파티션에 할당된 가상 CPU의 현재 개수를 검색하는 단계를 더 포함하되, 상기 증가시키는 단계는 상기 가상 CPU의 현재 개수가 상기 가상 CPU 권리부여 값보다 작은 경우에만 실행되는
    컴퓨터로 구현되는 방법.
  4. 제 1 항에 있어서,
    상기 시간 소비 값을 백분율 값으로 변환하는 단계를 더 포함하되, 상기 백분율 값은 상기 선택된 파티션이 인터럽트를 처리하는데 소비한 시간의 백분율을 나타내고, 상기 인터럽트 백분율은 하나 이상의 임계값 백분율을 포함하고, 상기 비교하는 단계는 상기 백분율 값을 상기 임계값 백분율에 비교하는
    컴퓨터로 구현되는 방법.

  5. 제 1 항에 있어서,
    상기 시간 소비 값을 검색하기 전에, 사용자로부터 하나 이상의 인터럽트 임계값 백분율을 수신하는 단계와,
    상기 수신된 인터럽트 임계값 백분율을 비휘발성 저장 영역에 저장하는 단계를 포함하되,
    상기 저장된 인터럽트 임계값 백분율은 상기 시간 소비 값을 상기 인터럽트 임계값에 비교하기 전에 상기 비휘발성 저장 영역으로부터 검색되는
    컴퓨터로 구현되는 방법.
  6. 하나 이상의 프로세서(CPU);
    상기 CPU 중 적어도 하나에 의해 액세스가능한 메모리;
    상기 CPU 중 적어도 하나에 의해 액세스가능한 비휘발성 저장 디바이스;
    상기 메모리에 로딩되고 상기 CPU 중 적어도 하나에 의해 실행되어 가상 환경을 제공하는 하이퍼바이저 애플리케이션 -상기 가상 환경 내에 복수의 파티션이 포함되고, 상기 파티션 중 하나 이상에 운영 시스템이 실행됨-;
    상기 비휘발성 저장 디바이스 상에 저장된 하나 이상의 데이터 저장소 -상기 데이터 저장소는 상기 하나 이상의 파티션에 대응하는 하나 이상의 가상 CPU 권리부여 값 및 하나 이상의 인터럽트 임계값을 저장함-;
    상기 메모리 내로 로딩되고 상기 운영 시스템 중 선택된 하나의 운영 시스템에 의해 실행되는 인스트럭션 세트;를 포함하고,
    상기 인스트럭션 세트는,
    컴퓨터 시스템 상에서 실행되는 가상 환경에 포함된 복수의 파티션으로부터 하나의 파티션을 선택하는 단계,
    상기 선택된 파티션의 하나 이상의 리소스 활용을 제 1 시간 간격에 기초하여 주기적으로 체크하는 단계 -상기 체크하는 단계는 상기 선택된 파티션에 할당된 가상 CPU의 개수를 상기 리소스 활용에 기초하여 변경하는 폴딩(folding) 알고리즘을 실행하는 단계를 포함함-,
    상기 제1 시간 간격 보다 짧은 제2 시간 간격에 기초하여,
    상기 가상 환경에 포함된 복수의 파티션으로부터 선택된 파티션에 대응하는 시간 소비 값을 검색하는 단계 -상기 시간 소비 값은 상기 선택된 파티션이 인터럽트를 처리하는데 소비한 시간의 양에 대응하고 다수의 가상 CPU가 상기 선택된 파티션에 할당됨-,
    상기 데이터 저장소에 저장된 상기 인터럽트 임계값을 검색하는 단계,
    상기 시간 소비 값을 상기 검색된 인터럽트 임계값에 비교하는 단계,
    상기 시간 소비 값이 상기 인터럽트 임계값 중 하나보다 크다는 것이 상기 비교에 의해 밝혀지면, 상기 선택된 파티션에 할당되는 가상 CPU의 개수를 증가시키는 단계를 수행하는
    정보 처리 시스템.
  7. 삭제
  8. 제 6 항에 있어서,
    상기 선택된 운영 시스템에 의해 실행되는 상기 인스트럭션 세트는,
    상기 증가시키는 단계 이전에, 상기 선택된 파티션에 대응하는 가상 CPU 권리부여 값과 상기 선택된 파티션에 할당된 가상 CPU의 현재 개수를 검색하는 단계를 더 수행하고,
    상기 증가시키는 단계는 상기 가상 CPU의 현재 개수가 상기 가상 CPU 권리부여 값보다 작은 경우에만 실행되는
    정보 처리 시스템.
  9. 제 6 항에 있어서,
    상기 선택된 운영 시스템에 의해 실행되는 상기 인스트럭션 세트는,
    상기 시간 소비 값을 백분율 값으로 변환하는 단계를 더 수행하되,
    상기 백분율 값은 상기 선택된 파티션이 인터럽트를 처리하는데 소비한 시간의 백분율을 나타내고, 상기 인터럽트 백분율은 하나 이상의 임계값 백분율을 포함하고, 상기 비교하는 단계는 상기 백분율 값을 상기 임계값 백분율에 비교하는
    정보 처리 시스템.
  10. 컴퓨터 프로그램 코드를 포함하는 컴퓨터 판독가능 매체로서,
    상기 컴퓨터 프로그램 코드는 정보 처리 시스템에 의해 실행되는 경우, 상기 정보 처리 시스템으로 하여금 상기 청구항 제1항, 제3항, 제4항, 제5항 중 어느 한 항의 모든 단계들을 실행하도록 하는,
    컴퓨터 판독가능 매체.
KR1020107025500A 2008-05-30 2009-05-21 컴퓨터로 구현되는 방법, 정보 처리 시스템 및 컴퓨터 프로그램 제품 KR101385873B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/129,808 2008-05-30
US12/129,808 US8312456B2 (en) 2008-05-30 2008-05-30 System and method for optimizing interrupt processing in virtualized environments
PCT/EP2009/056203 WO2009144169A1 (en) 2008-05-30 2009-05-21 System and method for optimizing interrupt processing in virtualized environments

Publications (2)

Publication Number Publication Date
KR20110030426A KR20110030426A (ko) 2011-03-23
KR101385873B1 true KR101385873B1 (ko) 2014-04-29

Family

ID=40957608

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107025500A KR101385873B1 (ko) 2008-05-30 2009-05-21 컴퓨터로 구현되는 방법, 정보 처리 시스템 및 컴퓨터 프로그램 제품

Country Status (6)

Country Link
US (1) US8312456B2 (ko)
EP (1) EP2281239B1 (ko)
JP (1) JP4833380B2 (ko)
KR (1) KR101385873B1 (ko)
CN (1) CN102027453B (ko)
WO (1) WO2009144169A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100990412B1 (ko) * 2009-10-29 2010-10-29 주식회사 팀스톤 씨피유 가상화를 지원할 수 있는 컴퓨터 서버
US9088609B2 (en) * 2009-12-24 2015-07-21 International Business Machines Corporation Logical partition media access control impostor detector
US8122167B1 (en) 2010-08-06 2012-02-21 International Business Machines Corporation Polling in a virtualized information handling system
US9183030B2 (en) * 2011-04-27 2015-11-10 Microsoft Technology Licensing, Llc Virtual processor allocation techniques
CN102317917B (zh) * 2011-06-30 2013-09-11 华为技术有限公司 热点域虚拟机cpu调度方法及虚拟机***
CN103049318B (zh) * 2011-10-11 2017-10-17 北京科银京成技术有限公司 分区操作***的虚拟中断方法
US10114679B2 (en) * 2011-10-26 2018-10-30 Microsoft Technology Licensing, Llc Logical CPU division usage heat map representation
US9411624B2 (en) * 2011-11-22 2016-08-09 Red Hat Israel, Ltd. Virtual device interrupt hinting in a virtualization system
KR101394365B1 (ko) * 2011-12-27 2014-05-14 서강대학교산학협력단 가상화 환경에서 프로세서를 할당하는 장치 및 방법
US9785460B2 (en) * 2013-05-03 2017-10-10 Vmware, Inc. Dynamic virtual machine sizing
US9727361B2 (en) * 2013-12-12 2017-08-08 International Business Machines Corporation Closed-loop feedback mechanism for achieving optimum performance in a consolidated workload environment
US9342372B1 (en) 2015-03-23 2016-05-17 Bmc Software, Inc. Dynamic workload capping
US9680657B2 (en) 2015-08-31 2017-06-13 Bmc Software, Inc. Cost optimization in dynamic workload capping
US10819653B2 (en) * 2016-12-29 2020-10-27 Siemens Aktiengesellschaft Control unit and method for operating an industrial automation system communication network comprising a plurality of communication devices
CN109542610B (zh) * 2018-12-04 2023-06-30 中国航空工业集团公司西安航空计算技术研究所 一种多分区操作***虚中断标准组件实现方法
US11467882B2 (en) * 2018-12-21 2022-10-11 Target Brands, Inc. Methods and systems for rapid deployment of configurable computing resources
US11620154B2 (en) * 2020-01-02 2023-04-04 International Business Machines Corporation Suppressing interrupts to an application thread

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060206887A1 (en) 2005-03-14 2006-09-14 Dan Dodge Adaptive partitioning for operating system
US20080077927A1 (en) 2006-09-26 2008-03-27 Armstrong William J Entitlement management system
US20080082977A1 (en) 2006-09-29 2008-04-03 Microsoft Corporation Automatic load and balancing for virtual machines to meet resource requirements

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6986137B1 (en) 1999-09-28 2006-01-10 International Business Machines Corporation Method, system and program products for managing logical processors of a computing environment
US20020099753A1 (en) * 2001-01-20 2002-07-25 Hardin David S. System and method for concurrently supporting multiple independent virtual machines
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
US7080378B1 (en) * 2002-05-17 2006-07-18 Storage Technology Corporation Workload balancing using dynamically allocated virtual servers
US7000051B2 (en) * 2003-03-31 2006-02-14 International Business Machines Corporation Apparatus and method for virtualizing interrupts in a logically partitioned computer system
JP3922576B2 (ja) 2003-06-27 2007-05-30 株式会社日立製作所 命令プロセッサ割り当てスケジューリング方法、該命令プロセッサ割り当てスケジューリング方法を実現する計算機システムおよびそのためのプログラム
US20070067366A1 (en) * 2003-10-08 2007-03-22 Landis John A Scalable partition memory mapping system
WO2005036358A2 (en) * 2003-10-08 2005-04-21 Unisys Corporation Virtualization system for guest
US20070061441A1 (en) * 2003-10-08 2007-03-15 Landis John A Para-virtualized computer system with I/0 server partitions that map physical host hardware for access by guest partitions
US20050138422A1 (en) * 2003-12-23 2005-06-23 Hancock Peter J. System and method for metering the performance of a data processing system
JP2006059052A (ja) 2004-08-19 2006-03-02 Hitachi Ltd 仮想計算機システム
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
US7296133B2 (en) * 2004-10-14 2007-11-13 International Business Machines Corporation Method, apparatus, and computer program product for dynamically tuning amount of physical processor capacity allocation in shared processor systems
US7260664B2 (en) * 2005-02-25 2007-08-21 International Business Machines Corporation Interrupt mechanism on an IO adapter that supports virtualization
US7613897B2 (en) * 2005-03-30 2009-11-03 International Business Machines Corporation Allocating entitled processor cycles for preempted virtual processors
US8209684B2 (en) * 2007-07-20 2012-06-26 Eg Innovations Pte. Ltd. Monitoring system for virtual application environments

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060206887A1 (en) 2005-03-14 2006-09-14 Dan Dodge Adaptive partitioning for operating system
US20080077927A1 (en) 2006-09-26 2008-03-27 Armstrong William J Entitlement management system
US20080082977A1 (en) 2006-09-29 2008-04-03 Microsoft Corporation Automatic load and balancing for virtual machines to meet resource requirements

Also Published As

Publication number Publication date
EP2281239A1 (en) 2011-02-09
EP2281239B1 (en) 2015-07-01
CN102027453B (zh) 2014-04-09
US8312456B2 (en) 2012-11-13
JP4833380B2 (ja) 2011-12-07
CN102027453A (zh) 2011-04-20
US20090300317A1 (en) 2009-12-03
WO2009144169A1 (en) 2009-12-03
JP2011521384A (ja) 2011-07-21
KR20110030426A (ko) 2011-03-23

Similar Documents

Publication Publication Date Title
KR101385873B1 (ko) 컴퓨터로 구현되는 방법, 정보 처리 시스템 및 컴퓨터 프로그램 제품
US9183030B2 (en) Virtual processor allocation techniques
US8443376B2 (en) Hypervisor scheduler
EP2411915B1 (en) Virtual non-uniform memory architecture for virtual machines
JP5782445B2 (ja) 物理コンピューティング・リソースの部分を論理パーティションに割り当てる方法
US8910153B2 (en) Managing virtualized accelerators using admission control, load balancing and scheduling
US8365181B2 (en) Method and system for guiding scheduling decisions in clusters of computers using dynamic job profiling
US20180157519A1 (en) Consolidation of idle virtual machines
US20140280970A1 (en) Systems and methods for time-based dynamic allocation of resource management
US9811346B2 (en) Dynamic reconfiguration of queue pairs
US10579416B2 (en) Thread interrupt offload re-prioritization
US8327085B2 (en) Characterizing multiple resource utilization using a relationship model to optimize memory utilization in a virtual machine environment
US8892740B2 (en) Dynamic application provisioning in cloud computing environments
US20060143204A1 (en) Method, apparatus and system for dynamically allocating sequestered computing resources
WO2016056060A1 (ja) 計算機及びベクタの設定方法
US20220318057A1 (en) Resource Management for Preferred Applications
US8245229B2 (en) Temporal batching of I/O jobs
US9110731B1 (en) Hard allocation of resources partitioning
US7577814B1 (en) Firmware memory management
US8713569B2 (en) Dynamic association and disassociation of threads to device functions based on requestor identification
US20230125489A1 (en) Information handling systems and methods to provide workload remediation based on workload performance metrics and contextual information
JP7405236B2 (ja) 情報処理装置、情報処理方法および情報処理プログラム
US20240020174A1 (en) Memory disaggregation in a multi-node environment
US20230325227A1 (en) Reliable one-click cluster shutdown

Legal Events

Date Code Title Description
A201 Request for examination
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: 20170328

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190327

Year of fee payment: 6