KR102514478B1 - Cpu 리소스들을 할당하기 위한 장치, 디바이스 및 방법 - Google Patents

Cpu 리소스들을 할당하기 위한 장치, 디바이스 및 방법 Download PDF

Info

Publication number
KR102514478B1
KR102514478B1 KR1020177021601A KR20177021601A KR102514478B1 KR 102514478 B1 KR102514478 B1 KR 102514478B1 KR 1020177021601 A KR1020177021601 A KR 1020177021601A KR 20177021601 A KR20177021601 A KR 20177021601A KR 102514478 B1 KR102514478 B1 KR 102514478B1
Authority
KR
South Korea
Prior art keywords
cpus
cpu
idle
process group
execution
Prior art date
Application number
KR1020177021601A
Other languages
English (en)
Other versions
KR20170110615A (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 KR20170110615A publication Critical patent/KR20170110615A/ko
Application granted granted Critical
Publication of KR102514478B1 publication Critical patent/KR102514478B1/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/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)

Abstract

다중-프로세서 디바이스를 위한 중앙 프로세싱 유닛(CPU) 리소스 할당의 방법은 사전-구성된 시간 기간 동안 다중-프로세서 디바이스 상에서 실행하는 프로세스 그룹들에 대한 요구된 CPU 리소스들의 양들을 획득하는 단계를 포함한다. 방법은 또한 사전-구성된 시간 기간 동안 다중-프로세서 디바이스의 CPU들에 대한 유휴 CPU 리소스들의 양들을 획득하는 단계를 포함한다. 방법은 프로세스 그룹들에 대한 요구된 CPU 리소스들의 획득된 양 및 CPU들에 대한 유휴 CPU 리소스들의 획득된 양들에 기초하여 프로세스 그룹들에 CPU들을 할당하는 단계를 추가로 포함한다.

Description

CPU 리소스들을 할당하기 위한 장치, 디바이스 및 방법
관련 출원들에 대한 상호 참조
본 출원은 2015년 2월 3일에 출원된, 중국 특허 출원 번호 제201510055803.1호에 대한 이득들을 주장하며, 이것은 여기에서 전체적으로 참조로서 통합된다.
기술분야
본 발명은 일반적으로 컴퓨터 하드웨어의 분야에 관한 것이며, 보다 특히 CPU 리소스들을 할당하기 위한 방법, 장치 및 디바이스에 관한 것이다.
서버들은 범위가 수십에서 수천 또는 심지어 수만에 이르는 다수로 넘버링된 사용자들로부터의 방문들을 수용하는, 네크워킹 기술의 필수적인 구성요소들이다. 그 결과, 서버들은 다량의 데이터의 높은 스루풋, 극히 높은 레벨의 안정성, 긴 실행 시간들 등에 대한 성능 요구들에 직면하는 경향이 있다. 다량의 계산을 위해, 부서 레벨 또는 기업 레벨에서 서비스하는 서버들은 일반적으로 중앙 프로세서 유닛(CPU) 병렬 프로세싱을 지원한다. 병렬 프로세싱은 동시에 실행하는 다수의 CPU들을 갖는 서버를 나타내며, 이것은 서버의 데이터 프로세싱 전력을 크게 강화시킨다. 현재, 고성능 서버들은 일반적으로 다수의 CPU들을 갖추고 있다.
CPU 병렬 프로세싱의 기술은 예를 들면, 서버가, 각각의 프로그램이 서로 병렬로 실행되는 것이 가능한, 다수의 프로그램들(태스크들)을 갖고 설치되는 시나리오들에 적용된다. 다수의 프로그램들을 실행하는 이러한 서버를 갖고, 각각의 프로그램은 하나 이상의 프로세스들을 포함하는, 프로세스 그룹에 대응한다. 다수의 프로세스 그룹들은 동일한 서버에 의해 제공된 하드웨어 리소스들을 공유한다. 병렬로 작동하는 다수의 프로그램들의 프로세스 동안, 프로세스 그룹들이 서로의 실행을 간섭하거나 또는 성능에서의 변화들을 발생시키는 것을 방지하기 위해, 다수의 프로그램들에 대응하는 프로세스 그룹들에 의해 이용된 CPU 리소스들을 분리하는 것이 필요하다. 이상적인 상황에서, 각각의 프로세스 그룹에 대한 독립적인 리소스들을 할당하는 것은 CPU 리소스들이 프로세스 그룹들에 대해 성공적으로 분리될 수 있음을 보장할 수 있다. 그러나, CPU 리소스들의 독립적인 할당은 할당된 CPU 리소스들의 부분들이 충분히 이용되지 않는 것으로 이어지며 결과적으로 CPU 리소스들의 낭비를 야기한다.
CPU 리소스들의 사용률을 증가시키기 위해, CPU는 그것이 다수의 프로세스 그룹들 간에 공유되도록 둘 이상의 프로세스 그룹들을 실행하기 위해 할당되며, 즉 CPU 리소스들은 오버-프로비저닝(over-provision)된다. 오버-프로비저닝은 CPU 리소스 분리를 달성하는 것 및 CPU 리소스 사용 효율 사이에서의 균형을 달성하도록 돕는 메커니즘들 중 하나이다.
프로세스 그룹들에 CPU 리소스들을 할당하기 위해 오버-프로비저닝 메커니즘을 이용할 때, 종래의 기술은 실행을 위해 특정한 CPU 또는 CPU 클러스터들에 프로세스 그룹들을 피닝(pinning)한다. 상이한 프로그램들에 의한 CPU 리소스들에 대한 상이한 요구들 및 상이한 실행 포인트들에서 프로세스 그룹에 의한 CPU 리소스들에 대한 상이한 요구들을 갖고, 피닝 방법은 몇몇 CPU들이 너무 많은 바쁜 프로그램들로 오버로딩됨을 쉽게 야기할 수 있지만, 다른 CPU들은 보다 적은 프로그램들로 언더-로딩되며, 즉, 각각의 CPU의 사용 간에 불균형이 있다. CPU 리소스들이 다수의 프로세스 그룹들에 의해 공유되는 다수의 프로세스 그룹들의 환경에서, 하나 이상의 CPU들이 많은 작업 부하를 가질 때, 이들 CPU들 상에서 실행하는 프로그램들의 기능은 성능에 관하여 저하된 변화를 경험할 가능성이 있다.
그러므로, 서버들에서 병렬 프로세싱의 환경에서 불균형의 CPU 사용의 문제점들을 해결하기 위한 요구가 존재하고 있다.
본 개시의 대표적인 실시예에 따르면, 다중-프로세서 디바이스를 위한 중앙 프로세서 유닛(CPU) 리소스 할당의 방법이 개시된다. 일 실시예는 사전-구성된 시간 기간 동안 상기 다중-프로세서 디바이스 상에서 실행하는 프로세스 그룹들에 대한 요구된 CPU 리소스들의 양들을 획득하는 단계를 포함한다. 상기 방법은 또한 상기 사전-구성된 시간 기간 동안 다중-프로세서 디바이스의 CPU 들에 대한 유휴 CPU 리소스들의 양들을 획득하는 단계를 포함한다. 상기 방법은 상기 프로세스 그룹들에 대한 요구된 CPU 리소스들의 획득된 양들 및 상기 CPU들에 대한 유휴 CPU 리소스들의 획득된 양들에 기초하여 상기 프로세스 그룹들에 CPU들을 획득하는 단계를 추가로 포함한다.
본 개시의 또 다른 대표적인 실시예에 따르면, CPU 리소스들을 할당하기 위한 장치는 획득 모듈 및 할당 모듈을 포함한다. 상기 획득 모듈은 사전-구성된 시간 기간 동안 상기 다중-프로세서 디바이스 상에서 실행하는 프로세스 그룹들에 대한 요구된 CPU 리소스들의 양들 및 상기 다중-프로세서 디바이스의 CPU들에 대한 유휴 CPU 리소스들의 양들을 획득하도록 구성된다. 상기 할당 모듈은 상기 프로세스 그룹들에 대한 요구된 CPU 리소스들의 획득된 양들 및 상기 CPU들에 대한 유휴 CPU 리소스들의 획득된 양들에 기초하여 상기 프로세스 그룹들에 CPU들을 할당하도록 구성된다.
본 개시의 또 다른 대표적인 실시예에 따르면, CPU 리소스들을 할당하기 위한 전자 디바이스는 메모리 및 그것 상에서 실행하는 복수의 프로세스 그룹들을 가진 복수의 프로세서들을 포함한다. 상기 CPU 리소스들은 CPU 리소스 할당 방법에 의해 상기 복수의 프로세스 그룹들을 위해 할당된다. 상기 방법은 사전-구성된 시간 기간 동안 상기 다중-프로세서 디바이스 상에서 실행하는 프로세스 그룹들에 대한 요구된 CPU 리소스들의 양들을 획득하는 단계를 포함한다. 상기 방법은 또한 상기 사전-구성된 시간 기간 동안 상기 다중-프로세서 디바이스의 CPU들에 대한 유휴 CPU 리소스들의 양들을 획득하는 단계를 포함한다. 상기 방법은 상기 프로세스 그룹들에 대한 요구된 CPU 리소스들의 획득된 양들 및 상기 CPU들에 대한 유휴 CPU 리소스들의 획득된 양들에 기초하여 상기 프로세스 그룹들에 CPU들을 할당하는 단계를 추가로 포함한다.
종래 기술들에 비교하여, 본 개시는 사전-구성된 시간 기간 동안, 다중-프로세서 디바이스 상에서 실행하는 각각의 프로세스 그룹에 대한 요구된 CPU 리소스들의 양들, 및 상기 다중-프로세서 디바이스의 각각의 CPU에 대한 유휴 CPU 리소스들의 양을 획득하는 것을 통해 CPU 리소스들을 할당하기 위한 방법, 장치 및 디바이스를 제공한다. 상기 사전-구성된 시간 기간 동안 각각의 프로세스 그룹에 대한 요구된 CPU 리소스들의 획득된 양 및 각각의 CPU에 대한 유휴 CPU 리소스들의 획득된 양에 기초하여, 각각의 프로세스 그룹은 요구된 양의 CPU들을 할당받는다. 본 개시는 각각의 프로세스 그룹에 대한 CPU 리소스들의 할당을 각각의 프로세스 그룹에 의해 요구된 리소스들의 양 및 각각의 CPU의 유휴 리소스들의 양에 기반하기 때문에, 할당된 CPU 리소스들은 다수의 프로세스 그룹들 간에 가능한 균형을 이룬다. 그러므로, CPU들의 각각의 사용률들은 또한 그것 상에서 실행하는 각각의 프로그램의 성능을 보장하도록 균형이 잡혀서, 리소스 사용률의 전체 효율을 증가시키며 전체 시스템 성능을 개선한다.
본 명세서에 통합되며 그것의 일부를 형성하고, 유사한 숫자들이 유사한 요소들을 묘사하는, 수반되는 도면들은, 본 개시의 실시예들을 예시하며, 설명과 함께, 본 개시의 원리들을 설명하도록 작용한다.
도 1a는 본 개시의 실시예들에 따라 CPU 리소스들을 할당하는 방법의 흐름도이다;
도 1b는 본 개시의 실시예들에 따른 도 1a의 단계(S103)의 방법의 흐름도이다;
도 2는 CUP 리소스들을 할당하는 방법의 다중-프로세서 디바이스의 예시이다;
도 3은 본 개시의 실시예들에 따라 사전-구성된 시간 기간 동안 프로세스 그룹에 대한 요구된 CPU 리소스들의 양을 획득하는 흐름도이다;
도 4는 본 개시의 실시예들에 따라 사전-구성된 시간 기간 동안 CPU에 대한 유휴 CPU 리소스들의 양을 획득하는 흐름도이다;
도 5는 본 개시의 실시예들에 따른 도 1b의 단계(S104)의 흐름도이다;
도 6은 본 개시의 실시예들에 따라 CPU 리소스들을 할당하기 위한 장치의 블록도이다;
도 7은 본 개시의 실시예들에 따른 도 6의 장치의 획득 모듈(101)의 블록도이다;
도 8은 본 개시의 실시예들에 따른 도 6의 장치의 할당 모듈(103)의 블록도이다;
도 9는 본 개시의 실시예들에 따른 도 8의 장치의 생성 서브-모듈(1031)의 블록도이다;
도 10은 본 개시의 실시예들에 따라 CPU 리소스들을 할당하기 위한 또 다른 장치의 블록도이다; 그리고
도 11은 본 개시의 실시예들에 따라 CPU 리소스들을 할당하기 위한 전자 디바이스의 블록도이다.
다음의 설명에서, 다수의 특정 세부사항들은 본 개시의 철저한 이해를 제공하기 위해 제시된다. 그러나, 본 개시의 이들 특정 세부사항들 없이 실시될 수 있다는 것이 이 기술분야의 숙련자들에게 명백해질 것이다. 여기에서의 설명들 및 표현들은 이 기술분야의 다른 숙련자들에게 그들 작업의 본질을 가장 효과적으로 전달하기 위해 이 기술분야에서 경험이 있거나 또는 숙련된 자들에 의해 사용된 일반적인 수단들이다. 다른 인스턴스들에서, 잘 알려진 방법들, 절차들, 구성요소들, 및 회로는 본 개시의 양상들을 불필요하게 모호하게 하는 것을 회피하기 위해 상세히 설명되지 않았다.
여기에서 "일 실시예" 또는 "실시예"에 대한 참조는 실시예와 관련되어 설명된 특정한 특징, 구조, 또는 특성이 본 개시의 적어도 하나의 실시예에 포함될 수 있다는 것을 의미한다. 명세서에서의 다양한 곳들에서 구절("일 실시예에서")의 외형들은 반드시 모두가 동일한 실시예를 나타내는 것이 아니며, 다른 실시예들에 대해 상호 배타적인 별개의 또는 대안적인 실시예들도 아니다. 여기에서 사용된, 용어들("상부", "하부", "최상부", "최하부", "중간", "위쪽", 및 "아래쪽")은 설명의 목적들을 위해 상대적 위치들을 제공하도록 의도되며, 절대적인 기준 프레임을 지정하도록 의도되지 않는다. 뿐만 아니라, 본 개시의 하나 이상의 실시예들을 나타내는 프로세스 흐름도들 또는 다이어그램들에서 블록들의 순서는 본질적으로 본 개시에서 임의의 특정한 순서를 나타내는 것도 임의의 제한들을 내포하지도 않는다.
본 개시의 실시예들은 도 1 내지 도 11을 참조하여 여기에서 논의된다. 그러나, 이 기술분야의 숙련자들은 이들 도면들에 관하여 여기에서 주어진 상세한 설명이 본 개시가 이들 제한된 실시예들 너머까지 미침에 따라 설명적 목적들을 위한 것임을 쉽게 이해할 것이다.
본 개시는 사전-구성 시간 기간 동안 프로세스 그룹들에 대한 요구된 CPU 리소스들의 양 및 다중-프로세서 디바이스의 CPU들에 대한 유휴 CPU 리소스들의 양에 기초하여 다중-프로세서 디바이스 상에서 실행하는 프로세스 그룹들에 대한 CPU 리소스들을 할당하는 방법을 제공한다. 각각의 프로세스 그룹에 의한 CPU 리소스들의 요구된 양 외에 각각의 CPU에서 CPU 리소스들의 현재 이용 가능한 양의 사용에 의해, 본 개시는 CPU 리소스들의 동적 할당의 방법을 제공한다.
도 1a를 참조하면, CPU 리소스들을 할당하는 방법의 흐름도가 본 개시의 실시예들에 따라 도시된다. 방법(100)는 단계(S101)에서 시작하며, 여기에서 사전-구성된 시간 기간 동안 다중-프로세서 디바이스 상에서 실행하는 각각의 프로세스 그룹에 대한 요구된 CPU 리소스들의 양 및 사전-구성된 시간 기간 동안 다중-프로세서 디바이스의 각각의 CPU에 대한 유휴 CPU 리소스들의 양이 획득된다.
다중-프로세서 디바이스에 의해 실행된 각각의 프로세스 그룹에 대해, 상기 설명된 방법들에 의해 획득된 요구된 CPU 리소스들의 양 및 다중-프로세서 디바이스의 각각의 CPU에 대한 유휴 CPU 리소스들의 양 양쪽 모두를 갖고, 방법(100)은 각각의 프로세스 그룹에 대한 CPU 리소스들을 할당하기 위해 단계(S103)로 진행한다.
단계(S103)에서, 사전-구성된 시간 기간 동안 각각의 프로세스 그룹에 의한 요구된 CPU 리소스들의 양 및 사전-구성된 시간 기간 동안 각각의 CPU에 대한 유휴 CPU 리소스들의 양에 기초하여, 요구된 CPU 리소스들의 양이 각각의 프로세스 그룹에 할당된다.
본 개시는 CPU 리소스들의 동적 할당을 위해 제공한다. 두 개의 대표적인 구현들이 다음에서 설명된다. 첫 번째로, 전체 CPU 리소스 할당 전략은 프로세스 그룹들 모두에 대해 생성되며, 그 후 균일한 프로비저닝이 전략에 따라 구현된다. 두 번째로, 프로세스 그룹에 대해 할당될 CPU 리소스들이 결정되며, 그 후 프로비저닝 툴들의 사용에 의해, 프로세스 그룹은 그것의 각각 할당된 CPU 리소스들에 피닝된다. 동일한 할당 및 프로비저닝 프로세스는 복수의 프로세스 그룹들의 각각의 프로세스 그룹에 대해 반복된다. 다시 말해서, 프로세스 그룹에 대한 각각의 CPU 리소스 할당은 상기 특정한 프로세스 그룹으로의 할당된 리소스들의 프로비저닝으로 이어진다. 상기 설명된 대표적인 방식들은 구현에서의 사소한 변화들이며, 그 모두는 본 개시의 범위 내에 있다는 것이 이해된다.
도 1b를 참조하면, CPU 리소스 프로비저닝의 상기 설명된 제1 접근법을 구현한 방법(150)이 본 개시의 실시예들에 따라 도시된다. 방법(150)은 단계(S104)에서 시작하며, 여기에서 CPU 리소스 할당 전략이 사전-구성된 시간 기간 동안 각각의 프로세스 그룹에 대한 요구된 CPU 리소스들의 양 및 사전-구성된 시간 기간 동안 각각의 CPU에 대한 유휴 CPU 리소스들의 양에 기초하여 생성된다. 다양한 구현들이 다양한 할당 전략들을 구현하기 위해 이용될 수 있으며, 그 모두는 본 개시의 범위 내에 있다.
상이한 CPU 리소스 할당 전략들은 동적 CPU 리소스 밸런싱에 대한 상이한 효과들을 가진다. CPU 사용의 동적 밸런싱에 대한 CPU 리소스 할당 전략의 효과는 평균-제곱 에러 등과 같은 다양한 표준들을 갖고 평가될 수 있다. 이론상으로, 완벽하게 균형 잡힌 CPU 리소스 할당 전략은 두 개의 조건들을 충족시킨다: 첫 번째로, 각각의 프로세스 그룹에 의한 CPU 리소스들에 대한 실시간 요구들이 충족되며; 두 번째로, 각각의 CPU는 가장 유사한 사용률을 가진다. 최상의 CPU 리소스 할당 전략은 상기 설명된 두 개의 조건들 양쪽 모두를 충족시킨다.
예를 들면 평균-제곱 에러 표준을 취하면, 평균-제곱 에러는 각각의 CPU에 대한 사용률들을 표현하며, 할당 전략의 동적 밸런싱 효과를 나타낸다. 대표적인 공식은
Figure 112017074348109-pct00001
이며, 여기에서 n은 CPU들의 수이고, V i = Ti/T, Ti는 사전-구성된 시간 기간 동안 제i CPU의 실행 시간이고, V i 는 사전 구성된 T 시간 기간 동안 제i CPU의 사용률이고,
Figure 112017074348109-pct00002
, 제n CPU의 평균 사용률이며, mse는 평균-제곱 에러 값이다.
이론상으로, 상기 설명된 공식에 의해 계산된 최소 평균-제곱 에러 값을 가진 CPU 리소스 할당 전략들 모두 중에서 전략 mse min 이 존재하고 있고, mse min 은 두 개의 상기 설명된 조건들을 충족시키는 최고의 해법 전략에 대응한다. 실제로, 효율 관심사에 의해 제한되면, 모든 가능한 CPU 리소스 할당 전략들은 계산되며 분석될 가능성이 없다. 그러므로, 본 개시는 최고 해법 CPU 할당 전략과 비슷한 구현을 위해 제공한다.
도 2를 참조하면, CPU 리소스들을 할당하는 방법에 의해 사용된 다중-프로세서 디바이스의 예시가 도시된다. 다중-프로세서 디바이스(200)는 유사한 프로세싱 용량을 가진 두 개 이상의 프로세서들(204)을 포함한 디바이스를 나타내며, 프로세서들은 서로 데이터를 교환하고, 메모리(202), I/O 디바이스들, 제어기들, 주변 디바이스들 등을 공유한다. 디바이스(200)의 하드웨어 시스템은 프로세스들, 태스크들, 프로그램들, 데이터 구조들 및 다른 계산 구성요소들의 레벨들에서 프로세서들 및 프로그램들의 최상부 상에서 병렬 프로세싱을 실현하는 중심 운영 시스템에 의해 제어된다. 다수의 프로세서들의 사용에 의해, 디바이스(200)는 강화된 신뢰성 및 프로세싱 전력을 달성한다.
다중-프로세서 디바이스(200)는, 이에 제한되지 않지만, 컴퓨터 워크스테이션, PDA(개인용 디지털 보조기), iPad, iPhone, 및 다수의 프로세서들을 가진 스마트폰과 같은 단말기 디바이스, 뿐만 아니라 다수의 프로세서들을 가진 이동 통신 디바이스와 같은 이동 디바이스를 포함한다. 예를 들면, 컴퓨팅 워크스테이션을 취하면, 다중-프로세서 아키텍처는 모든 성능 레벨들의 컴퓨팅 워크스테이션들을 위한 주류 설계가 되어 왔다. 고성능 개인용 컴퓨터는 2 내지 4개의 프로세서들을 가질 수 있고; 보통의 성능 컴퓨팅 워크스테이션은 10개 이상의 프로세서들을 가질 수 있으며; 고성능 컴퓨팅 워크스테이션은 수백, 수천 또는 수만의 프로세서들을 가질 수 있다.
다중-프로세서 디바이스들은 병렬 프로세싱을 위해 설계되며, 그것에 의한 계산 알고리즘은 컴퓨터 시스템이 둘 이상의 프로세서들을 병렬로 실행한다. 이러한 시스템의 프로세서들은 동일한 프로그램으로부터 상이한 프로세스들 또는 태스크들을 실행할 수 있다. 예를 들면, 대규모의 복잡한 문제점들을 해결하는 완료 시간을 단축시키기 위해, 프로그렘은 병렬 프로세싱 시스템에서 실행할 준비가 된다. 다시 말해서, 프로그램은 상이한 프로세서들에 의한 실행을 위해 상이한 태스크들로 분할된다. 준비 후, 프로그램의 태스크들은 실행 동안 그것들 각각의 프로세스들에 대응한다. 다중-프로세서 디바이스는 하나의 프로세스 그룹으로서 관련된 동작들의 프로세스들을 할당하며, 그 결과 상기 설명된 프로그램은 하나의 프로세스 그룹에 대응한다. 병렬 프로세싱의 기술의 사용에 의해, n개의 프로세서들 상에서 실행하는 프로그램의 속도는 유사한 프로세싱 전력의 단일 프로세서상에서 실행하는 것보다 수 배 더 빠를 수 있다.
상기 설명된 다중-프로세서 디바이스에 의해 하나의 프로그램의 상이한 태스크들을 실행하는 것 외에, 디바이스는 또한 병렬로 상이한 프로그램들을 실행할 수 있으며, 프로그램들의 각각은 그 각각의 프로세스 그룹에 대응한다. 그러므로, 다중-프로세서 디바이스는 병렬 프로세스들의 환경에서 동작하며, 그 각각은 다중-프로세서 디바이스의 하드웨어 리소스들을 공유한다.
상기 언급된 프로세스들은 운영 시스템의 기본 구성요소들, 즉 프로그램의 실행, 또는 그것의 프로그램된 순서로 실행하는 동안 프로그램 및 그것의 데이터의 활동들의 모음을 나타낸다. 실행 중인 다수의 프로그램들이 리소스들을 공유하므로, 실행 동안 프로그램들 간에 잠재적인 제약들이 존재하고 있으며, 이것은 프로그램들의 중단된 또는 일시 정지된 실행과 같은 징후들을 야기한다. 이들 징후들은 동적 프로세스인, 프로그램들의 실행 동안 발생한다. 그러나, 종래의 프로그램은 명령들의 모음, 즉 프로그램이 어떻게 메모리에서 실행되는지에 대한 임의의 관념이 없는 정적 세트이다. 다시 말해서, 그것은 그것이 실행될 때, 또는 그것의 실행이 일시 정지될 때, 또는 병렬로 실행되는 다른 프로그램들과의 연관성이 무엇인지에 관하여 프로그램의 코드로부터 결정될 수 없다. 그러므로, 정적 프로그램 코드는 병렬 프로세싱에서 그것의 실행과 연관된 특성들을 반영하지 않는다. 실행 중인 프로그램의 동적 양상들을 설명하기 위해, 프로세스의 개념이 도입된다.
상기 언급된 프로세스 그룹들은 하나 이상의 프로세스들을 포함한 프로세스들의 그룹을 나타낸다. 동작에 관한 프로세스들은 하나의 프로세스 그룹으로서 할당된다. 다중-프로세서 디바이스가 동시에 다양한 프로그램들을 실행할 수 있기 때문에, 프로그램들의 각각은 하나의 프로세스 그룹에 대응한다. 프로그램들 간에 분리를 달성하기 위해, 본 개시는 CPU 리소스들이 프로그램들 간에 분리될 수 있도록 프로세스 그룹들의 단위로 CPU 리소스들을 할당한다.
본 개시는 사전-구성된 시간 기간 동안 각각의 프로세스 그룹에 의한 요구된 CPU 리소스들의 양, 및 사전-구성된 시간 기간 동안 다중-프로세서 디바이스의 각각의 CPU의 유휴 CPU 시간의 양에 기초하여 다중-프로세서 디바이스 상에서 실행하는 프로세스 그룹들의 각각에 대한 CPU 리소스들을 할당하는 방법을 제공한다. 그러므로, 사전-구성된 시간 기간 동안 각각의 프로세스 그룹에 의한 요구된 CPU 리소스들의 양 및 사전-구성된 시간 기간 동안 다중-프로세서 디바이스의 각각의 CPU의 유휴 CPU 시간의 양 모두는 먼저 획득될 필요가 있다.
사전-구성된 시간 기간 동안 프로세스 그룹에 대한 요구된 CPU 리소스들의 양은 사전-구성된 시간 기간 동안 다중-프로세서 디바이스의 각각의 CPU 상에서 프로세스 그룹에 의한 실행 시간의 합계를 나타낸다. 사전-구성된 시간 기간은 CPU 실행 조건들이 모니터링되는 사전-구성된 시간 기간이다. 사전-구성된 시간 기간은 CPU 리소스 할당이 개시되는 시간 간격에 관련된다. 시간 기간이 짧으면, CPU 리소스 할당 시간 간격은 그에 따라 더 짧다. 그렇지 않다면, 사전-구성된 시간 기간이 길수록, CPU 할당 시간 간격은 더 길다. 구현들에서, 시간 기간은 그 상황들 하에서의 요건들에 기초하여 결정될 수 있다.
도 3을 참조하면, 사전-구성된 시간 기간 동안 프로세스 그룹에 대한 요구된 CPU 리소스들의 양을 획득하는 흐름도가 본 개시의 실시예들에 따라 도시된다. 방법(300)은 단계(S1011)에서 시작하며, 여기에서 사전-구성된 시간 기간 동안 각각의 CPU 상에서의 프로세스 그룹의 실행 시간이 획득된다. 사전-구성된 시간 기간 동안 프로세스 그룹에 대한 요구된 CPU 리소스들의 양을 획득하기 위해, 각각의 CPU 상에서 실행 시간의 데이터는 프로세스 그룹에 대해 획득된다. 다중-프로세서 디바이스의 운영 시스템에 의해 제공된 모니터링 툴들을 통해, 사전-구성된 시간 기간 동안 각각의 CPU 상에서 각각의 프로세스 그룹에 의한 실행 시간이 획득될 수 있다. 예를 들어, 리눅스(Linux) 시스템을 취하면, 디폴트로 시스템이 각각의 CPU 상에서의 각각의 프로세스 그룹에 의한 실행 시간을 직접 획득하기 위해 툴을 제공하지 않을지라도, 실행 시간은 커널 패칭 접근법의 사용에 의해 획득될 수 있다.
몇몇 실시예들에서, 각각의 CPU 상에서 프로세스 그룹의 실행 시간은 cgroups 하에서 cpuacct .usage_per_cpu의 사용에 의해 획득될 수 있다. Cgroups는 "제어 그룹들", 즉 프로세스 그룹들의 CPU, 메모리, 디스크 I/O, 네트워크 등과 같은 물리적 리소스들을 제한하고, 감안하며 이를 분리하기 위한 리눅스 커널 특징을 나타낸다. Cgroups는 또한 LCX 시스템들의 필수적인 구성요소인, 리소스 가상화를 위한 LXC(Linux Container)의 리소스 관리 메커니즘이다.
단계(S1011)에서 획득된 사전-구성된 시간 기간 동안 각각의 CPU 상에서의 프로세스 그룹의 실행 시간을 갖고, 단계(S1012)에서, 사전-구성된 시간 기간 동안 각각의 CPU 상에서의 프로세스 그룹의 실행 시간의 합계는 사전-구성된 시간 기간 동안 프로세스 그룹에 의한 요구된 CPU 리소스들의 양으로서 계산된다.
사전-구성된 시간 기간 동안 CPU에 대한 현재 유휴 CPU 리소스들은 사전-구성된 시간 기간 동안 CPU가 유휴 상태인 채로 있는 시간 양을 나타낸다. 도 4를 참조하면, CPU 리소스 할당 방법에 의해 유휴 CPU 리소스들의 양을 획득하는 흐름도가 본 개시의 실시예들에 따라 도시된다. 방법(400)은 단계(S1011')에서 시작하며, 여기에서 사전-구성된 시간 기간 동안 CPU의 실행 시간이 획득된다. 예를 들어, 리눅스 시스템을 취하면, 리눅스 운영 시스템은 디폴트로 기능 모니터링 툴을 제공하며, 그것의 사용에 의해 사전-구성된 시간 기간 동안 각각의 CPU의 실행 시간이 획득될 수 있다. 모니터링 툴들은, 이에 제한되지 않지만, vmstat, ps, top 등과 같은 유틸리티들을 포함한다. vmstat 명령어는 커널 스레드들, 가상 메모리, 디스크, 트랩들, 뿐만 아니라 CPU 활동들에 관한 통계 정보에 대해 보고한다. 명령어(vmstat)의 사용에 의해 생성된 보고들은 시스템 작업 부하들의 균형을 잡기 위해 사용될 수 있다. pstop 명령어들은 시스템 모니터링을 위해 가장 자주 이용된 명령어들 중에 있다 -- ps 명령어는 실행 중인 프로세스들의 리스트, 명령어에 대해 특정된 파라미터에 의해 결정된 나열된 프로세스들의 수를 보고한다. 예를 들면, 명령어("ps-A")는 실행 중인 모든 프로세스들 및 그것들 각각의 프로세스 ID들(PID들)을 보고할 것이며, 이것은 pmap 또는 renice와 같은 다른 명령어들에 대해 특정될 필요가 있는 파라미터들이다.
단계(S1012')에서, 방법(400)은 사전-구성된 시간 기간 동안 CPU 유휴 시간으로서 사전-구성된 시간 기간의 길이 및 CPU의 실행 시간 사이에서의 차이를 계산한다. 몇몇 실시예들에서, 유휴 CPU 리소스들의 양은 공식(T2j = T - T1j)을 갖고 계산되며, T는 사전-구성된 시간 기간이고, T1j는 사전-구성된 T 시간 기간 동안 프로세서(Pj) 실행 시간이며, T2j는 사전-구성된 T 시간 기간 동안 프로세서(Pj) 유휴 시간이다.
도 5를 참조하면, 도 1b의 단계(S104)의 흐름도가 본 개시의 실시예들에 따라 도시된다. 방법(500)은 단계(S10311)에서 시작하며, 여기에서 프로세스 그룹들은 사전-구성된 시간 기간 동안 각각의 프로세스 그룹에 대한 요구된 CPU 리소스들의 획득된 양의 내림차순으로 프로세스 그룹 리스트에 배열된다. 사전-구성된 시간 기간 동안 각각의 CPU에 대한 유휴 CPU 리소스들의 양에 기초하여, CPU들은 또한 유휴 CPU 리소스들의 양의 내림차순으로 CPU 리스트에 배열된다.
본 개시는 다중-프로세스 디바이스 상에서 실행하는 프로세스 그룹들에 대한 동적 CPU 리소스 할당을 제공한다. CPU 리소스들은 사전-구성된 시간 기간 동안 프로세스 그룹에 대한 요구된 CPU 리소스들의 양의 내림차순에 기초하여 각각의 프로세스 그룹에 할당된다. 실제로, CPU 리소스들이 프로세스 그룹에 대해 할당될 때, 프로세스 그룹에 대한 CPU들의 요구된 수는 유휴 CPU 리소스들의 양의 내림차순으로 CPU 리스트로부터 할당된다. 그러므로, 1) 요구된 CPU 리소스들의 양의 내림차순으로의 프로세스 그룹 리스트 및 2) 유휴 CPU 리소스들의 양의 내림차순으로의 CPU 리스트가 먼저 획득된다.
단계(S10311)에서 프로세스 그룹 리스트 및 CPU 리스트를 획득한 후, 방법(500)은 단계(S10312)로 진행하며, 여기에서 프로세스 그룹 리스트에서의 제1 위치에 배열된 프로세스 그룹은 현재의 프로세스 그룹으로서 지정된다. 단계(S10133)에서, 현재 프로세스 그룹에 의한 요구된 CPU 리소스들의 양에 기초하여 및 CPU 리스트에서의 제1 위치에 배열된 CPU로부터 시작하여, CPU들의 요구된 수는 리스트의 내림차순으로 CPU 리스트로부터 선택되며 현재 프로세스 그룹에 할당된다.
구현들에서, CPU 리소스들은 CPU 리스트의 내림차순을 따르는 프로세스 그룹에 할당되며, 즉 보다 많은 양의 유휴 CPU 리소스들을 가진 CPU들이 보다 작은 양의 유휴 CPU 리소스들을 가진 것들 이전에 선택되며 할당된다.
단계(S10314)에서, 각각의 CPU 상에서 현재 프로세스 그룹의 실행 시간에 기초하여, 유휴 CPU 리소스들의 양은 할당된 CPU들을 위해 업데이트된다. CPU들의 요구된 수가 현재 프로세스 그룹에 할당된 후, 할당된 CPU들의 유휴 CPU 시간의 양은 그에 따라 변한다. 그러므로, 각각의 CPU 상에서 현재 프로세스 그룹에 대한 실행 시간에 기초하여 할당된 CPU들에 대한 유휴 CPU 리소스들의 양을 업데이트하는 것이 필요하다. 각각의 CPU 상에서 프로세스 그룹에 대한 실행 시간의 획득은 상기 설명된 단계(S1011)와 대체로 유사하며 세부사항들은 단순성의 목적을 위해 반복되지 않는다.
단계(S10315)에서, CPU 리스트는 유휴 CPU 리소스들의 업데이트된 양의 내림차순으로 재-배열된다. 현재 프로세스 그룹에 대한 CPU 리소스들을 할당한 후, CPU 리소스들은 프로세스 그룹 리스트에서 다음 프로세스 그룹을 위해 할당될 필요가 있다. 가장 많은 양의 이용 가능한 리소스들을 가진 CPU들이 항상 프로세스 그룹 리스트에서 대응하는 프로세스 그룹들에 먼저 할당될 수 있도록 내림차순으로 CPU 리스트를 재-배열하기 위해 단계(S10314)에서 새롭게 할당된 CPU들에 대해 업데이트된 유휴 CPU 리소스들의 양들 및 현재 프로세스 그룹에 할당되지 않은 CPU들에 대해 변경되지 않은 채로 있는 유휴 CPU 리소스들의 양들을 이용하는 것이 필요하다.
단계(S10316)에서, 현재 프로세스 그룹이 프로세스 그룹 리스트에서 마지막 프로세스 그룹인지가 결정된다. 프로세스 그룹 리스트에서 다음 프로세스 그룹을 위해 CPU 리소스들을 할당하기 전에, CPU 리소스들이 현재 할당되는 프로세스 그룹이 프로세스 그룹 리스트에서 마지막의 것인지가 먼저 결정된다. 현재 프로세스 그룹이 리스트에서 마지막의 것이라고 결정되면, 방법(500)은 프로세스 그룹들을 위해 CPU 리소스들을 할당하는 것을 끝내기 위해 단계(S10317)로 진행한다. 그렇지 않다면, 방법(500)은 어떤 프로세스 그룹이 CPU 리소스들을 할당하기 위한 다음인지를 결정하기 위해 단계(S10318)로 진행하며, 결정된 다음 프로세스 그룹을 위해 CPU 리소스들을 할당하기 위해 다시 단계(S10313)를 계속한다.
단계(S10318)에서, 프로세스 그룹 리스트에서 다음 프로세스 그룹은 현재 프로세스 그룹으로서 결정된다. 방법(500)은 다시 단계(S1031)를 계속하며, 여기에서 현재 프로세스 그룹에 의해 요구된 CPU 리소스들의 양에 기초하여 및 CPU 리스트에서의 제1 위치에 배열된 CPU로부터 시작하여, CPU들의 요구된 수는 리스트의 내림차순으로 CPU 리스트로부터 선택되며 현재 프로세스 그룹에 할당된다.
다시 도 1b를 참조하면, CPU 리소스 할당 전략이 생성되는 단계(S10311) 내지 단계(S10318) 후, 방법(150)은 CPU 할당 전략을 배치하기 위해 단계(S105)로 진행한다. 단계(S105)에서, 각각의 프로세스 그룹은 생성된 CPU 리소스 할당 전략에 따라 그것의 각각 할당된 CPU들에 피닝된다. 예를 들어, 리눅스 시스템을 취하면, taskset, cgroups 피처의 cpuset 서브-시스템, nicerenice 등과 같은 명령어들의 사용에 의해, 프로세스 그룹은 하나 이상의 CPU들에 피닝될 수 있다. 명령어(taskset)를 갖고, "taskset -C <cpunr><command>"의 대표적인 명령어가 특정한 프로세스를 실행하기 위해 하나 이상의 CPU들의 지정을 개시하도록 이용될 수 있다. cgroups 피처의 cpuset 서브-시스템을 갖고, "#echo 0, 2, 4, 6 >/cgroup/<process group name>/cpuset.cpus"의 대표적인 명령어가 특정한 프로세스 그룹에 대해 지정된 CPU들의 CPU 번호들을 특정하기 위해 이용될 수 있으며, 즉 프로세스 그룹은 단지 0, 2, 4, 또는 6으로 넘버링된 CPU들 상에서만 실행될 수 있다.
몇몇 실시예들에서, CPU 리소스 할당 전략은 각각의 프로세스 그룹 및 그 각각의 CPU 리소스들 사이에 매핑 관계를 포함한다. 전략에 따르면, 각각의 프로세스 그룹은 CPU 할당 전략의 프로비저닝을 완료하기 위해 그것의 각각 할당된 CPU들에 피닝된다.
몇몇 다른 실시예들에서, CPU 리소스 할당 전략의 프로비저닝은 프로세스 그룹을 위한 리소스 할당이 결정된 즉시 프로비저닝 툴들의 사용에 의해 하나의 프로세스 그룹에 할당된 CPU들을 피닝한다. 그 뒤에, 프로비저닝은 다른 프로세스 그룹에 대해 하나씩 실행된다. 프로비저닝의 두 개의 접근법들 사이에서의 차이는 프로세스 그룹이 그것의 할당된 CPU들에 피닝될 때의 타이밍에 있다; 다른 양상들은 대체로 유사하며 그러므로 세부사항들은 여기에서 반복되지 않는다.
본 개시가 CPU 리소스들의 동적 할당을 제공하도록 하기 위해, 다중-프로세서 디바이스 상에서 각각의 프로세스의 실행의 동적 특성들이 고려될 필요가 있다. 다중-프로세서 디바이스의 실행 조건들의 역학을 고려하기 위한 하나의 방식은 CPU 리소스들을 할당하는 방법을 트리거하는 실행 조건들을 사전-구성하는 것이다. 사전-구성된 실행 조건들이 충족될 때, CPU 리소스들이 할당된다. CPU 리소스 할당을 트리거하기 위한 다양한 실행 조건들이 구성될 수 있다; 4개의 대표적인 조건들이 다음에서 예시된다.
첫 번째로, 실행 조건은 CPU 리소스들의 할당의 현재 및 마지막 시간 사이에서의 시간 경과가 사전-구성된 시간 간격보다 크다는 것일 수 있다. 이러한 실행 조건하에서, CPU 리소스 할당은 다중-프로세서 디바이스가 일반적으로 균형 잡힌 CPU 사용의 상태에 있도록 고정된 시간 간격에서 실행된다. 실제로, 이러한 시간 간격들은 분들의 단위로, 예로서 1 내지 5분 사이에서 구성될 수 있다.
두 번째로, 실행 조건은 각각의 CPU의 최대 CPU 사용이 사전-구성된 임계값을 초과한다는 것일 수 있다. 이러한 실행 조건하에서, 각각의 CPU의 CPU 사용의 최대값이 사전-구성된 임계값을 초과한다고 결정된다면, CPU 할당을 실행하기 위한 조건이 충족된다. 이러한 실행 조건은 고정되지 않은 시간 간격들에서 CPU 리소스 할당을 실행하기 위한 조건을 제공한다. 불필요한 CPU 리소스 밸런싱을 회피하기 위해 및 실행 조건에 대한 특정한 민감도를 보장하기 위해, 사전-구성된 임계값은 적절한 값에서 구성될 필요가 있다.
몇몇 실시예들에서, 사전-구성된 임계값은 많은 양의 실험에 기초하여 결정된다. 사전-구성된 임계값은 CPU가 그것의 전체 작업 부하 용량에 있는지 또는 그것에 가까운지를 나타내며, 그러므로, 그것은 CPU 리소스들을 밸런싱하거나 또는 재-밸런싱하기 위한 시간이다. 하이퍼-스레드 다중프로세서 디바이스에 대해, 임계치는 약 60%에서 구성될 수 있으며; 그렇지 않다면, 임계치는 약 80%에서 구성될 수 있다.
세 번째로, 실행 조건은 각각의 CPU의 CPU 사용률의 최대치가 각각의 CPU의 CPU 사용률의 최소치의 N배를 초과한다는 것일 수 있다. 이러한 실행 조건하에서, 각각의 CPU의 최대 CPU 사용률이 각각의 CPU의 CPU 사용률의 최소치의 N배를 초과한다고 결정된다면, 실행 조건이 충족된다.
네 번째로, 실행 조건은 각각의 CPU의 최대 CPU 사용률이 사전-구성된 임계값을 초과하며, 각각의 CPU의 최대 CPU 사용률이 각각의 CPU의 최소 CPU 사용률의 N배를 초과한다는 것일 수 있다. 이러한 실행 조건하에서, 제2 및 제3 실행 조건들 양쪽 모두가 충족될 때, 제4 조건이 충족되는 것으로 고려된다.
실제로, 상기 설명된 대표적인 실행 조건들 중 하나는 그 상황들하에서 선택될 수 있다. 제1 대표적인 실행 조건은 고정된 시간 간격에서 CPU 리소스 할당의 실행을 트리거하고; 두 번째로, 제3 및 제4 실행 조건들은 다중-프로세서 디바이스의 실행 조건에 따라 고정되지 않은 시간 간격들에서 CPU 리소스 할당의 실행을 트리거한다. 다시 말해서, 불균형의 CPU 사용의 상태가 여전히 존재하고 있다. 그러나, 디바이스에서 검출된 CPU 리소스의 불균형이 없다면, 디바이스 상에서 실행하는 각각의 프로그램에 의한 요구된 CPU 리소스들 모두가 충족되며, 그러므로 프로그램들의 실행 및 동작이 보장되고, CPU 리소스들의 사용의 균형을 이루기 위한 요구가 없다.
몇몇 실시예들에서, 제4 실행 조건하에서, 다수의 프로세스 그룹들에 의해 공유된 CPU는 x의 최대 CPU 사용률, y의 최소 CPU 사용률을 가진다. x가 사전-구성된 임계값을 초과할 때 및 x > n*y일 때, 제4 조건이 CPU 리소스 할당을 실행하기 위해 트리거된다. 예를 들면, 숫자(n)가 2로서 구성될 수 있으며, 즉 최대 CPU 사용률이 최소 CPU 사용률의 값의 두 배 이상일 때, 현재 불균형의 CPU 리소스 할당이 있다.
상기 설명된 실시예들은 CPU 리소스 할당의 방법을 제공하며, 그에 대응하여, 본 개시는 CPU 리소스 할당을 위한 장치를 추가로 제공한다.
도 6을 참조하면, 본 개시의 실시예들에 따라 CPU 리소스들을 할당하기 위한 장치의 블록도가 도시된다. 장치(600)는 상기 설명된 방법에 대체로 유사하며 세부사항들은 단순성을 위해 여기에서 반복되지 않는다.
장치(600)는 획득 모듈(101) 및 할당 모듈(103)을 포함한다. 획득 모듈(101)은 사전-구성된 시간 기간 동안 다중-프로세서 디바이스 상에서 실행하는 각각의 프로세스 그룹에 대한 요구된 CPU 리소스들의 양 및 사전-구성된 시간 기간 동안 다중-프로세서 디바이스의 각각의 CPU에 대한 유휴 CPU 리소스들의 양을 획득하도록 구성된다. 할당 모듈(103)은 프로세스 그룹에 대한 요구된 CPU 리소스들의 획득된 양 및 CPU들에 대한 유휴 CPU 리소스들의 획득된 양에 기초하여 각각의 프로세스 그룹에 CPU들을 할당하도록 구성된다.
도 7을 참조하면, 도 6의 장치(600)의 획득 모듈(101)의 블록도가 본 개시의 실시예들에 따라 도시된다. 획득 모듈(101)은 제1 획득 서브-모듈(1011) 및 제2 획득 서브-모듈(1012)을 포함할 수 있다. 제1 획득 서브-모듈(1011)은 모니터링 서브-모듈(10111) 및 계산 서브-모듈(10112)을 포함한다. 모니터링 서브-모듈(10111)은 사전-구성된 시간 기간 동안 각각의 CPU 상에서의 각각의 프로세스 그룹의 실행 시간을 획득하도록 구성된다. 계산 서브-모듈(10112)은 사전-구성된 시간 기간 동안 다중-프로세서 디바이스의 각각의 CPU 상에서 각각의 프로세스 그룹의 실행 시간의 합계를 계산하도록 및 사전-구성된 시간 기간 동안 각각의 프로세스 그룹에 대한 요구된 CPU 리소스들의 양으로서 상기 합계를 지정하도록 구성된다. 제2 획득 서브-모듈(1012)은 사전-구성된 시간 기간 동안 다중-프로세서 디바이스의 각각의 CPU에 대한 유휴 CPU 리소스들의 양을 획득하도록 구성된다. 제2 획득 서브-모듈(1012)은 모니터링 서브-모듈(10121) 및 계산 서브-모듈(10122)을 포함한다. 모니터링 서브-모듈(10121)은 사전-구성된 시간 기간 동안 다중-프로세서 디바이스의 각각의 CPU의 실행 시간을 획득하도록 구성된다. 계산 서브-모듈(10122)은 사전-구성된 시간 기간의 길이 및 각각의 CPU의 획득된 실행 시간 사이에서의 차이를 계산하도록 및 사전-구성된 시간 기간 동안 각각의 CPU에 대한 유휴 CPU 리소스들의 양으로서 상기 차이를 지정하도록 구성된다.
도 8을 참조하면, 장치(600)의 할당 모듈(103)의 블록도가 본 개시의 실시예들에 따라 도시된다. 할당 모듈(103)은 생성 서브-모듈(1031) 및 배치 서브-모듈(1032)을 포함한다. 생성 서브-모듈(1031)은 각각의 프로세스 그룹에 대한 요구된 CPU 리소스들의 획득된 양 및 각각의 CPU에 대한 유휴 CPU 리소스들의 획득된 양에 기초하여 CPU 리소스들을 할당하기 위한 전략을 생성하도록 구성된다. 배치 서브-모듈(1032)은 각각 할당된 CPU들에 각각의 프로세스 그룹을 피닝함으로써 전략에서 할당된 CPU 리소스들을 배치하도록 구성된다.
도 9를 참조하면, 도 8의 생성 서브-모듈(1031)의 블록도가 본 개시의 실시예들에 따라 도시된다. 생성 서브-모듈(1031)은 초기 순서화 서브-모듈(10311), 제1 위치 결정 서브-모듈(10312), 할당 서브-모듈(10313), 업데이팅 서브-모듈(10314), 재-순서화 서브-모듈(10315), 결정 서브-모듈(10316), 종결 서브-모듈(10317) 및 제2 위치 결정 서브-모듈(10318)을 포함한다.
초기 순서화 서브-모듈(10311)은 프로세스 그룹들의 제1 리스트를 획득하도록 구성되며, 여기에서 프로세스 그룹들은 사전-구성된 시간 기간 동안 각각의 프로세스 그룹의 요구된 CPU 리소스들의 양의 제1 내림차순으로 배열된다. 초기 순서화 서브-모듈(10311)은 또한 CPU들의 제2 리스트를 획득하도록 구성되며, 여기에서 CPU들은 사전-구성된 시간 기간 동안 각각의 CPU의 유휴 CPU 리소스들의 양의 제2 내림차순으로 배열된다.
제1 위치 결정 서브-모듈(10312)은 현재 프로세스 그룹으로서 제1 리스트의 제1 위치에서 프로세스 그룹을 지정하도록 구성된다. 할당 서브-모듈(10313)은 현재 프로세스 그룹의 요구된 CPU 리소스들의 양에 기초하여, 제2 리스트로부터, 제1 내림차순으로 요구된 CPU들의 양을 선택하도록 구성된다. 업데이팅 서브-모듈(10314)은 각각의 CPU 상에서 현재 프로세스 그룹의 실행 시간에 기초하여 할당된 CPU들에 대한 유휴 CPU 리소스들의 양들을 업데이트하도록 구성된다. 재순서화 서브-모듈(10315)은 CPU들의 제2 리스트를 업데이트하도록 구성되며, 여기에서 CPU들은 유휴 CPU 리소스들의 업데이트된 양들의 제2 내림차순으로 배열된다. 결정 서브-모듈(10316)은 현재 프로세스 그룹이 제1 리스트의 마지막 프로세스 그룹인지를 결정하도록 구성된다. 종결 서브-모듈(10317)은 현재 프로세스 그룹이 제1 리스트의 마지막 프로세스 그룹이라는 결정에 응답하여, CPU 리소스들의 할당을 종료하도록 구성된다. 제2 위치 결정 서브-모듈(10318)은 현재 프로세스 그룹이 제1 리스트의 마지막 프로세스 그룹이 아니라는 결정에 응답하여, 제1 위치에서 제1 리스트 다음으로 랭킹된 위치를 지정하며 현재 프로세스 그룹으로서 제1 리스트의 제1 위치에서 프로세스 그룹을 지정하는 것에서 시작하여, 다음 프로세스 그룹에 대한 CPU 리소스들을 할당하도록 하기 위해 제1 위치결정 서브-모듈(10312)의 실행을 개시하도록 구성된다.
도 10을 참조하면, CPU 리소스들을 할당하기 위한 또 다른 장치의 블록도가 본 개시의 실시예들에 따라 도시된다. 장치(1000)는 획득 모듈(101) 및 할당 모듈(103) 외에 트리거링 모듈(201)을 포함한다. 트리거링 모듈(201)은 사전-구성된 조건이 충족될 때 장치(1000)에 의한 CPU 리소스들의 할당을 실행하도록 구성된다.
도 11을 참조하면, CPU 리소스들을 할당하기 위한 전자 디바이스의 블록도가 본 개시의 실시예들에 따라 도시된다. 디바이스(1100)는 메모리(301) 및 복수의 프로세서들(302)을 포함한다. 복수의 프로세스 그룹들은 프로세서들(302) 상에서 실행한다. CPU 리소스들은 사전-구성된 시간 기간 동안 디바이스(1100) 상에서 실행하는 각각의 프로세스 그룹에 대한 요구된 CPU 리소스들의 양을 획득함으로써 복수의 프로세서들(302) 상에서 실행하는 프로세스 그룹들의 각각에 할당된다. 할당은 또한 사전-구성된 시간 기간 동안 디바이스(1100)의 각각의 CPU에 대한 유휴 CPU 리소스들의 양을 획득하는 것을 포함한다. 할당은 사전-구성된 시간 기간 동안 프로세스 그룹에 대한 요구된 CPU 리소스들의 획득된 양 및 각각의 CPU에 대한 유휴 CPU 리소스들의 획득된 양에 기초하여 각각의 프로세서 그룹에 CPU 리소스들을 할당하는 것을 추가로 포함한다.
본 개시의 실시예들은 소프트웨어, 하드웨어, 펌웨어, 및/또는 그것의 조합들을 사용하여 구현될 수 있다. 소프트웨어, 하드웨어, 펌웨어 또는 그것의 조합을 사용하여 구현되는지에 관계없이, 지시 코드는 임의의 종류의 컴퓨터 판독 가능한 미디어(예를 들면, 영구적 또는 수정 가능한, 휘발성 또는 비-휘발성, 고체 또는 비-고체, 고정 또는 변경 가능한 매체 등)에 저장될 수 있다. 유사하게, 이러한 매체는 예를 들면, 프로그램 가능한 어레이 로직(PAL), 랜덤 액세스 메모리(RAM), 프로그램 가능한 판독 전용 메모리(PROM), 판독 전용 메모리(ROM), 전기적으로 소거 가능한 프로그램 가능 ROM(EEPROM), 자기 저장 장치, 광학 저장 장치, 디지털 다목적 디스크(DVD) 등을 사용하여 구현될 수 있다.
본 개시들의 실시예들에 의해 설명된 모듈들 또는 블록들은 논리 모듈들 또는 논리 블록들이라는 것을 언급하는 것이 필요하다. 물리적으로, 논리 모듈 또는 논리 블록은 물리 모듈 또는 물리 블록, 물리 모듈 또는 물리 블록의 부분, 또는 하나 이상의 물리 모듈들 또는 물리 블록들의 조합들일 수 있다. 이들 논리 모듈 또는 논리 블록들의 물리적 구현이 절대적으로 필요하지는 않다. 모듈들, 블록들 및 그것의 조합들에 의해 실현된 실현 기능들은 본 개시에 의해 다뤄진 문제점들을 해결하는데 핵심적이다. 뿐만 아니라, 본 개시의 신규성들을 개시하기 위해, 상기 설명된 실시예들은 본 개시에 의해 다뤄진 문제점들을 해결하는 것에 너무 관련되지 않은 이들 모듈들 또는 블록들에 대해 개시하지 않으며, 이것은 상기 설명된 실시예들이 다른 모듈들 또는 블록들을 포함할 수 없음을 의미하지 않는다.
본 개시의 청구항들 및 명세서에서, 제1 및 제2와 같은 용어들은 단지 실시예 또는 동작을 또 다른 실시예 또는 동작으로부터 구별하기 위한 것임을 언급하는 것이 또한 필요하다. 그것은 이들 실시예들 또는 동작들이 임의의 이러한 실제 관계 또는 순서를 갖는다는 것을 요구하거나 또는 내포하지 않는다. 뿐만 아니라, 여기에서 사용된 바와 같이, 용어들("포함하는", "포함시키는" 또는 임의의 다른 변형)은 비-배타적 포함을 커버하도록 의도되며, 따라서 요소들의 리스트를 포함하는 프로세스, 방법, 물품, 또는 장치는 이들 요소들을 포함할 뿐만 아니라 분명하게 나열되지 않거나 또는 이러한 프로세스, 방법, 물품, 또는 장치에 고유한 다른 요소들을 포함할 수 있다. 추가 제한 없이, 구절("포함하는")에 의해 나열된 요소들은 다른 동일한 요소들을 포함하는 것으로부터 이러한 요소들을 포함하는 프로세스, 방법, 물품, 또는 장치를 배제하지 않는다.
앞서 말한 개시는 특정 블록도들, 흐름도들, 및 예들을 사용하여 다양한 실시예들을 제시하지만, 여기에서 설명되고 및/또는 예시된 각각의 블록도 구성요소, 흐름도 단계, 동작, 및/또는 구성요소는 광범위한 하드웨어, 소프트웨어, 또는 펌웨어(또는 그것의 임의의 조합) 구성들을 사용하여, 개별적으로 및/또는 총괄하여 구현될 수 있다. 또한, 다른 구성요소들에 포함된 구성요소들에 대한 임의의 개시는 많은 다른 아키텍처들이 동일한 기능을 달성하기 위해 구현될 수 있기 때문에 예들로서 고려되어야 한다.
여기에서 설명되고 및/또는 예시된 단계들의 시퀀스 및 프로세스 파라미터들은 단지 예로서 제공되며 원하는 대로 변경될 수 있다. 예를 들면, 여기에서 예시되고 및/또는 설명된 단계들이 특정한 순서로 도시되거나 또는 논의될 수 있지만, 이들 단계들은 반드시 예시되거나 또는 논의된 순서에서 수행될 필요는 없다. 여기에서 설명되고 및/또는 예시된 다양한 예시적인 방법들은 또한 여기에서 설명되거나 또는 예시된 단계들 중 하나 이상을 생략할 수 있거나 또는 개시된 것들 외에 부가적인 단계들을 포함할 수 있다.
다양한 실시예들이 전체적으로 기능적 컴퓨팅 시스템들의 맥락으로 여기에서 설명되고 및/또는 예시되었지만, 이들 예시적인 실시예들 중 하나 이상은, 실제로 분배를 실행하기 위해 사용된 컴퓨터-판독 가능한 매체의 특정한 유형에 관계없이, 다양한 형태들에서 프로그램 제품으로서 분포될 수 있다. 여기에서 개시된 실시예들은 또한 특정한 태스크들을 수행하는 소프트웨어 모듈들을 사용하여 구현될 수 있다. 이들 소프트웨어 모듈들은 컴퓨터-판독 가능한 저장 미디어 상에 또는 컴퓨팅 시스템에 저장될 수 있는 스크립트, 배치, 또는 다른 실행 가능한 파일들을 포함할 수 있다. 이들 소프트웨어 모듈들은 여기에서 개시된 예시적인 실시예들 중 하나 이상을 수행하도록 컴퓨팅 시스템을 구성할 수 있다. 여기에서 개시된 소프트웨어 모듈들 중 하나 이상은 클라우드 컴퓨팅 환경에서 구현될 수 있다. 클라우드 컴퓨팅 환경들은 인터넷을 통해 다양한 서비스들 및 애플리케이션들을 제공할 수 있다. 이들 클라우드-기반 서비스들(예로서, 서비스로서의 소프트웨어, 서비스로서의 플랫폼, 서비스로서의 기반시설 등)은 웹 브라우저 또는 다른 원격 인터페이스를 통해 액세스 가능할 수 있다. 여기에서 설명된 다양한 기능들은 원격 데스크탑 환경 또는 임의의 다른 클라우드-기반 컴퓨팅 환경을 통해 제공될 수 있다.
본 개시 및 그것의 이점들이 상세히 설명되었지만, 다양한 변화들, 치환들, 및 변경들이 첨부된 청구항들에 의해 정의된 바와 같이 본 개시의 사상 및 범위로부터 벗어나지 않고 여기에서 이루어질 수 있다는 것이 이해되어야 한다. 많은 수정들 및 변화들이 상기 교시들을 고려하여 가능하다. 실시예들은, 그에 의해 이 기술분야에서의 다른 숙련자들이 고려된 특정한 용도에 적합할 수 있는 바와 같이 다양한 수정들을 갖고 본 개시 및 다양한 실시예들을 가장 잘 이용할 수 있게 하기 위해, 본 개시의 원리들 및 그것의 실질적인 응용들을 가장 잘 설명하도록, 선택되고 설명되었다.
게다가, 본 출원의 범위는 명세서에서 설명된 프로세스, 기계, 제품, 물질의 구성들, 수단들, 방법들 및 단계들의 특정한 실시예들에 제한되도록 의도되지 않는다. 이 기술분야에서 통상의 기술을 가진 자가 본 개시의 개시로부터 쉽게 이해할 바와 같이, 여기에서 설명된 대응하는 실시예들과 실질적으로 동일한 기능을 수행하거나 또는 그것과 대체로 동일한 결과를 달성하는, 현재 존재하거나 또는 나중에 개발될, 프로세스들, 기계들, 제품, 물질의 구성들, 수단들, 방법들, 또는 단계들은 본 개시에 따라 이용될 수 있다. 따라서, 첨부된 청구항들은 이러한 프로세스들, 기계들, 제품, 물질의 구성들, 수단들, 방법들, 또는 단계들을 그것들의 범위 내에 포함하도록 의도된다.
본 개시에 따른 실시예들이 그에 따라 설명된다. 본 개시는 특정한 실시예들에서 설명되었지만, 본 개시는 이러한 실시예들에 의해 제한되는 것으로 해석되지 않아야 하며, 오히려 이하의 청구항들에 따라 해석되어야 한다는 것이 이해되어야 한다.

Claims (21)

  1. 다중-프로세서 디바이스에 포함된 프로세서들을 할당하는 방법에 있어서,
    복수의 CPU에서 프로세스 그룹이 실행되도록 상기 복수의 CPU에서 복수의 프로세스 그룹을 실행하는 단계;
    상기 프로세스 그룹에 대해 프로세스 그룹 실행 시간이 결정되도록 상기 복수의 프로세스 그룹에 대한 복수의 프로세스 그룹 실행 시간을 결정하는 단계 - 상기 프로세스 그룹의 상기 프로세스 그룹 실행 시간은 측정 시간 동안 상기 프로세스 그룹이 상기 복수의 CPU에서 실행된 시간을 표시함 -;
    CPU에 대해 유휴 시간이 결정되도록 상기 복수의 CPU에 대한 복수의 유휴 시간을 결정하는 단계 - 상기 CPU의 유휴 시간은 상기 측정 시간 동안 상기 CPU가 유휴 상태였던 시간을 표시함 -; 및
    상기 복수의 CPU의 상기 복수의 유휴 시간 중 가장 큰 유휴 시간을 갖는 CPU는 어느 것이든 상기 복수의 프로세스 그룹의 상기 복수의 프로세스 그룹 실행 시간 중 가장 큰 프로세스 그룹 실행 시간을 갖는 프로세스 그룹 중 아무 것에나 할당하는 단계
    를 포함하는 방법.
  2. 청구항 1에 있어서,
    상기 프로세스 그룹의 상기 프로세스 그룹 실행 시간은 상기 복수의 CPU의 복수의 로컬 실행 시간의 합인 방법.
  3. 청구항 1에 있어서,
    상기 복수의 프로세스 그룹 실행 시간을 결정하는 단계는:
    상기 CPU에 대해 로컬 실행 시간이 획득되도록 상기 복수의 CPU에 대한 복수의 로컬 실행 시간을 획득하는 단계 - 상기 CPU의 상기 로컬 실행 시간은 상기 측정 시간 동안 상기 프로세스 그룹이 상기 CPU에서 실행된 시간을 표시함 -; 및
    상기 프로세스 그룹의 상기 프로세스 그룹 실행 시간을 생성하기 위해 상기 복수의 로컬 실행 시간을 합산하는 단계
    를 포함하는 방법.
  4. 청구항 3에 있어서,
    상기 복수의 로컬 실행 시간을 획득하는 단계는 상기 CPU들의 실행 시간을 획득하기 위해 cgroups 하에서 cpuacct.usage_per_cpu로부터 값을 판독하는 단계를 포함하는 방법.
  5. 청구항 3에 있어서,
    상기 CPU의 유휴 시간은 상기 측정 시간에서 상기 CPU의 로컬 실행 시간을 뺀 것인 방법.
  6. 청구항 5에 있어서,
    상기 복수의 프로세스 그룹 실행 시간을 결정하는 단계는 실행 시간의 내림차순으로 상기 복수의 프로세스 그룹 실행 시간의 실행 리스트를 생성하는 단계를 더 포함하는 방법.
  7. 청구항 6에 있어서,
    상기 복수의 유휴 시간을 결정하는 단계는 유휴 시간의 내림차순으로 상기 복수의 유휴 시간의 유휴 리스트를 생성하는 단계를 포함하는 방법.
  8. 청구항 5에 있어서,
    상기 복수의 프로세스 그룹 실행 시간을 결정하는 단계는 실행 시간의 내림차순으로 상기 복수의 프로세스 그룹 실행 시간의 실행 리스트를 생성하는 단계를 더 포함하고,
    상기 복수의 유휴 시간을 결정하는 단계는 유휴 시간의 내림차순으로 상기 복수의 유휴 시간의 유휴 리스트를 생성하는 단계를 포함하고,
    상기 CPU는 어느 것이든 할당하는 단계는 상기 유휴 리스트의 상단에 있는 CPU를 상기 실행 리스트의 상단에 있는 프로세스 그룹에 할당하는 단계를 포함하는 방법.
  9. 다중-프로세서 디바이스에 CPU 리소스를 할당하는 방법으로서,
    상기 방법은:
    사전-구성된 시간 기간 동안 상기 다중-프로세서 디바이스에서 실행되는 프로세스 그룹들에 대한 요구된 CPU 리소스들의 양을 획득하는 단계;
    상기 사전-구성된 시간 기간 동안 상기 다중-프로세서 디바이스의 CPU에 대한 유휴 CPU 리소스들의 양을 획득하는 단계;
    상기 획득된 프로세스 그룹들에 대한 요구된 CPU 리소스들의 양 및 상기 획득된 CPU들에 대한 유휴 CPU 리소스들의 양에 기초하여 지정된 CPU들을 형성하기 위해 CPU들을 상기 프로세스 그룹들에 할당하는 단계를 포함하고,
    상기 획득된 프로세스 그룹들에 대한 요구된 CPU 리소스들의 양 및 상기 획득된 CPU들에 대한 유휴 CPU 리소스들의 양에 기초하여 상기 CPU들을 상기 프로세스 그룹들에 할당하는 단계는:
    a) 프로세스 그룹들의 제1 리스트를 획득하는 단계 - 상기 프로세스 그룹들은 사전-구성된 시간 기간 동안 요구된 CPU 리소스들의 양들의 제1 내림차순으로 배열됨 -;
    b) CPU들의 제2 리스트를 획득하는 단계 - 상기 CPU들은 상기 사전-구성된 시간 기간 동안 상기 CPU들의 유휴 CPU 리소스들의 양들의 제2 내림차순으로 배열됨 -;
    c) 상기 제1 리스트의 제1 위치에서의 프로세스 그룹을 지정하는 단계;
    d) 상기 제1 위치에서의 상기 프로세스 그룹의 요구된 CPU 리소스들의 양에 기초하여, 상기 제2 내림차순의 상기 제2 리스트로부터 CPU들을 선택하는 단계;
    e) 상기 제2 리스트로부터 선택된 상기 CPU들을 상기 제1 위치에서의 상기 프로세스 그룹에 할당하는 단계;
    f) 할당된 상기 CPU들 상에서의 상기 제1 위치에서의 상기 프로세스 그룹의 실행 시간에 기초하여 할당된 상기 CPU들에 대한 상기 유휴 CPU 리소스들의 양들을 업데이트하는 단계;
    g) CPU들의 상기 제2 리스트를 업데이트하는 단계 - 상기 CPU들은 유휴 CPU 리소스들의 업데이트된 양들의 상기 제2 내림차순으로 배열됨 -;
    h) 상기 제1 위치에서의 상기 프로세스 그룹이 상기 제1 리스트의 마지막 프로세스 그룹인지를 결정하는 단계;
    i) 상기 제1 위치에서의 상기 프로세스 그룹이 상기 제1 리스트의 상기 마지막 프로세스 그룹이라는 결정에 응답하여, 상기 CPU 리소스들의 할당을 종료하는 단계;
    j) 상기 제1 위치에서의 상기 프로세스 그룹이 상기 제1 리스트의 상기 마지막 프로세스 그룹이 아니라는 결정에 응답하여, 상기 제1 리스트에서 다음의 위치를 상기 제1 위치로서 지정하며 단계 c)로부터 계속되는 단계; 및
    상기 프로세스 그룹들을 상기 프로세스 그룹들에 할당되었던 상기 지정된 CPU들에 피닝함으로써 생성된 전략을 배치하는 단계
    를 포함하는 방법.
  10. 청구항 1에 있어서,
    상기 프로세스 그룹에 대해 프로세스 그룹 실행 시간이 재-결정되도록 실행 조건이 충족된 경우 상기 복수의 프로세스 그룹에 대한 복수의 프로세스 그룹 실행 시간을 재-결정하는 단계;
    상기 CPU에 대해 유휴 시간이 재-결정되도록 상기 실행 조건이 충족된 경우 상기 복수의 CPU에 대한 복수의 유휴 시간을 재-결정하는 단계; 및
    재-결정된 가장 큰 유휴 시간을 갖는 CPU는 어느 것이든 재-결정된 가장 큰 프로세스 그룹 실행 시간을 갖는 프로세스 그룹 중 아무 것에나 재-할당하는 단계
    를 더 포함하는 방법.
  11. 청구항 10에 있어서,
    사전-구성된 시간이 만료하였을 때 상기 실행 조건이 충족되는 방법.
  12. 청구항 10에 있어서,
    CPU가 최대 CPU 사용율을 초과한 경우 상기 실행 조건이 충족되는 방법.
  13. 청구항 10에 있어서,
    상기 실행 조건은 CPU 사용률이 최소 CPU 사용률의 N배를 초과할 때 충족되며, N은 정수인 방법.
  14. 청구항 10에 있어서,
    상기 실행 조건은 CPU가 최대 CPU 사용율을 초과할 때, 그리고 CPU 사용율이 최소 CPU 사용률의 N배를 초과할 때 충족되며, N은 정수인 방법.
  15. 기록 매체 상에 저장되며 프로세서에 의해 실행될 때 다중-프로세서 디바이스에 포함된 프로세서들을 할당하기 위한 방법을 수행하는 지시들을 포함하는 컴퓨터 프로그램으로서, 상기 방법은:
    복수의 CPU에서 프로세스 그룹이 실행되도록 상기 복수의 CPU에서 복수의 프로세스 그룹을 실행하는 단계;
    상기 프로세스 그룹에 대해 프로세스 그룹 실행 시간이 결정되도록 상기 복수의 프로세스 그룹에 대한 복수의 프로세스 그룹 실행 시간을 결정하는 단계 - 상기 프로세스 그룹의 상기 프로세스 그룹 실행 시간은 측정 시간 동안 상기 프로세스 그룹이 상기 복수의 CPU에서 실행된 시간을 표시함 -;
    CPU에 대해 유휴 시간이 결정되도록 상기 복수의 CPU에 대한 복수의 유휴 시간을 결정하는 단계 - 상기 CPU의 유휴 시간은 상기 측정 시간 동안 상기 CPU가 유휴 상태였던 시간을 표시함 -; 및
    상기 복수의 CPU의 상기 복수의 유휴 시간 중 가장 큰 유휴 시간을 갖는 CPU는 어느 것이든 상기 복수의 프로세스 그룹의 상기 복수의 프로세스 그룹 실행 시간 중 가장 큰 프로세스 그룹 실행 시간을 갖는 프로세스 그룹 중 아무 것에나 할당하는 단계를 포함하는, 컴퓨터 프로그램.
  16. 청구항 15에 있어서,
    상기 복수의 프로세스 그룹 실행 시간을 결정하는 단계는:
    상기 CPU에 대해 로컬 실행 시간이 획득되도록 상기 복수의 CPU에 대한 복수의 로컬 실행 시간을 획득하는 단계 - 상기 CPU의 상기 로컬 실행 시간은 상기 측정 시간 동안 상기 프로세스 그룹이 상기 CPU에서 실행된 시간을 표시함 -; 및
    상기 프로세스 그룹의 상기 프로세스 그룹 실행 시간을 생성하기 위해 상기 복수의 로컬 실행 시간을 합산하는 단계를 포함하는, 컴퓨터 프로그램.
  17. 청구항 16에 있어서,
    상기 CPU의 유휴 시간은 상기 측정 시간에서 상기 CPU의 로컬 실행 시간을 뺀 것인, 컴퓨터 프로그램.
  18. 청구항 15에 있어서,
    상기 복수의 프로세스 그룹 실행 시간을 결정하는 단계는 실행 시간의 내림차순으로 상기 복수의 프로세스 그룹 실행 시간의 실행 리스트를 생성하는 단계를 포함하고,
    상기 복수의 유휴 시간을 결정하는 단계는 유휴 시간의 내림차 순으로 상기 복수의 유휴 시간의 유휴 리스트를 생성하는 단계를 포함하고,
    상기 CPU는 어느 것이든 할당하는 단계는 상기 유휴 리스트의 상단에 있는 CPU를 상기 실행 리스트의 상단에 있는 프로세스 그룹에 할당하는 단계를 포함하는, 컴퓨터 프로그램.
  19. CPU 리소스들을 할당하기 위한 다중-프로세서 디바이스에 있어서,
    프로세서; 및
    상기 프로세서에 동작 가능하게 결합된 기록 매체에 저장된 컴퓨터 프로그램
    을 포함하고, 상기 컴퓨터 프로그램은 상기 프로세서에 의해 액세스될 때 실행될, 기록 매체에 저장된 컴퓨터-판독 가능한 지시들을 포함하고, 상기 지시들은:
    사전-구성된 시간 기간 동안 상기 다중-프로세서 디바이스 상에서 실행하는 프로세스 그룹들에 대한 요구된 CPU 리소스들의 양들을 획득하도록 그리고 상기 사전-구성된 시간 기간 동안 상기 다중-프로세서 디바이스의 CPU들에 대한 유휴 CPU 리소스들의 양들을 획득하도록 구성된 획득 모듈; 및
    상기 프로세스 그룹들에 대한 상기 요구된 CPU 리소스들의 획득된 양들 및 상기 CPU들에 대한 상기 유휴 CPU 리소스들의 획득된 양들에 기초하여 지정된 CPU들을 형성하기 위해 상기 프로세스 그룹들에 CPU들을 할당하도록 구성된 할당 모듈
    을 포함하고, 상기 할당 모듈은:
    상기 프로세스 그룹들에 대한 상기 요구된 CPU 리소스들의 획득된 양들 및 상기 CPU들에 대한 상기 유휴 CPU 리소스들의 획득된 양들에 기초하여 CPU 리소스들을 할당하기 위한 전략을 생성하도록 구성된 생성 서브-모듈을 포함하고, 상기 생성 서브-모듈은:
    프로세스 그룹들의 제1 리스트를 획득하도록 그리고 CPU들의 제2 리스트를 획득하도록 구성된 초기 순서화 서브-모듈 - 상기 프로세스 그룹들은 상기 사전-구성된 시간 기간 동안 상기 요구된 CPU 리소스들의 양들의 제1 내림차순으로 배열되며, 상기 CPU들은 상기 사전-구성된 시간 기간 동안 상기 CPU들의 상기 유휴 CPU 리소스들의 양들의 제2 내림차순으로 배열됨 -;
    상기 제1 리스트의 제1 위치에서의 프로세스 그룹을 지정하도록 구성된 제1 위치 결정 서브-모듈;
    상기 프로세스 그룹의 요구된 CPU 리소스들의 양에 기초하여, 상기 제2 내림차순의 상기 제2 리스트로부터 CPU들을 선택하도록 그리고 상기 프로세스 그룹에 상기 제2 리스트로부터 선택된 상기 CPU들을 할당하도록 구성된 할당 서브-모듈;
    할당된 상기 CPU들 상에서 상기 프로세스 그룹의 실행 시간에 기초하여 할당된 상기 CPU들에 대한 상기 유휴 CPU 리소스들의 양들을 업데이트하도록 구성된 업데이팅 서브-모듈;
    CPU들의 상기 제2 리스트를 업데이트하도록 구성된 재-순서화 서브-모듈 - 상기 CPU들은 유휴 CPU 리소스들의 업데이트된 양들의 제2 내림차순으로 배열됨 -;
    상기 제1 위치에서의 프로세스 그룹이 상기 제1 리스트의 마지막 프로세스 그룹인지를 결정하도록 구성된 결정 서브-모듈;
    상기 제1 위치에서의 프로세스 그룹이 상기 제1 리스트의 상기 마지막 프로세스 그룹이라는 결정에 응답하여, 상기 CPU 리소스들을 할당하는 것을 종료하도록 구성된 종결 서브-모듈;
    상기 제1 위치에서의 프로세스 그룹이 상기 제1 리스트의 상기 마지막 프로세스 그룹이 아니라는 결정에 응답하여, 상기 제1 리스트에서 다음의 위치를 상기 제1 위치로서 지정하며 상기 할당 서브-모듈을 실행하도록 구성된 제2 위치 결정 서브-모듈; 및
    상기 프로세스 그룹에 할당된 상기 지정된 CPU들에 상기 프로세스 그룹을 피닝함으로써 상기 생성된 전략을 배치하도록 구성된 배치 서브 모듈을 포함하는, CPU 리소스들을 할당하기 위한 다중-프로세서 디바이스.
  20. 청구항 15에 있어서,
    상기 방법은:
    상기 프로세스 그룹에 대해 프로세스 그룹 실행 시간이 재-결정되도록 실행 조건이 충족된 경우 상기 복수의 프로세스 그룹에 대한 복수의 프로세스 그룹 실행 시간을 재-결정하는 단계;
    상기 CPU에 대해 유휴 시간이 재-결정되도록 상기 실행 조건이 충족된 경우 상기 복수의 CPU에 대한 복수의 유휴 시간을 재-결정하는 단계; 및
    재-결정된 가장 큰 유휴 시간을 갖는 CPU는 어느 것이든 재-결정된 가장 큰 프로세스 그룹 실행 시간을 갖는 프로세스 그룹 중 아무 것에나 재-할당하는 단계
    를 더 포함하는 컴퓨터 프로그램.
  21. 전자 디바이스에 있어서,
    메모리; 및
    상기 메모리에 결합된 복수의 CPU - 상기 복수의 CPU는 프로세스 그룹이 상기 복수의 CPU에 의해 실행되도록 복수의 프로세스 그룹을 실행하고, 상기 복수의 프로세스 그룹에 상기 복수의 CPU를 할당하는 방법은:
    상기 프로세스 그룹에 대해 프로세스 그룹 실행 시간이 결정되도록 상기 복수의 프로세스 그룹에 대한 복수의 프로세스 그룹 실행 시간을 결정하는 단계 - 상기 프로세스 그룹의 상기 프로세스 그룹 실행 시간은 측정 시간 동안 상기 프로세스 그룹이 상기 복수의 CPU에서 실행된 시간을 표시함 -;
    CPU에 대해 유휴 시간이 결정되도록 상기 복수의 CPU에 대한 복수의 유휴 시간을 결정하는 단계 - 상기 CPU의 유휴 시간은 상기 측정 시간 동안 상기 CPU가 유휴 상태였던 시간을 표시함 -; 및
    상기 복수의 CPU의 상기 복수의 유휴 시간 중 가장 큰 유휴 시간을 갖는 CPU는 어느 것이든 상기 복수의 프로세스 그룹의 상기 복수의 프로세스 그룹 실행 시간 중 가장 큰 프로세스 그룹 실행 시간을 갖는 프로세스 그룹 중 아무 것에나 할당하는 단계를 포함하는, 전자 디바이스.
KR1020177021601A 2015-02-03 2016-02-03 Cpu 리소스들을 할당하기 위한 장치, 디바이스 및 방법 KR102514478B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201510055803.1 2015-02-03
CN201510055803.1A CN105988872B (zh) 2015-02-03 2015-02-03 一种cpu资源分配的方法、装置及电子设备
PCT/US2016/016457 WO2016126880A1 (en) 2015-02-03 2016-02-03 Apparatus, device and method for allocating cpu resources

Publications (2)

Publication Number Publication Date
KR20170110615A KR20170110615A (ko) 2017-10-11
KR102514478B1 true KR102514478B1 (ko) 2023-03-24

Family

ID=56554319

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177021601A KR102514478B1 (ko) 2015-02-03 2016-02-03 Cpu 리소스들을 할당하기 위한 장치, 디바이스 및 방법

Country Status (7)

Country Link
US (1) US10089150B2 (ko)
EP (1) EP3254192A4 (ko)
JP (1) JP6725521B2 (ko)
KR (1) KR102514478B1 (ko)
CN (1) CN105988872B (ko)
TW (1) TW201629759A (ko)
WO (1) WO2016126880A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106775975B (zh) * 2016-12-08 2020-02-14 青岛海信移动通信技术股份有限公司 进程调度方法及装置
CN107038073B (zh) 2016-12-23 2021-05-11 创新先进技术有限公司 资源处理方法及装置
US11531552B2 (en) 2017-02-06 2022-12-20 Microsoft Technology Licensing, Llc Executing multiple programs simultaneously on a processor core
CN107436838A (zh) * 2017-07-12 2017-12-05 北京潘达互娱科技有限公司 一种内核数据统计方法与装置
CN107479976A (zh) * 2017-08-14 2017-12-15 郑州云海信息技术有限公司 一种多程序实例同时运行下cpu资源分配方法及装置
CN110069338B (zh) * 2018-01-24 2024-03-19 中兴通讯股份有限公司 资源控制方法、装置及设备、计算机可读存储介质
US11042398B2 (en) 2018-07-09 2021-06-22 Samsung Electronics Co., Ltd. System and method for guest operating system using containers
CN113407317A (zh) * 2018-09-11 2021-09-17 华为技术有限公司 一种资源调度方法及装置
CN110928649A (zh) * 2018-09-19 2020-03-27 北京国双科技有限公司 资源调度的方法和装置
CN111240824B (zh) * 2018-11-29 2023-05-02 中兴通讯股份有限公司 一种cpu资源调度方法及电子设备
CN110032407B (zh) 2019-03-08 2020-12-22 创新先进技术有限公司 提升cpu并行性能的方法及装置和电子设备
CN109936627A (zh) * 2019-02-21 2019-06-25 山东浪潮云信息技术有限公司 一种基于hadoop的自动数据均衡方法及工具
CN112114958A (zh) * 2019-06-21 2020-12-22 上海哔哩哔哩科技有限公司 资源隔离方法、分布式平台、计算机设备和存储介质
CN111031140A (zh) * 2019-12-20 2020-04-17 支付宝(杭州)信息技术有限公司 资源结算方法及装置、电子设备、存储介质
CN111708633A (zh) * 2020-05-28 2020-09-25 北京赛博云睿智能科技有限公司 一种资源动态调整方法及系统
CN112039963B (zh) * 2020-08-21 2023-04-07 广州虎牙科技有限公司 一种处理器的绑定方法、装置、计算机设备和存储介质
CN113485730A (zh) * 2021-06-28 2021-10-08 北京金茂绿建科技有限公司 升级方法以及计算机可读存储介质
CN113825240B (zh) * 2021-09-15 2024-04-05 杭州阿里云飞天信息技术有限公司 资源分配方法及基站设备
CN114706671B (zh) * 2022-05-17 2022-08-12 中诚华隆计算机技术有限公司 一种多处理器调度优化方法与系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030163512A1 (en) 2002-02-28 2003-08-28 Fujitsu Limited Parallel-process execution method and multiprocessor-type computer
JP2009253982A (ja) 2008-04-03 2009-10-29 Sharp Corp 多機能プリンタの内部タスクスケジューリングポリシーの変更方法
US20130151879A1 (en) 2009-12-16 2013-06-13 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
WO2014109019A1 (ja) 2013-01-09 2014-07-17 三菱電機株式会社 プラントエンジニアリングシステム

Family Cites Families (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4354227A (en) 1979-11-19 1982-10-12 International Business Machines Corp. Fixed resource allocation method and apparatus for multiprocessor systems having complementarily phased cycles
US4847755A (en) 1985-10-31 1989-07-11 Mcc Development, Ltd. Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies
US5325525A (en) 1991-04-04 1994-06-28 Hewlett-Packard Company Method of automatically controlling the allocation of resources of a parallel processor computer system by calculating a minimum execution time of a task and scheduling subtasks against resources to execute the task in the minimum time
US5787453A (en) 1995-10-24 1998-07-28 Peoplesoft, Inc. Interactive formula processing system for SQL data base
JP3188862B2 (ja) * 1997-12-24 2001-07-16 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 消費電力解析方法及び装置
US6360263B1 (en) 1998-02-25 2002-03-19 International Business Machines Corporation Dynamic resource allocation for user management in multi-processor time shared computer systems
US6389331B1 (en) * 1999-03-11 2002-05-14 Johnson Controls Technology Company Technique for monitoring performance of a facility management system
US6460122B1 (en) 1999-03-31 2002-10-01 International Business Machine Corporation System, apparatus and method for multi-level cache in a multi-processor/multi-controller environment
US6957432B2 (en) 2000-03-21 2005-10-18 Microsoft Corporation Real-time scheduler
US6920516B2 (en) 2000-08-31 2005-07-19 Hewlett-Packard Development Company, L.P. Anti-starvation interrupt protocol
US6915516B1 (en) * 2000-09-29 2005-07-05 Emc Corporation Apparatus and method for process dispatching between individual processors of a multi-processor system
US7403952B2 (en) 2000-12-28 2008-07-22 International Business Machines Corporation Numa system resource descriptors including performance characteristics
US7036123B2 (en) 2001-04-25 2006-04-25 Sun Microsystems, Inc. System using fair-share scheduling technique to schedule processes within each processor set based on the number of shares assigned to each process group
US7594229B2 (en) 2001-10-09 2009-09-22 Nvidia Corp. Predictive resource allocation in computing systems
US7152124B1 (en) 2002-02-11 2006-12-19 Extreme Networks Method and system for maintaining temporal consistency of resources and data in a multiple-processor packet switch
US7194385B2 (en) * 2002-11-12 2007-03-20 Arm Limited Performance level setting of a data processing system
US7007183B2 (en) 2002-12-09 2006-02-28 International Business Machines Corporation Power conservation by turning off power supply to unallocated resources in partitioned data processing systems
US8776050B2 (en) 2003-08-20 2014-07-08 Oracle International Corporation Distributed virtual machine monitor for managing multiple virtual resources across multiple physical nodes
US8230426B2 (en) 2004-10-06 2012-07-24 Digipede Technologies, Llc Multicore distributed processing system using selection of available workunits based on the comparison of concurrency attributes with the parallel processing characteristics
CN101142559B (zh) 2005-03-16 2011-10-19 英国电讯有限公司 对计算机控制的处理进行监视的方法与系统
WO2006100752A1 (ja) * 2005-03-22 2006-09-28 Fujitsu Limited 分散処理管理装置、分散処理管理方法、分散処理管理プログラム
US7904912B2 (en) * 2005-08-30 2011-03-08 International Business Machines Corporation Adaptive processor utilization reporting handling different processor frequencies
US20070177195A1 (en) 2005-10-31 2007-08-02 Treber Rebert Queue processor for document servers
JP2007156976A (ja) * 2005-12-07 2007-06-21 Hitachi Kokusai Electric Inc 情報処理システム
JP4977375B2 (ja) 2006-02-15 2012-07-18 Necエナジーデバイス株式会社 リチウムイオン電池およびそれを用いた組電池
JP4523921B2 (ja) * 2006-02-24 2010-08-11 三菱電機株式会社 計算機リソース動的制御装置
US8261277B2 (en) 2006-04-10 2012-09-04 General Electric Company System and method for dynamic allocation of resources in a computing grid
JP5110315B2 (ja) 2006-05-24 2012-12-26 日本電気株式会社 仮想マシン管理装置、仮想マシン管理方法およびプログラム
US8838940B2 (en) * 2006-06-07 2014-09-16 Azul Systems, Inc. CPU utilization metering on systems that include multiple hardware threads per core
JP4370313B2 (ja) * 2006-07-10 2009-11-25 三菱電機株式会社 制御装置、制御装置のプロセス制御方法およびプロセス制御プログラム
US7941805B2 (en) * 2006-08-15 2011-05-10 International Business Machines Corporation Affinity dispatching load balancer with precise CPU consumption data
US8667500B1 (en) 2006-10-17 2014-03-04 Vmware, Inc. Use of dynamic entitlement and adaptive threshold for cluster process balancing
US8656405B2 (en) * 2007-06-25 2014-02-18 International Business Machines Corporation Pulling heavy tasks and pushing light tasks across multiple processor units of differing capacity
US8326970B2 (en) 2007-11-05 2012-12-04 Hewlett-Packard Development Company, L.P. System and method for modeling a session-based system with a transaction-based analytic model
US8645965B2 (en) 2007-12-31 2014-02-04 Intel Corporation Supporting metered clients with manycore through time-limited partitioning
US8175863B1 (en) 2008-02-13 2012-05-08 Quest Software, Inc. Systems and methods for analyzing performance of virtual environments
KR20090108868A (ko) 2008-04-14 2009-10-19 삼성전자주식회사 가상 머신 관리 시스템 및 그의 프로세서 자원 관리방법
US7987075B2 (en) * 2008-06-30 2011-07-26 Hitachi, Ltd Apparatus and method to develop multi-core microcomputer-based systems
US8127160B2 (en) * 2008-10-13 2012-02-28 International Business Machines Corporation Dynamic frequency and voltage scaling for a computer processor
KR101543326B1 (ko) * 2009-01-05 2015-08-10 삼성전자주식회사 시스템 온 칩 및 그 구동 방법
JP5377093B2 (ja) * 2009-06-08 2013-12-25 三菱電機株式会社 計算機システム、計算機リソース制御方法および計算機リソース制御プログラム
US8276142B2 (en) * 2009-10-09 2012-09-25 Intel Corporation Hardware support for thread scheduling on multi-core processors
US8914469B2 (en) 2009-12-11 2014-12-16 International Business Machines Corporation Negotiating agreements within a cloud computing environment
US9104411B2 (en) * 2009-12-16 2015-08-11 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
JP5465105B2 (ja) * 2010-06-21 2014-04-09 三菱電機株式会社 計算機システム及びコンピュータプログラム及びパイプライン処理方法
JP5572527B2 (ja) 2010-11-09 2014-08-13 パナソニック株式会社 通信処理装置及び通信処理方法
US9804893B2 (en) 2011-04-08 2017-10-31 Qualcomm Incorporated Method and apparatus for optimized execution using resource utilization maps
US8683466B2 (en) 2011-05-24 2014-03-25 Vmware, Inc. System and method for generating a virtual desktop
US9086883B2 (en) * 2011-06-10 2015-07-21 Qualcomm Incorporated System and apparatus for consolidated dynamic frequency/voltage control
CN102958166B (zh) * 2011-08-29 2017-07-21 华为技术有限公司 一种资源分配方法及资源管理平台
US8881164B2 (en) 2011-10-18 2014-11-04 Hewlett-Packard Development Company, L.P. Computer process with utilization reduction
WO2013132767A1 (ja) * 2012-03-09 2013-09-12 パナソニック株式会社 プロセッサ、マルチプロセッサシステム、コンパイラ、ソフトウェアシステム、メモリ制御システムおよびコンピュータシステム
KR101834195B1 (ko) * 2012-03-15 2018-04-13 삼성전자주식회사 다중코어 시스템 및 로드 밸런싱 방법
CN103164283B (zh) * 2012-05-10 2018-08-10 上海兆民云计算科技有限公司 一种虚拟桌面系统中虚拟化资源动态调度管理方法及系统
US9298469B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Management of multiple nested transactions
CN102866921B (zh) * 2012-08-29 2016-05-11 惠州Tcl移动通信有限公司 一种多核cpu的调控方法及系统
US9116703B2 (en) * 2012-10-15 2015-08-25 Advanced Micro Devices, Inc. Semi-static power and performance optimization of data centers
US9052932B2 (en) 2012-12-17 2015-06-09 International Business Machines Corporation Hybrid virtual machine configuration management
US9195506B2 (en) 2012-12-21 2015-11-24 International Business Machines Corporation Processor provisioning by a middleware processing system for a plurality of logical processor partitions
US9785460B2 (en) * 2013-05-03 2017-10-10 Vmware, Inc. Dynamic virtual machine sizing
US9342374B2 (en) * 2013-06-28 2016-05-17 Dell Products, L.P. Method of scheduling threads for execution on multiple processors within an information handling system
KR102090306B1 (ko) * 2013-06-28 2020-03-17 삼성전자주식회사 멀티 코어 시스템에서 태스크를 분배하기 위한 방법 및 그 전자 장치
US10217183B2 (en) 2013-12-20 2019-02-26 Nvidia Corporation System, method, and computer program product for simultaneous execution of compute and graphics workloads
US9836423B2 (en) 2014-07-25 2017-12-05 Netapp, Inc. Adaptive circuit board assembly and flexible PCI express bus

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030163512A1 (en) 2002-02-28 2003-08-28 Fujitsu Limited Parallel-process execution method and multiprocessor-type computer
JP2009253982A (ja) 2008-04-03 2009-10-29 Sharp Corp 多機能プリンタの内部タスクスケジューリングポリシーの変更方法
US20130151879A1 (en) 2009-12-16 2013-06-13 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
WO2014109019A1 (ja) 2013-01-09 2014-07-17 三菱電機株式会社 プラントエンジニアリングシステム

Also Published As

Publication number Publication date
EP3254192A1 (en) 2017-12-13
WO2016126880A1 (en) 2016-08-11
US20160224387A1 (en) 2016-08-04
EP3254192A4 (en) 2018-11-07
CN105988872B (zh) 2020-02-18
TW201629759A (zh) 2016-08-16
JP2018511850A (ja) 2018-04-26
US10089150B2 (en) 2018-10-02
JP6725521B2 (ja) 2020-07-22
KR20170110615A (ko) 2017-10-11
CN105988872A (zh) 2016-10-05

Similar Documents

Publication Publication Date Title
KR102514478B1 (ko) Cpu 리소스들을 할당하기 위한 장치, 디바이스 및 방법
CN110249310B (zh) 云计算系统中的用于虚拟机的资源管理
Pietri et al. Mapping virtual machines onto physical machines in cloud computing: A survey
CN110249311B (zh) 云计算系统中针对虚拟机的资源管理
Chen et al. RIAL: Resource intensity aware load balancing in clouds
Villegas et al. An analysis of provisioning and allocation policies for infrastructure-as-a-service clouds
US11113782B2 (en) Dynamic kernel slicing for VGPU sharing in serverless computing systems
US20150309828A1 (en) Hypervisor manager for virtual machine management
WO2019099281A1 (en) Predictive rightsizing for virtual machines in cloud computing systems
US20160080482A1 (en) Productive spend metric based resource management for a portfolio of distributed computing systems
US11681544B2 (en) Interference-aware scheduling service for virtual GPU enabled systems
US9690608B2 (en) Method and system for managing hosts that run virtual machines within a cluster
CN106133693A (zh) 虚拟机的迁移方法、装置及设备
CN104750538B (zh) 用于为目标应用提供虚拟存储池的方法和系统
US20220138001A1 (en) Measuring host utilization in a datacenter
Nakazawa et al. Taming performance degradation of containers in the case of extreme memory overcommitment
Antoniou Performance evaluation of cloud infrastructure using complex workloads
Lloyd et al. Dynamic scaling for service oriented applications: implications of virtual machine placement on IaaS clouds
WO2016118164A1 (en) Scheduler-assigned processor resource groups
Trihinas et al. Managing and monitoring elastic cloud applications
Jena et al. Performance evaluation of load balancing algorithms on cloud data centers
Singh et al. Performance management via MPC for Web services in cloud
Munoz-Escoı et al. A survey on elasticity management in the PaaS service model
Nema et al. A new efficient Virtual Machine load balancing Algorithm for a cloud computing environment
Carreno et al. Multi-phased task placement of HPC applications in the Cloud

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