KR20220025746A - 컴퓨팅 자원의 동적 할당 - Google Patents

컴퓨팅 자원의 동적 할당 Download PDF

Info

Publication number
KR20220025746A
KR20220025746A KR1020217042559A KR20217042559A KR20220025746A KR 20220025746 A KR20220025746 A KR 20220025746A KR 1020217042559 A KR1020217042559 A KR 1020217042559A KR 20217042559 A KR20217042559 A KR 20217042559A KR 20220025746 A KR20220025746 A KR 20220025746A
Authority
KR
South Korea
Prior art keywords
resource group
computing resources
computing
free
resource
Prior art date
Application number
KR1020217042559A
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 KR20220025746A publication Critical patent/KR20220025746A/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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, 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
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/502Proximity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority

Abstract

발명 대상의 구현에 따라, 컴퓨팅 자원의 동적 관리 솔루션이 제공된다. 솔루션에서, 컴퓨팅 자원 세트에서 목표 개수의 컴퓨팅 자원을 사용하기 위한 제1 요청이 수신되며, 컴퓨팅 자원 세트 중 적어도 하나의 프리 컴퓨팅 자원은 적어도 하나의 프리 자원 그룹을 구성한다. 제1 자원 그룹에 프리 매칭 자원 그룹이 존재하지 않고 적어도 하나의 프리 자원 그룹에 여분의 프리 자원 그룹이 존재한다고 판단되면, 여분의 프리 자원 그룹을 분할하여 제1 요청에 대해 목표 개수의 컴퓨팅 자원을 할당하며, 여기서 여분의 프리 자원 그룹의 자원 개수는 목표 개수보다 많다. 따라서 컴퓨팅 자원의 동적 할당이 가능해진다.

Description

컴퓨팅 자원의 동적 할당
컴퓨터 기술, 특히 분산 컴퓨팅 기술의 발전으로, 클라우드 컴퓨팅은 최근 몇 년 동안 대중적인 컴퓨팅 모델이 되었다. 클라우드 컴퓨팅은 네트워크를 통해 편리한 주문형 방식으로 구성 가능한 컴퓨팅 자원 세트(웹 서버, 스토리지, 그래픽 프로세싱 유닛 등 포함)에 액세스하는 모델이다. 컴퓨팅 자원 세트의 관리자는 적은 관리 오버헤드로 자원을 빠르게 구성, 제공 또는 해제할 수 있다. 클라우드 컴퓨팅의 초점은 컴퓨팅 자원의 관리이다. 클라우드 컴퓨팅을 위한 자원의 동적 할당이 연구의 초점이 되고있다.
발명 대상의 구현에 따르면, 컴퓨팅 자원의 동적 관리를 위한 솔루션이 제공된다. 솔루션에서, 컴퓨팅 자원 세트에서의 목표 개수의 컴퓨팅 자원을 사용하기 위한 제1 요청이 수신되고, 컴퓨팅 자원 세트 중 적어도 하나의 프리(free) 컴퓨팅 자원은 적어도 하나의 프리 자원 그룹으로 구성된다. 제1 자원 그룹에 프리 매칭 자원 그룹이 존재하지 않고, 적어도 하나의 프리 자원 그룹에 여분의 프리 자원 그룹이 존재한다고 판단되면, 프리 자원 그룹을 분할하여 제1 요청에 대해 목표 개수의 컴퓨팅 자원을 할당하며, 여기서 프리 자원 그룹의 자원 개수는 목표 개수보다 많다. 따라서 컴퓨팅 자원의 동적 할당이 가능해진다.
이 요약은 아래의 상세한 설명에서 추가로 설명되는 단순화된 형태로 개념의 선택사항을 소개하기 위해 제공된다. 이 요약은 발명 대상의 핵심 기능이나 필수 기능을 식별하기 위한 것이 아니며 발명 대상의 범위를 제한하기 위한 것도 아니다.
도 1은 발명 대상의 복수의 구현이 구현될 수 있는 컴퓨팅 환경의 블록도를 예시한다.
도 2는 발명 대상의 일부 구현에 따른 컴퓨팅 자원의 동적 할당 프로세스를 도시한 흐름도이다.
도 3은 발명 대상의 일부 구현에 따른 컴퓨팅 자원 세트의 예시적인 토폴로지를 도시한다.
도 4는 발명 대상의 일부 구현에 따른 이용가능한 컴퓨팅 자원을 할당하는 프로세스의 흐름도를 도시한다.
도 5는 발명 대상의 다른 구현에 따른 컴퓨팅 자원의 동적 할당 프로세스의 흐름도를 도시한다.
도 6은 발명 대상의 일부 구현에 따른 예시적인 컴퓨팅 디바이스의 블록도를 도시한다.
도면에서, 동일하거나 유사한 참조 번호는 동일하거나 유사한 요소를 지칭한다.
본 명세서에 기술된 발명 대상은 이제 몇몇 예시적인 구현을 참조하여 논의될 것이다. 이러한 구현은 발명 대상의 범위에 대한 임의의 제한을 제안하기 보다는 관련 분야의 기술자가 본 명세서에 설명된 발명 대상을 더 잘 이해하여 구현할 수 있도록 하기 위한 목적으로만 논의된다는 점을 이해해야 한다.
본 명세서에 사용된 바와 같이, "포함하다"라는 용어 및 그 변형은 "포함하지만 이에 제한되지 않는다"는 것을 의미하는 공개 용어로 해석되어야 한다. "~에 기초한"이라는 용어는 "적어도 부분적으로 기초한"으로 해석되어야 한다. "하나의 구현" 및 "구현"이라는 용어는 "적어도 하나의 구현"으로 해석되어야 한다. "다른 구현"이라는 용어는 "적어도 하나의 다른 구현"으로 해석되어야 한다. "제1", "제2" 등의 용어는 상이하거나 동일한 대상을 지칭할 수 있다. 명시적이든 묵시적이든 다른 정의가 이하에 포함될 수 있다.
위에 논의된 바와 같이, 클라우드 컴퓨팅에 대한 핵심 문제는 컴퓨팅 자원의 관리이다. 일부 기존 솔루션은 신용 관리를 통해 컴퓨팅 자원 세트를 공유하는 여러 테넌트에게 컴퓨팅 자원을 할당한다. 예를 들어, 다수의 테넌트가 클라우드 컴퓨팅에서 다수의 그래픽 프로세싱 유닛(GPU) 클러스터를 공유하는 시나리오에서, 테넌트는 특정 개수의 토큰을 그의 크레딧으로 할당받을 수 있으며, 테넌트는 토큰을 소비하여, 제출된 작업(job)을 처리하기 위한 GPU를 획득할 수 있다. 그러나 컴퓨팅 자원을 할당하는 프로세스에서 기존의 솔루션은 할당된 컴퓨팅 자원의 위치를 고려하지 않고 자원을 신청한 테넌트에 대한 잔여 크레딧이 있는지 여부만을 고려한다. 따라서, 작은 사이즈(예, 단일 GPU)를 이용하여 방대한 양의 자원 요청에 대해 할당을 하는 것은 컴퓨팅 자원의 분할된(fragmented) 할당을 초래한다. 따라서 많은 양의 지속적인 컴퓨팅 자원이 필요할 수 있는 테넌트에게 서비스를 제공하기가 어렵다.
발명 대상의 구현에 따르면, 컴퓨팅 자원의 동적 관리를 위한 솔루션이 제공된다. 솔루션에서, 컴퓨팅 자원 세트에서 목표 개수의 컴퓨팅 자원을 사용하기 위한 제1 요청이 수신되며, 컴퓨팅 자원 세트 중 적어도 하나의 프리 컴퓨팅 자원은 적어도 하나의 프리 자원 그룹을 구성한다. 제1 자원 그룹에 프리 매칭 자원 그룹이 존재하지 않고 적어도 하나의 프리 자원 그룹에 여분의 프리 자원 그룹이 존재한다고 판단되면, 여분의 프리 자원 그룹을 분할하여 제1 요청에 대해 목표 개수의 컴퓨팅 자원을 할당하며, 여분의 프리 자원 그룹의 자원 개수는 목표 개수보다 많다. 따라서 컴퓨팅 자원의 동적 할당이 가능해진다.
발명 대상의 기본 원리 및 여러 구현은 도면을 참조하여 아래에 설명된다.
도 1은 발명 대상의 복수의 구현예가 구현될 수 있는 컴퓨팅 환경(100)을 예시하는 도면이다. 도 1에 도시된 컴퓨팅 환경(100)은 단지 예시적인 것이며 본 명세서에 설명된 구현의 기능 및 범위를 제한하는 것으로 해석되어서는 안 된다는 점을 이해해야 한다. 도 1에 도시된 바와 같이, 컴퓨팅 환경(100)은 컴퓨팅 자원 스케줄링 디바이스(115) 및 컴퓨팅 자원 세트(120)를 포함하며, 이는 복수의 컴퓨팅 자원(125-1 내지 125-N)(개별적으로 또는 세트로서 컴퓨팅 자원(125)으로 지칭됨)을 포함할 수 있다. 일부 구현에서, 컴퓨팅 자원(125)은 그래픽 프로세싱 유닛(GPU)을 포함할 수 있다.
일부 구현에서, 컴퓨팅 자원 스케줄링 디바이스(115)는 다양한 사용자 단말 또는 서버 단말로서 구현될 수 있다. 서버 단말은 서버, 다양한 서비스 제공자가 제공하는 대규모 컴퓨팅 디바이스 등이 될 수 있다. 사용자 단말은 예를 들어 임의의 유형의 이동 단말, 고정 단말 또는 휴대용 단말일 수 있고, 이는 이동 전화, 멀티미디어 컴퓨터, 멀티미디어 태블릿, 인터넷 노드, 커뮤니케이터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 넷북 컴퓨터, 태블릿 컴퓨터, PCS(Personal Communication System) 디바이스, 개인용 내비게이션 디바이스, PDA(Personal Digital Assistant), 오디오/비디오 플레이어, 디지털 카메라/캠코더, 포인팅 디바이스, 텔레비전 수신기, 라디오 방송 수신기, 전자책 디바이스, 게임 단말기 또는 이들의 조합(이들 디바이스의 액세서리 및 주변기기를 포함함), 또는 이들의 임의의 조합을 포함한다.
컴퓨팅 자원 스케줄링 디바이스(115)는 컴퓨팅 자원 세트(120)에서 컴퓨팅 자원(125)을 스케줄링하는 데 사용될 수 있다. 컴퓨팅 자원 스케줄링 디바이스(115)는 하나 이상의 애플리케이션 또는 테넌트(105)로부터 목표 개수의 컴퓨팅 자원을 사용하기 위한 요청(110)을 수신한다. 컴퓨팅 자원 스케줄링 디바이스(115)는 아래에서 상세히 설명되는 바와 같이 컴퓨팅 자원 동적 스케줄링 프로세스에 기초하여, 컴퓨팅 자원(125)의 세트로부터 요청(110)에 대한 목표 개수의 컴퓨팅 자원을 할당할 수 있다. 예를 들어, 컴퓨팅 자원 스케줄링 디바이스(115)는 요청(110)에 대해 컴퓨팅 자원(125-1) 및 컴퓨팅 자원(125-2)을 할당할 수 있다.
컴퓨팅 자원 스케줄링 디바이스(115)에 의한 컴퓨팅 자원의 동적 할당의 예시적인 구현은 아래에서 상세히 논의된다.
예시 프로세스
도 2는 발명 대상의 일부 구현에 따른 컴퓨팅 자원의 동적 할당 프로세스(200)의 흐름도를 도시한다. 프로세스(200)는 컴퓨팅 자원 스케줄링 디바이스(115)에 의해 구현될 수 있다.
202에서, 컴퓨팅 자원 스케줄링 디바이스(115)는 컴퓨팅 자원 세트(120)에서 목표 개수의 컴퓨팅 자원을 사용하기 위한 제1 요청(110)을 수신하고, 여기서 컴퓨팅 자원 세트(120)의 적어도 하나의 프리 컴퓨팅 자원은 적어도 하나의 프리 자원 그룹을 구성한다. 일부 구현에서, 컴퓨팅 자원 스케줄링 디바이스(115)는 컴퓨팅 자원 세트(120)의 컴퓨팅 자원을 신청하는 애플리케이션 또는 테넌트(105)로부터 요청(110)을 수신할 수 있다. 예를 들어, 테넌트(105)는 2개의 GPU 장치를 사용하여 기계 학습 알고리즘을 배포하기 위해 컴퓨팅 자원 스케줄링 디바이스(115)에 요청을 발행할 수 있다.
일부 구현에서, 컴퓨팅 자원 스케줄링 디바이스(115)는 미리 판정된 규칙에 기초하여 컴퓨팅 자원 세트(120) 내의 프리 컴퓨팅 자원들을 하나 이상의 프리 자원 그룹으로 구성할 수 있다. 예를 들어, 이력 요청의 분석에 기초하여, 대부분의 테넌트가 2개의 컴퓨팅 자원을 요청하고, 컴퓨팅 자원 스케줄링 디바이스(115)는 우선적으로 프리 컴퓨팅 자원을 2개의 연속적인 컴퓨팅 자원을 포함하는 프리 자원 그룹의 형태로 구성할 수 있다.
컴퓨팅 자원에 배포될 애플리케이션이 컴퓨팅 디바이스의 근접성에 점점 더 많은 관심을 기울이는 것을 고려하면, 예를 들어, 동일한 PCIe 스위치에 있는 두 개의 GPU는 두 개의 상이한 컴퓨팅 노드에 배치되는 것보다 더 나은 성능을 달성ㅎ할 것이다. 일부 구현에서, 컴퓨팅 스케줄링 자원 디바이스(115)는 컴퓨팅 자원 세트(110)에 대응하는 멀티 레벨 토폴로지를 판정하고, 멀티 레벨 토폴로지에 기초하여 프리 자원 그룹들을 구성할 수 있다. 이제 도 3을 참조하여 프리 자원 그룹을 구성하는 프로세스를 설명하며, GPU를 컴퓨팅 자원의 예로 들 수 있다. 도 3은 발명 대상의 일부 구현에 따른 컴퓨팅 자원 세트의 예시적인 토폴로지(300)를 도시하는 도면이다.
도 3에 도시된 예시적인 토폴로지(300)에 대해, 다수의 GPU가 다음과 같이 구성된다: 다수의 GPU는 다수의 컴퓨팅 노드로 구성되고, 각 컴퓨팅 노드는 2개의 중앙 처리 장치(CPU) 슬롯을 포함하며, 각 CPU 소켓은 추가로 2개의 버스와 인터페이스 표준(PCIe) 스위치에 연결되고, 각 PCIe 스위치는 2개의 GPU에 연결된다. 도 3에 도시된 바와 같이, 토폴로지(300)는 복수의 상이한 레벨과 연관된 복수의 노드를 포함한다.
구체적으로, 토폴로지(300)는 개별 GPU에 대응하는 복수의 GPU 노드(345-1 내지 345-8)(개별적으로 또는 세트로서 GPU 노드(345)로 지칭됨)를 포함하는 제1 레벨(340)을 포함할 수 있다. 예를 들어, GPU 노드(345-1 내지 345-8)는 각각 도 1의 컴퓨팅 자원(125-1 내지 125-N)에 대응한다(여기서, N = 8). 토폴로지(300)는 또한 다수의 GPU를 연결하는 PCIe 스위치에 대응하는 노드(335-1 내지 335-4)(개별적으로 또는 세트로서 PCIe 노드(335)로 지칭됨)를 포함하는 제2 레벨(330)을 포함한다.
토폴로지(300)는 다수의 PCIe 스위치를 연결하는 CPU 소켓에 대응하는 노드(325-1 내지 325-2)(개별적으로 또는 세트로서 CPU 노드(325)로 지칭됨)를 포함하는 제3 레벨(320)을 더 포함한다. 또한, 토폴로지(300)는 또한 다수의 CPU 소켓을 연결하는 컴퓨팅 디바이스에 대응하는 노드(315-1 내지 315-N)(개별적으로 또는 세트로서 컴퓨팅 디바이스 노드(315)로 지칭됨)를 포함하는 제4 레벨(310)을 포함한다.
도 3에 도시된 토폴로지(300)의 특정 노드 배열 및 특정 개수의 레벨은 단지 예시일 뿐이며 발명 대상의 솔루션을 제한하려는 것이 아니다. 더 많은 레벨 또는 더 적은 레벨이 있을 수 있음을 이해해야 하며, 이는 실제 토폴로지에 따를 것이다. 예를 들어, 하나의 CPU 소켓이 하나의 PCIe 스위치에 연결되는 경우, 제2 레벨(330)은 생략될 수 있다. 몇몇 구현에서, 멀티 레벨 토폴로지는 제1 레벨(340), 제2 레벨(330), 제3 레벨(320), 및 제4 레벨(310) 중 적어도 2개를 포함할 수 있다.
일부 구현에서, 컴퓨팅 자원 스케줄링 디바이스(115)는 컴퓨팅 자원 세트(110)에 대응하는 멀티 레벨 토폴로지에 기초하여, 적어도 하나의 프리 컴퓨팅 자원을 적어도 하나의 프리 자원 그룹으로 구성할 수 있어 각각의 프리 자원 그룹은 멀티 레벨 토폴로지의 동일한 노드와 연관된 컴퓨팅 자원을 포함하고, 멀티 레벨 토폴로지의 노드는 컴퓨팅 자원 세트의 컴퓨팅 자원 또는 컴퓨팅 자원 세트의 다수의 컴퓨팅 자원을 위한 연결 구성요소에 대응한다.
일부 구현에서, 컴퓨팅 자원 스케줄링 디바이스(115)는 프리 컴퓨팅 자원이 최고 레벨의 노드와 연관되도록 프리 컴퓨팅 자원을 구성할 수 있다. 예를 들어, 도 3의 예에 계속해서, 멀티 레벨 토폴로지(300)에 기초하여, 컴퓨팅 자원(125-1 내지 125-N)이 프리인 경우, 컴퓨팅 스케줄링 자원 디바이스(115)는 프리 컴퓨팅 자원(125)을 동일한 프리 자원 그룹으로 구성할 수 있다. 이 그룹에서, 모든 프리 컴퓨팅 자원(125)은 멀티 레벨 토폴로지(300)의 제4 레벨에서 컴퓨팅 디바이스 노드(315-2)와 연관된다.
다른 예로서, 노드(345-1, 345-2)에 대응하는 컴퓨팅 자원(125-1, 125-2)이 사용된다. 멀티 레벨 토폴로지(300)에 기초하여, 컴퓨팅 자원 스케줄링 디바이스(115)는 노드(345-3 및 345-4)에 대응하는 컴퓨팅 자원(125-3 및 125-4)이 프리 자원 그룹(370)으로 구성될 것이라고 판정할 수 있다. 프리 자원 그룹(370)의 컴퓨팅 자원 각각은 PCIe 노드(335-2)에 대응한다. 유사하게, 컴퓨팅 자원 스케줄링 디바이스(115)는 노드(345-5 내지 345-8)에 대응하는 컴퓨팅 자원(125-5 내지 125-N(N=8))을 하나의 프리 자원 그룹(380)으로 구성할 수 있다. 프리 자원 그룹(380)의 컴퓨팅 자원 각각은 CPU 노드(380)와 연관된다. 도 3에 도시된 바와 같이, 노드(345-1, 345-2)에 대응하는 컴퓨팅 자원(125-1, 125-2)이 사용되기 때문에, 컴퓨팅 자원(125-1, 125-1)은 컴퓨팅 자원(125-5 내지 125-8)과 함께 동일한 프리 자원 그룹으로 구성되지 않을 것이다. 이러한 프리 자원 구성 방식에 기초하여, 컴퓨팅 자원 스케줄링 디바이스(115)는 할당된 컴퓨팅 자원에 대한 근접성을 보장할 수 있고, 이에 의해 런타임 동안 컴퓨팅 자원의 효율성을 개선할 수 있다.
도 2를 계속 참조하면, 204에서, 컴퓨팅 자원 스케줄링 디바이스(115)는 목표 개수의 컴퓨팅 자원을 갖는 프리 매칭 자원 그룹이 프리 자원 그룹 중 적어도 하나에 존재하는지 여부를 판정한다. 일부 구현에서, 컴퓨팅 자원 스케줄링 디바이스(115)는 프리 자원 그룹들의 목록을 유지할 수 있다. 도 3의 예를 계속하면, 8개의 컴퓨팅 자원(125) 모두가 비어 있을 때, 컴퓨팅 자원 스케줄링 디바이스(115)는 8개의 컴퓨팅 자원을 갖는 단 하나의 프리 자원 그룹이 있다고 판정할 수 있다. 204에서 적어도 하나의 프리 자원 그룹이 프리 매칭 자원 그룹을 포함한다는 판정에 응답하여, 방법(200)은 또한 210으로 진행할 수 있고, 여기서 컴퓨팅 자원 스케줄링 디바이스(115)는 제1 요청(110)에 대해 프리 매칭 자원 그룹의 컴퓨팅 자원을 할당한다.
204에서 프리 매칭 자원 그룹이 적어도 하나의 프리 자원 그룹에 존재하지 않는다는 판덩에 응답하여, 방법(200)은 206으로 진행하고, 여기서 컴퓨팅 자원 스케줄링 디바이스(115)가 적어도 하나의 프리 자원 그룹이 여분의 프리 자원을 포함하는지 여부를 판정하며, 여분의 프리 자원 그룹의 자원 개수는 목표 개수보다 많다. 도 3의 예를 계속 참조하면, 제1 요청(110)이 예를 들어, 2개의 컴퓨팅 자원을 사용하도록 요청할 때, 컴퓨팅 자원 스케줄링 디바이스(115)는 타겟 번호 "2"에 대응하는 프리 매칭 자원 그룹이 없다고 판정할 수 있다.
컴퓨팅 자원 스케줄링 디바이스(115)는 여분의 프리 자원 그룹이 존재하는지 여부를 더 판정할 수 있다. 일부 구현에서, 컴퓨팅 자원 스케줄링 디바이스(115)는 증가하는 순서로 더 높은 레벨에서 여분의 프리 자원 그룹을 검색할 수 있다. 예를 들어, 컴퓨팅 자원 스케줄링 디바이스(115)는 사이즈가 2인 프리 자원 그룹이 존재하지 않는다고 판정할 때, 제3 레벨에 대응하는 프리 자원 그룹(사이즈가 4인 자원 그룹)이 존재하는지 여부를 더 판정할 수 있고, 존재하지 않으면, 제4 레벨(310)에 대응하는 프리 자원 그룹(사이즈가 8인 자원 그룹)이 있는지 여부를 더 판단한다.
206에서 적어도 하나의 프리 자원 그룹이 여분의 프리 자원 그룹을 포함한다고 판정한 것에 응답하여, 방법(200)은 208로 진행하고, 여기서 컴퓨팅 자원 스케줄링 디바이스(115)가 여분의 프리 자원 그룹을 분할함으로써 제1 요청에 대해 목표 개수의 컴퓨팅 자원을 할당한다. 일부 구현에서, 컴퓨팅 자원 스케줄링 디바이스(115)는 여분의 프리 자원 그룹을 제1 자원 그룹 및 적어도 하나의 제2 자원 그룹으로 분할할 수 있으며, 여기서 제1 자원 그룹은 목표 개수의 컴퓨팅 자원을 갖는다. 컴퓨팅 자원 스케줄링 디바이스(114)는 그 다음 제1 요청에 대해 제1 자원 그룹의 컴퓨팅 자원을 할당할 수 있다. 예를 들어, 계속하여 도 3의 예를 참조하면, 8개의 컴퓨팅 자원(125)이 모두 프리이고 제1 요청(110)에 의해 요청된 컴퓨팅 자원 개수가 2인 경우, 컴퓨팅 자원 스케줄링 디바이스(115)는 여분의 프리 자원 그룹을 제1 자원 그룹(360)(컴퓨팅 자원(125-1 및 125-2)을 포함), 프리 자원 그룹(370)(컴퓨팅 자원(125-3 및 125-4)을 포함) 및 프리 자원 그룹(380)(컴퓨팅 자원(125-5 내지125-8)을 포함)으로 분할할 수 있다. 컴퓨팅 자원 스케줄링 디바이스(115)는 제1 요청(110)에 대해 제1 자원(360)에 컴퓨팅 자원(125-1, 125-2)을 추가로 할당할 수 있다.
일부 구현에서, 컴퓨팅 자원 스케줄링 디바이스(115)는 토폴로지에 따라 여분의 프리 자원 그룹을 분할할 수 있다. 예를 들어, 컴퓨팅 자원 스케줄링 디바이스(115)는 제4 레벨(310)의 노드(315-2)에 대응하는 여분의 프리 자원 그룹을 제3 레벨(320)의 두 개의 노드(325-1, 325-2)로 분할할 수 있다. 노드(325-1)에 대응하는 프리 자원 그룹은 제4 레벨(330)에서 노드(335-1, 335-2)에 대응하는 2개의 프리 자원 그룹으로 더 분할된다. 이러한 방식에 기반하여, 컴퓨팅 자원 스케줄링 디바이스(115)는 또한 할당된 자원의 근접성을 보장하면서, 연속적 컴퓨팅 자원 그룹이 더 클수록 가능한 많이 유지되도록 더 보장할 수 있다. 따라서 컴퓨팅 자원은 다양한 크기의 사용 요청의 요구 사항을 충족시킬 수 있다.
일부 구현에서, 제1 요청(110)의 완료에 응답하여, 컴퓨팅 자원 스케줄링 디바이스(115)는 제1 자원 그룹을 프리로 표시할 수 있다. 컴퓨팅 자원 스케줄링 디바이스(115)는 적어도 하나의 제2 자원 그룹의 컴퓨팅 자원 모두가 비어 있다고 더 판정할 수 있고, 그 다음 제1 자원 그룹 및 적어도 하나의 제2 자원 그룹을 새로운 프리 자원 그룹으로 병합할 수 있다. 예를 들어, 도 3의 예를 계속하면, 노드(345-1 및 345-2)에 대응하는 컴퓨팅 자원(125-1 및 125-2)이 비어있는 것으로 표시된 것으로 판정할 때, 컴퓨팅 자원 스케줄링 디바이스(115)는 상위 계층의 노드(325-1)에 대응하는 나머지 컴퓨팅 자원(125-3, 125-4)이 비어있는지 여부를 판정할 수 있고, 만약 그렇다면 4개의 컴퓨팅 자원(125-1 내지 125-2)이 새로운 프리 자원 그룹으로 병합될 수 있다. 또한, 컴퓨팅 자원 스케줄링 디바이스(115)는 노드(325-1) 위의 노드(315-2)에 대응하는 나머지 컴퓨팅 자원(125-5 내지 125-N(N=8))이 비어있는지 여부를 판정할 수 있으며, 그렇다면 자원 스케줄링 디바이스(115)가 후속 요청을 처리하기 위해 컴퓨팅 자원(125-1 내지 125-N)(N=8)을 새로운 프리 자원 그룹으로 추가로 병합할 수 있다. 이러한 방식으로, 컴퓨팅 자원 스케줄링 디바이스(115)는 항상 더 큰 세트의 연속 컴퓨팅 자원 그룹을 예약할 수 있고, 이에 의해 컴퓨팅 자원이 상이한 크기를 갖는 사용 요청의 요건을 충족할 수 있게 한다.
일부 구현에서, 206에서 여분의 프리 자원 그룹이 적어도 하나의 프리 자원 그룹에 존재하지 않는다는 판정에 응답하여, 방법(200)은 또한 212로 진행할 수 있으며, 여기서 컴퓨팅 자원 스케줄링 디바이스(115)는 제1 요청(110)의 우선순위가 우선순위 임계값을 초과하는지를 판정한다. 일부 구현에서, 애플리케이션 및/또는 테넌트(105)는 제1 요청(110)을 개시할 때 우선순위를 나타내는 정보를 추가할 수 있다. 예를 들어, 애플리케이션 및/또는 테넌트(105)는 배치될 태스크의 유형에 기초하여 특정 우선순위를 지정할 수 있다. 예를 들어, 더 높은 중요도를 가진 작업에 더 높은 우선순위가 할당될 수 있다.
일부 구현에서, 컴퓨팅 자원 스케줄링 디바이스(115)는 또한 수신된 요청들의 우선순위 제어를 구현할 수 있다. 도 4는 발명 대상의 추가 구현에 따른 우선순위 제어를 위한 프로세스의 흐름도를 도시한다. 도 4에 도시된 바와 같이, 블록(402)에서, 컴퓨팅 자원 스케줄링 디바이스(115)는 제1 요청과 연관된 제1 테넌트(105)가 사용한 자원 그룹 내의 컴퓨팅 자원의 제1 개수를 판정할 수 있다. 블록(404)에서, 컴퓨팅 자원 스케줄링 디바이스(115)는 목표 개수와 제1 개수의 합이 제1 테넌트(105)에 대응하는 컴퓨팅 자원 개수의 상한을 초과하는지 여부를 판정할 수 있다. 일부 구현에서, 제1 테넌트에 대응하는 컴퓨팅 자원 개수의 상한은 제1 테넌트에 대해 미리 할당된 제2 컴퓨팅 자원 개수와, 제2 테넌트와의 교환을 통해 획득한 제3 컴퓨팅 자원 개수의 합과 같다.
예를 들어, 테넌트(105)에 의해 구매된 서비스에 기초하여, 컴퓨팅 자원 스케줄링 디바이스(115)는 제1 요청(110)을 제출하는 제1 테넌트에 대해 사전 할당된 자원의 제2 개수(테넌트 크레딧이라고도 함, 예를 들어 4)를 설정할 수 있다. 일부 구현에서, 컴퓨팅 자원 스케줄링 디바이스(115)는 테넌트(105)의 사전 할당된 자원의 제2 개수의 동적 조정을 지원할 수 있다. 예를 들어, 테넌트(105)가 컴퓨팅 자원 스케줄링 디바이스(115)에 적용되어 제1 기간에 테넌트 크레잇을 줄이고 제2 기간에 테넌트 크레딧을 늘린다. 이러한 방식으로, 예를 들어, 테넌트(105)는 더 많은 작업이 처리되어야 하는 소정 기간에 더 많은 컴퓨팅 자원과 교환하여, 통상적으로 비어 있는 컴퓨팅 자원을 넘겨줄 수 있다.
일부 구현에서, 각각의 테넌트에는 컴퓨팅 자원의 가상 사설 세트(virtual private set)가 사전 할당될 수 있고, 가상 사설 컴퓨팅 자원 세트의 자원은 항상 더 높은 우선순위를 갖는 테넌트에 의해 점유될 수 있다. 일부 구현에서, 컴퓨팅 자원의 가상 사설 세트는 테넌트에 할당된 컴퓨팅 자원이 항상 인접하도록 위에서 설명된 멀티 레벨 토폴로지의 계층에 있는 노드에 대응할 수 있다.
일부 구현에서, 컴퓨팅 자원 스케줄링 디바이스(115)는 또한 테넌트들 간의 자원 교환을 지원할 수 있다. 예를 들어, 컴퓨팅 자원 스케줄링 디바이스(115)는 자원 교환을 위한 미리 판정된 규칙을 구성하고 테넌트에 의해 제출된 자원 교환 요청을 수집할 수 있다. 컴퓨팅 자원 스케줄링 디바이스는 제출된 자원 교환 요청이 자원 교환을 수행하기 위한 미리 판정된 규칙을 준수하는지 여부를 판정할 수 있다. 일부 구현에서, 미리 판정된 규칙은 상이한 테넌트의 포인트에 기초하여 컴퓨팅 자원을 교환하는 것을 포함할 수 있다. 예를 들어, 다른 테넌트는 컴퓨팅 자원을 제공하여 대응하는 포인트를 획득할 수 있다. 예를 들어, 테넌트 A는 컴퓨팅 자원 1개를 2포인트로 교환 신청할 수 있고, 테넌트 B는 컴퓨팅 자원 1개를 3포인트로 교환 신청할 수 있으며, 테넌트 C는 컴퓨팅 자원 제공을 신청할 수 있다. 이 경우, 미리 정해진 규칙에 따라 컴퓨팅 자원 스케줄링 디바이스(115)는, 테넌트 B가 테넌트 C가 제공하는 컴퓨팅 자원을 3포인트의 비용으로 획득할 수 있고, 테넌트 C가 대응하는 포인트를 획득할 수 있다고 판정할 수 있다. 이러한 방식에 기초하여, 컴퓨팅 자원 스케줄링 디바이스(115)는 서로 다른 테넌트가 소유한 자원의 교환을 지원할 수 있고, 그에 따라 컴퓨팅 자원의 사용 효율성을 더욱 향상시킬 수 있다. 예를 들어, 제1 테넌트(105)는 자원 교환을 통해 2개의 추가 이용 가능한 컴퓨팅 자원을 획득할 수 있다.
블록(404)에서 합이 컴퓨팅 자원 개수의 상한을 초과한다고 판정한 것에 응답하여, 방법은 블록(406)으로 진행하고, 여기서 컴퓨팅 자원 스케줄링 디바이스(115)는 제1 요청의 우선순위를 우선순위 임계값 미만이 되도록 설정할 수 있다. 이러한 방식에 기초하여, 컴퓨팅 자원 스케줄링 디바이스(115)는 테넌트(105)가 일시적으로 비어 있는 다른 테넌트의 컴퓨팅 자원 중 일부를 낮은 우선순위로 점유할 수 있게 하여, 컴퓨팅 자원의 사용 비율을 증가시킬 수 있다.
대안적으로, 블록(404)에서 합이 컴퓨팅 자원 개수의 상한을 초과한다고 판정한 것에 응답하여, 컴퓨팅 자원 스케줄링 디바이스(115)는 합이 컴퓨팅 자원 개수의 상한보다 작거나 같을 때까지 제1 요청을 보류할 수 있다.
대안적으로, 블록(404)에서 합이 컴퓨팅 자원 개수의 상한을 초과한다고 판정하는 것에 응답하여, 컴퓨팅 자원 스케줄링 디바이스(115)는 자원에 낮은 우선순위를 할당할지 여부를 테넌트(105)에 경고하고 낮은 우선 순위가 할당된 자원은 언제든지 회수될 수 있다는 것을 테넌트(105)에게 상기시킬 수 있다. 테넌트(105)가 자원에 낮은 우선순위를 할당하기로 판정하는 경우 컴퓨팅 자원 스케줄링 디바이스(115)는 제1 요청(110)의 우선순위를 임계값보다 더 낮게 설정할 수 있다.
도 2를 계속 참조하면, 우선순위가 우선순위 임계값보다 높다는 212에서의 판정에 응답하여, 방법(200)은 또한 214로 진행할 수 있으며, 여기서 컴퓨팅 자원 스케줄링 디바이스(115)는 제1 요청에 대해 컴퓨팅 자원 세트 중 적어도 하나의 이용 가능한 컴퓨팅 자원을 포함하여, 목표 개수의 컴퓨팅 자원을 할당한다. 이용가능한 컴퓨팅 자원은 프리 컴퓨팅 자원 및 후보 컴퓨팅 자원 모두를 포함할 수 있고, 후보 컴퓨팅 자원은 우선순위 임계값과 같거나 낮은 우선순위를 갖는, 제2 요청에 할당된 자원이다. 예를 들어, 블록(202)에서 블록(206)까지의 프로세스에서, 테넌트에 프리 컴퓨팅 자원이 없고 테넌트에 의해 제출된 제1 요청(110)의 우선순위가 우선순위 임계값보다 높은 것으로 판정될 때, 더 낮은 우선순위를 가진 일부 요청은 테넌트에 할당된 가상 사설 자원 세트의 자원을 점유하고 있을 수 있다.
일부 구현에서, 컴퓨팅 자원 스케줄링 디바이스(115)는 우선순위 임계값을 초과하는 우선순위를 갖는 요청이 우선순위 임계값보다 낮거나 동일한 우선순위를 갖는 요청에 할당된 컴퓨팅 자원(이는 또한 후보 컴퓨팅 자원이라 함)을 점유하도록 허용한다. 컴퓨팅 자원 스케줄링 디바이스(115)는 또한 프리 자원 그룹을 구성하는 것과 동일한 방식으로 이용 가능한 컴퓨팅 자원을 적어도 하나의 이용 가능한 컴퓨팅 자원 그룹으로 구성할 수 있다. 블록(214)의 프로세스는 도 5를 참조하여 아래에서 상세히 설명될 것이며, 이는 발명 대상의 일부 구현에 따라 이용가능한 컴퓨팅 자원들을 할당하기 위한 프로세스(500)의 흐름도를 도시한다.
도 5에 도시된 바와 같이, 블록(502)에서, 컴퓨팅 자원 스케줄링 디바이스(115)는 목표 개수의 컴퓨팅 자원을 갖는 이용 가능한 매칭 자원 그룹이 이용 가능한 자원 그룹 중 적어도 하나에 존재하는지 여부를 판정할 수 있다. 도 3의 예를 계속 참조하면, 예를 들어 노드(345-1 및 345-2)에 대응하는 컴퓨팅 자원(125-1 및 125-2)은 우선순위 임계값 미만인 제2 요청에 할당되며, 이 경우는 이용 가능한 자원은 컴퓨팅 자원(125-1 내지 125-N(N=8))을 포함하지만, 자원(125-1 및 125-2)은 비어있지 않다. 따라서, 위에서 설명된 방식에 따라, 컴퓨팅 자원 스케줄링 디바이스(115)는 이용 가능한 컴퓨팅 자원(125-1 내지 125-8)을 하나의 이용 가능한 컴퓨팅 자원 그룹으로 구성할 수 있다.
이용 가능한 매칭 자원 그룹이 이용 가능한 자원 그룹 중 적어도 하나에 존재한다는 블록(502)의 판정에 응답하여, 방법은 블록(504)으로 진행하고, 여기서 컴퓨팅 자원 스케줄링 디바이스(115)는 이용 가능한 매칭 자원 그룹에 할당된 컴퓨팅 자원을 회수할 수 있다. 예를 들어, 제1 요청(110)이 8개의 컴퓨팅 자원을 사용할 것을 요구할 때, 컴퓨팅 자원 스케줄링 디바이스(115)는 컴퓨팅 자원(125-1 및 125-2)에 대해 수행된 작업을 직접 종료하고 제2 요청에 할당되어 있는 컴퓨팅 자원(125-1 및 125-2)을 회수할 수 있다. 블록(506)에서, 컴퓨팅 자원 스케줄링 디바이스(115)는 제1 요청(110)에 대해, 이용 가능한 매칭 자원 그룹의 컴퓨팅 자원을 할당한다. 예를 들어, 컴퓨팅 자원 스케줄링 디바이스(115)는 제1 요청(110)에 대해 이용 가능한 컴퓨팅 자원(125-1 내지 125-N(N=8))을 할당할 수 있다.
이러한 방식에 기초하여, 컴퓨팅 자원 스케줄링 디바이스(115)는 또한, 다른 테넌트가 이전에 다른 테넌트에 할당된 컴퓨팅 자원을 일시적으로 점유하라는 일부 요청을 지원하면서 다른 테넌트가 그의 대응하는 크레딧 내에서 컴퓨팅 자원을 항상 획득할 수 있도록 보장할 수 있다.
블록(502)에서 이용 가능한 매칭 자원 그룹이 적어도 하나의 이용 가능한 자원 그룹에 존재하지 않는다는 판정에 응답하여, 방법은 블록(508)으로 진행하고, 여기서 컴퓨팅 자원 스케줄링 디바이스(115)는 적어도 하나의 이용 가능한 자원 그룹이 이용 가능한 여분의 자원 그룹을 포함하는 하는지 여부를 판정하며, 이용 가능한 여분의 자원 그룹의 자원 개수는 목표 개수보다 많다.
블록(508)에서 이용 가능한 여분의 자원 그룹이 적어도 하나의 이용 가능한 자원 그룹에 존재한다는 판정에 응답하여, 방법은 블록(510)으로 진행하고, 여기서 컴퓨팅 자원 스케줄링 디바이스(115)는 이용 가능한 여분의 자원 그룹을 분할하여 제1 요청에 대해 목표 개수의 컴퓨팅 자원을 할당할 수 있다. 블록(508 및 510)의 프로세스는 블록(206 및 208)에 대해 위에서 설명된 프로세스와 유사하고, 컴퓨팅 자원 스케줄링 디바이스(115)가 더 큰 연속적인 이용 가능한 컴퓨팅 자원 그룹을 분할함으로써 목표 개수의 컴퓨팅 자원을 획득할 수 있음을 이해해야 한다.
전술한 방식에 기초하여, 컴퓨팅 자원 스케줄링 디바이스(115)는 상이한 우선순위 요청에 대해 상이한 개인화된 할당 로직을 수행할 수 있다. 프리 컴퓨팅 자원을 우선적으로 할당한다는 전제를 감안할 때, 우선 순위가 높은 요청은 우선 순위가 낮은 요청이 차지하는 컴퓨팅 자원을 더 사용할 수 있으므로 컴퓨팅 자원 할당의 유연성을 높일 수 있다.
환경
예시
도 6은 발명 대상의 실시예를 구현할 수 있는 디바이스(600)를 도시하는 블록도이다. 디바이스(600)는 도 1의 컴퓨팅 자원 스케줄링 디바이스(115)를 구현하는데 사용될 수 있다. 도 6에 도시된 디바이스(600)는 단지 예시적이며 여기에 설명된 구현의 기능 및 범위에 대한 제한으로 해석되어서는 안된다는 점을 이해해야 한다. 도 1에 도시된 바와 같이, 디바이스(600)의 구성요소는 하나 이상의 프로세서 또는 프로세싱 유닛(110), 메모리(120), 저장 디바이스(130), 하나 이상의 통신 유닛(140), 하나 이상의 입력 디바이스 및 하나 또는 다수의 출력 디바이스(160)를 포함할 수 있지만 이에 제한되지 않는다.
일부 구현에서, 디바이스(600)는 다양한 사용자 단말 또는 서빙 단말로서 구현될 수 있다. 서빙 단말은 각각의 서비스 제공자에 의해 제공되는 서버, 대규모 컴퓨팅 디바이스 등이 될 수 있다. 사용자 단말은 임의의 유형의 모바일 단말기, 고정 단말 또는 휴대용 단말일 수 있으며, 이는 예를 들면, 이동 전화, 스테이션, 유닛, 디바이스, 멀티미디어 컴퓨터, 멀티미디어 태블릿, 인터넷 노드, 커뮤니케이터, 데스크탑 컴퓨터, 랩탑 컴퓨터, 노트북 컴퓨터, 넷북 컴퓨터, 태블릿 컴퓨터, 개인 통신 시스템(PCS) 디바이스, 개인용 내비게이션 장치, 개인 휴대 정보 단말기(PDA), 오디오/비디오 플레이어, 디지털 카메라/비디오 카메라, 포지셔닝 디바이스, TV 수신기, 라디오 방송 수신기, 전자 책 디바이스, 게임 디바이스 또는 이들의 임의의 조합(이들 디바이스의 액세서리 및 주변기기 또는 이들의 조합을 포함함)일 수 있다. 컴퓨팅 디바이스(100)는 사용자를 위한 임의의 유형의 인터페이스(예를 들어, "웨어러블" 회로)를 지원할 수 있다는 점이 이해될 것이다.
프로세싱 유닛(610)은 물리적 또는 가상 프로세서일 수 있고, 메모리(620)에 저장된 프로그램을 기반으로 다양한 프로세스를 구현할 수 있다. 멀티 프로세서 시스템에서, 복수의 프로세싱 유닛(610)은 컴퓨터 실행가능 명령어들을 병렬적으로 실행하여 컴퓨팅 디바이스(600)의 병렬 프로세싱 성능을 향상시킨다. 또한, 중앙 처리 장치(CPU, 610), 마이크로프로세서, 컨트롤러, 또는 마이크로컨트롤러로 지칭될 수 있다.
디바이스(600)는 일반적으로 다양한 컴퓨터 저장 매체를 포함한다. 컴퓨터 저장 매체는 디바이스(600)에 의해 액세스 가능한 임의의 매체일 수 있으며, 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체를 포함하지만 이에 제한되지 않는다. 메모리(620)는 휘발성 메모리(예를 들어, 레지스터, 캐시, 랜덤 액세스 메모리(RAM)), 비휘발성 메모리(예를 들어, 읽기 전용 메모리(ROM), 전기적으로 소거 가능한 프로그램 가능 읽기 전용 메모리(EEPROM), 플래시 메모리), 또는 이들의 임의의 조합일 수 있다. 메모리(620)는 하나 이상의 프로그램 모듈, 예를 들어 컴퓨팅 자원 스케줄링 모듈(622)을 포함할 수 있고, 이러한 프로그램 모듈은 본 명세서에 설명된 다양한 구현의 기능을 수행하도록 구성된다. 컴퓨팅 자원 스케줄링 모듈(622)은 대응하는 기능을 구현하기 위해 프로세싱 유닛(610)에 의해 액세스 및 실행될 수 있다. 저장 장치(630)는 임의의 이동식 및 비이동식 매체일 수 있고 정보 및/또는 데이터를 저장하는 데 사용될 수 있으며 디바이스(600)에서 액세스될 수 있는 기계 판독 가능 매체를 포함할 수 있다.
디바이스(600)의 구성요소의 기능은 단일 컴퓨팅 클러스터 또는 다수의 컴퓨터에서 구현될 수 있으며, 이러한 컴퓨터는 통신 연결을 통해 통신할 수 있다. 따라서, 디바이스(600)는 하나 이상의 다른 서버, 개인용 컴퓨터(PC) 또는 추가적인 일반 네트워크 노드와의 로직 연결을 사용하여 네트워킹 환경에서 동작할 수 있다. 통신 유닛(640)에 의해, 디바이스(600)는 필요하다면, 하나 이상의 외부 디바이스(미도시)와 더 통신할 수 있고, 외부 디바이스는 예를 들어 데이터베이스(670), 다른 저장 디바이스, 서버 및 디스플레이 디바이스이고, 하나 이상의 디바이스는 사용자로 하여금 디바이스(600)와 상호작용할 수 있게 하거나, 또는 임의의 디바이스(예, 네트워크 카드, 모뎀 등)가 디바이스(600)로 하여금 하나 이상의 다른 컴퓨팅 디바이스와 통신할 수 있게 한다. 이러한 통신은 입력/출력(I/O) 인터페이스(미도시)를 통해 수행될 수 있다.
입력 장치(650)는 마우스, 키보드, 트래킹 볼, 음성 입력 장치 등과 같은 다양한 입력 장치 중 하나 이상을 포함할 수 있다. 출력 장치(660)는 디스플레이, 확성기, 프린터 등과 같은 다양한 출력 장치 중 하나 이상을 포함할 수 있다.
디바이스(600)는 컴퓨팅 자원 스케줄링 모듈(622)을 포함하며, 이는 컴퓨팅 자원 세트에서 목표 개수의 컴퓨팅 자원을 사용하기 위한 제1 요청을 수신 - 컴퓨팅 자원 세트의 적어도 하나의 프리 컴퓨팅 자원은 적어도 하나의 프리 자원 그룹을 구성함 - 하고; 목표 개수의 컴퓨팅 자원을 갖는 프리 매칭 자원 그룹이 적어도 하나의 프리 자원 그룹에 존재하는지 여부를 판정하며; 프리 매칭 자원 그룹이 적어도 하나의 프리 자원 그룹에 존재하지 않는 것에 응답하여, 여분의 프리 자원 그룹이 적어도 하나의 프리 자원 그룹에 포함되는지 여부를 판정 - 여분의 프리 자원 그룹에 포함된 자원 개수가 목표 개수보다 많음 - 하고; 및 여분의 프리 자원 그룹이 적어도 하나의 프리 자원 그룹에 존재하는 것에 응답하여, 여분의 프리 자원 그룹을 분할함으로써 제1 요청에 대해 목표 개수의 컴퓨팅 자원을 할당하도록 구성된다.
구현예의 구현
발명 대상의 일부 예시적인 구현이 아래에 나열된다.
제1 측면에 따르면, 컴퓨팅 자원을 관리하는 방법이 제공된다. 이 방법은, 컴퓨팅 자원 세트에서 목표 개수의 컴퓨팅 자원을 사용하기 위한 제1 요청을 수신하는 단계 - 컴퓨팅 자원 세트 중 적어도 하나의 프리 컴퓨팅 자원은 적어도 하나의 프리 자원 그룹을 구성함 - 와, 목표 개수의 컴퓨팅 자원을 갖는 프리 매칭 자원 그룹이 적어도 하나의 프리 자원 그룹에 존재하는지 여부를 판정하는 단계와, 프리 매칭 자원 그룹이 하나 이상의 프리 자원 그룹에 존재하지 않는 것에 응답하여, 여분의 프리 자원 그룹이 적어도 하나 이상의 프리 자원 그룹에 존재하는지 여부를 판정하는 단계 - 여분의 프리 자원 그룹의 자원 개수는 목표 개수보다 많음 - 와, 적어도 하나의 프리 자원 그룹에 여분의 프리 자원 그룹이 존재하는 것에 응답하여, 여분의 프리 자원 그룹을 분할함으로써 제1 요청에 대해 목표 개수의 컴퓨팅 자원을 할당하는 단계를 포함한다.
일부 구현에서, 방법은, 각각의 프리 자원 그룹이 멀티 레벨 토폴로지에서의 동일한 노드와 연관된 컴퓨팅 자원, 컴퓨팅 자원 세트 중 하나에 대응하는 멀티 레벨 토폴로지의 노드 또는 컴퓨팅 자원 세트의 다수의 컴퓨팅 자원에 대한 연결 구성요소를 포함하도록, 컴퓨팅 자원 세트에 대응하는 멀티 레벨 토폴로지에 기초하여 적어도 하나의 프리 컴퓨팅 자원을 하나 이상의 프리 자원 그룹으로 구성하는 단계를 더 포함한다.
일부 구현에서, 컴퓨팅 자원은 그래픽 프로세싱 유닛을 포함하고, 멀티 레벨 토폴로지는, 개별 그래픽 프로세싱 유닛에 대응하는 노드를 포함하는 제1 레벨과,복수의 그래픽 프로세싱 유닛을 연결하기 위한 PCIe 스위치에 대응하는 노드를 포함하는 제2 레벨과, 복수의 PCIe 스위치를 연결하기 위한 CPU 소켓에 대응하는 노드를 포함하는 제3 레벨과, 복수의 CPU 소켓을 연결하기 위한 컴퓨팅 디바이스에 대응하는 노드를 포함하는 제4 레벨 중 적어도 두 레벨을 포함한다.
일부 구현에서, 여분의 프리 자원 그룹을 분할함으로써 제1 요청에 대해 목표 개수의 컴퓨팅 자원을 할당하는 단계는, 여분의 프리 자원 그룹을 제1 자원 그룹 및 적어도 하나의 제2 자원 그룹으로 분할하는 단계 - 제1 자원 그룹은 목표 개수의 컴퓨팅 자원을 포함함 - 와, 제1 요청에 대해 제1 자원 그룹으로부터 컴퓨팅 자원을 할당하는 단계를 포함한다.
일부 구현에서, 방법은, 제1 요청의 완료에 응답하여, 제1 자원 그룹을 비어있는 것(free)으로 표시하는 단계와, 적어도 하나의 제2 자원 그룹의 모든 컴퓨팅 자원이 비어있다는 판정에 응답하여, 제1 자원 그룹 및 적어도 하나의 제2 자원 그룹을 새로운 프리 자원 그룹으로 병합하는 단계를 더 포함한다.
일부 구현에서, 방법은, 여분의 프리 자원 그룹이 적어도 하나의 프리 자원 그룹에 존재하지 않는다는 판정에 응답하여, 제1 요청의 우선순위가 우선순위 임계값을 초과하는지 여부를 판정하는 단계와, 우선순위가 우선순위 임계값을 초과하는 것에 응답하여, 제1 요청에 대해, 컴퓨팅 자원 세트로부터의 적어도 하나의 이용 가능한 컴퓨팅 자원, 프리 컴퓨팅 자원을 포함하는 이용 가능한 컴퓨팅 자원 및 우선 순위 임계값보다 낮거나 같은 우선 순위를 가진 제2 요청에 할당된 후보 컴퓨팅 자원을 포함하는 목표 개수의 컴퓨팅 자원을 할당하는 단계를 더 포함한다.
일부 구현에서, 적어도 하나의 이용 가능한 컴퓨팅 자원은 적어도 하나의 이용 가능한 자원 그룹으로 구성되고, 제1 요청에 대해 컴퓨팅 자원 세트로부터 적어도 하나의 이용 가능한 컴퓨팅 자원을 포함하는 목표 개수의 컴퓨팅 자원을 할당하는 단계는, 목표 개수의 컴퓨팅 자원을 갖는 이용 가능한 매칭 자원 그룹이 적어도 하나의 이용 가능한 자원 그룹에 존재하는지 여부를 판정하는 단계와, 이용 가능한 매칭 자원 그룹이 적어도 하나의 이용 가능한 자원 그룹에 존재하는 것에 응답하여, 이용 가능한 매칭 자원 그룹에 할당되어 있는 컴퓨팅 자원을 회수하는 단계와, 제1 요청에 대해 이용 가능한 매칭 자원 그룹으로부터의 컴퓨팅 자원을 할당하는 단계를 포함한다.
일부 구현에서, 제1 요청에 대해 컴퓨팅 자원 세트로부터의 적어도 하나의 이용 가능한 컴퓨팅 자원을 포함하는 목표 개수의 컴퓨팅 자원을 할당하는 단계는, 이용 가능한 매칭 자원 그룹이 적어도 하나의 이용 가능한 자원 그룹에 존재하지 않는 것에 응답하여, 이용 가능한 여분의 자원 그룹이 적어도 하나의 이용 가능한 자원 그룹에 존재하는지 여부를 판정하는 단계 - 이용 가능한 여분의 자원 그룹의 자원 개수는 목표 개수보다 많음 - 와, 이용 가능한 여분의 자원 그룹이 적어도 하나의 이용 가능한 자원 그룹에 존재한다고 판정한 것에 응답하여, 이용 가능한 여분의 자원 그룹을 분할하여 제1 요청에 대해 목표 개수의 컴퓨팅 자원을 할당하는 단계를 포함한다.
일부 구현에서, 방법은 제1 요청과 연관된 제1 테넌트가 사용한 자원 그룹 내의 컴퓨팅 자원의 제1 개수를 판정하는 단계와, 목표 개수와 제1 개수의 합이 제1 테넌트에 대응하는 컴퓨팅 자원 개수의 상한을 초과한다는 판정에 응답하여, 제1 요청의 우선순위를 우선순위 임계값보다 낮게 설정하는 단계를 포함한다.
일부 구현에서, 제1 테넌트에 대응하는 컴퓨팅 자원 개수의 상한은 제1 테넌트에 대해 사전 할당된 컴퓨팅 자원의 제2 개수 및 제2 테넌트와 교환함으로서 획득된 컴퓨팅 자원의 제3 개수의 합과 동일하다.
제2 측면에 따라, 디바이스가 제공된다. 디바이스는, 프로세싱 유닛과, 프로세싱 유닛에 연결되고, 명령어가 저장된 메모리를 포함하되, 명령어는 프로세싱 유닛에 의해 실행될 때 디바이스로 하여금, 컴퓨팅 자원 세트에서 목표 개수의 컴퓨팅 자원을 사용하기 위한 제1 요청을 수신하는 동작 - 컴퓨팅 자원 세트 중 적어도 하나의 프리 컴퓨팅 자원은 적어도 하나의 프리 자원 그룹을 구성함 - 과, 적어도 하나의 프리 자원 그룹에 목표 개수의 컴퓨팅 자원을 갖는 프리 매칭 자원 그룹이 존재하는지 여부를 판정하는 동작과, 프리 매칭 자원 그룹이 하나 이상의 프리 자원 그룹에 존재하지 않는 것에 응답하여, 여분의 프리 자원 그룹이 하나 이상의 프리 자원 그룹에 존재하는지 여부를 판정하는 동작 - 여분의 프리 자원 그룹의 자원 개수는 목표 개수보다 많음 - 과, 적어도 하나의 프리 자원 그룹에 여분의 프리 자원 그룹이 존재하는 것에 응답하여, 여분의 프리 자원 그룹을 분할함으로써 제1 요청에 대해 목표 개수의 컴퓨팅 자원을 할당하는 동작을 포함한다.
일부 구현에서, 동작은, 각각의 프리 자원 그룹이 멀티 레벨 토폴로지의 동일한 노드와 연관된 컴퓨팅 자원, 컴퓨팅 자원 세트 중 하나에 대응하는 멀티 레벨 토폴로지의 노드 또는 컴퓨팅 자원 세트의 다수의 컴퓨팅 자원에 대한 연결 구성요소를 포함하도록, 컴퓨팅 자원 세트에 대응하는 멀티 레벨 토폴로지에 기초하여 적어도 하나의 프리 컴퓨팅 자원을 하나 이상의 프리 자원 그룹으로 구성하는 것을 더 포함한다.
일부 구현에서, 컴퓨팅 자원은 그래픽 프로세싱 유닛을 포함하고, 멀티 레벨 토폴로지는, 개별 그래픽 프로세싱 유닛에 대응하는 노드를 포함하는 제1 레벨과, 복수의 그래픽 프로세싱 유닛을 연결하기 위한 PCIe 스위치에 대응하는 노드를 포함하는 제2 레벨과, 복수의 PCIe 스위치를 연결하기 위한 CPU 소켓에 대응하는 노드를 포함하는 제3 레벨과, 복수의 CPU 소켓을 연결하기 위한 컴퓨팅 디바이스에 대응하는 노드를 포함하는 제4 레벨 중 적어도 두 레벨을 포함한다.
일부 구현에서, 여분의 프리 자원 그룹을 분할함으로써 제1 요청에 대해 목표 개수의 컴퓨팅 자원을 할당하는 동작은, 여분의 프리 자원 그룹을 제1 자원 그룹 및 적어도 하나의 제2 자원 그룹으로 분할하는 단계 - 제1 자원 그룹은 제1 목표 개수의 컴퓨팅 자원을 포함함 - 와, 제1 요청에 대해 제1 자원 그룹으로부터의 컴퓨팅 자원을 할당하는 단계를 포함한다.
일부 구현에서, 동작은, 제1 요청의 완료에 응답하여, 제1 자원 그룹을 비어 있는 것으로 마킹하는 것과, 적어도 하나의 제2 자원 그룹의 컴퓨팅 자원들 모두가 비어 있다고 판정한 것에 응답하여, 제1 자원 그룹 및 적어도 하나의 제2 자원 그룹을 새로운 프리 자원 그룹으로 병합하는 것을 포함한다.
일부 구현에서, 동작은, 여분의 프리 자원 그룹이 적어도 하나의 프리 자원 그룹에 존재하지 않는다는 판정에 응답하여, 제1 요청의 우선순위가 우선순위 임계값을 초과하는지 여부를 판정하는 것과, 우선순위가 우선순위 임계값을 초과하는 것에 응답하여, 제1 요청에 대해, 컴퓨팅 자원 세트로부터의 적어도 하나의 이용 가능한 컴퓨팅 자원을 포함하는 컴퓨팅 자원의 타겟 수를 할당 - 이용 가능한 컴퓨팅 자원은 우선순위 임계값 이하의 우선순위를 갖는 제2 요청에 할당된 프리 컴퓨팅 자원 및 후보 컴퓨팅 자원을 포함함 - 하는 것을 포함한다.
일부 구현에서, 적어도 하나의 이용 가능한 컴퓨팅 자원은 적어도 하나의 이용 가능한 자원 그룹으로 구성되고, 여기서 제1 요청에 대해 컴퓨팅 자원 세트로부터의 적어도 하나의 이용 가능한 컴퓨팅 자원을 포함하는 컴퓨팅 자원의 타겟 수를 할당하는 것은, 목표 개수의 컴퓨팅 자원을 갖는 이용 가능한 매칭 자원 그룹이 적어도 하나의 이용 가능한 자원 그룹에 존재하는지 여부를 판정하는 것과, 이용 가능한 매칭 자원 그룹이 적어도 하나의 이용 가능한 자원 그룹에 존재하는 것에 응답하여, 이용 가능한 매칭 자원 그룹에 할당된 컴퓨팅 자원을 회수하는 것과, 제1 요청에 대해 이용 가능한 매칭 자원 그룹으로부터 컴퓨팅 자원을 할당하는 것을 포함한다.
일부 구현에서, 제1 요청에 대해 컴퓨팅 자원 세트로부터의 적어도 하나의 이용 가능한 컴퓨팅 자원을 포함하는 목표 개수의 컴퓨팅 자원을 할당하는 것은,적어도 하나의 이용 가능한 자원 그룹에 이용 가능한 매칭 자원 그룹이 부재하는 것에 응답하여, 이용 가능한 여분의 자원 그룹이 적어도 하나의 이용 가능한 자원 그룹에 존재하는지 여부를 판정하는 것 - 이용 가능한 여분의 자원 그룹의 자원 개수는 목표 개수보다 많음 - 이용 가능한 여분의 자원 그룹이 적어도 하나의 이용 가능한 자원 그룹에 존재한다고 판정한 것에 응답하여, 이용 가능한 여분의 자원 그룹을 분할함으로써 제1 요청에 대해 목표 개수의 컴퓨팅 자원을 할당하는 것을 포함한다.
일부 구현에서, 동작은, 제1 요청과 연관된 제1 테넌트가 사용한 자원 그룹 내의 컴퓨팅 자원들의 제1 개수를 판정하는 것, 목표 개수와 제1 개수의 합이 제1 테넌트에 대응하는 컴퓨팅 자원 개수의 상한을 초과한다고 판정하는 것에 응답하여, 제1 요청의 우선순위를 우선순위 임계값보다 낮게 설정하는 것을 포함한다.
일부 구현에서, 제1 테넌트에 대응하는 컴퓨팅 자원 개수의 상한은 제1 테넌트에 대해 사전 할당된 컴퓨팅 자원의 제2 개수와, 제2 테넌트를 교환함으로써 획득된 컴퓨팅 자원의 제2 개수의 합과 동일하다.
제3 측면에 따르면, 비일시적 컴퓨터 저장 매체에 유형적으로 저장되고 머신 실행가능 명령어를 포함하는 컴퓨터 프로그램 제품이 제공되며, 명령어는 디바이스에 의해 실행될 때 디바이스로 하여금 제1 측면에 따른 임의의 방법을 수행하게 한다.
제4 측면에 따르면, 디바이스에 의해 실행될 때 디바이스로 하여금 제1 측면에 따른 방법을 수행하게 하는 기계 실행가능 명령어가 저장된 컴퓨터 판독가능 매체가 제공된다.
본 명세서에 기능적으로 설명된 것은 하나 이상의 하드웨어 논리 구성요소에 의해 적어도 부분적으로 수행될 수 있다. 예를 들어, 제한 없이, 사용될 수 있는 예시적인 유형의 하드웨어 논리 구성요소는 FPGA(Field-Programmable Gate Array) ASIC(Application-specific Integrated Circuits), ASSP(Application-Specific Standard Product), SOC(System-on-a-Chip), CPLD(Complex Programmable Logic Devices) 등을 포함한다.
본 명세서에 설명된 발명 대상의 방법을 수행하기 위한 프로그램 코드는 하나 이상의 프로그래밍 언어의 임의의 조합으로 작성될 수 있다. 이러한 프로그램 코드는 범용 컴퓨터, 전용 컴퓨터 또는 기타 프로그램 가능한 데이터 처리 장치의 프로세서 또는 컨트롤러에 제공될 수 있어, 프로그램 코드는 프로세서 또는 컨트롤러에 의해 실행될 때 흐름도 및/또는 블록도에 명시된 기능/동작이 구현되게 한다. 프로그램 코드는 전체가 기계에서, 일부가 기계에서, 독립형 소프트웨어 패키지로서, 일부는 기계에서 그리고 일부는 원격 기계에서, 또는 전체가 원격 기계 또는 서버에서 실행될 수 있다.
본 개시내용의 맥락에서, 기계 판독가능 매체는 명령어 실행 시스템, 장치 또는 디바이스에 의해 또는 이와 관련하여 사용하기 위한 프로그램을 포함하거나 저장할 수 있는 임의의 유형의 매체일 수 있다. 기계 판독 가능 매체는 기계 판독 가능 신호 매체 또는 기계 판독 가능 저장 매체일 수 있다. 기계 판독 가능 매체는 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치 또는 디바이스, 또는 이들의 임의의 적절한 조합을 포함할 수 있지만 이에 제한되지는 않다. 기계 판독 가능 저장 매체의 보다 구체적인 예는 하나 이상의 와이어를 갖는 전기 연결부, 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 소거 가능한 프로그램 가능 읽기 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, 휴대용 CD-ROM(compact disc read-only memory), 광학 저장 디바이스, 자기 저장 디바이스, 또는 이들의 적절한 조합을 포함할 수 있다.
또한, 동작이 특정 순서로 도시되어 있지만, 이는 바람직한 결과를 달성하기 위해 그러한 동작이 도시된 특정 순서 또는 순차적인 순서로 수행되거나 도시된 모든 동작이 수행될 것을 요구하는 것으로 이해되어서는 안 된다. 특정 상황에서는 멀티태스킹과 병렬 프로세싱이 유리할 수 있다. 마찬가지로, 몇 가지 특정 구현 세부사항이 위의 논의에 포함되어 있지만, 이들은 본 명세서에 설명된 발명 대상의 범위에 대한 제한으로 해석되어서는 안 되며, 오히려 구체적인 구현에 특정될 수 있는 기능에 대한 설명으로 해석되어야 한다. 별도의 구현과 관련하여 설명된 특정 기능은 단일 구현에서 조합하여 구현될 수도 있다. 반대로, 단일 구현과 관련하여 설명된 다양한 기능은 또한 개별적으로 또는 임의의 적절한 하위 조합으로 다수의 구현으로 구현될 수 있다.
발명 대상이 구조적 특징 및/또는 방법론적 동작에 특정된 언어로 설명되었지만, 첨부된 청구범위에 명시된 발명 대상이 반드시 위에서 설명된 구체적인 특징 또는 동작으로 제한되는 것은 아님을 이해해야 한다. 오히려, 위에서 설명된 구체적인 특징 및 동작은 청구범위를 구현하는 예시적인 형태로 개시된다.

Claims (15)

  1. 컴퓨팅 자원을 관리하는 방법으로서,
    컴퓨팅 자원 세트에서 목표 개수의 컴퓨팅 자원을 사용하기 위한 제1 요청을 수신하는 단계 - 상기 컴퓨팅 자원 세트 중 적어도 하나의 프리 컴퓨팅 자원은 적어도 하나의 프리 자원 그룹을 구성함 - 와,
    상기 목표 개수의 컴퓨팅 자원을 갖는 프리 매칭 자원 그룹이 상기 적어도 하나의 프리 자원 그룹에 존재하는지 여부를 판정하는 단계와,
    상기 프리 매칭 자원 그룹이 상기 하나 이상의 프리 자원 그룹에 존재하지 않는 것에 응답하여, 여분의 프리 자원 그룹이 상기 적어도 하나 이상의 프리 자원 그룹에 존재하는지 여부를 판정하는 단계 - 상기 여분의 프리 자원 그룹의 자원 개수는 상기 목표 개수보다 많음 - 와,
    상기 적어도 하나의 프리 자원 그룹에 상기 여분의 프리 자원 그룹이 존재하는 것에 응답하여, 상기 여분의 프리 자원 그룹을 분할함으로써 상기 제1 요청에 대해 상기 목표 개수의 컴퓨팅 자원을 할당하는 단계를 포함하는,
    컴퓨팅 자원 관리 방법.
  2. 제1항에 있어서,
    각각의 프리 자원 그룹이 멀티 레벨 토폴로지에서 동일한 노드와 연관된 컴퓨팅 자원, 상기 컴퓨팅 자원 세트 중 하나에 대응하는 멀티 레벨 토폴로지의 노드 또는 상기 컴퓨팅 자원 세트의 다수의 컴퓨팅 자원에 대한 연결 구성요소를 포함하도록, 상기 컴퓨팅 자원 세트에 대응하는 멀티 레벨 토폴로지에 기초하여 상기 적어도 하나의 프리 컴퓨팅 자원을 상기 하나 이상의 프리 자원 그룹으로 구성하는 단계를 더 포함하는,
    컴퓨팅 자원 관리 방법.
  3. 제2항에 있어서,
    상기 컴퓨팅 자원은 그래픽 프로세싱 유닛을 포함하고,
    상기 멀티 레벨 토폴로지는,
    개별 그래픽 프로세싱 유닛에 대응하는 노드를 포함하는 제1 레벨과,
    복수의 그래픽 프로세싱 유닛을 연결하기 위한 PCIe 스위치에 대응하는 노드를 포함하는 제2 레벨과,
    복수의 PCIe 스위치를 연결하기 위한 CPU 소켓에 대응하는 노드를 포함하는 제3 레벨과,
    복수의 CPU 소켓을 연결하기 위한 컴퓨팅 디바이스에 대응하는 노드를 포함하는 제4 레벨 중 적어도 두 레벨을 포함하는,
    컴퓨팅 자원 관리 방법.
  4. 제1항에 있어서,
    상기 여분의 프리 자원 그룹을 분할함으로써 상기 제1 요청에 대해 목표 개수의 컴퓨팅 자원을 할당하는 단계는,
    상기 여분의 프리 자원 그룹을 제1 자원 그룹 및 적어도 하나의 제2 자원 그룹으로 분할하는 단계 - 상기 제1 자원 그룹은 상기 목표 개수의 컴퓨팅 자원을 포함함 - 와,
    상기 제1 요청에 대해 상기 제1 자원 그룹으로부터의 컴퓨팅 자원을 할당하는 단계를 포함하는,
    컴퓨팅 자원 관리 방법.
  5. 제4항에 있어서,
    상기 제1 요청의 완료에 응답하여, 상기 제1 자원 그룹을 비어있는 것(free)으로 표시하는 단계와,
    상기 적어도 하나의 제2 자원 그룹의 모든 컴퓨팅 자원이 비어있다는 판정에 응답하여, 상기 제1 자원 그룹 및 상기 적어도 하나의 제2 자원 그룹을 새로운 프리 자원 그룹으로 병합하는 단계를 더 포함하는,
    컴퓨팅 자원 관리 방법.
  6. 제1항에 있어서,
    상기 여분의 프리 자원 그룹이 상기 적어도 하나의 프리 자원 그룹에 존재하지 않는다는 판정에 응답하여, 상기 제1 요청의 우선순위가 우선순위 임계값을 초과하는지 여부를 판정하는 단계와,
    상기 우선순위가 상기 우선순위 임계값을 초과하는 것에 응답하여, 상기 제1 요청에 대해, 상기 컴퓨팅 자원 세트로부터의 적어도 하나의 이용 가능한 컴퓨팅 자원, 프리 컴퓨팅 자원을 포함하는 상기 이용 가능한 컴퓨팅 자원 및 상기 우선 순위 임계값보다 낮거나 같은 우선 순위를 가진 제2 요청에 할당된 후보 컴퓨팅 자원을 포함하는 상기 목표 개수의 컴퓨팅 자원을 할당하는 단계를 더 포함하는,
    컴퓨팅 자원 관리 방법.
  7. 제6항에 있어서,
    상기 적어도 하나의 이용 가능한 컴퓨팅 자원은 적어도 하나의 이용 가능한 자원 그룹으로 구성되고,
    상기 제1 요청에 대해 상기 컴퓨팅 자원 세트로부터의 적어도 하나의 이용 가능한 컴퓨팅 자원을 포함하는 상기 목표 개수의 컴퓨팅 자원을 할당하는 단계는,
    상기 목표 개수의 컴퓨팅 자원을 갖는 이용 가능한 매칭 자원 그룹이 상기 적어도 하나의 이용 가능한 자원 그룹에 존재하는지 여부를 판정하는 단계와,
    상기 이용 가능한 매칭 자원 그룹이 상기 적어도 하나의 이용 가능한 자원 그룹에 존재하는 것에 응답하여, 상기 이용 가능한 매칭 자원 그룹에 할당되어 있는 컴퓨팅 자원을 회수하는 단계와,
    상기 제1 요청에 대해 상기 이용 가능한 매칭 자원 그룹으로부터의 컴퓨팅 자원을 할당하는 단계를 포함하는,
    컴퓨팅 자원 관리 방법.
  8. 제7항에 있어서,
    상기 제1 요청에 대해 상기 컴퓨팅 자원 세트로부터의 적어도 하나의 이용 가능한 컴퓨팅 자원을 포함하는 상기 목표 개수의 컴퓨팅 자원을 할당하는 단계는,
    상기 이용 가능한 매칭 자원 그룹이 상기 적어도 하나의 이용 가능한 자원 그룹에 존재하지 않는 것에 응답하여, 이용 가능한 여분의 자원 그룹이 상기 적어도 하나의 이용 가능한 자원 그룹에 존재하는지 여부를 판정하는 단계 - 상기 이용 가능한 여분의 자원 그룹의 자원 개수는 상기 목표 개수보다 많음 - 와,
    상기 이용 가능한 여분의 자원 그룹이 상기 적어도 하나의 이용 가능한 자원 그룹에 존재한다고 판정한 것에 응답하여, 상기 이용 가능한 여분의 자원 그룹을 분할하여 상기 제1 요청에 대해 상기 목표 개수의 컴퓨팅 자원을 할당하는 단계를 포함하는,
    컴퓨팅 자원 관리 방법.
  9. 제1항에 있어서,
    상기 제1 요청과 연관된 제1 테넌트가 사용한 자원 그룹 내의 컴퓨팅 자원의 제1 개수를 판정하는 단계와,
    상기 목표 개수와 상기 제1 개수의 합이 상기 제1 테넌트에 대응하는 컴퓨팅 자원 개수의 상한을 초과한다는 판정에 응답하여, 상기 제1 요청의 우선순위를 우선순위 임계값보다 낮게 설정하는 단계를 더 포함하는,
    컴퓨팅 자원 관리 방법.
  10. 제9항에 있어서,
    상기 제1 테넌트에 대응하는 상기 컴퓨팅 자원 개수의 상한은 상기 제1 테넌트에 대해 사전 할당된 컴퓨팅 자원의 제2 개수와, 제2 테넌트와 교환함으로서 획득된 컴퓨팅 자원의 제3 개수의 합과 동일한,
    컴퓨팅 자원 관리 방법.
  11. 디바이스로서,
    프로세싱 유닛과,
    상기 프로세싱 유닛에 연결되고, 명령어가 저장된 메모리를 포함하되,
    상기 명령어는 상기 프로세싱 유닛에 의해 실행될 때 상기 디바이스로 하여금,
    컴퓨팅 자원 세트에서 목표 개수의 컴퓨팅 자원을 사용하기 위한 제1 요청을 수신하는 동작 - 상기 컴퓨팅 자원 세트 중 적어도 하나의 프리 컴퓨팅 자원은 적어도 하나의 프리 자원 그룹을 구성함 - 과,
    상기 적어도 하나의 프리 자원 그룹에 상기 목표 개수의 컴퓨팅 자원을 갖는 프리 매칭 자원 그룹이 존재하는지 여부를 판정하는 동작과,
    상기 프리 매칭 자원 그룹이 상기 하나 이상의 프리 자원 그룹에 존재하지 않는 것에 응답하여, 여분의 프리 자원 그룹이 상기 하나 이상의 프리 자원 그룹에 존재하는지 여부를 판정하는 동작 - 상기 여분의 프리 자원 그룹의 자원 개수는 상기 목표 개수보다 많음 - 과,
    상기 적어도 하나의 프리 자원 그룹에 상기 여분의 프리 자원 그룹이 존재하는 것에 응답하여, 상기 여분의 프리 자원 그룹을 분할함으로써 상기 제1 요청에 대해 상기 목표 개수의 컴퓨팅 자원을 할당하는 동작을 수행하게 하는,
    디바이스.
  12. 제11항에 있어서,
    상기 동작은,
    각각의 프리 자원 그룹이 멀티 레벨 토폴로지의 동일한 노드와 연관된 컴퓨팅 자원, 상기 컴퓨팅 자원 세트 중 하나에 대응하는 멀티 레벨 토폴로지의 노드 또는 상기 컴퓨팅 자원 세트의 다수의 컴퓨팅 자원에 대한 연결 구성요소를 포함하도록, 상기 컴퓨팅 자원 세트에 대응하는 멀티 레벨 토폴로지에 기초하여 상기 적어도 하나의 프리 컴퓨팅 자원을 상기 하나 이상의 프리 자원 그룹으로 구성하는 것을 더 포함하는,
    디바이스.
  13. 제12항에 있어서,
    상기 컴퓨팅 자원은 그래픽 프로세싱 유닛을 포함하고, 상기 멀티 레벨 토폴로지는,
    개별 그래픽 프로세싱 유닛에 대응하는 노드를 포함하는 제1 레벨과,
    복수의 그래픽 프로세싱 유닛을 연결하기 위한 PCIe 스위치에 대응하는 노드를 포함하는 제2 레벨과,
    복수의 PCIe 스위치를 연결하기 위한 CPU 소켓에 대응하는 노드를 포함하는 제3 레벨과,
    복수의 CPU 소켓을 연결하기 위한 컴퓨팅 디바이스에 대응하는 노드를 포함하는 제4 레벨 중 적어도 두 레벨을 포함하는,
    디바이스.
  14. 제11항에 있어서,
    상기 여분의 프리 자원 그룹을 분할함으로써 상기 제1 요청에 대해 상기 목표 개수의 컴퓨팅 자원을 할당하는 동작은,
    상기 여분의 프리 자원 그룹을 제1 자원 그룹 및 적어도 하나의 제2 자원 그룹으로 분할하는 것 - 상기 제1 자원 그룹은 상기 제1 목표 개수의 컴퓨팅 자원을 포함함 - 과,
    상기 제1 요청에 대해 상기 제1 자원 그룹으로부터의 컴퓨팅 자원을 할당하는 것을 포함하는,
    디바이스.
  15. 컴퓨터 저장 매체에 유형적으로 저장되고 머신 실행가능 명령어를 포함하는 컴퓨터 프로그램 제품으로서,
    상기 명령어는 디바이스에 의해 실행될 때 상기 디바이스로 하여금,
    목표 개수의 컴퓨팅 자원을 갖는 프리 매칭 자원 그룹이 상기 적어도 하나의 프리 자원 그룹에 존재하는지 여부를 판정하고,
    상기 프리 매칭 자원 그룹이 상기 적어도 하나의 프리 자원 그룹에 존재하지 않는 것에 응답하여, 여분의 프리 자원 그룹이 적어도 하나의 프리 자원 그룹에 존재하는지 여부를 판정 - 상기 여분의 프리 자원 그룹의 자원 개수는 상기 목표 개수보다 많음 - 하며,
    상기 여분의 프리 자원 그룹이 상기 적어도 하나의 프리 자원 그룹에 존재하는 것에 응답하여, 상기 여분의 프리 자원 그룹을 분할함으로써 제1 요청에 대해 상기 목표 개수의 컴퓨팅 자원을 할당하게 하는,
    컴퓨터 프로그램 제품.
KR1020217042559A 2019-06-28 2020-05-04 컴퓨팅 자원의 동적 할당 KR20220025746A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201910578411.1 2019-06-28
CN201910578411.1A CN112148467A (zh) 2019-06-28 2019-06-28 计算资源的动态分配
PCT/US2020/031250 WO2020263414A1 (en) 2019-06-28 2020-05-04 Dynamic allocation of computing resources

Publications (1)

Publication Number Publication Date
KR20220025746A true KR20220025746A (ko) 2022-03-03

Family

ID=70919001

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217042559A KR20220025746A (ko) 2019-06-28 2020-05-04 컴퓨팅 자원의 동적 할당

Country Status (9)

Country Link
US (1) US20220229701A1 (ko)
EP (1) EP3991042A1 (ko)
JP (1) JP2022539291A (ko)
KR (1) KR20220025746A (ko)
CN (1) CN112148467A (ko)
AU (1) AU2020308941A1 (ko)
BR (1) BR112021021732A2 (ko)
CA (1) CA3139693A1 (ko)
WO (1) WO2020263414A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210089467A1 (en) * 2020-10-01 2021-03-25 Intel Corporation Page allocation for contiguity-aware translation lookaside buffers
CN114385370B (zh) * 2022-01-18 2022-10-25 重庆紫光华山智安科技有限公司 内存分配方法、系统、设备及介质
CN116701001B (zh) * 2023-08-08 2023-10-20 国网浙江省电力有限公司信息通信分公司 目标任务分配方法、装置、电子设备及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1133337C (zh) * 1998-04-29 2003-12-31 艾利森电话股份有限公司 资源分配
US7580146B2 (en) * 2005-03-22 2009-08-25 Xerox Corporation Hierarchical architecture for a distributed and scalable network printing system
US8380959B2 (en) * 2008-09-05 2013-02-19 Apple Inc. Memory management system and method
US8468251B1 (en) * 2011-12-29 2013-06-18 Joyent, Inc. Dynamic throttling of access to computing resources in multi-tenant systems
CN103269282A (zh) * 2013-04-25 2013-08-28 杭州华三通信技术有限公司 网络配置自动部署方法和装置
US11075979B2 (en) * 2016-02-29 2021-07-27 International Business Machines Corporation Optimized resource provisioning
CN106708622B (zh) * 2016-07-18 2020-06-02 腾讯科技(深圳)有限公司 集群资源处理方法和系统、资源处理集群
CN108363623A (zh) * 2018-02-27 2018-08-03 郑州云海信息技术有限公司 Gpu资源调度方法、装置、设备及计算机可读存储介质

Also Published As

Publication number Publication date
US20220229701A1 (en) 2022-07-21
AU2020308941A1 (en) 2021-12-23
CA3139693A1 (en) 2020-12-30
JP2022539291A (ja) 2022-09-08
WO2020263414A1 (en) 2020-12-30
CN112148467A (zh) 2020-12-29
BR112021021732A2 (pt) 2022-01-04
EP3991042A1 (en) 2022-05-04

Similar Documents

Publication Publication Date Title
US11799952B2 (en) Computing resource discovery and allocation
US11669372B2 (en) Flexible allocation of compute resources
US20200081731A1 (en) Method, system and apparatus for creating virtual machine
US9922045B2 (en) Data management in a multi-tenant distributive environment
KR20220025746A (ko) 컴퓨팅 자원의 동적 할당
US10013264B2 (en) Affinity of virtual processor dispatching
US9940020B2 (en) Memory management method, apparatus, and system
US9471391B1 (en) Aggregating resource requests
WO2017000645A1 (zh) 一种分配宿主机资源的方法和装置
US9069621B2 (en) Submitting operations to a shared resource based on busy-to-success ratios
CN113361913A (zh) 一种通信业务编排方法、装置、计算机设备及存储介质
CN106789421B (zh) 协同设计的方法和装置
CN117130571A (zh) 基于多核异构系统的显示方法、设备、芯片、存储介质
EP3994574A1 (en) Harvest virtual machine for utilizing cloud-computing resources
CN114281516A (zh) 一种基于numa属性的资源分配方法及装置
CN117311910B (zh) 一种高性能虚拟密码机运行方法
CN110705884B (zh) 清单处理方法、装置、设备及存储介质
US9251100B2 (en) Bitmap locking using a nodal lock
CN113992760B (zh) 回源流量的调度方法、装置、设备以及存储介质
CN116566916A (zh) 集群服务限流管理方法、装置、设备和介质
CN116628634A (zh) 一种许可证的分配方法及装置
CN117193947A (zh) 基于多种资源的容器集分配方法、装置、设备及存储介质
CN116382883A (zh) 云计算系统数据处理方法、装置、电子设备和存储介质
CN117742957A (zh) 内存分配方法、装置、电子设备和存储介质
CN115858115A (zh) 广告物料的处理方法和装置

Legal Events

Date Code Title Description
A201 Request for examination