KR101385827B1 - 가상화된 환경들 내의 리소스 할당 - Google Patents

가상화된 환경들 내의 리소스 할당 Download PDF

Info

Publication number
KR101385827B1
KR101385827B1 KR1020127001430A KR20127001430A KR101385827B1 KR 101385827 B1 KR101385827 B1 KR 101385827B1 KR 1020127001430 A KR1020127001430 A KR 1020127001430A KR 20127001430 A KR20127001430 A KR 20127001430A KR 101385827 B1 KR101385827 B1 KR 101385827B1
Authority
KR
South Korea
Prior art keywords
partitions
resource allocation
devices
bus
registers
Prior art date
Application number
KR1020127001430A
Other languages
English (en)
Other versions
KR20120030557A (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 KR20120030557A publication Critical patent/KR20120030557A/ko
Application granted granted Critical
Publication of KR101385827B1 publication Critical patent/KR101385827B1/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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Curing Cements, Concrete, And Artificial Stone (AREA)
  • Stored Programmes (AREA)

Abstract

데이터 처리 시스템 내에서 가상화 환경의 하나 또는 그 이상의 파티션들에 하나 또는 그 이상의 공유되는 디바이스들의 리소스들을 할당하기 위한 방법, 시스템, 장치, 및 컴퓨터 프로그램 제품이 개시된다. 상기 데이터 처리 시스템과 연관된 하나 또는 그 이상의 디바이스들에 대해, 적어도 하나의 사용자에 의해 정의된 리소스 할당을 받게 된다. 상기 하나 또는 그 이상의 파티션들과 연관된 하나 또는 그 이상의 레지스터들은 다이나믹하게 세팅되어 상기 적어도 하나의 리소스 할당을 실행하고, 이에 따라 상기 적어도 하나의 리소스 할당은 상기 하나 또는 그 이상의 트랜잭션들이 상기 파티션을 통해 실행될 때 사용자에 의해 정의된 정량적 측정치(수 및/또는 퍼센티지)의 디바이스들이 동작할 수 있도록 한다. 상기 시스템은, 상기 하나 또는 그 이상의 디바이스들이 파티션들 중 퍼포먼스 방해를 최소화하고 상기 사용자에 의해 정의된 리소스 할당과 동일하거나 더 작은 대역폭/용량으로 하나 또는 그 이상의 트랜잭션들을 실행할 수 있도록 한다.

Description

가상화된 환경들 내의 리소스 할당{RESOURCE ALLOCATION IN VIRTUALIZED ENVIRONMENTS}
본 발명은 일반적으로는 컴퓨터 시스템들과 관련되고, 구체적으로는 컴퓨터 시스템들 내의 가상화된 환경들과 관련된다.
가상화된 환경에서, 하이퍼바이저(hypervisor)(이는 또한 가상 머신 모니터로도 알려져 있음)로 일컬어지는 소프트웨어 계층은 하드웨어와 운영 체제 사이에서 실행되고, 다수의 "가상" 머신들(virtual machines; VM)(또한, 파티션들로도 일컬어짐)이 있는 것으로 보이도록 하거나 착각하도록 한다. 가상 머신은 가상 데이터 처리 시스템인데, 이 가상 데이터 처리 시스템은 그 머신의 하드웨어에 관해 배타적으로 접근하는 것처럼 보이지만, 그것들의 기능들은 그 머신에 공존하는 다른 가상 머신들 간에 아마도 그 하드웨어 리소스들을 공유함에 의해 달성된다. 상기 물리적 데이터 처리 시스템 내에 공유되는 하드웨어 리소스들은 메모리, 프로세서들, 및 입력/출력(I/O) 디바이스들을 포함하나, 이러한 예들로 한정되는 것은 아니다.
가상화된 환경들은 복수의 운영 체제들이 동일한 데이터 처리 시스템 상에서 동시에 실행될 수 있도록 하여, 각각의 가상 머신 또는 파티션이 운영 체제의 정확히 하나의 인스턴스를 실행시키도록 한다. 현재, 하이퍼바이저는 가상 머신 인터페이스를 이용하여 하드웨어 리소스들 - 예를 들어, 프로세서들, 메모리 페이지들, 및 디스크들 - 을 하나 또는 그 이상의 서로 다른 파티션들에 할당한다. 하이퍼바이저는 상기 하나 또는 그 이상의 파티션들이 서로 간에 간섭하지 않을 것을 보장하도록 이들 리소스들을 할당한다. 메모리 페이지들 및 CPU 코어들과 같은 일부 리소스들은 서로 다른 파티션들 간에 할당된다. 그래서 파티션들 간에 리소스들의 아무런 물리적 공유가 없도록 한다. 메모리 버스, 코히어런스 버스(coherence bus), 확장가능 포트들(scalability ports) 또는 메모리 컨트롤러들과 같은 다른 리소스들은, 본래, 어떠한 개별 파티션으로 배타적으로 할당될 수 없다. 멀티코어 프로세서 칩들의 급증은 비-배타적(non-execlusive) 할당의 문제에 더 자주 봉착하게 된다. 예를 들어, 동일한 칩 상의 여러 가지 코어들에 현재 할당된 몇 개의 파티션들이 있을 수 있는데, 그 파티션들 각각은 앞서 언급된 버스들과 같은 동일한 데이터 경로들을 효과적으로 공유한다. 하나의 파티션이 그 공유된 리소스들을 포화시키는 작업부하를 실행하고, 그에 따라 다른 파티션들은 그 공유된 리소스들을 이용할 수 없게 될 때, 동일한 데이터 경로를 공유하는 파티션들은 심각한 성능 간섭을 겪을 수 있다. 예를 들어, 하나 또는 그 이상의 파티션들에서의 작업부하는 메모리 버스들, 코히어런스 버스들, 확장가능 포트들, 및/또는 I/O 버스들을 매우 많이 이용하고 있을 때, 서로 다른 파티션들 상에서 실행 중인 다른 작업부하들의 퍼포먼스는 나쁜 영향을 받게 된다.
데이터 처리 시스템 내에서 가상화 환경의 하나 또는 그 이상의 파티션들에게 하나 또는 그 이상의 공유 디바이스들 및/또는 데이터 경로 용량들(capacities)의 리소스들을 할당하기 위한 장치, 방법, 시스템, 및 컴퓨터 프로그램 제품이 개시된다. 상기 가상화 환경 내의 각각의 파티션은 하나 또는 그 이상의 사용자 작업부하들을 관리한다. 그 데이터 처리 시스템과 연관된 하나 또는 그 이상의 디바이스들 및/또는 데이터 경로 용량들에 대해 적어도 하나의 사용자 정의 리소스 할당(assignment)을 받는다. 상기 시스템은 하나 또는 그 이상의 레지스터들을 관리하는데, 이 레지스터들은 상기 적어도 하나의 리소스 할당을 제어하도록 다이나믹하게 세팅된다. 상기 리소스 할당은 사용자 정의 정량적 측정값(quantitative measure)(숫자 및/또는 퍼센티지)의 디바이스들 및/또는 데이터 경로 용량들이 상기 하나 또는 그 이상의 작업부하들이 상기 파티션을 통해 실행될 때 동작할 수 있도록 한다. 하나 또는 그 이상의 파티션들은 상기 시스템에 의해 상기 디바이스들의 대역폭 및/또는 데이터 경로 용량을 공유하는 것이 가능해진다. 상기 작업부하들은 상기 사용자 정의 리소스 할당과 같거나 더 작은 특정 대역폭 및/또는 데이터 경로 용량의 디바이스들로 실행한다. 상기 시스템은 각각의 파티션 상에서 실행 중인 작업부하들을 분리시키고, 그에 따라 상기 하나 또는 그 이상의 파티션들 사이의 원치않는 간섭을 최소화한다.
본 발명의 실시예들은 이제 첨부되는 도면들을 참조하여 기술될 것이나, 이러한 도면들은 단지 예로서 제공되는 것에 지나지 않는다.
도 1은 본 발명의 일 실시예에 따라, 본 발명의 여러 가지 특징들이 바람직하게 구현될 수 있는 데이터 처리 시스템의 블록도를 제공한다.
도 2는 본 발명의 일 실시예에 따라, 하나 또는 그 이상의 파티션들로 분할된 멀티 코어 프로세싱 칩의 다이어그램이다.
도 3은 본 발명의 일 실시예에 따라, 가상화 환경 내의 하나 또는 그 이상의 파티션들을 위해 사용자 정의 리소스 할당들을 디스플레이하는 리소스 관리 그래픽 사용자 인터페이스의 일 예를 도시한다.
도 4는 본 발명의 일 실시예에 따라, 하나 또는 그 이상의 리소스 할당들을 구현하기 위해 트랜잭션을 실행하는 프로세스들을 도시하는 흐름도이다.
실시예들은 데이터 처리 시스템 내에서 가상화 환경의 하나 또는 그 이상의 파티션들에게 하나 또는 그 이상의 공유 디바이스들 및/또는 데이터 경로 용량들의 리소스들을 할당하기 위한 장치, 방법, 시스템 및 컴퓨터 프로그램 제품을 제공한다. 상기 가상화 환경 내의 각각의 파티션은 하나 또는 그 이상의 사용자 작업부하들을 관리한다. 상기 데이터 처리 시스템과 연관된 하나 또는 그 이상의 디바이스들 및/또는 데이터 경로 용량들에 대해 적어도 하나의 사용자 정의 리소스 할당을 받는다. 상기 시스템은 하나 또는 그 이상의 레지스터들을 관리하며, 상기 하나 또는 그 이상의 레지스터들은 상기 적어도 하나의 리소스 할당을 제어하도록 다이나믹하게 세팅된다. 상기 리소스 할당은 사용자 정의 정량적 측정치(숫자 및/또는 퍼센티지)의 디바이스들 및/또는 데이터 경로 용량들이 상기 하나 또는 그 이상의 작업부하들이 상기 파티션을 통해 실행될 때 동작할 수 있도록 한다. 하나 또는 그 이상의 파티션들은 상기 시스템에 의해 상기 디바이스들의 대역폭 및/또는 데이터 경로를 공유하는 것이 가능해진다. 상기 작업부하들은 상기 사용자 정의 리소스 할당과 같거나 더 작은 특정 대역폭 및/또는 데이터 경로 용량의 디바이스들로 실행한다. 상기 시스템은 각각의 파티션 상에서 실행 중인 작업부하들을 분리시키고, 그에 따라 상기 하나 또는 그 이상의 파티션들 사이의 원치않는 간섭을 최소화한다.
본 발명의 실시예들에 관한 이하의 상세한 설명은, 본 발명이 실행될 수 있는 특정 실시예들은 당해 기술 분야에서 숙련된 자들이 본 발명을 실시할 수 있을 정도로 충분히 상세히 기술된다. 또한 본 발명의 사상 또는 범위를 벗어나지 않고서 다른 실시예들이 이용될 수 있고 또한 논리적, 구조적, 프로그램적, 기계적, 전기적 그리고 다른 변경 예들이 있을 수 있다는 것을 이해해야 할 것이다. 그러므로, 이하의 상세한 설명은 본 발명의 범위를 한정하려는 것이 아니고, 본 발명의 범위는 첨부되는 청구항들 및 그것의 균등범위들로 정의된다.
도면들에 도시된 것들 내에서, 유사한 구성요소들은 그 이전의 도면(들)과 유사한 명칭들 및 참조 부호들이 제공된다. 뒤에 나오는 도면이 서로 다른 맥락에서의 구성요소 또는 서로 다른 기능을 갖는 구성요소를 이용하는 경우, 그 구성요소는 도면 번호를 나타내는 서로 다른 맨 앞의 숫자가 제공된다. 상기 구성요소들에 부여된 특정 숫자들은 설명을 돕기 위해서 제공되는 것이지 기술되는 실시예에 관한 어떠한 한정들(구조적 또는 기능적 또는 기타)을 시사하려는 의도는 아니다.
특정 컴포넌트, 디바이스 및/또는 파라미터 명칭들(예를 들어, 여기에 기술되는 실행 유틸리티/로직과 같은 것들)은 단지 예를 들기 위한 것이지, 본 발명에 관한 한정을 시사하려는 의도는 아니다. 따라서, 본 발명은 여기서의 컴포넌트들/디바이스들/파라미터들을 기술하기 위해 이용되는 다른 명명법/용어로 구현될 수 있다. 여기에 이용되는 각각의 용어는 그 용어들이 이용되는 맥락하에서 가장 넓은 범위로 해석되어야 할 것이다.
이제 도면들을 참조하면, 먼저 도 1에서 시작하여, 일 실시예에 이용되는 바와 같이, 데이터 처리 시스템(DPS)의 블록도 표현이 도시되어 있다. DPS는 컴퓨터, 휴대용 디바이스일 수 있고, 이러한 휴대용 디바이스의 예에는, 개인용 디지털 보조기기(PDA), 스마트폰, 및/또는 일반적으로 고려되는 처리 디바이스들일 수 있는 전자 디바이스들의 기타 유형들일 수 있다. 도시된 바와 같이, DPS(100)는 시스템 인터커넥트/버스(110)를 통해 시스템 메모리(115)에 연결된 적어도 하나의 프로세서 또는 중앙 처리 장치(CPU)(105)를 포함한다. 또한 시스템 버스(110)에는 입력/출력(I/O) 컨트롤러(120)가 연결되어 있는데, 이는 입력 디바이스들을 위한 접속 및 제어를 제공하며, 이것의 포인팅 디바이스(또는 마우스)(125) 및 키보드(127)가 도시되어 있다. I/O 컨트롤러(120)는 또한 출력 디바이스들의 접속 및 제공을 제공하며, 이것의 디스플레이(129)가 도시되어 있다. 또한, 멀티미디어 드라이브(128)(예, 컴팩트 디스크 읽기/쓰기(CDRW) 또는 디지털 비디오 디스크(DVD) 드라이브) 및 USB(범용 직렬 버스) 포트(126)가 도시되어 있고, 이는 I/O 컨트롤러(120)에 결합되어 있다. 멀티미디어 드라이브(128) 및 USB 포트(126)는 착탈식 스토리지 디바이스 - 이 착탈식 스토리지 디바이스 상에는 데이터/명령들/코드가 저장될 수 있는 및/또는 데이터/명령들/코드가 검색(retrieve)될 수 있음 - 의 삽입을 가능하게 한다. DPS(100)는 또한 스토리지(117)를 포함하며, 이 스토리지 내의/로부터의 데이터/명령들/코드가 또한 저장/검색될 수 있다.
DPS(100)는 또한 네트워크 인터페이스 디바이스(NID)(150)와 함께 도시되어 있는데, 이것에 의해 DPS(100)는 하나 또는 그 이상의 액세스/외부 네트워크들(170)에 접속될 수 있고, 이것에 관해 일 예로서 인터넷이 제공된다. 이러한 구현에서, 인터넷은 서로 간에 통신하기 위한 프로토콜들의 TCP/IP 세트(suite)를 이용하는 게이트웨이들 및 네트워크들의 월드와이드 컬렉션을 나타낸다. NID(150)는 그 네트워크의 액세스 포인트에 대한 유선 또는 무선 접속을 통해 동작하도록 구성될 수 있다. 네트워크(170)는 인터넷 또는 광역 네트워크(WAN)과 같은 외부 네트워크, 또는 이더넷(근거리 통신망(LAN)) 또는 가상 사설망(VPN)과 같은 내부 네트워크일 수 있다. 외부 네트워크(170)에 대한 접속은 하나 또는 그 이상의 서버들(165)로 수립될 수 있는데, 이 하나 또는 그 이상의 서버들(165)은 일 실시예에서, DPS(100) 상에서 실행을 위한 데이터/명령들/코드를 제공할 수도 있다.
DPS(100)에 관해 위에서 기술된 하드웨어 컴포넌트들에 추가로, 본 발명의 여러 가지 특징들은 소프트웨어(또는 펌웨어) 코드 또는 로직을 통해 완성/지원된다. 예를 들어, 하이퍼바이저(195)는 컴퓨터 소프트웨어/하드웨어 플랫폼 가상화(platform virtualization) 소프트웨어이며, 이는 호스트 컴퓨터 상에서 멀티 운영 체제들이 동시에 실행될 수 있도록 한다. 하이퍼바이저(195)는 하드웨어 제어 및 게스트 운영 체제 모니터로서 DPS(100)의 하드웨어 상에서 직접 실행(run)되고/되거나 운영 체제 환경 내에서 실행 중인 소프트웨어 어플리케이션이다. 또한, 소프트웨어(또는 펌웨어) 코드 또는 로직은 시스템 메모리(115) 또는 기타 스토리지(예, 스토리지(117)) 내에 저장되고 CPU(105)에 의해 실행된다. 따라서, 예를 들어, 시스템 메모리(115) 내에는 가상 머신 계층(175) 및 어플리케이션들(135)을 포함하여, 복수의 소프트웨어/펌웨어/로직 컴포넌트들이 예시되어 있다. 가상 머신 계층(175) 내에는 하나 또는 그 이상의 운영 체제들이 관리되는데, 운영 체제들의 예들에는 운영 체제 A(OS A)(130), OS B(132), 및 OS N(138)(여기서, 'N'은 유한한 수를 나타냄)가 있다. 가능한 운영 체제들의 예들은 Microsoft Window®(이는 마이크로소프트사의 상표), 또는 GNU®/Linux®(이는 무료 소프트웨어 파운데이션 및 리눅스 마크 인스티튜트의 등록 상표들임)이다. 가상 머신 계층(175)은 하이퍼바이저(195)와 통신하고/통신하거나 하이퍼바이저(195)에 의해 생성되어 하이퍼바이저(195)와 연관된 하나 또는 그 이상의 파티션들의 작업부하들을 관리한다. 또한 가상 머신 계층(175) 내에는 리소스 우선순위 할당(resource priority assignment, RPA) 유틸리티(140)(이는 RPA 로직을 제공하기 위해 CPU(105) 상에서 실행됨)가 있다. 실제 구현에서, RPA 유틸리티(140)는 하나의 실행가능한 컴포넌트를 제공하기 위해 가상 머신 계층(175)과 조합되거나 그 내부에 편입될 수 있고, 그래서 대응하는 조합된 코드가 CPU(150)에 의해 실행될 때 각각의 개별 소프트웨어 컴포넌트의 여러 가지 기능들을 집합적으로(collectively) 제공한다. 설명을 간략하게 하기 위해, RPA 유틸리티(140)는 독립형 또는 분리된 소프트웨어/펌웨어 컴포넌트로 예시되고 기술되어 있으며, 이는 이하에서 기술되는 바와 같은 특정 기능들을 제공한다.
일 실시예에서, 서버들(165)은 소프트웨어 운용 서버(software deploy server)를 포함하고, 및 DPS(100)는 네트워크 인터페이스 디바이스(150)를 사용하여 네트워크(예, 인터넷(150))을 통해 소프트웨어 운용 서버(165)와 통신한다. 이러한 구성에 있어서, 소프트웨어 운용 서버는 RPA 유틸리티(140)의 실행과 연관된 기능들 모두를 수행한다. 따라서, DPS(100)는 RPA 유틸리티(140)를 실행하기 위해 DPS(100)의 내부 컴퓨팅 리소스들을 이용하는 것이 요구되지 않는다.
CPU(105)는 RPA 유틸리티(140) 뿐만 아니라 OS A(130), OS B(132), 및 OS N(138)을 실행하며, 이는 RPA 유틸리티(140)의 사용자 인터페이스 특징들을 지원한다. 상기 기술된 실시예에서, RPA 유틸리티(140)는 사용자가 RPA 유틸리티(140)의 기능적 특징들의 조작 또는 그 기능적 특징들과의 상호작용을 가능하게 하기 위해 몇 가지의 그래픽 사용자 인터페이스들(GUI)을 생성한다. RPA 유틸리티에 의해 구현 및/또는 지원되는 특정 기능들은 그 기능의 구현을 완성하기 위해 프로세서 및/또는 디바이스 하드웨어에 의해 실행되는 프로세싱 로직을 발생시킨다. 설명을 간략하게 하기 위해, 이러한 여러 가지 특징들을 가능하게 하는 코드의 집합적 바디(collective body)는 여기서는 RPA 유틸리티(140)로 일컬어진다. RPA 유틸리티(140)에 의해 제공되고 본 발명에 대해 특정되는 소프트웨어 코드/명령들/로직 중에는, (a) 하나 또는 그 이상의 디바이스들을 위해 적어도 하나의 리소스 할당을 수신하기 위한 코드/로직; (b) 상기 적어도 하나의 리소스 할당을 상기 하나 또는 그 이상의 파티션들과 연관시키기 위한 코드/로직; 및 (c) 상기 적어도 하나의 리소스 할당을 수신하는 것에 응답하여 상기 적어도 하나의 리소스 할당과 동일하거나 더 적은 용량으로 하나 또는 그 이상의 트랜잭션을 상기 하나 또는 그 이상의 디바이스들이 실행할 수 있도록 하기 위한 코드/로직들이 있다. 상기 실시예에 따라, CPU(105)가 RPA 유틸리티(140)를 실행할 때, DPS(100)는 추가 특징들/기능 뿐만 아니라 상기 기능적 특징들을 가능하게 하는 일련의 기능적 프로세스들을 개시한다. 이들 특징들 및 기능들은 도 2-4에 도시되어 있고 이에 따라 이하에서 더 상세히 기술된다.
당해 기술 분야에서 통상의 기술을 가진 자들이라면 도 1에 기술된 하드웨어 컴포넌트들 및 기본 구성이 다를 수 있다는 것을 알 것이다. DPS(100) 내의 예시적인 컴포넌트들은 그 모든 예들을 총 망라하려는 의도가 아니라 본 발명을 실행하기 위해 사용되는 주요 필수적인 컴포넌트들을 나타내는 것이다. 예를 들어, 다른 디바이스들/컴포넌트들은 기술된 하드웨어에 추가로 또는 그 기술된 하드웨어를 대신하여 사용될 수 있다. 상기 기술된 예는 현재 기술되는 실시예들 및/또는 본 발명의 일반적인 내용에 관해 구조적 제한 또는 기타 제한을 시사하려는 의도는 아니다. 도 1에 예시된 데이터 처리 시스템은, 예를 들어, IBM eServer pSeries 시스템일 수 있다. 이는 뉴욕 아몽크 내의 IBM사의 제품이며, AIX(Advanced Interactive Executive) 운영 체제 또는 LINUX 운영 체제를 실행시킨다.
이제 도 2를 참조하면, 다수의 코어 프로세싱 칩이 도시되어 있고, 이것에 의해 하나 또는 그 이상의 파티션들이 가상 환경 내에서 실행된다. 멀티-코어 프로세싱 칩(250)은 파티션 A(220), 파티션 B(230) 및 파티션 N(290)(여기서 "N"은 유한한 수를 나타냄)을 포함한다. 멀티-코어 프로세싱 칩(250) 내에는 또한 RPA 유틸리티(240), 프로세서 버스(222), 메모리 컨트롤러 A(252), 메모리 컨트롤러 B(254), 버스 레지스터 A(260), 버스 레지스터 B(270), 및 버스 레지스터 C(280)가 포함된다. 파티션 A(220)는 L1 명령 캐시(218), L1 데이터 캐시(228), 및 L2/L3 캐시(238)를 포함한다. 멀티-코어 칩(250) 상의 제2 파티션은 두 개의 L1 명령 캐시들(218), 두 개의 L1 데이터 캐시들(228), 및 두 개의 L2/L3 캐시들(238)을 포함한다. 파티션 N(290)(여기서 'N'은 무한한 수임)은 멀티-코어 프로세싱 칩(250) 내의 N 번째 수의 파티션들을 나타낸다. 파티션 N은 하나 또는 그 이상의(여기서는 세 개로 도시됨) L1 명령 캐시들(218), 하나 또는 그 이상의 L1 데이터 캐시들(228), 및 하나 또는 그 이상의 L2/L3 캐시들(238)을 포함한다. 버스 레지스터 A(260)는 파티션 A(220)와 프로세서 버스(222) 사이의 통신 수단이다. 버스 레지스터 B(270)는 파티션 B(230)와 프로세서 버스(222) 사이의 통신을 가능하게 하고, 파티션 N(290)은 버스 레지스터 C(280)를 통해 프로세서 버스(222)와 통신한다.
일 실시예에서, 상기 시스템의 하나 또는 그 이상의 하드웨어 메커니즘들은 하나 또는 그 이상의 리소스 할당들의 실행을 가능하게 한다. RPA 유틸리티(240)는 상기 공유된 시스템 리소스들에 대한 액세스를 쓰로틀(throttle)하는 로직을 포함한다. RPA 유틸리티(240)는 하나 또는 그 이상의 파티션들에 시스템 리소스들을 할당하기 위한 하나 또는 그 이상의 할당들을 받는다. 파티션들(예, 파티션 A(220), 파티션 B(230), 및 파티션 N(290))은 가상의 머신 계층(175)(도 1에 도시됨)에 의해 지원되는 분리의 논리적 유닛들이며, 이에 의해 하나 또는 그 이상의 운영 체제들이 실행된다. 파티션 A(220), 파티션 B(230), 및 파티션 N(290)은 버스 레지스터 A(260), 버스 레지스터 B(270), 및 버스 레지스터 N(280)과 각각 연관된다. 또한, 파티션 A(220), 파티션 B(230), 및 파티션 N(290)은 하나 또는 그 이상의 하드웨어 버스들과 연관된다. 하나 또는 그 이상의 파티션들이 리소스들의 할당을 받을 때, 상기 각각의 버스 레지스터(버스 레지스터 A(260), 버스 레지스터 B(270), 및/또는 버스 레지스터 N(280))는 받은 리소스 할당에 따라 세팅된다.
하나 또는 그 이상의 운영 체제 트랜잭션들이 파티션과 연관되어 실행될 때, 상기 각각의 버스 레지스터(버스 레지스터 A(260), 버스 레지스터 B(270), 및 버스 레지스터 N(280))는 상기 요청된 할당을 실행한다. 예를 들어, RPA 유틸리티(240)는 20%의 용량으로 파티션 A(220)를 지원하는 리소스 사용을 제한(cap)하기 위해 사용자 정의(또는 디폴트) 할당을 받는다. 이 할당을 실행하기 위해, 모든 100 버스 사이클들 마다에 대해, 단지 20 개의 액세스들(트랜잭션들)이 버스 레지스터 A(260)에 의해 허용된다(공유된 리소스들에 액세스하기 위해). 상기 리소스 허용은 프로세서 버스(222)가 바쁘지(busy) 않을 때(즉, 다른 파티션들로부터 어떠한 펜딩 요청들(pending requests)도 없을 때) 완화된다. 이 경우, 버스 레지스터 A(260)에 의해 허용되는 액세스들의 수는 최선의 노력에 기반하여(on a best effort basis) 증가된다. 상기 리소스 할당은 상기 하나 또는 그 이상의 트랜잭션들이 실행될 때 사용자 정의의 정량적 측정치의 프로세서 버스(222)에 대한 액세스들을 가능하게 한다.
일 실시예에서, 상기 레지스터에게 다수의 액세스들이 할당될 때, 상기 레지스터는 상기 파티션이 상기 버스에 액세스할 때마다 감소된다. 버스 레지스터 A(260)가 20의 카운트로 할당되는 경우, 버스 레지스트 A(260)의 카운트는 완료된 모든 100 버스 사이클들 마다에 대해 20으로 리셋된다. 파티션 A(220)가 프로세서 버스(220)에 대한 그 할당된 쿼터(할당된 액세스들의 수)를 소모할 때 버스 레지스터 A(260)의 카운트는 0에 이른다. 파티션 A(220)에 의한 프로세서 버스(222)로의 추가 액세스들은 또 다른 파티션으로부터 그 버스로 액세스할 펜딩 트랜잭션이 없을 때에만 허용되고, 이에 따라 그 파티션은 사용자 정의 리소스 할당을 소비하지 않는다(즉, 프로세서 버스(222)로의 할당된 수/용량의 액세스들을 소모함).
또 다른 실시예에서, 하나 또는 그 이상의 운영 체제들은 파티션 A(220), 파티션 B(230), 및 파티션 N(290)과 연관된다. 버스 레지스터 A(260), 버스 레지스터 B(270), 버스 레지스터 N(280), 및/또는 하나 또는 그 이상의 다른 레지스터들이 파티션 A(220), 파티션 B(230), 및 파티션 N(290)과 연관된다. 버스 레지스터 A(260), 버스 레지스터 B(270), 버스 레지스터 N(280), 및/또는 하나 또는 그 이상의 다른 레지스터들은 RPA 유틸리티(240)(및/또는 하나 또는 그 이상의 운영 체제들)를 통해 하나 또는 그 이상의 리소스 할당들을 받는다. 상기 리소스 할당들은 하나 또는 그 이상의 버스 레지스터 A(260), 버스 레지스터 B(270), 및/또는 버스 레지스터 N(280)를 통해 구현된다.
일 실시예에서, 버스 레지스터 B(270)는 복수의 레지스터들에 의해 구현될 수 있는데, 이들 각각은 상기 버스에 대한 특정 프로세서 코어의 액세스를 제어한다. 도 2를 참조하면, 파티션 B(230)는 두 개의 L2/L3 캐시들(238)을 갖는 네 개의 프로세서 코어들을 사용하는 것으로 보여진다. 일 실시예에서, 버스 레지스터 B(270)는 두 개의 물리적 레지스터들을 통해 구현될 수 있는데, 이들 각각은 버스(222)로의 하나의 L2/L3 캐시(238)의 액세스를 게이팅(gating)한다. 버스 레지스터 A(260), 버스 레지스터 B(270), 버스 레지스터 N(280), 및/또는 하나 또는 그 이상의 다른 레지스터들은 파티션 B(230)에 대한 버스 액세스들의 어카운팅이 적절하게 수행되는 것을 보장하기 위해 프로세서 버스(222)와 통신한다. 예를 들어, 프로세서 버스(222)에 대한 L2/L3 캐시(238) 중 하나에 의한 액세스는 그 쿼터(quota) 카운트가 양 레지스터들에서 동시에 감소되도록 한다. 이러한 구현은 L2/L3 캐시(238)의 캐시 설계 내에 편입된다.
또 다른 실시예에서, 상기 하이퍼바이저(도 1의 하이퍼바이저(195)와 유사함)는 파티션들의 선점(preemption)이 하드웨어 이용률을 최대화할 수 있도록 한다. 이와 유사하게, 버스 레지스터 A(260)는 파티션 B(230)를 위한 레지스터 B(270), 및 파티션 N(290)을 위한 레지스터 N(280)의 소프트웨어 맥락의 일부가 된다. 상기 하이퍼바이저는, 대응하는 파티션(예, 파티션 A(220), 파티션 B(230), 및 파티션 N(290))이 각각 할당해제 또는 재할당될 때, 버스 레지스터 A(260), 버스 레지스터 B(270), 및/또는 버스 레지스터 N(280)의 값들을 저장 및 복원해야 한다.
또 다른 실시예에서, 상기 하이퍼바이저는 파티션들의 선점이 하드웨어 이용률을 최대화할 수 있도록 한다. 파티션에서의 스와핑시(예, 시스템(예, 서버)이 물리적으로 이용가능한 것보다는 RAM과 같은 더 많은 리소스들의 할당을 가능하게 함), 상기 하이퍼바이져는 상기 버스 레지스터를 상기 대응하는 사용자 정의 값으로 재초기화한다.
도 3은 리소스 그래픽 사용자 인터페이스(GUI)를 도시한다. 리소스 관리 GUI(305)는 하나 또는 그 이상의 리소스들의 카테고리, 리소스들(315), 파티션들의 목록, 파티션들(302), 리소스 할당(372), 이용가능한 측정값(370), 및 드롭 다운 메뉴 선택(375)을 포함한다. 리소스들(315)은 메모리 버스(362), I/O 버스(364), 코히어런스 버스(366), 및 확장가능 포트(368)를 포함한다. 그러나, 이러한 예들로 한정되는 것은 아니다. 파티션들(302)은 파티션 A(320), 파티션 B(330), 및 파티션 N(340)(여기서, 'N'은 유한한 수임)을 포함한다.
일 실시예에서, 적어도 하나의 리소스 할당은 하나 또는 그 이상의 디바이스들, 또는 리소스들과 연관된다. 파티션 A(320), 파티션 B(330), 및 파티션 N(340)은 가상 환경과 연관되고, 상기 파티션 목록은 리소스 관리 GUI(305)에 대한 출력이다. 파티션들의 상기 목록은, 파티션이 수정될 때(상기 가상 환경으로부터 추가되거나 감해질 때), 다이나믹하게 업데이트된다. 메모리 버스(362), I/O 버스(364), 코히어런스 버스(366), 및 확장가능 포트(368)와 같은 리소스들(315)은 각각의 파티션과 연관된다. 파티션들과 연관된 리소스들은 미리 정의되고/미리 정의되거나, 사용자에 의해 정의된다. 하나 또는 그 이상의 리소스들(315)이 상기 데이터 처리 시스템(도 1의 100)으로부터 추가 및/또는 감해질 때, 리소스 관리 GUI(305)는 다이나믹하게 업데이트된다.
또 다른 실시예에서, 하나 또는 그 이상의 디바이스들에 대해, 적어도 하나의 리소스 할당을 받는다. 리소스 관리 GUI(305)의 리소스 할당(372), 이용가능 측정값(370), 및 드롭 다운 메뉴 선택(375)은 하나 또는 그 이상의 사용자 정의된 및/또는 미리 정의된 입력들이 RPS 유틸리티(도 1의 140)에 의해 받아질 수 있도록 한다. 예를 들어, 리소스 할당(372)은 정량적 측정 입력이며, 이는 하나 또는 그 이상의 트랜잭션들 동안 이용될 디바이스들의 수 및/또는 디바이스 대역폭의 퍼센티지를 포함할 수 있다. 이용가능 측정값들(370)은 선택될 미리 정의되거나 디폴트의 정량적 측정값들(각각의 리소스 및 파티션과 연관됨), 또는 자동적으로 선택되는 측정값들을 나타낸다. 드롭 다운 메뉴 선택(375)이 선택될 때, 이용가능 측정값(370)이 디스플레이된다. 리소스들(315), 파티션들(302) 및 이용가능 측정값들(370)은, 그 데이터 처리 시스템 내에 하나 또는 그 이상의 변경들이 감지될 때 및/또는 그러한 변경들을 받게 될 때, 다이나믹하게 업데이트된다.
일 실시예에서, 상기 적어도 하나의 리소스 할당을 받게 될 때, 하나 또는 그 이상의 디바이스들은 상기 적어도 하나의 리소스 할당과 같거나 더 적은 용량으로 하나 또는 그 이상의 트랜잭션들을 실행하는 것이 가능해진다. 리소스 관리 GUI(305)는 상기 하나 또는 그 이상의 디바이스들(리소스들(315))을 위해 사용자 정의 리소스들의 할당(리소스 할당)을 받는다. 예를 들어, 메모리 버스(362)는 파티션 A(320)에 대해 30% 아래로 동작하고, 메모리 버스(362)는 하나 또는 그 이상의 트랜잭션들 동안 파티션 B(330)에 대해 25%로 동작한다. 리소스 관리 GUI(25%)가 리소스 할당(372)을 위한 사용자에 의한 정의된 입력을 받을 때, 하나 또는 그 이상의 레지스터들은 리소스들의 그 사용자에 의해 정의된 할당을 실행시키기 위해 다이나믹하게 조정한다. 리소스들의 사용자에 의해 정의된 할당의 실행은 그 특정된 디바이스(리소스)가 그 연관된 파티션을 위한 사용자에 의해 정의된 용량(대역폭)으로 동작한다. 리소스 관리 GUI(305)는 가상 머신 계층(175)(도 1)과 직접적으로 연관된다. 가상 머신 계층(175)은 그 레지스터들(파티션들(302)과 연관됨)에 대한 액세스를 제어/관리/제공하는데, 이는 리소스 관리 GUI(305) 내에 입력된 값들에 의해 특정된다.
도 4는 상기 실시예들의 상기 프로세스들이 완료되는 방법들을 도시하는 흐름도이다. 비록 도 4에 도시된 방법들이 도 1-3에 보여진 컴포넌트들을 참조하여 기술될 수 있지만, 이는 단지 편의상 그리고 그것의 구성들 및/또는 다른 컴포넌트들이 상기 여러 가지 방법들을 구현할 때 채용될 수 있다는 것이 이해되어야 한다. 방법들의 키(key) 부분들은 DPS(도 1의 100) 내의 프로세서(105) 상에서 실행되고 DPS(100)의/상의 특정 동작들을 제어하는 RPA 유틸리티(140)에 의해 완료될 수 있으며, 따라서 상기 방법들은 RPA 유틸리티(140) 및 DPS(100) 둘 모두의 관점에서 기술되어 있다.
도 4는 하나 또는 그 이상의 리소스 할당들을 받을 때 하나 또는 그 이상의 트랜잭션 요청을 실행하기 위한 프로세스들을 도시한다. 도 4의 프로세스는 개시 블록 400에서 시작하고, 블록 402으로 진행되는데, 여기서 하나 또는 그 이상의 레지스터들은 각각의 파티션에서 운영 체제와 연관된다. 블록 404에서, 각각의 파티션에 대해, 하나 또는 그 이상의 사용자에 의해 정의된(또는 디폴트) 리소스 할당들을 받게 된다. 블록 406에서, 하나 또는 그 이상의 레지스터들은 상기 리소스 할당(들)을 구현하기 위해 동적으로 세팅된다. 블록 408에서 하나 또는 그 이상의 트랜잭션을 받게 된다.
블록 410에서, 상기 트랜잭션 요청을 위해 요구되는 대역폭/용량이 하나 또는 그 이상의 프리셋(preset) 리소스 할당들(또는 할당들)을 초과하는지의 결정이 이뤄진다. 만약 상기 트랜잭션 요청을 위한 대역폭/용량이 상기 하나 또는 그 이상의 리소스 할당들을 초과한다면, 프로세스는 블록 414로 계속된다. 만약 그 트랜잭션 요청을 위한 대역폭/용량이 상기 하나 또는 그 이상의 리소스 할당들을 초과하지 않는다면, 프로세스는 블록 412로 계속된다. 블록 414에서 그 용량이 초과되지 않은 파티션으로부터의 트랜잭션 요청이 있는지에 관한 결정이 이뤄진다. 그 용량이 초과되지 않는 파티션으로부터의 트랜잭션 요청이 있을 때, 프로세스는 블록 416으로 계속된다. 블록 416에서 상기 요청은 다시 보내지고, 프로세스는 블록 408로 계속된다. 만약 그 용량이 초과되지 않는 파티션으로부터 트랜잭션 요청이 없다면, 프로세스는 블록 412로 계속된다. 블록 412에서 상기 트랜잭션이 실행되고, 상기 하나 또는 그 이상의 리소스 할당들을 실행한다. 프로세스는 블록 418에서 끝난다.
위의 흐름도에서, 상기 방법들 중 하나 또는 그 이상은 컴퓨터 판독가능 코드를 포함하는 컴퓨터 판독가능 스토리지 매체에 구현되어 그 컴퓨터 판독가능 코드가 컴퓨팅 디바이스 상에서 (프로세싱 유닛에 의해) 실행될 때 일련의 단계들이 수행되도록 한다. 몇몇 구현 예들에 있어서, 그 방법들의 특정 프로세스들은 본 발명의 사상 및 범위를 벗어나지 않고서, 다른 순서로, 또는 일부가 생략되어, 또는 동시에 수행, 조합된다. 따라서, 상기 방법 프로세스들이 특정 시퀀스로 기술되고 예시되어 있지만, 프로세스들의 특정 시퀀스의 사용은 본 발명에 관한 어떤 제한들을 시사하려는 의도는 아니다. 본 발명의 사상 또는 범위를 벗어나지 않고서 프로세스들의 시퀀스에 관한 변경들이 이뤄질 수 있다. 특정 시퀀스의 사용은, 그러므로, 본 발명의 범위를 한정하려는 의미도 받아들여서는 아니되고, 본 발명의 범위는 첨부되는 청구항들 및 그것들의 균등범위들까지로 확장된다.
당해 기술 분야에서 숙련된 자라면 이해할 수 있는 바와 같이, 본 발명은 방법, 시스템, 및/또는 컴퓨터 프로그램 제품으로 구현될 수 있다. 따라서, 본 발명은 전적으로 하드웨어 실시예의 형태를 취할 수도 있고, 전적으로 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로 코드 등을 포함함)의 형태를 취할 수도 있으며, 또는 소프트웨어 및 하드웨어 측면들 - 이것들 모두는 일반적으로는 "회로", "모듈", "로직", 또는 "시스템"으로 일컬어질 수 있음 - 을 조합하는 실시예의 형태를 취할 수도 있다. 더 나아가, 본 발명은 컴퓨터 사용가능 스토리지 매체 상의 컴퓨터 프로그램 제품의 형태 - 상기 매체는 그 매체 상에 또는 그 매체 내에 구현되는 컴퓨터 사용가능 프로그램 코드를 가짐 - 를 취할 수도 있다.
더 알 수 있는 바와 같이, 본 발명의 실시예들에서 프로세스들은 소프트웨어, 펌웨어, 마이크로코드, 또는 하드웨어의 조합을 사용하여 구현될 수 있다. 소프트웨어로의 본 발명의 실행을 위한 예비 단계로서, 프로그래밍 코드(소프트웨어든지 펌웨어든지)는 전형적으로는, 고정된(하드) 드라이브들, 디스켓들, 자기 디스크들, 광 디스크들, 자기 테이프, 반도체 메모리들(예, RAM, ROM, PROM 등)과 같은 하나 또는 그 이상의 머신 판독가능 스토리지 매체들 내에 저장될 것이고, 그에 따라 본 발명에 따른 제조 물품을 만들 것이다. 상기 프로그래밍 코드를 포함하는 제조 물품은 상기 스토리지 디바이스로부터 직접적으로 상기 코드를 실행함에 의해, 하드 디스크, RAM 등과 같은 또 다른 스토리지 디바이스 내에 상기 스토리지 디바이스로부터 상기 코드를 카피함에 의해, 또는 디지털 및 아날로그 통신 링크들과 같은 전송형 매체를 사용하여 원격 실행을 위해 상기 코드를 전송함에 의해 사용된다. 상기 매체는, 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템(또는 장치 또는 디바이스) 또는 전파 매체일 수 있다. 나아가, 상기 매체는 실행 시스템, 장치, 디바이스에 의해 또는 상기 실행 시스템, 장치, 디바이스와 함게 사용하기 위한 프로그램을 포함, 저장, 전달, 전파, 또는 전송할 수 있는 어떠한 장치라도 가능할 수 있다. 본 발명의 방법들은 상기 기술되는 실시예(들)에 따라 상기 코드를 포함하는 하나 또는 그 이상의 머신 판독가능 스토리지 디바이스들을 여기에 포함되는 코드를 실행하기 위한 적절한 처리 하드웨어과 조합함에 의해 실행될 수 있다. 본 발명을 실행하기 위한 장치는 본 발명에 따라 코딩되는 프로그램(들)에 대해 (서버들을 통해) 네트워크 액세스를 갖거나 이 코딩되는 프로그램(들)을 포함하는 하나 또는 그 이상의 처리 디바이스들 및 스토리지 시스템들일 수 있다. 일반적으로, 컴퓨터, 컴퓨터 시스템, 또는 데이터 처리 시스템이라는 용어는, 넓게는 메모리 매체로부터 명령들/코드를 실행하는 프로세서(또는 처리 유닛)을 갖는 어떠한 디바이스든지 포함하도록 정의될 수 있다.
따라서, 본 발명의 실시예는 인스톨되는(또는 실행되는) 소프트웨어를 갖는 완전한 기능적 컴퓨터(서버) 시스템의 맥락에서 기술되고 있다는 것은 중요하지만, 당해 기술 분야에서 숙련된 자들은 본 발명의 실시예의 소프트웨어 측면들이 여러 가지 형태들의 프로그램 제품으로 배포될 수 있다는 것을 잘 알 것이고, 본 발명의 실시예는 그 배포를 실제로 수행하기 위해 사용되는 매체의 특정 유형에 관계없이 동일하게 적용될 것이라는 것은 중요하다. 예를 들어, 매체의 유형들에 관한 리스트(모든 예들을 총 망라한 것은 아님)은 기록가능한 유형의(실체적인) 매체(예, 플로피 디스크들, 썸 드라이브들, 하드 디스크 드라이브들, CD ROM들, DVD들, 디지털 아날로그 통신 링크들과 같은 전송 유형 매체)를 포함한다.
본 발명은 실시예들을 참조하여 기술되었지만, 당해 기술 분야에서 숙련된 자들이라면 본 발명의 범위를 벗어나지 않고서 그것의 구성요소들에 대한 여러 가지 변경들이 이뤄질 수 있고, 균등물들로 대체될 수 있다는 것을 이해할 것이다. 또한, 본 발명의 기본적인 범위를 벗어나지 않고서 본 발명에서 시사하고 있는 것들에 대해 그것의 특정 시스템, 디바이스 또는 컴포넌트를 적합하게 하도록 여러 가지 변형들이 수행될 수 있다. 그러므로, 본 발명은 본 발명을 수행하기 위해 개시되는 특정 실시예들로 한정되지 않고, 본 발명은 첨부되는 청구항들의 범위 내에 들어오는 모든 실시예들을 포함하는 것으로 의도된다. 더욱이, 제1, 제2 등의 용어들의 사용은 어떤 순서 또는 중요성을 나타내는 것이 아니라, 첫 번째, 두 번째 등의 용어들로 사용되는 것이고, 이는 하나의 구성요소를 다른 구성요소와 구별하기 위해 사용되는 것이다.

Claims (9)

  1. 적어도 하나의 프로세서 및 가상화 계층(virtualization layer)을 갖는 데이터 처리 시스템에서 상기 데이터 처리 시스템 내의 가상화 환경(virtualization environment)의 하나 또는 그 이상의 파티션들에 의해 공유되는 하나 또는 그 이상의 공유 디바이스들의 리소스들을 할당하는 방법에 있어서,
    상기 하나 또는 그 이상의 디바이스들을 위해 적어도 하나의 리소스 할당을 받는 단계;
    상기 적어도 하나의 리소스 할당을 상기 하나 또는 그 이상의 파티션들과 연관시키는 단계;
    액세스 카운트를 하나 또는 그 이상의 레지스터들과 연관시키는 단계;
    상기 하나 또는 그 이상의 레지스터들이 상기 적어도 하나의 리소스 할당을 동적으로 구현할 수 있도록 하는 단계 - 하나 또는 그 이상의 트랜잭션들이 상기 하나 또는 그 이상의 파티션들 내에서 실행될 때 상기 적어도 하나의 리소스 할당은 미리 정의된 정량적 측정치를 포함함 -;
    상기 적어도 하나의 리소스 할당을 받는 것에 응답하여, 상기 하나 또는 그 이상의 디바이스들이 상기 적어도 하나의 리소스 할당과 같거나 더 적은 용량으로 상기 하나 또는 그 이상의 파티션들 내의 하나 또는 그 이상의 트랜잭션들을 실행할 수 있도록 하는 단계;
    상기 하나 또는 그 이상의 레지스터들이 프로세서 버스를 통해 트랜잭션 요청을 실행할 때 마다 상기 하나 또는 그 이상의 레지스터들 각각의 상기 액세스 카운트를 감소시키는 단계 - 상기 프로세서 버스는 상기 하나 또는 그 이상의 디바이스들에 대한 액세스를 가능하게 함 -;를 포함하는,
    리소스 할당 방법.
  2. 청구항 1에 있어서,
    하나 또는 그 이상의 운영 체제들을 상기 하나 또는 그 이상의 파티션들과 연관시키는 단계;
    상기 적어도 하나의 리소스 할당을 하나 또는 그 이상의 레지스터들 내에 저장하는 단계;
    상기 하나 또는 그 이상의 레지스터들을 상기 하나 또는 그 이상의 파티션들과 연관시키는 단계; 및
    상기 하나 또는 그 이상의 레지스터들을 통해 상기 리소스 할당들을 실행시키는 단계 - 상기 하나 또는 그 이상의 리소스 할당들은 상기 하나 또는 그 이상의 디바이스들의 사용을 관리함 - 를 더 포함하는,
    리소스 할당 방법.
  3. 청구항 1에 있어서,
    디바이스 사용의 상기 미리 정의된 정량적 측정치를, 하나 또는 그 이상의 디바이스들의 대역폭 용량 및 하나 또는 그 이상의 디바이스들의 개수 중 하나와 연관시키는 단계;를 더 포함하는,
    리소스 할당 방법.
  4. 청구항 3에 있어서,
    상기 하나 또는 그 이상의 레지스터들의 상기 액세스 카운트를 체크하는 단계;
    상기 액세스 카운트가 0이 아닐 때 상기 프로세서 버스에게 상기 트랜잭션 요청을 전송하는 단계;
    상기 액세스 카운트가 0이라면 상기 프로세서 버스에 대한 액세스를 차단하는 단계; 및
    장래의 버스 사이클에서 상기 트랜잭션 요청을 재시도하는 단계를 더 포함하는,
    리소스 할당 방법.
  5. 청구항 4에 있어서,
    상기 액세스 카운트가 0에 이를 때, 액세스 카운트가 0보다 큰 다른 파티션들로부터 상기 버스에 대한 펜딩(pending) 액세스들이 없을 때에만, 상기 트랜잭션이 상기 버스에 대한 액세스로 진행하도록 허용하는 단계를 더 포함하는,
    리소스 할당 방법.
  6. 청구항 1에 있어서,
    그래픽 사용자 인터페이스에서 상기 적어도 하나의 리소스 할당을 받는 단계; 및
    상기 적어도 하나의 리소스 할당을 상기 하나 또는 그 이상의 파티션들과 연관된 하나 또는 그 이상의 디바이스들의 사용과 연관시키는 단계를 더 포함하는,
    리소스 할당 방법.
  7. 청구항 6에 있어서,
    파티션이 변경될 때, 파티션들의 목록(listing)을 동적으로 업데이트하는 단계; 및
    상기 하나 또는 그 이상의 공유 디바이스들의 상기 하나 또는 그 이상의 리소스들이 더해지거나 빠지는 것 중 어느 하나일 때, 상기 그래픽 사용자 인터페이스를 동적으로 업데이트하는 단계를 더 포함하는,
    리소스 할당 방법.
  8. 컴퓨터 판독가능 매체로서,
    상기 컴퓨터 판독가능 매체는 상기 컴퓨터 판독가능 매체 상에 저장되는 컴퓨터 프로그램을 포함하되, 상기 컴퓨터 프로그램은, 프로세서에 의해 실행될 때, 청구항 1 내지 7 중 어느 한 항에 기재된 방법의 각 단계를 수행하는 프로그램 코드를 포함하는,
    컴퓨터 판독가능 매체.
  9. 컴퓨터 시스템에 있어서,
    프로세서 컴포넌트; 및
    프로세서 컴포넌트 상에서 실행될 때, 청구항 1 내지 7 중 어느 한 항에 기재된 방법의 각 단계를 수행하는 프로그램 코드를 포함하는,
    컴퓨터 시스템.
KR1020127001430A 2009-07-01 2010-06-23 가상화된 환경들 내의 리소스 할당 KR101385827B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/495,842 2009-07-01
US12/495,842 US8756608B2 (en) 2009-07-01 2009-07-01 Method and system for performance isolation in virtualized environments
PCT/EP2010/058884 WO2011000748A2 (en) 2009-07-01 2010-06-23 Resource allocation in virtualized environments

Publications (2)

Publication Number Publication Date
KR20120030557A KR20120030557A (ko) 2012-03-28
KR101385827B1 true KR101385827B1 (ko) 2014-04-16

Family

ID=43218434

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127001430A KR101385827B1 (ko) 2009-07-01 2010-06-23 가상화된 환경들 내의 리소스 할당

Country Status (7)

Country Link
US (1) US8756608B2 (ko)
EP (1) EP2449464A2 (ko)
JP (1) JP5607732B2 (ko)
KR (1) KR101385827B1 (ko)
CN (1) CN102473106B (ko)
BR (1) BRPI1015578B1 (ko)
WO (1) WO2011000748A2 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101394365B1 (ko) 2011-12-27 2014-05-14 서강대학교산학협력단 가상화 환경에서 프로세서를 할당하는 장치 및 방법
US9183054B2 (en) * 2012-06-30 2015-11-10 International Business Machines Corporation Maintaining hardware resource bandwidth quality-of-service via hardware counter
US9183022B2 (en) 2012-06-30 2015-11-10 International Business Machines Corporation Maintaining hardware resource bandwidth quality-of-service via hardware counter
TW201426348A (zh) * 2012-12-19 2014-07-01 Hon Hai Prec Ind Co Ltd 虛擬機標籤分類系統及方法
US10229043B2 (en) * 2013-07-23 2019-03-12 Intel Business Machines Corporation Requesting memory spaces and resources using a memory controller
US10261813B2 (en) * 2013-09-25 2019-04-16 Arm Limited Data processing system for dispatching tasks from a plurality of applications to a shared resource provided by an accelerator
US20160092287A1 (en) * 2014-09-26 2016-03-31 Intel Corporation Evidence-based replacement of storage nodes
US9921977B2 (en) * 2015-03-11 2018-03-20 International Business Machines Corporation Privilege based memory pinning mechanism
CN105630604A (zh) * 2015-12-18 2016-06-01 国云科技股份有限公司 一种基于sla的多租户虚拟机资源分配方法
CN106020943B (zh) * 2016-05-04 2020-06-19 北京小米移动软件有限公司 应用程序双开启方法及装置
US10678690B2 (en) * 2017-08-29 2020-06-09 Qualcomm Incorporated Providing fine-grained quality of service (QoS) control using interpolation for partitioned resources in processor-based systems
KR20200065489A (ko) * 2018-11-30 2020-06-09 에스케이하이닉스 주식회사 데이터 처리 시스템 내 자원 사용에 대응하여 데이터 패스를 동적 할당하는 방법 및 장치
US10884959B2 (en) * 2019-02-13 2021-01-05 Google Llc Way partitioning for a system-level cache
US11233861B2 (en) 2020-02-18 2022-01-25 UiPath, Inc. Inter-session automation for robotic process automation (RPA) robots
US10654166B1 (en) 2020-02-18 2020-05-19 UiPath, Inc. Automation windows for robotic process automation
US11392477B2 (en) 2020-07-09 2022-07-19 UiPath, Inc. Automation of a process running in a first session via a robotic process automation robot running in a second session
US11693940B2 (en) 2021-06-23 2023-07-04 Intel Corporation Partitioned platform security mechanism

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020156824A1 (en) * 2001-04-19 2002-10-24 International Business Machines Corporation Method and apparatus for allocating processor resources in a logically partitioned computer system

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10326253A (ja) * 1997-05-23 1998-12-08 Nec Corp バス調停回路
US6023720A (en) 1998-02-09 2000-02-08 Matsushita Electric Industrial Co., Ltd. Simultaneous processing of read and write requests using optimized storage partitions for read and write request deadlines
US7565398B2 (en) * 2002-06-27 2009-07-21 International Business Machines Corporation Procedure for dynamic reconfiguration of resources of logical partitions
US7107376B2 (en) * 2004-01-26 2006-09-12 International Business Machines Corp. Systems and methods for bandwidth shaping
US7453804B1 (en) 2005-02-08 2008-11-18 Packeteer, Inc. Aggregate network resource utilization control scheme
US20080229058A1 (en) 2007-03-13 2008-09-18 Hung Qui Le Configurable Microprocessor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020156824A1 (en) * 2001-04-19 2002-10-24 International Business Machines Corporation Method and apparatus for allocating processor resources in a logically partitioned computer system

Also Published As

Publication number Publication date
WO2011000748A3 (en) 2011-02-24
BRPI1015578A2 (pt) 2017-01-17
CN102473106B (zh) 2015-04-08
JP2012531643A (ja) 2012-12-10
US20110004875A1 (en) 2011-01-06
KR20120030557A (ko) 2012-03-28
EP2449464A2 (en) 2012-05-09
BRPI1015578B1 (pt) 2020-10-27
CN102473106A (zh) 2012-05-23
US8756608B2 (en) 2014-06-17
WO2011000748A2 (en) 2011-01-06
JP5607732B2 (ja) 2014-10-15

Similar Documents

Publication Publication Date Title
KR101385827B1 (ko) 가상화된 환경들 내의 리소스 할당
JP5782445B2 (ja) 物理コンピューティング・リソースの部分を論理パーティションに割り当てる方法
JP6126312B2 (ja) 待ち時間の影響を受けやすい仮想マシンをサポートするように構成された仮想マシンモニタ
CN108139928B (zh) 用于在cpu核之间迁移操作的方法、计算设备和可读介质
US11681544B2 (en) Interference-aware scheduling service for virtual GPU enabled systems
US11340945B2 (en) Memory congestion aware NUMA management
US9176787B2 (en) Preserving, from resource management adjustment, portions of an overcommitted resource managed by a hypervisor
JP2014021972A (ja) 複数の仮想マシンとして動作する複数のシステムによって共有されるストレージ・キャッシングでの柔軟性を改善するための方法および構造
US10204060B2 (en) Determining memory access categories to use to assign tasks to processor cores to execute
US20220075649A1 (en) Migration between cpu cores
US10169248B2 (en) Determining cores to assign to cache hostile tasks
US9886327B2 (en) Resource mapping in multi-threaded central processor units
US9088569B2 (en) Managing access to a shared resource using client access credentials
US20200264936A1 (en) Managing heterogeneous memory resource within a computing system
US11853798B2 (en) Disaggregated memory pool assignment
US9176910B2 (en) Sending a next request to a resource before a completion interrupt for a previous request
US20200348874A1 (en) Memory-fabric-based data-mover-enabled memory tiering system
Kehne et al. GPrioSwap: towards a swapping policy for GPUs
KR20150100041A (ko) Numa 시스템상에서 가상머신간의 통신방법

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