KR102438621B1 - 공유 컴퓨팅 자원들에 대한 동적 용량 최적화 - Google Patents

공유 컴퓨팅 자원들에 대한 동적 용량 최적화 Download PDF

Info

Publication number
KR102438621B1
KR102438621B1 KR1020217033248A KR20217033248A KR102438621B1 KR 102438621 B1 KR102438621 B1 KR 102438621B1 KR 1020217033248 A KR1020217033248 A KR 1020217033248A KR 20217033248 A KR20217033248 A KR 20217033248A KR 102438621 B1 KR102438621 B1 KR 102438621B1
Authority
KR
South Korea
Prior art keywords
capacity
online
computing resource
amount
resource
Prior art date
Application number
KR1020217033248A
Other languages
English (en)
Other versions
KR20210127822A (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 KR20210127822A publication Critical patent/KR20210127822A/ko
Application granted granted Critical
Publication of KR102438621B1 publication Critical patent/KR102438621B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5014Reservation
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/504Resource capping

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

온라인 엔티티들의 세트에 의해 공유되는 컴퓨팅 자원을 관리하기 위한 시스템들, 방법들, 디바이스들 및 다른 기술들이 개시된다. 시스템은 제1 온라인 엔티티로부터 컴퓨팅 자원의 용량을 예약하기 위한 요청을 수신할 수 있다. 시스템은 제1 온라인 엔티티의 상대적인 우선순위를 결정하고 제1 온라인 엔티티의 상대적인 우선순위에 대응하는 예약 구간을 식별한다. 시스템은 (i) 컴퓨팅 자원의 요청된 용량의 양과 (ii) 제1 온라인 엔티티의 상대적인 우선순위 또는 그 아래의 상대적인 우선순위들을 갖는 온라인 엔티티들이 예약하도록 허용되는 예약 구간에 의해 지정되는 컴퓨팅 자원의 미사용 용량의 부분의 양을 비교하는 것에 기초하여 요청을 충족시킬지를 결정한다.

Description

공유 컴퓨팅 자원들에 대한 동적 용량 최적화{DYNAMIC CAPACITY OPTIMIZATION FOR SHARED COMPUTING RESOURCES}
클라우드 컴퓨팅 플랫폼들은 온라인 엔티티들에게 공유 컴퓨팅 자원들에 대한 액세스를 제공한다. 클라우드 플랫폼은 공유 컴퓨팅 자원들 및 서비스들을 고객들(때때로 클라우드 플랫폼의 "테넌트(tenant)들"로서 지칭됨)에게 또는 온라인 엔티티들에게 더 일반적으로, 종종 인터넷을 통해 제공하는 컴퓨터들의 집합을 포함할 수 있다. 예를 들어, 클라우드 플랫폼은 엔티티들이 그들 자신의 정교한 정보 기술(IT) 기반구조들을 유지할 필요 없이 엔티티들이 스케일에 따라 온라인 애플리케이션들을 개발하고 실행할 수 있게 하는 네트워크, 저장소, 하드웨어 및 다른 컴퓨팅 자원들의 풀(pool)들을 제공할 수 있다.
일부 경우들에서, 클라우드 플랫폼들은 공유 자원들의 용량을 개별 온라인 엔티티들에 할당하도록 구성된다. 예를 들어, 조직은 클라우드 플랫폼 상에서 애플리케이션을 실행하도록 요청할 수 있고, 플랫폼은 애플리케이션을 플랫폼 상에서 게스트 프로그램으로서 실행할 수 있는 가상 기계를 인스턴스화하기에 충분한 용량을 할당할 수 있다. 큰 클라우드 플랫폼들은 많은 테넌트들 사이에서 공유될 수 있는 엄청난 양의 자원들을 가질 수 있지만, 실제로 자원들의 용량은 유한하다. 테넌트들은 때때로, 그들이 얼마나 많은 용량을 소비할 수 있는지를 제한하는 할당량들을 할당받는다. 할당량들은 그들이 예를 들어 정책에 의해 또는 클라우드 제공자와 테넌트들 사이의 협약들에 의해 고정된다는 점에서 정적일 수 있다. 그러나, 그러한 할당량들을 적용하는 것은 클라우드 플랫폼에서 시스템 용량들의 전체적인 사용에서의 비효율성을 유발할 수 있거나 클라우드 플랫폼의 용량을 초과하는 수요를 유발할 수 있다. 예를 들어, 조직(또는 둘 이상의 조직)은 조직이 추가적인 자원들을 요구하는 특정 시간에 클라우드 플랫폼이 초과 용량을 갖더라도 조직의 할당량을 초과하는 자원들에 대해서는 거부될 수 있다. 다른 상황에서, 조직(또는 둘 이상의 조직)은 특정 시간에 자신의 할당량 내에서 자원들을 사용하기를 원할 수 있지만, 클라우드 플랫폼이 그의 최대 용량에 이미 도달했을 때에는 그러한 자원들을 제공받을 수 없다.
본 명세서는 클라우드 컴퓨팅 플랫폼의 테넌트들에게 제공되는 자원들과 같은 공유 컴퓨팅 자원들의 용량의 할당을 관리하기 위한 시스템들, 방법들, 디바이스들 및 다른 기술들을 설명한다. 테넌트들에게 정적인 사용 할당량들을 발행하기보다, 본 명세서에서 설명되는 기술들은 그 대신에 테넌트들이 공유 자원의 용량을 테넌트의 상대적인 우선순위에 대응하는 양까지 예약할 수 있는 구간(zone)들을 동적으로 결정한다. ('예약 구간'으로 또한 지칭되는) 공유 자원의 '구간'은 주어진 우선순위 계층 내의 또는 그 아래의 테넌트들 또는 다른 엔티티들에 이용 가능한 공유 자원의 미사용 용량의 양을 지칭한다. 따라서, 더 높은 우선순위의 테넌트들은 더 낮은 우선순위의 테넌트들보다 더 많은 용량을 예약할 수 있지만, 구간들의 경계들/크기들은 사용 예측들, 예상 용량 가용성 및 다른 기준들에 기초하여 동적으로 업데이트되어, 자원이 테넌트들의 범위에 걸쳐 효율적이고 더 충분히 이용되게 할 수 있다.
본 명세서에서 설명되는 주제의 일부 구현들은 컴퓨팅 시스템을 포함한다. 시스템은 메모리 및 적어도 하나의 데이터 처리 장치를 갖는 하나 이상의 컴퓨터들을 포함할 수 있고, 적어도 하나의 데이터 처리 장치는 온라인 엔티티들의 세트 사이에서 공유되는 컴퓨팅 자원 ― 컴퓨팅 자원은 온라인 엔티티들의 세트의 활동들을 실행하기 위한 유한 용량을 가짐 ―; 우선순위화 기준들에 기초하여 온라인 엔티티들의 세트의 상대적인 우선순위들을 결정하는 온라인 엔티티 관리자; 온라인 엔티티들의 세트에 대한 예약 구간들의 세트를 결정하는 최적화 엔진 ― 각각의 예약 구간은 예약 구간에 대한 대응하는 임계 우선순위 또는 그 아래의 상대적인 우선순위들을 갖는 온라인 엔티티들이 예약하도록 허용되는 컴퓨팅 자원의 미사용 용량의 일부를 지정함 ―; 및 요청된 용량의 양이 온라인 엔티티에 대한 대응하는 예약 구간에 의해 지정되는 컴퓨팅 자원의 미사용 용량의 일부의 양보다 적은지에 기초하여 온라인 엔티티로부터의 요청에 응답하여 온라인 엔티티에 대한 컴퓨팅 자원의 용량을 예약할지를 결정하는 것을 포함하여, 온라인 엔티티들의 세트에 대한 컴퓨팅 자원의 유한 용량의 할당을 관리하는 자원 관리자를 구현하도록 구성된다.
이들 및 다른 구현들은 다음의 특징들 중 하나 이상을 선택적으로 포함할 수 있다.
온라인 엔티티들의 세트 사이에서 공유되는 컴퓨팅 자원은 클라우드 기반 플랫폼에서의 공유 네트워크 자원, 공유 서버 자원, 공유 저장 자원, 공유 애플리케이션 자원 또는 공유 서비스 자원 중 적어도 하나를 포함할 수 있다.
온라인 엔티티 관리자는 온라인 엔티티들의 세트의 각각에 우선순위 스코어를 할당하고 ― 우선순위 스코어는 온라인 엔티티의 중요성의 척도를 나타냄 ―, 그리고 우선순위 스코어들에 기초하여 온라인 엔티티들의 세트를 온라인 엔티티들의 다수의 그룹들로 분류함으로써 온라인 엔티티들의 세트의 상대적인 우선순위들을 결정할 수 있고, 온라인 엔티티들의 각각의 그룹은 온라인 엔티티들의 그룹의 중요성의 척도를 나타내는 상대적인 우선순위에 기인한다. 온라인 엔티티들의 세트의 상대적인 우선순위들은 온라인 엔티티들의 세트가 할당되었던 온라인 엔티티들의 개개의 그룹들의 상대적인 우선순위들에 대응할 수 있다.
최적화 엔진은 온라인 엔티티들의 그룹들에 대한 개개의 예약 구간들을 결정할 수 있고, 가장 낮은 상대적인 우선순위에 기인하는 그룹 이외의 온라인 엔티티들의 각각의 특정 그룹에 대한 개개의 예약 구간은 특정 그룹이 예약하도록 허용되는 컴퓨팅 자원의 미사용 용량의 일부를 (i) 특정 그룹보다 낮은 상대적인 우선순위를 갖는 그룹들이 예약하도록 허용되는 컴퓨팅 자원의 미사용 용량의 전부 및 (ii) 컴퓨팅 자원의 미사용 용량의 추가적인 부분을 포함하는 것으로서 지정한다.
온라인 엔티티 관리자는 우선순위화 기준들에 기초하여 온라인 엔티티들의 세트 각각에 할당되는 우선순위 스코어를 결정할 수 있고, 우선순위화 기준들은 온라인 엔티티의 계정의 상태, 온라인 엔티티에 의한 컴퓨팅 자원 또는 다른 공유 컴퓨팅 자원들의 사용의 이력적(historic) 빈도, 온라인 엔티티에 의한 컴퓨팅 자원 또는 다른 공유 컴퓨팅 자원들의 사용의 예측 빈도, 온라인 엔티티에 의한 컴퓨팅 자원 또는 다른 공유 컴퓨팅 자원들의 사용의 이력 레벨, 온라인 엔티티에 의한 컴퓨팅 자원 또는 다른 공유 컴퓨팅 자원들의 사용의 예측 레벨 또는 컴퓨팅 자원 또는 다른 공유 컴퓨팅 자원들 상에서 온라인 엔티티에 의해 개시된 활동들의 타입들 중 적어도 하나를 포함할 수 있다.
최적화 엔진은 (i) 온라인 엔티티들의 세트 내의 온라인 엔티티들에 의한 컴퓨팅 자원의 사용의 예측 레벨들 및 (ii) 온라인 엔티티들의 상대적인 우선순위들에 기초하여 예약 구간들의 세트 내의 예약 구간들 사이의 경계들을 정의하는 구간 한계들을 결정하도록 추가로 구성될 수 있다.
자원 관리자는 요청된 용량의 양이 온라인 엔티티에 대한 대응하는 예약 구간에 의해 지정되는 컴퓨팅 자원의 미사용 용량의 일부의 양보다 적다고 결정하는 것에 응답하여, 의도적 지연 없이 온라인 엔티티에 의한 사용을 위해 컴퓨팅 자원의 용량을 할당하거나, 장래의 시간에 온라인 엔티티에 의한 사용을 위해 할당될 컴퓨팅 자원의 용량에 대한 사전 예약을 수행하도록 구성될 수 있다.
본 명세서에서 설명되는 주제의 일부 구현들은 제1 컴퓨터 구현 방법을 포함한다. 방법은 온라인 엔티티들의 세트에 의해 공유되는 컴퓨팅 자원을 관리하는 컴퓨팅 시스템에 의해, 컴퓨팅 자원의 용량을 예약하기 위한 온라인 엔티티들의 세트 중 제1 온라인 엔티티로부터의 요청을 수신하는 단계; 온라인 엔티티들의 세트 중 다른 온라인 엔티티들에 대한 제1 온라인 엔티티의 상대적인 우선순위를 결정하는 단계를 포함할 수 있다. 제1 온라인 엔티티의 상대적인 우선순위에 대응하는 예약 구간이 식별될 수 있고, 예약 구간은 제1 온라인 엔티티의 상대적인 우선순위 또는 그 아래의 상대적인 우선순위들을 갖는 온라인 엔티티들이 예약하도록 허용되는 컴퓨팅 자원의 미사용 용량의 일부를 지정한다. 시스템은 (i) 컴퓨팅 자원의 요청된 용량의 양과 (ii) 제1 온라인 엔티티의 상대적인 우선순위 또는 그 아래의 상대적인 우선순위들을 갖는 온라인 엔티티들이 예약하도록 허용되는 예약 구간에 의해 지정된 컴퓨팅 자원의 미사용 용량의 일부의 양을 비교하는 것에 기초하여 요청을 충족시킬지를 결정한다. 컴퓨팅 자원의 요청된 용량의 양이 제1 온라인 엔티티의 상대적인 우선순위 또는 그 아래의 상대적인 우선순위들을 갖는 온라인 엔티티들이 예약하도록 허용되는 예약 구간에 의해 지정된 컴퓨팅 자원의 미사용 용량의 일부의 양보다 적다고 결정하는 것에 응답하여, 시스템은 요청을 충족시키기 위해 제1 온라인 엔티티에 대한 컴퓨팅 자원의 용량을 예약할 수 있다.
이들 및 다른 구현들은 다음의 특징들 중 하나 이상을 선택적으로 포함할 수 있다.
온라인 엔티티들의 세트에 의해 공유되는 컴퓨팅 자원은 클라우드 기반 플랫폼에서의 공유 네트워크 자원, 공유 서버 자원, 공유 저장 자원, 공유 애플리케이션 자원 또는 공유 서비스 자원 중 적어도 하나를 포함할 수 있다.
시스템은 온라인 엔티티들의 세트 각각에 우선순위 스코어를 할당하는 동작 ― 우선순위 스코어는 온라인 엔티티의 중요성의 척도를 나타냄 ―; 및 우선순위 스코어들에 기초하여 온라인 엔티티들의 세트를 온라인 엔티티들의 다수의 그룹들로 분류하는 동작을 추가로 수행할 수 있고, 온라인 엔티티들의 각각의 그룹은 온라인 엔티티들의 그룹의 중요성의 척도를 나타내는 상대적인 우선순위에 기인한다. 온라인 엔티티들의 세트 중 다른 온라인 엔티티들에 대한 제1 온라인 엔티티의 상대적인 우선순위를 결정하는 것은 제1 온라인 엔티티가 속하는 온라인 엔티티들의 그룹의 상대적인 우선순위를 식별하는 것을 포함할 수 있다.
온라인 엔티티들의 세트 각각에 대한 우선순위 스코어는 온라인 엔티티의 계정의 상태, 온라인 엔티티에 의한 컴퓨팅 자원 또는 다른 공유 컴퓨팅 자원들의 사용의 이력적 빈도, 온라인 엔티티에 의한 컴퓨팅 자원 또는 다른 공유 컴퓨팅 자원들의 사용의 예측 빈도, 온라인 엔티티에 의한 컴퓨팅 자원 또는 다른 공유 컴퓨팅 자원들의 사용의 이력 레벨, 온라인 엔티티에 의한 컴퓨팅 자원 또는 다른 공유 컴퓨팅 자원들의 사용의 예측 레벨 또는 컴퓨팅 자원 또는 다른 공유 컴퓨팅 자원들 상에서 온라인 엔티티에 의해 개시된 활동들의 타입들 중 적어도 하나에 기초하여 결정될 수 있다.
제1 온라인 엔티티의 상대적인 우선순위 또는 그 아래의 상대적인 우선순위들을 갖는 온라인 엔티티들이 예약하도록 허용 가능한 것으로서 예약 구간이 지정하는 컴퓨팅 자원의 미사용 용량의 일부는 (i) 제1 온라인 엔티티의 상대적인 우선순위 아래의 상대적인 우선순위들을 갖는 온라인 엔티티들이 예약하도록 허용되는 컴퓨팅 자원의 미사용 용량의 전부 및 (ii) 컴퓨팅 자원의 미사용 용량의 추가적인 부분을 포함할 수 있다.
시스템은 (i) 온라인 엔티티들의 세트 내의 온라인 엔티티들에 의한 컴퓨팅 자원의 사용의 예측 레벨들 및 (ii) 온라인 엔티티들의 상대적인 우선순위들에 기초하여 예약 구간에 대한 한계들을 결정할 수 있다.
제1 온라인 엔티티에 대한 컴퓨팅 자원의 용량을 예약하는 것은 장래의 시간에 제1 온라인 엔티티에 의한 사용을 위해 할당될 컴퓨팅 자원의 용량에 대한 사전 예약을 수행하는 것을 포함할 수 있다.
본 명세서에서 설명되는 주제의 일부 구현들은 제2 컴퓨터 구현 방법을 포함한다. 방법은 복수의 엔티티들에 의해 공유되는 컴퓨팅 자원을 관리하는 컴퓨팅 시스템에 의해, 복수의 엔티티들 중 제1 엔티티가 제1 엔티티에 의한 사용을 위해 컴퓨팅 자원의 제1 부분에 대한 액세스를 요구한다는 표시를 수신하는 단계를 포함할 수 있다. 복수의 엔티티들 중 각각의 엔티티는 다른 엔티티들에 대한 상대적인 우선순위를 가질 수 있다. 방법은 컴퓨팅 자원의 이용 가능 용량을 결정하는 단계; 제1 엔티티보다 높은 우선순위를 갖는 엔티티들에 할당되거나 그들에 의해 사용되는 컴퓨팅 자원의 제2 부분을 결정하는 단계; 및 제1 부분이 컴퓨팅 자원의 이용 가능 용량에서 컴퓨팅 자원의 결정된 제2 부분을 뺀 것 이하인 경우에 컴퓨팅 자원의 제1 부분을 제1 엔티티에 할당하는 단계를 더 포함할 수 있다.
이들 및 다른 구현들은 다음의 특징들 중 하나 이상을 선택적으로 포함할 수 있다.
컴퓨팅 자원을 할당하는 것은 컴퓨팅 자원의 배타적 사용을 제1 엔티티에 제공할 수 있다.
컴퓨팅 자원의 제1 부분은 제1 부분이 이용 가능 용량에서 컴퓨팅 자원의 결정된 제2 부분을 뺀 것보다 큰 경우에 제1 엔티티에 할당되지 않을 수 있다.
시스템은 제1 부분이 이용 가능 용량에서 자원의 결정된 제2 부분을 뺀 것보다 큰 것으로 결정되는 경우에 제1 부분이 아니라 컴퓨팅 자원의 제3 부분을 제1 엔티티에 할당할 수 있다. 제3 부분은 제1 부분보다 작을 수 있고, 제3 부분은 이용 가능 용량에서 결정된 제2 부분을 뺀 것 이하일 수 있다.
컴퓨팅 자원의 제2 부분을 결정하는 것은 제1 엔티티보다 높은 우선순위들을 갖는 엔티티들에 의한 컴퓨팅 자원의 장래 사용을 예측하는 것을 포함할 수 있다.
방법의 단계들은 컴퓨팅 자원의 제2 부분에 대한 액세스를 요구하는 제2 엔티티에 대해 반복될 수 있다.
표시는 컴퓨팅 자원의 제1 부분을 사용하거나 할당받기 위한 제1 엔티티로부터의 요청일 수 있다.
전술한 기술들의 일례로서, 값 X1의 고객 또는 엔티티가 자원 Z의 Y1 개의 유닛을 사용하여 액션을 수행하도록 요청하는 경우, 시스템은 자원 Z의 현재 이용 가능한 용량이 값>X1의 고객들의 고신뢰 예측 사용(또는 사용 용량)을 적어도 Y1만큼 초과할 경우에 요청을 승인할 수 있다. 이 절차는 바람직하게는 더 높은 우선순위의 고객들로부터 시작하여 모든 용량이 할당될 때까지 모든 고객들에 대해 반복될 수 있다. 절차는 또한 엔티티가 추가적인 컴퓨팅 자원들에 대한 요청을 수행할 때마다 반복될 수 있다.
테넌트 또는 다른 엔티티의 우선순위의 레벨은 동적일 수 있고, 상대적인 스케일에 기초할 수 있다(예를 들어, 높은 우선순위의 테넌트는 이산적 또는 차등적 스케일의 우선순위들을 갖는 낮은 우선순위의 테넌트보다 높은 우선순위를 가질 수 있다). 우선순위의 레벨은 기준들 또는 가중된 기준들의 세트에 기초할 수 있다. 예를 들어, 그러한 기준들은 엔티티가 테넌트였던 시간; 기간 내에 소비된 자원들의 양; 시간이 지남에 따라 사용된 자원들의 양의 일관성 또는 변동; 자원들의 소비에서의 테넌트의 거동(예를 들어, 테넌트가 얼마나 자주 추가적인 자원들 또는 위반(breach)을 요청하거나 한계들 또는 자원 할당을 변경하도록 요청하는지); 및/또는 자원을 사용하는 조직의 타입(예를 들어, 정부, 소매상, 개인, 제조자, 서비스 공급자, 고가치(high value) 고객 등)을 포함할 수 있다.
시스템에 의해 제공되는 자원들은 예를 들어 메모리, 처리 능력, 처리 스레드들, CPU 사이클들, CPU 코어들, 저장소 및 통신 대역폭, 또는 이들의 조합 중 임의의 하나 이상을 포함하는 임의의 컴퓨팅 자원일 수 있다.
본 명세서에서 설명되는 방법들은 하나 이상의 프로세서들을 포함하는 컴퓨터를 동작시키는 프로그램 명령어들을 포함하는 컴퓨터 프로그램으로서 구현될 수 있다. 컴퓨터 프로그램은 하나 이상의 컴퓨터 판독가능 매체들에 저장될 수 있다.
본 명세서에서 설명되는 주제의 일부 구현들은 소정의 사례들에서 다음의 이점들 중 하나 이상을 실현할 수 있다. 첫째, 사용 예측들 및 테넌트 우선순위들에 기초하여 예약 구간들의 한계들을 동적으로 조정함으로써, 시스템은 사실상 제한되는 공유 컴퓨팅 자원의 이용을 개선할 수 있다. 예를 들어, 용량 할당에 대한 다른 접근법들에 비해, 재고 부족의 위험이 제거되거나 감소될 수 있다. 제고 부족은 자원의 전체 용량이 이미 소비되었기 때문에 테넌트들에 할당될 수 있는 공유 자원의 추가 용량이 없을 때 발생한다. 재고 부족은 초과 예약의 결과로서, 예를 들어 모든 테넌트들에 할당된 총 용량이 자원의 물리적 용량을 초과할 때 발생할 수 있다. 클라우드 플랫폼 제공자들은 때때로 모든 테넌트들이 그들의 최대 용량 할당량을 동시에 사용하지는 않을 것이라는 가정하에 용량을 초과 예약하지만, 피크 시간들에, 이러한 가정은 유지되지 못할 수 있고, 제고 부족이 발생할 수 있다. 그러나, 본 명세서에서 설명되는 기술들에 따른 구현들에서, 테넌트들의 그룹들에 대한 컴퓨팅 자원의 예약 가능 용량의 양들의 동적 조정들에 의해 재고 부족의 위험이 감소되거나 제거될 수 있다. 예를 들어, 현재 또는 예측 사용이 높은 경우, 시스템은 테넌트들의 그룹들에 이용 가능하게 되는 예약 가능 용량을 감소시킬 수 있다. 대안적으로, 공유 자원의 현재 또는 예측 사용이 비교적 낮은 경우, 시스템은 테넌트들의 그룹들에 이용 가능하게 되는 예약 가능 용량을 동적으로 증가시킬 수 있다. (전반적인 사용이 비교적 낮을 때 예약 가능 용량을 증가시키는) 이러한 사례들에서, 공유 자원의 이용 개선은 (예를 들어, 자원이 현재 충분히 이용되지 않을 수 있고, 미사용 용량이 현재 존재할 수 있다는 사실에도 불구하고 할당량들이 제한적일 때) 테넌트들이 정적 사용 할당량에 따라 달리 허용되었을 수 있는 것보다 많은 양의 용량을 예약하고 소비할 수 있음에 따라 발생할 수 있다. 따라서, 많은 용량이 이용 가능할 때 테넌트들이 용량을 예약하는 것이 금지되지 않으므로 더 높은 용량 이용이 발생할 수 있다. 또한, 일부 구현들에서, 시스템이 더 낮은 우선순위의 테넌트들에 이용 가능하게 되지 않는 용량을 포함하도록 더 높은 우선순위의 테넌트들에 대한 예약 구간들을 확장함으로 인해 용량이 더 높은 우선순위의 테넌트들에 이용 가능하지 않을 위험이 감소될 수 있다.
일부 구현들에서, 본 명세서에서 설명되는 기술들은, 테넌트들이 자원들을 더 효과적으로 제공(또는 할당)받을 수 있고, 개선된 예측 또는 자원 가용성이 또한 자신들의 요구들을 더 효과적으로 관리할 수 있는 테넌트들에게 제공될 수 있음에 따라, 클라우드 플랫폼에서의 비효율성을 감소시킬 수 있다.
특정 구현들의 상세들은 아래의 도면들 및 상세한 설명에서 제시된다. 추가적인 특징들 및 이점들은 본 주제가 속하는 분야의 통상의 기술자들에게 명백할 것이다.
도 1은 공유 컴퓨팅 자원의 용량을 관리하기 위한 환경의 개념도를 도시한다.
도 2는 예약 구간 한계들을 최적화하고 온라인 엔티티들의 우선순위화된 계층들에 대한 한계들을 시행하기 위한 예시적인 시스템의 블록도를 도시한다.
도 3은 활동 요청에 기초하여 공유 컴퓨팅 자원의 용량을 예약하거나 거부하기 위한 예시적인 프로세스의 흐름도를 도시한다.
도 4는 각각이 예약 구간 한계들을 초과하는 관련 플랫폼-부과 용량 한계들 및 선택적 플랫폼-부과 한계들을 갖는 예약 구간들의 세트의 개념도를 도시한다.
도 5는 예약 구간들의 세트에 대한 최적화된 한계들을 생성하기 위한 예시적인 프로세스의 흐름도를 도시한다.
도 6은 본 명세서에서 설명되는 특정 기술들을 구현하는 데 사용될 수 있는 컴퓨팅 디바이스 및 모바일 컴퓨팅 디바이스의 예를 도시한다.
본 명세서는 클라우드 컴퓨팅 플랫폼의 테넌트들에 제공되는 자원들과 같은 공유 컴퓨팅 자원들의 용량의 할당을 관리하기 위한 시스템들, 방법들, 디바이스들 및 다른 기술들을 설명한다. 본 기술의 예시적인 구현들의 상세들은 다음의 도면들과 관련하여 설명된다.
도 1을 참조하면, 공유 컴퓨팅 자원(106)의 용량을 관리하기 위한 환경(100)의 개념도가 도시되어 있다. 환경(100)은 용량 관리 시스템(102), 공유 자원(106), 및 공유 자원(106)에 액세스할 수 있는 온라인 엔티티들(104)의 집합을 포함한다. 일반적으로, 용량 관리 시스템(102)은 다양한 상이한 엔티티들에 컴퓨팅 서비스들을 제공하기 위한 제한된 용량을 갖는 공유 자원(106)에 대한 예약 구간들의 세트를 결정하고 시행하도록 구성된다. 예약 구간들은 엔티티들(104)의 상이한 그룹들이 즉시 또는 장래의 사용을 위해 예약하도록 허용되는 공유 자원(106)의 미사용 용량의 세그먼트들을 정의한다. 공유 자원(106)의 용량의 현재 및 예측 사용을 모니터링함으로써, 용량 관리 시스템(102)은 자원(106)의 사용된 용량의 임의의 부분을 예약하려고 시도할 수 있는 엔티티들(104)의 상대적인 우선순위들의 차이들을 고려하면서, 자원의 미사용 용량을 효율적으로 이용하기 위해 예약 구간들을 최적화할 수 있다. 본 명세서 전체에 걸쳐 사용되는 바와 같이, 용어 최적, 최적화 및 이들의 변형들은 본 명세서에서 논의되는 기술들의 사용을 통해 시스템의 성능을 개선하는 것을 지칭하며, 획득된 성능이 반드시 달성 가능한 가장 최적의 성능이라는 것을 암시하지는 않는다.
용량 관리 시스템(102)은 하나 이상의 위치들에 하나 이상의 컴퓨터들을 포함할 수 있다. 일부 구현들에서, 시스템(102)은 다수의 테넌트들(예를 들어, 온라인 엔티티들(104))에 대한 컴퓨팅 자원들의 풀들을 제공하고 테넌트들로 하여금 하나 이상의 위치들로부터 인터넷 또는 다른 네트워크들을 통해 자원들에 액세스하는 것을 허용하는 클라우드 플랫폼의 일부이다. 예를 들어, 클라우드 플랫폼은 테넌트들이 클라우드 플랫폼의 운영자에 의해 소유되고/되거나 유지되는 물리적 드라이브들 상에 파일들을 저장하는 것을 허용하는 원격 저장 서비스를 구현할 수 있다. 이 예에서, 공유 자원(106)은 크지만 궁극적으로는 유한한 저장 용량을 갖는 저장 자원일 수 있다. 다른 예로서, 클라우드 플랫폼은 테넌트들이 클라우드 플랫폼의 운영자에 의해 소유되고/되거나 유지되는 서버들 상에서 가상 기계들을 실행하는 것을 허용하는 가상화 서비스를 구현할 수 있다. 이 예에서, 공유 자원(106)은 서로 병렬로 다수의 가상 기계를 실행하기에 충분한 컴퓨팅 용량을 갖지만 궁극적으로는 유한한 컴퓨팅 용량을 갖는 서버들을 나타낼 수 있다. 일부 구현들에서, 시스템(102)은 조직의 구성원들에 대해 공유 자원들에 대한 용량을 이용 가능하게 하는 조직의 비공개 온사이트 서버에서 제공된다.
용량 관리 시스템(102)은 공유 자원(106)에 대한 액세스를 관리한다. 공유 자원(106)을 이용하기를 원하는 온라인 엔티티들(예를 들어, 테넌트들)은 용량 관리 시스템(102)에 요청들을 발행할 수 있고, 시스템(102)은 요청의 파라미터들 및 요청된 자원(106)에 대한 예약 구간들의 세트에 의해 정의된 규칙들에 기초하여 요청을 승인하거나 거부할지를 결정한다.
요청된 자원(106)에 대한 예약 구간들을 사용하여 요청에 작용하는 시스템(102)의 예가 도 1에 도시된다. 특히, 시스템(102)은 온라인 엔티티들(104) 중 하나로부터 활동 요청(108)을 수신한다. 활동 요청(108)은 요청 엔티티가 공유 자원(106)의 용량을 예약하기를 원한다는 것을 용량 관리 시스템(102)에 표시한다. 요청(108)은 용량에 대한 현재 필요를 표시할 수 있고, 따라서 용량은 승인된 경우에 요청 엔티티에 즉시 할당되거나, 요청(108)은 요청에 대한 장래의 필요를 표시할 수 있고, 따라서 요청이 승인된 경우에 장래에 지정된 시간 동안 용량에 대한 사전 예약이 의탁(lodging)될 것이다.
용량에 대한 요청들은 공유 컴퓨팅 자원(106)을 사용하여 적어도 부분적으로 실행되도록 요청되는 하나 이상의 활동들과 관련될 수 있다. 활동들은 일반적으로 온라인 엔티티(104)(예를 들어, 클라우드 플랫폼의 운영자와 별개인 클라우드 테넌트들)에 의해 개시되는 임의의 컴퓨팅 프로세스를 지칭하고, 이 프로세스는 활동을 수행하기 위해 공유 컴퓨팅 자원에 전체적으로 또는 부분적으로 의존한다. 일례로서, 요청 엔티티는 클라우드 플랫폼 운영자의 물리적 기계들 상에서 독점 애플리케이션을 실행하도록 요청할 수 있다. 엔티티는 클라우드 플랫폼 운영자의 물리적 기계 상에서 애플리케이션을 실행하기 위해 용량을 요청할 수 있다. 요청이 승인되는 경우, 클라우드 플랫폼은 물리적 기계 상에서 가상 기계를 인스턴스화하고, 요청 엔티티의 애플리케이션을 게스트로서 실행할 수 있다. 활동 요청(108)과 같은 요청은 요청된 용량으로 수행될 타입 또는 특정 활동을 명시적으로 표시할 수 있거나 표시하지 않을 수 있다. 예를 들어, 활동 요청(108)은 용량이 요청되는 활동 또는 활동들을 식별하지 않고 특정 기간 동안 지정된 양의 용량이 요청된다는 것을 표시할 수 있다. 대안적으로, 활동 요청(108)은 용량이 요청되는 활동 또는 활동들을 구체적으로 식별할 수 있다. 이러한 사례들에서, 요청(108)은 요청된 활동 또는 활동들을 지정하고, 용량 관리 시스템(102)은 요청된 활동들을 수행하도록 요구되는 용량의 양을 추정할 수 있거나, 시스템(102)은 요청(108) 자체로부터 요청된 용량의 양을 식별할 수 있다. 도 1의 예에서, 활동 요청(108)은 요청이 공유 자원(106)의 용량의 23 개의 유닛에 대한 것임을 명시적으로 식별한다.
요청(108)을 수신하면, 용량 관리 시스템(102)은 요청된 용량을 승인할지를 결정한다. 활동 요청(108)을 승인할지에 대한 결정은 요청된 용량의 양 및 요청 엔티티의 상대적인 우선순위 양자에 기초할 수 있다. 도 1의 표에 도시된 바와 같이, 용량 관리 시스템(102)은 온라인 엔티티들(104)의 세트의 개개의 우선순위들을 나타내는 데이터를 유지할 수 있다. 온라인 엔티티들(104)의 우선순위들은 서로에 대한 엔티티들(104)의 상대적 중요성을 나타낸다. 공유 자원(106)의 용량이 유한하기 때문에, 무제한 용량이 모든 엔티티들(104)에게 승인될 수 없고, 엔티티들에 우선순위들을 할당하는 것은 자원(106)의 이용을 개선하는 방식으로 엔티티들 간에 용량을 할당하기 위한 기초를 제공한다.
온라인 엔티티(104)에 할당된 우선순위 스코어는 하나 이상의 우선순위화 기준들에 기초할 수 있다. 일부 구현들에서, 우선순위화 기준들은 다른 엔티티들(104)에 의해 실행되는 활동들을 보완하는 공유 자원(106) 상에서의 활동들을 실행하는 엔티티들을 승진시켜, 공유 자원(106)의 전반적인 성능을 개선하도록 구조화된다. 예를 들어, 다른 엔티티들(104)로부터의 활동들과 자원(106)의 하위 자원들(예를 들어, 주변기기들, 처리 코어들 등)에 대해 경쟁하지 않는 공유 자원(106) 상에서의 활동을 실행하는 제1 엔티티는 자원(106)에 대해 동시에 실행되는 다른 엔티티들(104)의 활동들과 동일한 하위 자원들에 대해 경쟁하는 공유 자원(106) 상에서의 활동을 실행하는 제2 엔티티보다 높은 우선순위 스코어를 할당받을 수 있다. 따라서, 이러한 방식으로 엔티티들을 우선순위화하는 것은 공유 자원(106)의 더 나은 기술적 이용을 유도할 수 있다.
일부 구현들에서, 엔티티(104)에 대한 우선순위 스코어는 엔티티(104)가 지난 기간 동안 얼마나 자주 자원(106) 및/또는 다른 공유 자원들을 사용했는지, 엔티티(104)가 장래의 기간 동안 얼마나 자주 자원(106) 및/또는 다른 공유 자원들을 사용할 것으로 예측되는지, 지난 기간 동안의 자원(106) 및/또는 다른 공유 자원들의 엔티티(104)에 의한 사용의 과거 레벨(예를 들어, 소비된 용량의 양), 장래의 기간 동안의 자원(106) 및/또는 다른 공유 자원들의 엔티티(104)에 의한 사용의 예측 레벨, 자원 및/또는 다른 공유 컴퓨팅 자원들에 대해 온라인 엔티티(104)에 의해 개시된 활동들의 타입들, (예를 들어, 엔티티(104)와 공유 자원(106)의 운영자 사이의 계약 의무를 나타내는) 온라인 엔티티(104)의 계정 상태, 공유 자원(106)의 운영자(예를 들어, 클라우드 플랫폼 운영자)에 대한 엔티티(104)의 계정의 크기, 엔티티(104)의 위험 평가, 공유 자원(106)의 운영자에 대한 엔티티(104)의 추정 값 또는 이들 중 다수의 조합과 같은 다른 또는 추가적인 팩터들에 기초할 수 있다.
일부 구현들에서, 용량 관리 시스템(102)은 우선순위 스코어들에 기초하여 온라인 엔티티들(104)의 세트를 엔티티들의 계층들 또는 다른 그룹들로 분류한다. 이어서, 엔티티(104)의 계층 또는 그룹은 활동 요청(108)을 승인할지 또는 거부할지를 결정하기 위한 목적으로 엔티티(104)의 상대적인 우선순위로서 시스템(102)에 의해 사용될 수 있다. 대안적으로, 시스템(102)은 활동 요청(108)을 승인할지 또는 거부할지를 결정하기 위한 목적으로 엔티티(104)의 상대적인 우선순위로서 엔티티(104)의 계층 또는 그룹에 더하여 또는 그 대신에 우선순위 스코어 자체를 사용할 수 있다. 온라인 엔티티들(104)의 계층들은 우선순위 스코어들에 기초하여 엔티티들(104)을 순위화하고, 각각의 계층에 대한 임계 스코어들을 결정하고, 각각의 엔티티(104)를 그의 스코어에 기초하여 적절한 계층에 할당함으로써 생성될 수 있다. 예를 들어, 7의 우선순위 스코어를 갖는 엔티티(104)는 7의 우선순위 스코어를 포함하는 임계값들을 갖는 대응하는 계층에 할당될 수 있다. 다른 구현들에서, 각각의 계층에 대해 엔티티들의 총수가 규정될 수 있고, 그에 따라 계층들에 엔티티들(104)이 할당될 수 있다. 예를 들어, 도 1에 도시된 바와 같이, 계층 1-5 각각은 3 개의 엔티티(104)를 할당받는다. 더욱이, 계층들은 온라인 엔티티들(104)의 상대적인 우선순위들을 나타내는데, 그 이유는 일부 계층들이 다른 계층들보다 더 유리한 우선순위 스코어들을 갖는 엔티티들을 갖기 때문이다. 예로서, 계층 1은 최고 우선순위 엔티티들로 구성될 수 있는 반면, 계층 5는 (5 개 계층의 세트에서) 최저 우선순위 엔티티들로 구성될 수 있다. 계층들의 총수는 임의의 수로 조정되거나 설정될 수 있지만, 일반적으로 공유 자원(106)에 대해 이용 가능한 예약 구간들의 수에 대응한다. 예를 들어, 시스템(102)은 엔티티들을 5 개의 이용 가능한 예약 구간에 대한 5 개의 계층으로 분류할 수 있지만, 더 조밀한 예약 구간들이 결정되는 경우에는 계층들의 수를 증가시키거나 더 적은 그리고 더 넓은 예약 구간들이 결정되는 경우에는 계층들의 수를 감소시킬 수 있다.
도 1의 우측의 수직 바(bar)는 공유 자원(106)의 용량의 상이한 부분들을 나타내도록 세그먼트화된다. 도시된 바와 같이, 자원(106)의 총 용량은 C로 표현된다. 총 용량 C는 예를 들어 공유 자원(102)를 구현하는 시스템의 물리적 크기(예를 들어, 물리적 저장 한계들, 최대 처리 속도들, 서버들 또는 처리 코어들의 수)에 의해 전적으로 또는 주로 제한되는 자원(106)의 진정한 용량 한계일 수 있다. 그러나, 다른 구현들에서, 총 용량 C는 자원(106)의 물리적 한계로부터 인위적으로 저하될 수 있다. 예를 들어, 공유 자원(106)의 관리자는 기본 시스템의 용량의 일부를 유지보수 루틴들 또는 사적인 활동들에 전용화할 수 있는 반면, 용량의 나머지 부분은 온라인 엔티티들(104)과의 공유를 위해 전용화된다. 여기서, C는 이어서 온라인 엔티티들(104)과의 공유의 공개적인 사용에 전용화되는 물리적 용량의 부분에 대한 가상 용량을 나타낼 수 있다. 또 다른 구현들에서, 총 용량 C는 공유 자원(102)를 제공하는 시스템의 진정한/물리적 용량을 실제로 줄이는 예약 가능 용량을 나타낼 수 있다. 시스템은 예를 들어 용량을 예약 또는 할당받은 모든 엔티티들이 그들의 전체 할당량을 실제로 사용하는 경우가 거의 없다는 가정하에 "초과 예약"을 허용하기 위해 진정한/물리적 용량을 넘어 C를 증가시킬 수 있다.
자원(106)의 총 용량 C를 나타내는 것에 더하여, 도 1은 또한 자원(106)의 사용 용량과 미사용 용량 사이의 경계, 및 자원(106)의 미사용 용량 내의 개개의 예약 구간들의 한계들을 도시한다. 바의 하단으로부터 한계 U까지 표현되는 자원(106)의 용량의 음영 부분은 자원(106)의 현재 사용을 나타낸다. 일부 구현들에서, 현재 사용되는 용량의 부분은 이러한 용량을 현재 소비하고 있는 활동들이 완료 또는 그렇지 않으면 중단되고 용량이 해제될 때까지 엔티티들(104) 중 임의의 것으로부터의 추가적인 활동들에 의해 소비될 수 없다.
(하한 U으로부터 상한 C까지 연장되는) 용량의 미사용 부분 내에서, 일련의 예약 구간들이 정의된다. 예를 들어, 5 개의 예약 구간들이 도 1에 도시된다. 예약 구간은 온라인 엔티티들(104)의 특정 클래스들이 예약하도록 허용되는 자원(106)의 미사용 용량의 일부를 정의한다. 도 1에 표현된 도식에 따르면, 5 개의 예약 구간들 각각은 온라인 엔티티들(104)의 5 개 계층들 중 상이한 하나에 대응한다. 더 높은 우선순위의 계층들 내의 엔티티들(104)은 더 낮은 우선순위의 계층들 내의 엔티티들(104)보다 더 많은 예약 가능한 용량을 제공받는다. 특히, 주어진 계층에 대한 예약 구간은 직전 예약 구간에 대응하는 온라인 엔티티들(104)의 계층에 이용 가능하지 않은 예약 가능 용량의 추가 부분과 함께 직전 예약 구간의 예약 가능 용량의 전부를 포함한다. 예를 들어, 용량 관리 시스템(102)은 최저 우선순위 엔티티들(계층 5)이 U로부터 L4까지(예약 구간 5)의 공유 자원(106)의 용량의 범위를 예약하는 것을 허용한다. 다음 최고 우선순위 엔티티들(계층 4)은 U로부터 L3까지(예약 구간 4)의 용량의 범위를 예약하도록 허용된다. 다음의 최고 우선순위 엔티티들(계층 3)은 U로부터 L2까지(예약 구간 3)의 용량의 범위를 예약하도록 허용된다. 다음 최고 우선순위 엔티티들(계층 2)은 U로부터 L1까지(예약 구간 2)의 용량의 범위를 예약하도록 허용된다. 마지막으로, 최고 우선순위 엔티티들(계층 1)은 U로부터 C까지(예약 구간 1)의 자원(106)의 미사용 용량의 전체 범위를 예약하도록 허용된다.
일부 구현들에서, 온라인 엔티티(104)는 엔티티의 상대적인 우선순위에 대응하는 예약 구간에 의해 지정된 자원(106)의 미사용 용량의 부분의 전체 범위까지 하나 이상의 활동들을 실행하기 위해 공유 자원(106)의 용량을 예약할 수 있다. 예를 들어, 단일 계층 1 엔티티는 예약 구간 1(U로부터 C까지 연장됨)에 의해 지정된 자원(106)의 전체 미사용 용량을 예약하도록 허용될 것이다. 마찬가지로, 단일 계층 2 엔티티는 예약 구간 2(U로부터 L1까지 연장됨)에 의해 지정된 자원(106)의 전체 미사용 용량을 예약하도록 허용될 것이다. 물론, 요청된 용량의 집계가 자원(106)의 미사용 용량의 총량을 초과하는 것이 가능하며, 이 경우 시스템(102)은 예약들이 자원(106)의 총 용량을 초과하게 하는 요청을 거부하는 것, 요청된 용량의 할당을 연기하는 것 또는 요청된 용량을 위한 여지를 만들기 위해 기존의 예약을 줄이는 것과 같은 교정 액션을 취할 수 있다. 그럼에도 불구하고, 예약 구간들은 더 높은 우선순위의 엔티티들(104)이 더 낮은 우선순위의 엔티티들에 의해 완전히 차단되지 않는 것이 보장되도록 배열된다. 시스템(102)은 (예를 들어, 개별 엔티티들에 대해서가 아니라) 엔티티들의 계층들에 대해 사용 할당량들을 시행함으로써 더 높은 우선순위의 엔티티들(104)이 더 낮은 우선순위의 엔티티들로 인해 공유 자원(106) 상에서 활동들을 실행하지 못하게 되지 않는 것을 보장한다. 예를 들어, 계층 2-5 내의 모든 엔티티들에 대한 예약 용량의 합계는 L1을 초과할 수 없고(따라서, 계층 1 엔티티들에 대해서만 용량의 부분 C-L1을 남기고), 계층 3-5 내의 모든 엔티티들에 대한 예약 용량의 합계는 L2를 초과할 수 없고(따라서, 계층 1 및 2 엔티티들에 대해서만 용량의 부분 C-L2를 남기고), 기타 등등이다. 도 4와 관련하여 더 논의되는 바와 같이, 일부 구현들에서, (예를 들어, 동일 계층 내의 다른 엔티티들을 위해 일부 용량을 남기기 위해) 계층 내의 개별 엔티티들(104)이 얼마나 많은 용량을 예약하도록 허용(또는 인에이블)되는지를 제한하는 추가적인 사용 제약들이 규정되고 시행될 수 있으며, 추가적으로 개별 엔티티들(104)은 (예를 들어, 엔티티의 임의의 하나의 활동이 그 엔티티의 용량의 전체 할당량을 소비하는 것을 방지하기 위해) 그들 자신의 사용 제약들을 규정할 수 있다.
활동 요청(108)의 파라미터들, 온라인 엔티티들(104)의 우선순위화, 및 자원(106)의 미사용 용량에 대한 예약 구간 한계들이 주어지면, 용량 관리 시스템(102)은 요청(106)을 승인하거나 거부할지를 결정할 수 있다. 시스템(102)은 예약되도록 요청된 용량의 양(요청이 장래의 시간에 즉시 할당되거나 예약될 용량을 예약하는지)을 요청 엔티티의 상대적인 우선순위(예를 들어, 요청 엔티티의 우선순위 계층)에 대응하는 예약 구간에 의해 정의되는 자원(106)의 예약 가능 용량의 양과 비교한다. 요청된 용량의 양이 대응하는 예약 구간에 의해 정의되는 바와 같은 자원(106)의 예약 가능 용량의 양 이내(예를 들어, 미만 또는 이하)인 경우, 시스템(102)은 요청을 승인하고 그에 따라 용량을 예약할 수 있다. 그러나, 요청된 용량의 양이 대응하는 예약 구간에 의해 정의되는 바와 같은 자원(106)의 예약 가능 용량의 양 밖(예를 들어, 초과 또는 이상)인 경우, 시스템(102)은 요청을 거부하고, 요청된 용량을 예약하기를 거부하는 것, 예약 구간 한계들을 따르기 위해 요청된 것보다 적은 양의 용량을 예약할지를 요청 엔티티의 에이전트에게 프롬프트(prompt)하는 것 또는 요청 엔티티의 상대적인 우선순위를 상승시키고 요청이 승인될 수 있게 하는 입찰가를 증가시키도록 요청 엔티티에게 프롬프트하는 것과 같은 액션을 취한다.
도 2는 예약 구간 한계들을 정의하고 온라인 엔티티들의 우선순위화된 계층들에 대한 한계들을 시행하기 위한 예시적인 시스템(200)의 블록도이다. 시스템(200)은 하나 이상의 위치들에 하나 이상의 컴퓨터들을 포함할 수 있다. 일부 구현들에서, 시스템(200)은 용량 관리 시스템(102)(도 1에 도시됨)과 같은 용량 관리 시스템이다. 특히, 시스템(200)은 예약 구간 한계들을 동적으로 조정하여 공유 컴퓨팅 자원(202)의 이용을 최적화하거나, 자원(202)의 운영자(예를 들어, 클라우드 플랫폼 운영자)에 대한 이용의 값을 최대화하거나, 온라인 엔티티들의 계층들에 대한 예약 가능한 용량의 적절한 할당들을 제공하거나 또는 이들의 조합을 수행할 수 있다. 이러한 기술들은 일부 구현들에서 재고 부족의 위험을 감소시키고, 다른 엔티티들에 의한 예측된 사용이 비교적 작은 한 임의의 온라인 엔티티에 의한 자원(202)의 더 많은 이용을 허용함으로써 공유 컴퓨팅 자원(202)의 성능을 개선할 수 있다.
시스템(200)은 공유 컴퓨팅 자원(202), 공유 자원 이용 예측 엔진(204), 구간 한계 최적화 엔진(206), 공유 자원 관리자(208), 온라인 엔티티 데이터베이스(210), 예약 데이터베이스(212) 및 용량 정책 데이터베이스(214)를 포함하는 다양한 컴포넌트들을 포함한다. 시스템(200)의 이러한 다양한 컴포넌트들(202-214)은 단일 컴퓨터 상에서 또는 다수의 컴퓨터 상에서, 예를 들어 하나 이상의 위치들에 있는 데이터 센터 또는 컴퓨터들에서 구현될 수 있다. 컴포넌트들 각각의 기능이 본 명세서의 예시적인 구현들에서 설명되지만, 시스템(200)의 컴포넌트들 간의 기능의 다른 분할들도 적합할 수 있다. 주제의 일부 구현들은 시스템(200)에 도시된 컴포넌트들 전부보다 적은 것을 포함할 수 있거나, 도 2에 도시되지 않은 추가 컴포넌트들을 포함할 수 있다. 본 명세서에서 사용되는 바와 같이, "데이터베이스"는 일반적으로 관계형 데이터베이스, 비관계형 데이터베이스, 키-값 데이터베이스, 중앙 집중형 데이터베이스, 분산 데이터베이스 등과 같은, 그러나 이에 제한되지 않는 본 명세서에 설명된 데이터를 저장하고 액세스 가능하게 하는 데이터의 임의의 구조화된 표현을 지칭한다. 용어 "엔진" 및 "관리자"는 하드웨어 단독 또는 하드웨어와 소프트웨어의 조합(예를 들어, 본 명세서에서 설명되는 기능을 가능하게 하는 명령어들을 실행하는 하나 이상의 컴퓨터 프로세서들)에 기초하여 구현될 수 있는 컴퓨팅 시스템의 컴포넌트들을 지칭한다.
공유 자원 사용 예측 엔진(204)은 개별 엔티티들 또는 엔티티들의 그룹들이 지정된 장래 기간에 걸쳐 사용할 공유 컴퓨팅 자원(202)의 용량의 레벨들을 예측하도록 구성된다. 일부 구현들에서, 예측 엔진(204)은 공유 컴퓨팅 자원(202)의 용량을 예약하도록 등록되는 모든 온라인 엔티티(104)의 개개의 사용을 예측하거나, 예측 엔진(204)은 등록된 엔티티들의 서브세트만의 개개의 사용을 직접 예측하고, 사용 예측이 직접 결정되지 않은 유사하게 위치된 엔티티들에 예측들을 추정할 수 있다. 일부 구현들에서, 예측 엔진(204)은 엔티티들의 그룹에 의해, 예를 들어 우선순위화된 엔티티들의 세트의 각각의 계층에 의해 사용될 용량의 집계량을 예측한다. 예측 엔진(204)은 과거 사용(사용 이력 데이터(216)에 의해 표시됨), 기존 예약들(기존 예약 데이터(218)에 의해 표시됨) 또는 둘 다에 기초하여 장래의 사용을 예측하는 모델을 포함할 수 있다. 예를 들어, 주어진 온라인 엔티티에 대해, 예측 엔진(204)은 개별 엔티티들에 관한 정보를 저장하는 온라인 엔티티 데이터베이스(210)로부터의 사용 이력 데이터(216)에 액세스할 수 있다. 사용 이력 데이터(216)는 온라인 엔티티가 과거의 다양한 시간들에 자원(202)의 얼마나 많은 용량을 사용했는지, 온라인 엔티티가 과거의 다양한 시간들에 얼마나 많은 용량을 요청했는지, 엔티티의 요청된 용량이 과거에 얼마나 많이 승인되었는지 또는 거부되었는지, 엔티티의 승인된/예약된 용량이 과거에 엔티티의 활동들의 실행 동안 실제로 얼마나 많이 사용되었는지, 또는 이들의 조합과 같은 정보를 나타낼 수 있다. 추가로, 예측 엔진(212)은 예약 데이터베이스(212)에서 온라인 엔티티에 대한 임의의 기존 예약들을 탐색할 수 있다. 온라인 엔티티에 대한 기존의 예약 데이터(218) 및 사용 이력 데이터(216)에 기초하여, 예측 엔진은 사용 예측 데이터(220)를 생성한다. 예측은 회귀 모델, 기계 학습 모델(예를 들어, 인공 신경망) 또는 다른 적절한 기술들을 사용하여 생성될 수 있다. 일부 구현들에서, 사용 예측 데이터(220)는 온라인 엔티티가 공유 컴퓨팅 자원(202)의 용량의 상이한 레벨들의 범위를 사용하거나 사용하기를 요청할 가능성들(예를 들어, 확률들)을 나타내는 확률 밀도 함수를 제공한다.
구간 한계 최적화 엔진(206)은 온라인 엔티티들의 상이한 그룹들 또는 계층들에 대한 예약 구간들의 한계들을 정의하도록 구성된다. 예를 들어, 최적화 엔진(206)은 도 1에 도시된 예약 구간들에 대해 L1 내지 L4의 값들을 설정할 수 있다. 일부 구현들에서, 최적화 엔진(206)은 더 높은 계층에서의 공유 자원(202)의 엔티티의 사용으로부터의 확률적으로 예상되는 값이 더 높은 계층 바로 아래의 계층에서의 공유 자원(202)의 엔티티의 사용으로부터 도출되는 실제 값과 동일한 포인트들에서 예약 구간들 사이의 경계들(즉, 예약 구간들의 한계들)을 설정한다. 예를 들어, 최적화 엔진(206)은 공유 자원의 계층 1 엔티티의 사용으로부터의 예상 값이 공유 자원(202)의 계층 2 엔티티의 사용으로부터의 값과 동일한 포인트에서 예약 구간 1 및 2 사이의 경계 L1을 설정할 수 있다. 마찬가지로, 최적화 엔진(206)은 공유 자원의 계층 2 엔티티의 사용으로부터의 예상 값이 공유 자원(202)의 계층 3 엔티티의 사용으로부터의 값과 동일한 포인트에서 예약 구간 2 및 3 사이의 경계 L2를 설정할 수 있다. 공유 자원(202)의 엔티티의 사용의 예상 값은 엔티티의 우선순위 및 엔티티가 공유 자원(202)의 주어진 레벨의 용량을 실제로 사용하거나 사용하기를 요청할 확률(예를 들어, 이들은 서로 비례할 수 있음)의 함수일 수 있다. 엔티티의 사용의 예상 값은 사용 예측 데이터(220) 및 엔티티의 상대적인 우선순위(예를 들어, 우선순위 계층 또는 우선순위 스코어)를 나타내는 엔티티 데이터(224)로부터 도출될 수 있다. 따라서, 일반적으로, 낮은 값 기회가 (더 낮은 계층 엔티티로부터) 제시될 때, 시스템은 그 기회의 값을 장래에 발생할 잠재적인 더 높은 값 기회의 확률적 예상 값과 비교할 수 있다. 낮은 값 기회는 장래에 발생할 잠재적인 더 높은 값 기회의 확률적 예상 값을 충족시키거나 초과하는 경우에 승인될 수 있다.
또한, 최적화 엔진(206)은 자원 용량 데이터(222)에 의해 표시되는 바와 같은 공유 자원의 총 용량을 고려한다. 자원(202)의 총 용량은 자원(202)의 물리적 제약들에 의해 제한되는 자원의 진정한 용량일 수 있거나, 예를 들어 사적인 비공유 목적들(예를 들어, 유지보수 및 진단 루틴들)을 위한 일부 용량의 시스템의 예약으로 인해 진정한 용량보다 작을 수 있다. 자원(202)이 진정한 최대 용량 또는 더 적은 용량으로 이용 가능하게 되는지는 용량 정책들(214)의 데이터베이스에서 지정될 수 있다. 최적화 엔진(206)은 예약 구간들의 경계들을 결정할 때 용량의 상한으로서 공유 자원(202)의 총 용량을 사용한다.
일부 구현들에서, 최적화 엔진(206)은 온라인 엔티티들의 그룹들에 대한 예약 구간 한계들을 결정하도록 구성된다. 예를 들어, 엔진(206)은 주어진 계층 내의 모든 엔티티들에 대한 사용 예측들(220)을 평균하여 평균 사용 예측을 생성할 수 있고, 주어진 계층 내의 모든 엔티티들에 대한 우선순위 스코어들을 평균하여 계층에 대한 평균 우선순위 스코어를 생성할 수 있다. 그 다음, 엔진(206)은 더 높은 계층 내의 엔티티들의 그룹으로부터의 사용의 예상 값이 다음의 더 낮은 계층 내의 엔티티들의 그룹으로부터의 사용의 예상 값과 동일한 용량의 레벨을 평가할 수 있고, 해당 포인트를 이러한 계층들에 대한 대응하는 예약 구간들 사이의 경계로서 지정할 수 있다. 최적화 엔진(206)은 각각의 예약 구간에 대해 구간에 대한 예약 가능 용량의 총량 또는 모든 더 낮은 레벨의 구간들의 예약 가능 용량에 추가적인 예약 가능 용량의 여분 용량을 나타내는 예약 구간 한계 데이터(226)를 생성할 수 있다.
일부 구현들에서, 예약 구간들의 한계들은 동적이다. 사용 예측들이 변하거나, 새로운 예약들이 이루어지거나 예약들이 취소되거나, 온라인 엔티티들의 우선순위들 또는 구성에서 변경들이 발생하거나, 이용 가능한 용량이 변하거나, 이들 및 다른 팩터들의 조합이 발생함에 따라, 예약 구간들의 경계들은 최근 조건들을 반영하도록 업데이트될 수 있다. 이러한 방식으로, 개별 엔티티들 또는 엔티티들의 그룹들에 대한 고정된 사용 할당량들을 평가하는 것이 아니라, 시스템(200)은 변경 조건들에 응답하고, 변경 조건들을 고려하도록 예약 구간 한계들을 업데이트할 수 있다. 예를 들어, 예측 엔진(204)은 계층 1 엔티티들이 장래의 기간 동안 많은 양의 용량을 사용하는 것을 요구할 것으로 초기에 예측했을 수 있다. 그러나, 해당 시간에 접근하고, 계층 1 엔티티들이 초기에 예측된 것만큼 많은 용량을 예약하지 않음에 따라, 구간 한계들은 더 낮은 계층 엔티티들에 더 많은 예약 가능한 용량을 할당하도록 업데이트될 수 있다. 따라서, 추가적인 엔티티들이 용량을 예약할 기회를 가질 수 있고, 따라서 공유 자원(202)의 최대 이용의 가능성이 증가할 수 있다. 예약 구간 한계들(226)은 임의의 적합한 트리거링 이벤트에 기초하여 업데이트될 수 있다. 일부 구현들에서, 한계들(226)은 엔티티로부터의 용량에 대한 각각의 요청(예를 들어, 활동 요청)에 응답하여 업데이트될 수 있다. 일부 구현들에서, 한계들은 미리 정의된 주기(예를 들어, 매분, 매시간, 매일 또는 매주)로 업데이트된다. 일부 구현들에서, 한계들은 활동 요청들 또는 요청된 용량에서의 임계치 초과, 또는 활동 요청들 또는 요청된 용량에서의 임계치 부족과 같은 소정 조건들의 검출 시에 업데이트된다.
공유 자원 관리자(208)는 온라인 엔티티들로부터의 활동 요청들(228)을 처리하고, 공유 컴퓨팅 자원(202)의 용량을 승인 또는 거부하기 위해 요청들(228)에 대한 결정들(230)을 수행하도록 구성된다. 일부 구현들에서, 공유 자원 관리자(308)는 요청된 용량의 양이 요청 엔티티의 상대적인 우선순위에 대응하는 예약 구간에 대해 지정된 공유 컴퓨팅 자원(202)의 미사용 용량의 양 내에 있는지에 기초하여 활동 요청(228)에 대한 용량을 승인할지를 결정한다. 공유 자원 관리자(208)에 의해 수행되는 동작들의 추가 상세는 예를 들어 도 3과 관련하여 설명된다.
도 3은 온라인 엔티티로부터의 용량에 대한 요청에 응답하여 공유 컴퓨팅 자원의 용량을 예약하거나 거부하는 예시적인 프로세스(300)의 흐름도이다. 일부 구현들에서, 프로세스(300)는 도 2에 도시된 공유 자원 관리자(208)와 같은 용량 관리 컴퓨팅 시스템의 공유 자원 관리자에 의해 수행된다.
단계 302에서, 공유 자원 관리자는 온라인 엔티티로부터 활동 요청을 수신한다. 활동 요청은 하나 이상의 활동들에 대한 공유 컴퓨팅 자원의 용량을 예약하기 위해 온라인 엔티티에 의해 발행될 수 있다. 활동은 활동을 수행하기 위해 공유 컴퓨팅 자원에 전체적으로 또는 부분적으로 의존하는 임의의 컴퓨팅 프로세스일 수 있다. 예를 들어, 온라인 엔티티는 클라우드 플랫폼의 물리적 기계들 상에서 독점 애플리케이션을 실행하도록 요청할 수 있다. 엔티티는 애플리케이션이 플랫폼 상에서 실행되는 데 필요한 바와 같은 활동에 대한 용량을 요청할 수 있다. 요청이 승인되면, 가상 기계는 가상 기계 상에서 게스트로서 요청 엔티티의 애플리케이션을 실행하는 클라우드 플랫폼 운영자의 물리적 기계 상에서 인스턴스화될 수 있다. 활동 요청이 통상적으로는 수행되도록 요청되는 하나 이상의 활동들에 연계되지만, 요청 자체는 활동을 명시적으로 식별할 수 있거나 식별하지 않을 수 있다. 예를 들어, 활동 요청은 용량이 요청되는 활동 또는 활동들을 실제로 지명하지 않고 특정 시간에 예약할 특정 양의 용량을 요청할 수 있다. 대안적으로, 활동 요청은 용량이 요청되는 활동 또는 활동들을 명시적으로 식별할 수 있다. 이러한 사례들에서, 요청은 요청된 활동 또는 활동들을 식별하고, 공유 자원 관리자는 요청된 활동들을 수행하도록 요구되는 용량의 양을 추정할 수 있거나, 시스템은 요청된 용량의 양을 요청 자체로부터 식별할 수 있다.
단계 304에서, 공유 자원 관리자는 활동 요청을 충족시키는 요청된 용량의 양을 결정한다. 일부 구현들에서, 활동 요청은 요청된 용량의 양을 지정하고, 이 경우에 공유 자원 관리자는 요청을 파싱(parsing)하고, 요청된 용량의 양을 요청 자체로부터 식별한다. 일부 구현들에서, 요청은 하나 이상의 활동들을 식별하지만, 요청들을 수행하기 위해 공유 컴퓨팅 자원의 얼마나 많은 용량이 요구되는지를 명시적으로 나타내지는 않는다. 이러한 경우들에서, 공유 자원 관리자는 요청된 활동들을 수행하기 위해 요구되는 용량의 양을 간접적으로 결정할 수 있다. 예를 들어, 공유 자원 관리자는 온라인 엔티티들의 활동들을 활동들에 대해 요구되는 용량의 예상 양들과 상관시키는 데이터에 액세스할 수 있고, 이 값 또는 예상 양으로부터 도출된 값을 요청에 대한 요청된 용량의 양으로서 사용할 수 있다. 활동들을 활동들에 요구되는 용량의 예상 양들과 상관시키는 데이터는 활동들을 실행하는 온라인 엔티티들의 과거 사례들 및 이러한 사례들에서 얼마나 많은 용량이 사용되었는지에 기초하여 결정될 수 있다.
단계 306에서, 공유 자원 관리자는 요청 엔티티의 상대적인 우선순위를 식별한다. 일부 구현들에서, 상대적인 우선순위는 엔티티의 우선순위 스코어에 의해 표시된다. 다른 구현들에서, 상대적인 우선순위는 엔티티가 할당된 엔티티들의 특정한 계층 또는 그룹에 의해 표시된다. 요청 엔티티의 우선순위는 공유 컴퓨팅 자원을 사용하여 활동들을 실행하도록 등록되는 다른 온라인 엔티티들에 대한 엔티티의 상대적 중요성을 나타낼 수 있다. 일부 구현들에서, 우선순위들을 엔티티들에 할당하는 것은 자원을 사용할 수 있는 엔티티들의 세트 사이에 공유 컴퓨팅 자원의 유한 용량을 할당하기 위한 기초를 제공한다.
단계 308에서, 공유 자원 관리자는 온라인 엔티티의 상대적인 우선순위에 대응하는 예약 구간의 용량 한계들을 결정한다. 대응하는 예약 구간의 한계들은 공유 컴퓨팅 자원의 예약 가능 용량의 최대량이 활동 요청을 발행한 온라인 엔티티에 이용 가능하다는 것을 나타낼 수 있다. 예약 구간의 크기는 요청 엔티티의 상대적인 우선순위에 비례할 수 있다. 예를 들어, 더 높은 계층 엔티티는 더 낮은 계층 엔티티보다 더 많은 용량을 예약하도록 허용될 수 있다. 일부 구현들에서, 공유 자원 관리자는 다수의 우선순위 계층에 걸친 엔티티들에 의한 공유 자원의 완전하고 효율적인 이용을 촉진하기 위해 특정 시간들에 예약 구간들의 한계들을 동적으로 업데이트하는 최적화 엔진으로부터 대응하는 예약 구간의 한계들을 결정한다.
단계 310에서, 공유 자원 관리자는 요청된 용량의 양을 요청 엔티티에 대한 대응하는 예약 구간의 한계들과 비교한다. 특히, 공유 자원 관리자는 요청된 용량의 양이 예약 구간에 의해 지정되는 공유 자원의 미사용 용량의 양보다 적거나, 일부 구현들에서는 동일하도록 요청된 용량의 양이 대응하는 예약 구간 내에 있는지를 결정한다. 공유 자원 관리자는 선택적으로 또한, 요청된 용량의 양을 하나 이상의 다른 적용 가능한 용량 한계들, 예를 들어 대응하는 예약 구간의 한계보다 적을 수 있는, 요청 엔티티에 의해 자체 부과된 한계와 비교할 수 있다.
요청된 용량의 양이 요청 엔티티에 대한 대응하는 예약 구간의 한계들 내에 있는 경우, 공유 자원 관리자는 요청을 승인할 수 있다(단계 312). 엔티티가 용량을 즉시 요청한 경우, 자원 관리자는 의도적인 지연 없이 용량을 할당하도록 진행할 수 있고, 공유 자원은 요청된 활동을 실행한다(단계 318). 활동 요청이 장래의 시간에 용량을 위한 사전 예약을 행하는 것인 경우, 자원 관리자는 장래의 시간에 요청된 용량을 할당하도록 스케줄링할 수 있다(단계 316). 해당 시간이 도달할 때, 자원 관리자는 요청된 용량을 할당하고, 공유 자원은 요청된 활동을 실행한다. 그러나, 요청된 용량의 양이 요청 엔티티에 대한 대응하는 예약 구간의 한계들 밖에 있는 경우, 공유 자원 관리자는 요청을 거부하고, 요청된 활동에 대한 용량의 할당을 차단할 수 있다(단계 314).
도 4는 각자가 관련 플랫폼-부과 용량 한계들 및 선택적으로 플랫폼-부과 한계들 내의 추가적인 용량 한계들을 갖는 예약 구간들(402-410)의 세트의 개념적인 도면이다. 도 1-3과 관련하여 설명된 바와 같이, 용량 관리 시스템은 예약 구간들을 정의하고, 공유 컴퓨팅 자원의 이용을 최적화하기 위해 그의 한계들을 동적으로 조정할 수 있다. 일부 구현들에서, 시스템은 주어진 우선순위 계층 내의 엔티티로 하여금 엔티티가 속하는 전체 계층에 할당된 예약 가능 용량의 전체 양까지의 용량을 예약하는 것을 허용한다. 예를 들어, 도 1에 도시된 예에서, 계층 1 엔티티는 자원의 미사용 용량의 전체 양을 소비하는 활동에 대한 용량을 예약할 수 있지만, 이러한 요청은 잠재적으로는 제1 엔티티의 활동이 진행중인 동안 다른 엔티티들로부터의 장래의 요청들에 대한 어떠한 이용 가능 용량도 남기지 않을 것이다. 더욱이, 요청의 실행은 엔티티가 공유 자원 상에서의 활동들을 위해 예산을 세운 용량의 양을 초과할 수 있다(확인). 따라서, 일부 구현들에서, 공유 자원의 관리자(예를 들어, 클라우드 플랫폼 운영자), 온라인 엔티티들 자체 또는 이들 양자는 이러한 사용이 자원의 예약 구간들의 한계들 내에서 달리 허용되더라도 자원의 용량의 과도한 사용을 방지할 추가적인 한계들을 부과할 수 있다. 따라서, 도 4에 표현된 각각의 예약 구간(402-410) 아래에는, 각각의 구간에 대한 대응하는 계층들 내의 엔티티들에 대한 자체-부과 용량 한계들 및 플랫폼-부과 용량 한계들(예를 들어, 할당량들)이 있다.
공유 자원 관리자는 활동 요청을 승인할지 또는 거부할지를 결정하기 전에 모든 적용 가능한 한계들을 체크할 수 있다. 예를 들어, 엔티티는 활동 고유 용량 한계, 및 엔티티가 소정 기간에 걸쳐 모든 활동들에 대해 소비할 수 있는 용량의 양을 제한하는 총 용량 한계를 자체 부과할 수 있다. 공유 자원 관리자는 요청된 용량의 양이 개별 활동 고유 한계, 자체 부과 총 용량 한계 및 요청 엔티티의 대응하는 우선순위 계층에 대한 예약 구간의 한계들을 포함하는 모든 적용 가능한 한계들 내에 있다는 것을 검증할 수 있다. 요청이 모든 적용 가능한 한계들을 충족시키는 경우에만, 공유 자원 관리자는 요청에 대한 용량을 승인한다. 일부 구현들에서, 공유 자원의 관리자는 또한 개별적인 엔티티가 예약할 수 있거나 개별적인 활동을 위해 예약될 수 있는 예약 구간 내의 용량의 공유를 제한하는 한계들과 같은 추가적인 한계들을 부과할 수 있다. 예를 들어, 플랫폼은 임의의 엔티티가 엔티티에 대한 대응하는 예약 구간 내의 용량의 90 퍼센트 초과 용량을 사용하는 것을 제한할 수 있다. 90 퍼센트보다 많거나 적은 양들도 적절히 할당될 수 있다.
도 5는 예약 구간들의 세트에 대한 최적화된 한계들을 생성하기 위한 예시적인 프로세스(500)의 흐름도이다. 프로세스(500)는 도 1 및 2 각각의 시스템(100 또는 200)과 같은 용량 관리 시스템에 의해 각각 수행될 수 있다.
단계 502에서, 시스템은 예약 구간들의 세트의 한계들을 업데이트하기 위한 트리거링 이벤트를 식별한다. 일부 구현들에서, 트리거링 이벤트는 시스템으로 하여금 주기적으로 예약 구간들의 한계들을 업데이트하게 하도록 설정되는 타이머의 만료이다. 일부 구현들에서, 트리거링 이벤트는 수신된 활동 요청들과 관련된 미리 정의된 이벤트들의 검출 및 공유 컴퓨팅 자원의 실제 사용에 기초한다. 예를 들어, 고정 기간 동안 수신된 요청된 용량의 양 사이의 차이가 그 기간 동안의 예측 용량의 양을 임계량 만큼 초과하거나 적은 경우, 시스템은 예상 및 실제 조건들의 차이를 고려하기 위해 예약 구간들의 한계들을 조정할 수 있다. 일부 구현들에서, 각각의 수신된 활동 요청에 응답하여 새로운 한계들이 생성될 수 있다.
단계 504에서, 시스템은 자원 사용 예측을 결정한다. 일부 구현들에서, 이 단계는 공유 자원 사용 예측 엔진, 예를 들어 예측 엔진(204)에 의해 수행된다. 예측 엔진은 공유 자원에 대한 기존의 예약들 및 사용 이력 데이터를 분석하여, 엔티티들의 세트 내의 각각의 엔티티 또는 그룹들의 세트 내의 엔티티들의 각각의 그룹이 장래의 기간 동안 자원의 얼마나 많은 용량을 사용 및/또는 요청할 가능성이 있는지를 예상한다. 일부 구현들에서, 예측 엔진은 엔티티 또는 엔티티들의 그룹이 확률 밀도 함수에 의해 커버되는 용량들의 범위에 걸쳐 다양한 레벨의 용량을 사용하거나 요청할 상대적 가능성을 나타내는 각각의 엔티티 또는 엔티티들의 그룹에 대한 확률 밀도 함수들을 결정한다.
단계 508에서, 시스템은 적용 가능한 용량 계획을 식별한다. 용량 계획은 온라인 엔티티들에 의한 사용을 위해 액세스 가능하도록 지정되는 공유 자원의 총 용량을 나타낸다.
단계 510에서, 시스템은 예약 구간들에 대한 예약 구간 한계들을 생성한다. 일부 구현들에서, 이 단계는 구간 한계 최적화 엔진, 예를 들어 최적화 엔진(206)에 의해 수행된다. 최적화 엔진은 예측 엔진으로부터의 사용 예측들, 식별된 용량 계획, 및 시스템에 등록된 온라인 엔티티들의 상대적인 우선순위들을 나타내는 데이터를 분석하여, 공유 자원의 이용을 최적화하기 위해 추정되는 예약 구간 한계들을 결정한다. 이어서, 구간 한계들은 공유 자원 관리자, 예를 들어 공유 자원 관리자(208)에 제공될 수 있으며, 공유 자원 관리자는 구간 한계들을 시행하고, 활동 요청들에 작용하여, 요청들을 발행한 엔티티들에 용량이 할당되어야 하는지를 결정한다.
일부 구현들에서, 본 명세서에서 설명되는 기술들은 온라인 엔티티들(예를 들어, 클라우드 플랫폼의 테넌트들)이 그들의 대응하는 예약 구간의 한계들에 의해 달리 허용되는 것보다 추가적인 공유 자원의 용량을 예약하는 것을 허용하도록 확장될 수 있다. 엔티티의 활동 요청이 예약 구간 한계들을 초과함에 따라 달리 거부될 경우, 엔티티는 (예를 들어, 엔티티를 더 높은 우선순위 계층으로 효과적으로 "승진"시키기 위해) 임계치를 넘어 그들의 자원 사용의 값을 향상시키는 동적으로 결정된 추가요금을 지불함으로써 요청이 승인되게 할 기회를 부여받을 수 있다. 유사하게, 시스템은 엔티티가 활동 요청과 함께 입찰을 제출할 용량 경매를 구현할 수 있다. 그 다음, 시스템은 엔티티의 우선순위 및 입찰의 전체적인 평가에 기초하여 요청을 승인하거나 거부하도록 구성될 것이다.
일부 구현들에서, 용량 관리 시스템은 시스템이 자원에 대한 수요가 증가하고 있음을 검출하는 경우에 공유 자원에 대한 추가적인 용량을 주문하도록 구성될 수 있다. 예를 들어, 공유 자원의 예측된 사용이 소정 기간에 걸쳐 자원의 총 이용 가능 용량을 일관되게 초과하는 경우, 시스템은 자동으로 온라인으로 추가 용량을 제공하고, 추가 용량에 대한 주문을 수행하고/하거나, 시스템이 추가 용량으로부터 이익을 얻을 것이라는 것을 관리자에게 알릴 수 있다.
도 6은 본 명세서에서 설명되는 기술들을 구현하는 데 사용될 수 있는 컴퓨팅 디바이스(600) 및 모바일 컴퓨팅 디바이스의 예를 도시한다. 컴퓨팅 디바이스(600)는 랩탑들, 데스크탑들, 워크스테이션들, 개인용 휴대 단말기들, 서버들, 블레이드 서버들, 메인프레임들 및 다른 적절한 컴퓨터들과 같은 다양한 형태의 디지털 컴퓨터들을 나타내는 것으로 의도된다. 모바일 컴퓨팅 디바이스는 개인용 휴대 단말기들, 셀룰러 전화들, 스마트폰들 및 다른 유사한 컴퓨팅 디바이스들과 같은 다양한 형태의 모바일 디바이스들을 나타내는 것으로 의도된다. 여기서 도시된 컴포넌트들, 그들의 접속들 및 관계들, 및 그들의 기능들은 예시적인 것을 의도할 뿐이며, 본 명세서에서 설명 및/또는 청구되는 발명들의 구현들을 한정하는 것을 의도하지는 않는다.
컴퓨팅 디바이스(600)는 프로세서(602), 메모리(604), 저장 디바이스(606), 메모리(604) 및 다수의 고속 확장 포트(610)에 접속되는 고속 인터페이스(608), 및 저속 확장 포트(614) 및 저장 디바이스(606)에 접속되는 저속 인터페이스(612)를 포함한다. 프로세서(602), 메모리(604), 저장 디바이스(606), 고속 인터페이스(608), 고속 확장 포트들(610) 및 저속 인터페이스(612) 각각은 다양한 버스들을 사용하여 상호접속되고, 공통 마더보드 상에 또는 다른 방식들로 적절히 장착될 수 있다. 프로세서(602)는 고속 인터페이스(608)에 결합된 디스플레이(616)와 같은 외부 입출력 디바이스 상에 GUI에 대한 그래픽 정보를 디스플레이하기 위해 메모리(604) 내에 또는 저장 디바이스(606) 상에 저장된 명령어들을 포함하여, 컴퓨팅 디바이스(600) 내에서의 실행을 위한 명령어들을 처리할 수 있다. 다른 구현들에서는, 다수의 프로세서 및/또는 다수의 버스가 다수의 메모리 및 메모리 타입과 함께 적절히 사용될 수 있다. 또한, 다수의 컴퓨팅 디바이스가 접속될 수 있으며, 각각의 디바이스는 (예를 들어, 서버 뱅크, 블레이드 서버들의 그룹 또는 멀티프로세서 시스템으로서) 필요한 동작들의 부분들을 제공한다.
메모리(604)는 컴퓨팅 디바이스(600) 내의 정보를 저장한다. 일부 구현들에서, 메모리(604)는 휘발성 메모리 유닛 또는 유닛들이다. 일부 구현들에서, 메모리(604)는 비휘발성 메모리 유닛 또는 유닛들이다. 메모리(604)는 또한 자기 또는 광 디스크와 같은 다른 형태의 컴퓨터 판독가능 매체일 수 있다.
저장 디바이스(606)는 컴퓨팅 디바이스(600)에 대한 대용량 저장소를 제공할 수 있다. 일부 구현들에서, 저장 디바이스(606)는 플로피 디스크 디바이스, 하드 디스크 디바이스, 광 디스크 디바이스 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 고체 상태 메모리 디바이스, 또는 저장 영역 네트워크 또는 다른 구성들의 디바이스들을 포함하는 디바이스들의 어레이와 같은 컴퓨터 판독가능 매체일 수 있거나 이들을 포함할 수 있다. 컴퓨터 프로그램 제품은 또한, 실행될 때, 전술한 것들과 같은 하나 이상의 방법들을 수행하는 명령어들을 포함할 수 있다. 컴퓨터 프로그램 제품은 또한 메모리(604), 저장 디바이스(606) 또는 프로세서(602) 상의 메모리와 같은 컴퓨터 또는 기계 판독가능 매체에 유형적으로 구현될 수 있다.
고속 인터페이스(608)는 컴퓨팅 디바이스(600)에 대한 대역폭 집약 동작들을 관리하는 반면, 저속 인터페이스(612)는 더 낮은 대역폭 집약 동작들을 관리한다. 기능들의 이러한 할당들은 단지 예시적이다. 일부 구현들에서, 고속 인터페이스(608)는 메모리(604), 디스플레이(616)에 (예를 들어, 그래픽 프로세서 또는 가속기를 통해) 그리고 다양한 확장 카드들(도시되지 않음)을 수용할 수 있는 고속 확장 포트들(610)에 결합된다. 구현에서, 저속 인터페이스(612)는 저장 디바이스(606) 및 저속 확장 포트(614)에 결합된다. 다양한 통신 포트들(예를 들어, USB, 블루투스, 이더넷, 무선 이더넷)을 포함할 수 있는 저속 확장 포트(614)는 예를 들어 네트워크 어댑터를 통해 키보드, 포인팅 디바이스, 스캐너 또는 네트워킹 디바이스, 예를 들어 스위치 또는 라우터와 같은 하나 이상의 입출력 디바이스들에 결합될 수 있다.
컴퓨팅 디바이스(600)는 도면에 도시된 바와 같이 다수의 상이한 형태로 구현될 수 있다. 예를 들어, 이것은 표준 서버(620)로서, 또는 이러한 서버들의 그룹에서 여러 번 구현될 수 있다. 또한, 이것은 랩탑 컴퓨터(622)와 같은 개인용 컴퓨터에서 구현될 수 있다. 이것은 또한 랙(rack) 서버 시스템(624)의 일부로서 구현될 수 있다. 대안적으로, 컴퓨팅 디바이스(600)로부터의 컴포넌트들은 모바일 컴퓨팅 디바이스(650)와 같은 모바일 디바이스(도시되지 않음) 내의 다른 컴포넌트들과 결합될 수 있다. 이러한 디바이스들 각각은 컴퓨팅 디바이스(600) 및 모바일 컴퓨팅 디바이스(650) 중 하나 이상을 포함할 수 있고, 전체 시스템은 서로 통신하는 다수의 컴퓨팅 디바이스로 구성될 수 있다.
모바일 컴퓨팅 디바이스(650)는 많은 컴포넌트 중에서 특히 프로세서(652), 메모리(664), 디스플레이(654)와 같은 입출력 디바이스, 통신 인터페이스(666) 및 송수신기(668)를 포함한다. 모바일 컴퓨팅 디바이스(650)는 또한 추가적인 저장소를 제공하기 위해 마이크로-드라이브 또는 다른 디바이스와 같은 저장 디바이스를 구비할 수 있다. 프로세서(652), 메모리(664), 디스플레이(654), 통신 인터페이스(666) 및 송수신기(668) 각각은 다양한 버스들을 사용하여 상호접속되고, 컴포넌트들 중 몇몇은 공통 마더보드 상에 또는 다른 방식들로 적절히 장착될 수 있다.
프로세서(652)는 메모리(664)에 저장된 명령어들을 포함하여, 모바일 컴퓨팅 디바이스(650) 내의 명령어들을 실행할 수 있다. 프로세서(652)는 별개의 그리고 다수의 아날로그 및 디지털 프로세서들을 포함하는 칩들의 칩셋으로서 구현될 수 있다. 프로세서(652)는 예를 들어 사용자 인터페이스들의 제어, 모바일 컴퓨팅 디바이스(650)에 의해 실행되는 애플리케이션들, 및 모바일 컴퓨팅 디바이스(650)에 의한 무선 통신과 같은, 모바일 컴퓨팅 디바이스(650)의 다른 컴포넌트들의 조정을 제공할 수 있다.
프로세서(652)는 디스플레이(654)에 결합된 제어 인터페이스(658) 및 디스플레이 인터페이스(656)를 통해 사용자와 통신할 수 있다. 디스플레이(654)는 예를 들어 TFT(Thin-Film-Transistor Liquid Crystal Display) 디스플레이 또는 OLED(Organic Light Emitting Diode) 디스플레이 또는 다른 적절한 디스플레이 기술일 수 있다. 디스플레이 인터페이스(656)는 그래픽 및 다른 정보를 사용자에게 제시하기 위해 디스플레이(654)를 구동하기 위한 적절한 회로를 포함할 수 있다. 제어 인터페이스(658)는 사용자로부터 커맨드들을 수신할 수 있고, 이들을 프로세서(652)로의 제출을 위해 변환할 수 있다. 또한, 외부 인터페이스(662)는 모바일 컴퓨팅 디바이스(650)와 다른 디바이스들의 근거리 통신을 가능하게 하기 위해 프로세서(652)와의 통신을 제공할 수 있다. 외부 인터페이스(662)는 예를 들어 일부 구현들에서 유선 통신을 또는 다른 구현들에서 무선 통신을 제공할 수 있고, 다수의 인터페이스가 또한 사용될 수 있다.
메모리(664)는 모바일 컴퓨팅 디바이스(650) 내의 정보를 저장한다. 메모리(664)는 컴퓨터 판독가능 매체 또는 매체들, 휘발성 메모리 유닛 또는 유닛들 또는 비휘발성 메모리 유닛 또는 유닛들 중 하나 이상으로서 구현될 수 있다. 확장 메모리(674)는 또한 예를 들어 SIMM(Single In Line Memory Module) 카드 인터페이스를 포함할 수 있는 확장 인터페이스(672)를 통해 모바일 컴퓨팅 디바이스(650)에 제공되고 접속될 수 있다. 확장 메모리(674)는 모바일 컴퓨팅 디바이스(650)에 대한 여분의 저장 공간을 제공할 수 있거나, 또한 모바일 컴퓨팅 디바이스(650)에 대한 애플리케이션들 또는 다른 정보를 저장할 수 있다. 특히, 확장 메모리(674)는 위에서 설명된 프로세스들을 수행하거나 보완하기 위한 명령어들을 포함할 수 있고, 보안 정보도 포함할 수 있다. 따라서, 예를 들어, 확장 메모리(674)는 모바일 컴퓨팅 디바이스(650)에 대한 보안 모듈로서 제공될 수 있고, 모바일 컴퓨팅 디바이스(650)의 보안 사용을 허용하는 명령어들로 프로그래밍될 수 있다. 또한, 보안 애플리케이션들은 해킹 불가능한 방식으로 SIMM 카드 상에 식별 정보를 배치하는 것과 같이 추가적인 정보와 함께 SIMM 카드들을 통해 제공될 수 있다.
메모리는 예를 들어 아래 논의되는 바와 같이 플래시 메모리 및/또는 NVRAM 메모리(non-volatile random access memory)를 포함할 수 있다. 컴퓨터 프로그램 제품은 실행될 때 위에서 설명된 것들과 같은 하나 이상의 방법들을 수행하는 명령어들을 포함한다. 컴퓨터 프로그램 제품은 메모리(664), 확장 메모리(674) 또는 프로세서(652) 상의 메모리와 같은 컴퓨터 또는 기계 판독가능 매체일 수 있다. 일부 구현들에서, 컴퓨터 프로그램 제품은 전파 신호에서, 예를 들어 송수신기(668) 또는 외부 인터페이스(662)를 통해 수신될 수 있다.
모바일 컴퓨팅 디바이스(650)는 필요한 경우 디지털 신호 처리 회로를 포함할 수 있는 통신 인터페이스(666)를 통해 무선으로 통신할 수 있다. 통신 인터페이스(666)는 많은 가운데 특히 GSM 음성 통화(Global System for Mobile communications), SMS(Short Message Service), EMS(Enhanced Messaging Service), 또는 MMS 메시징(Multimedia Messaging Service), CDMA(code division multiple access), TDMA(time division multiple access), PDC(Personal Digital Cellular), WCDMA(Wideband Code Division Multiple Access), CDMA 2000, 또는 GPRS(General Packet Radio Service)와 같은 다양한 모드들 또는 프로토콜들 하에서 통신을 제공할 수 있다. 이러한 통신은 예를 들어 무선 주파수를 사용하여 송수신기(668)를 통해 발생할 수 있다. 또한, 단거리 통신이 예를 들어 블루투스, 와이파이 또는 다른 그러한 송수신기(도시되지 않음)를 사용하여 발생할 수 있다. 또한, GPS(Global Positioning System) 수신기 모듈(670)은 모바일 컴퓨팅 디바이스(650) 상에서 실행되는 애플리케이션들에 의해 적절하게 사용될 수 있는 추가적인 내비게이션 및 위치 관련 무선 데이터를 모바일 컴퓨팅 디바이스(650)에 제공할 수 있다.
모바일 컴퓨팅 디바이스(650)는 또한 사용자로부터 구두 정보를 수신하고 이를 사용 가능한 디지털 정보로 변환할 수 있는 오디오 코덱(660)을 사용하여 청각적으로 통신할 수 있다. 오디오 코덱(660)은 또한 예를 들어 모바일 컴퓨팅 디바이스(650)의 핸드셋에서 예를 들어 스피커를 통해 사용자에 대한 가청 사운드를 생성할 수 있다. 이러한 사운드는 음성 전화 통화들로부터의 사운드를 포함할 수 있고, 녹음된 사운드(예를 들어, 음성 메시지들, 음악 파일들 등)를 포함할 수 있고, 모바일 컴퓨팅 디바이스(650) 상에서 동작하는 애플리케이션들에 의해 생성된 사운드를 또한 포함할 수 있다.
모바일 컴퓨팅 디바이스(650)는 도면에 도시된 바와 같이 다수의 상이한 형태로 구현될 수 있다. 예를 들어, 이것은 셀룰러 전화(680)로서 구현될 수 있다. 이것은 또한 스마트폰(682), 개인용 휴대 단말기 또는 다른 유사한 모바일 디바이스의 일부로서 구현될 수 있다.
본 명세서에서 설명되는 시스템들 및 기술들의 다양한 구현들은 디지털 전자 회로, 집적 회로, 특수 설계 ASIC들(application specific integrated circuits), 컴퓨터 하드웨어, 펌웨어, 소프트웨어 및/또는 이들의 조합들에서 실현될 수 있다. 이러한 다양한 구현들은, 특수 목적 또는 범용일 수 있고, 저장 시스템으로부터 데이터 및 명령어들을 수신하고 데이터 및 명령어들을 저장 시스템으로 전송하도록 결합될 수 있는 적어도 하나의 프로그래밍 가능 프로세서, 적어도 하나의 입력 디바이스 및 적어도 하나의 출력 디바이스를 포함하는 프로그래밍 가능 시스템 상에서 실행 및/또는 해석 가능한 하나 이상의 컴퓨터 프로그램들에서의 구현을 포함할 수 있다.
이러한 컴퓨터 프로그램들(프로그램들, 소프트웨어, 소프트웨어 애플리케이션들 또는 코드로도 알려짐)은 프로그래밍 가능 프로세서에 대한 기계 명령어들을 포함하고, 하이 레벨 절차 및/또는 객체 지향 프로그래밍 언어로 그리고/또는 어셈블리/기계어로 구현될 수 있다. 본 명세서에서 사용되는 바와 같이, 기계 판독가능 매체 및 컴퓨터 판독가능 매체라는 용어들은 기계 명령어들을 기계 판독가능 신호로서 수신하는 기계 판독가능 매체를 포함하여, 프로그래밍 가능 프로세서에 기계 명령어들 및/또는 데이터를 제공하는 데 사용되는 임의의 컴퓨터 프로그램 제품, 장치 및/또는 디바이스(예를 들어, 자기 디스크들, 광 디스크들, 메모리, 프로그래밍 가능 논리 디바이스들(PLD들))를 지칭한다. 기계 판독가능 신호라는 용어는 프로그래밍 가능 프로세서에 기계 명령어들 및/또는 데이터를 제공하는 데 사용되는 임의의 신호를 지칭한다.
사용자와의 상호작용을 제공하기 위해, 본 명세서에서 설명되는 시스템들 및 기술들은 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스(예컨대, CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터) 및 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스(예컨대, 마우스 또는 트랙볼)를 갖는 컴퓨터 상에서 구현될 수 있다. 다른 종류의 디바이스들도 사용자와의 상호작용을 제공하기 위해 사용될 수 있으며; 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 감각 피드백(예컨대, 시각 피드백, 청각 피드백 또는 촉각 피드백)일 수 있고; 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다.
본 명세서에서 설명되는 시스템들 및 기술들은 백엔드 컴포넌트(예컨대, 데이터 서버)를 포함하거나 미들웨어 컴포넌트(예컨대, 애플리케이션 서버)를 포함하거나 프론트엔드 컴포넌트(예컨대, 사용자가 본 명세서에서 설명되는 시스템들 및 기술들의 구현과 상호작용할 수 있는 그래픽 사용자 인터페이스 또는 웹 브라우저를 갖는 클라이언트 컴퓨터)를 포함하거나 이러한 백엔드, 미들웨어 또는 프론트엔드 컴포넌트들의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트들은 디지털 데이터 통신의 임의의 형태 또는 매체(예를 들어, 통신 네트워크)에 의해 상호접속될 수 있다. 통신 네트워크들의 예들은 근거리 네트워크(LAN), 광역 네트워크(WAN) 및 인터넷을 포함한다.
컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 떨어져 있고, 통상적으로 통신 네트워크를 통해 상호작용한다. 클라이언트와 서버의 관계는 컴퓨터 프로그램들이 개개의 컴퓨터들 상에서 실행되고 서로 클라이언트-서버 관계를 가짐으로써 발생한다.
본 명세서에서 사용되는 바와 같이, "엔진" 또는 "소프트웨어 엔진"은 입력과 상이한 출력을 제공하는 소프트웨어 구현 입출력 시스템을 지칭한다. 엔진은 라이브러리, 플랫폼, 소프트웨어 개발 키트("SDK") 또는 객체와 같은 인코딩된 기능 블록일 수 있다. 각각의 엔진은 임의의 적절한 타입의 컴퓨팅 디바이스, 예를 들어 서버들, 모바일 폰들, 태블릿 컴퓨터들, 노트북 컴퓨터들, 음악 플레이어들, 전자 서적 리더들, 랩탑 또는 데스크탑 컴퓨터들, PDA들, 스마트폰들, 또는 하나 이상의 프로세서들 및 컴퓨터 판독가능 매체를 포함하는 다른 고정 또는 휴대용 디바이스들 상에서 구현될 수 있다. 또한, 엔진들 중 2 개 이상은 동일한 컴퓨팅 디바이스 상에서 또는 상이한 컴퓨팅 디바이스들 상에서 구현될 수 있다.
본 명세서의 시스템들, 방법들, 디바이스들 및 다른 기술들이 사용자들에 관한 개인 정보(예를 들어, 상황 데이터)를 수집하거나, 개인 정보를 이용할 수 있는 상황들에서, 사용자들은 프로그램들 또는 특징들이 사용자 정보(예를 들어, 사용자의 소셜 네트워크, 소셜 액션들 또는 활동들, 직업, 사용자의 선호들, 또는 사용자의 현재 위치에 관한 정보)를 수집할지를 제어하거나, 사용자와 더 관련될 수 있는 콘텐츠를 콘텐츠 서버로부터 수신할지 및/또는 어떻게 수신할지를 제어할 기회를 제공받을 수 있다. 또한, 소정의 데이터는 저장되거나 사용되기 전에 하나 이상의 방식들로 처리되어, 개인적으로 식별 가능한 정보가 제거될 수 있다. 예를 들어, 사용자의 아이덴티티는 어떠한 개인적으로 식별 가능한 정보도 사용자에 대해 결정될 수 없도록 처리될 수 있거나, (도시, ZIP 코드 또는 주 레벨과 같은) 위치 정보가 획득되는 사용자의 지리적 위치가 일반화될 수 있어서, 사용자의 특정 위치가 결정될 수 없게 된다. 따라서, 사용자는 사용자에 관한 정보가 어떻게 수집되고 콘텐츠 서버에 의해 사용되는지를 제어할 수 있다.
다양한 구현들이 위에서 상세히 설명되었지만, 다른 수정들이 가능하다. 또한, 도면들에 도시된 논리 흐름들은 바람직한 결과들을 달성하기 위해 도시한 특정 순서 또는 순차적 순서를 요구하지는 않는다. 또한, 다른 단계들이 제공될 수 있거나, 단계들이 설명된 흐름들로부터 제거될 수 있고, 다른 컴포넌트들이 설명된 시스템들에 추가되거나 그들로부터 제거될 수 있다. 따라서, 다른 구현들은 아래 청구항들의 범위에 있다.

Claims (20)

  1. 데이터 처리 하드웨어 상에서 실행될 때 상기 데이터 처리 하드웨어로 하여금 동작들을 수행하게 하는 컴퓨터-구현되는 방법으로서,
    상기 동작들은:
    복수의 온라인 엔티티들 중 하나의 온라인 엔티티로부터, 상기 복수의 온라인 엔티티들에 의해 공유되는 컴퓨팅 자원의 요청되는 용량의 양을 수신하는 것 ― 상기 컴퓨팅 자원은 자원 용량 한계를 포함함 ―;
    복수의 예약 구간(reservation zone)들로부터 상기 온라인 엔티티에 대응하는 예약 구간을 식별하는 것 ― 상기 복수의 예약 구간들의 각각의 예약 구간은 대응하는 온라인 엔티티들에 의해 예약될 수 있는 상기 컴퓨팅 자원의 미사용 용량의 최대량을 지정하고, 상기 복수의 예약 구간들의 각각의 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량의 합계는 상기 컴퓨팅 자원의 상기 자원 용량 한계를 초과함 ―;
    상기 컴퓨팅 자원의 상기 요청되는 용량의 양이 상기 식별된 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량보다 적은지 여부를 결정하는 것; 및
    상기 컴퓨팅 자원의 상기 요청되는 용량의 양이 상기 식별된 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량보다 적다고 결정하는 것에 응답하여, 상기 온라인 엔티티에 상기 컴퓨팅 자원의 상기 요청되는 용량의 양을 할당하는 것
    을 포함하는, 컴퓨터-구현되는 방법.
  2. 제1항에 있어서,
    상기 복수의 온라인 엔티티들 사이에서 공유되는 컴퓨팅 자원은:
    공유 네트워크 자원;
    공유 서버 자원;
    공유 저장 자원;
    공유 애플리케이션 자원; 또는
    클라우드-기반 플랫폼에서의 공유 서비스 자원
    중 적어도 하나를 포함하는, 컴퓨터-구현되는 방법.
  3. 제1항에 있어서,
    상기 동작들은, 상기 컴퓨팅 자원의 상기 요청되는 용량의 양이 상기 식별된 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량보다 많다고 결정하는 것을 더 포함하는, 컴퓨터-구현되는 방법.
  4. 제3항에 있어서,
    상기 동작들은, 상기 컴퓨팅 자원의 상기 요청되는 용량의 양이 상기 식별된 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량보다 많다고 결정하는 것에 응답하여:
    상기 식별된 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량을 증가시키는 것; 및
    상기 식별된 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량을 증가시킨 후에, 상기 온라인 엔티티에 상기 컴퓨팅 자원의 상기 요청되는 용량의 양을 할당하는 것
    을 더 포함하는, 컴퓨터-구현되는 방법.
  5. 제3항에 있어서,
    상기 동작들은, 상기 컴퓨팅 자원의 상기 요청되는 용량의 양이 상기 식별된 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량보다 많다고 결정한 후에:
    상기 식별된 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량을 증가시키기 위한 입찰(bid)을 상기 온라인 엔티티로부터 수신하는 것;
    상기 식별된 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량을 증가시키는 것; 및
    상기 식별된 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량을 증가시킨 후에, 상기 온라인 엔티티에 상기 컴퓨팅 자원의 상기 요청되는 용량의 양을 할당하는 것
    을 더 포함하는, 컴퓨터-구현되는 방법.
  6. 제1항에 있어서,
    상기 동작들은:
    상기 복수의 온라인 엔티티들 각각에 우선순위 스코어를 할당하는 것 ― 상기 우선순위 스코어는 상기 온라인 엔티티의 중요성의 척도(measure of significance)를 나타냄 ―; 및
    우선순위 스코어들에 기초하여 상기 복수의 온라인 엔티티들을 복수의 온라인 엔티티 그룹들로 분류하는 것
    을 더 포함하고,
    각각의 온라인 엔티티 그룹은 상기 온라인 엔티티 그룹의 중요성의 척도를 나타내는 우선순위에 기인하는, 컴퓨터-구현되는 방법.
  7. 제1항에 있어서,
    상기 온라인 엔티티에 상기 컴퓨팅 자원의 상기 요청되는 용량의 양을 할당하는 것은 상기 컴퓨팅 자원의 상기 요청되는 용량의 양에 대한 사전 예약을 수행하는 것을 포함하는, 컴퓨터-구현되는 방법.
  8. 제1항에 있어서,
    상기 동작들은, 상기 온라인 엔티티로부터 자체-부과된 용량 한계를 수신하는 것을 더 포함하는, 컴퓨터-구현되는 방법.
  9. 제8항에 있어서,
    상기 동작들은, 상기 컴퓨팅 자원의 상기 요청되는 용량의 양이 상기 식별된 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량 및 상기 온라인 엔티티의 상기 자체-부과된 용량 한계보다 적은지 여부를 결정하는 것을 더 포함하는, 컴퓨터-구현되는 방법.
  10. 제1항에 있어서,
    상기 컴퓨팅 자원의 상기 자원 용량 한계는 상기 컴퓨팅 자원의 물리적 크기에 의해 제한되는, 컴퓨터-구현되는 방법.
  11. 시스템으로서,
    데이터 처리 하드웨어; 및
    상기 데이터 처리 하드웨어와 통신하는 메모리 하드웨어를 포함하고,
    상기 메모리 하드웨어는 상기 데이터 처리 하드웨어 상에서 실행될 때 상기 데이터 처리 하드웨어로 하여금 동작들을 수행하게 하는 명령들을 저장하고,
    상기 동작들은:
    복수의 온라인 엔티티들 중 하나의 온라인 엔티티로부터, 상기 복수의 온라인 엔티티들에 의해 공유되는 컴퓨팅 자원의 요청되는 용량의 양을 수신하는 것 ― 상기 컴퓨팅 자원은 자원 용량 한계를 포함함 ―;
    복수의 예약 구간들로부터 상기 온라인 엔티티에 대응하는 예약 구간을 식별하는 것 ― 상기 복수의 예약 구간들의 각각의 예약 구간은 대응하는 온라인 엔티티들에 의해 예약될 수 있는 상기 컴퓨팅 자원의 미사용 용량의 최대량을 지정하고, 상기 복수의 예약 구간들의 각각의 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량의 합계는 상기 컴퓨팅 자원의 상기 자원 용량 한계를 초과함 ―;
    상기 컴퓨팅 자원의 상기 요청되는 용량의 양이 상기 식별된 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량보다 적은지 여부를 결정하는 것; 및
    상기 컴퓨팅 자원의 상기 요청되는 용량의 양이 상기 식별된 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량보다 적다고 결정하는 것에 응답하여, 상기 온라인 엔티티에 상기 컴퓨팅 자원의 상기 요청되는 용량의 양을 할당하는 것
    을 포함하는, 시스템.
  12. 제11항에 있어서,
    상기 복수의 온라인 엔티티들 사이에서 공유되는 컴퓨팅 자원은:
    공유 네트워크 자원;
    공유 서버 자원;
    공유 저장 자원;
    공유 애플리케이션 자원; 또는
    클라우드-기반 플랫폼에서의 공유 서비스 자원
    중 적어도 하나를 포함하는, 시스템.
  13. 제11항에 있어서,
    상기 동작들은, 상기 컴퓨팅 자원의 상기 요청되는 용량의 양이 상기 식별된 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량보다 많다고 결정하는 것을 더 포함하는, 시스템.
  14. 제13항에 있어서,
    상기 동작들은, 상기 컴퓨팅 자원의 상기 요청되는 용량의 양이 상기 식별된 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량보다 많다고 결정하는 것에 응답하여:
    상기 식별된 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량을 증가시키는 것; 및
    상기 식별된 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량을 증가시킨 후에, 상기 온라인 엔티티에 상기 컴퓨팅 자원의 상기 요청되는 용량의 양을 할당하는 것
    을 더 포함하는, 시스템.
  15. 제13항에 있어서,
    상기 동작들은, 상기 컴퓨팅 자원의 상기 요청되는 용량의 양이 상기 식별된 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량보다 많다고 결정한 후에:
    상기 식별된 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량을 증가시키기 위한 입찰을 상기 온라인 엔티티로부터 수신하는 것;
    상기 식별된 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량을 증가시키는 것; 및
    상기 식별된 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량을 증가시킨 후에, 상기 온라인 엔티티에 상기 컴퓨팅 자원의 상기 요청되는 용량의 양을 할당하는 것
    을 더 포함하는, 시스템.
  16. 제11항에 있어서,
    상기 동작들은:
    상기 복수의 온라인 엔티티들 각각에 우선순위 스코어를 할당하는 것― 상기 우선순위 스코어는 상기 온라인 엔티티의 중요성의 척도를 나타냄 ―; 및
    우선순위 스코어들에 기초하여 상기 복수의 온라인 엔티티들을 복수의 온라인 엔티티 그룹들로 분류하는 것
    을 더 포함하고,
    각각의 온라인 엔티티 그룹은 상기 온라인 엔티티 그룹의 중요성의 척도를 나타내는 우선순위에 기인하는, 시스템.
  17. 제11항에 있어서,
    상기 온라인 엔티티에 상기 컴퓨팅 자원의 상기 요청되는 용량의 양을 할당하는 것은 상기 컴퓨팅 자원의 상기 요청되는 용량의 양에 대한 사전 예약을 수행하는 것을 포함하는, 시스템.
  18. 제11항에 있어서,
    상기 동작들은, 상기 온라인 엔티티로부터 자체-부과된 용량 한계를 수신하는 것을 더 포함하는, 시스템.
  19. 제18항에 있어서,
    상기 동작들은, 상기 컴퓨팅 자원의 상기 요청되는 용량의 양이 상기 식별된 예약 구간에 의해 지정되는 미사용 용량의 상기 최대량 및 상기 온라인 엔티티의 상기 자체-부과된 용량 한계보다 적은지 여부를 결정하는 것을 더 포함하는, 시스템.
  20. 제11항에 있어서,
    상기 컴퓨팅 자원의 상기 자원 용량 한계는 상기 컴퓨팅 자원의 물리적 크기에 의해 제한되는, 시스템.
KR1020217033248A 2017-12-14 2017-12-14 공유 컴퓨팅 자원들에 대한 동적 용량 최적화 KR102438621B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/US2017/066426 WO2019117921A1 (en) 2017-12-14 2017-12-14 Dynamic capacity optimization for shared computing resources
KR1020197034248A KR102315784B1 (ko) 2017-12-14 2017-12-14 공유 컴퓨팅 자원들에 대한 동적 용량 최적화

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020197034248A Division KR102315784B1 (ko) 2017-12-14 2017-12-14 공유 컴퓨팅 자원들에 대한 동적 용량 최적화

Publications (2)

Publication Number Publication Date
KR20210127822A KR20210127822A (ko) 2021-10-22
KR102438621B1 true KR102438621B1 (ko) 2022-08-30

Family

ID=60935991

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020217033248A KR102438621B1 (ko) 2017-12-14 2017-12-14 공유 컴퓨팅 자원들에 대한 동적 용량 최적화
KR1020197034248A KR102315784B1 (ko) 2017-12-14 2017-12-14 공유 컴퓨팅 자원들에 대한 동적 용량 최적화

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020197034248A KR102315784B1 (ko) 2017-12-14 2017-12-14 공유 컴퓨팅 자원들에 대한 동적 용량 최적화

Country Status (5)

Country Link
US (2) US11609796B2 (ko)
EP (3) EP4187385A1 (ko)
KR (2) KR102438621B1 (ko)
CN (2) CN111433745B (ko)
WO (1) WO2019117921A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102260547B1 (ko) * 2020-09-10 2021-06-04 한국전자기술연구원 분산 협업형 클러스터내 최적합 클러스터 선정 스케줄링 방법
US11900171B2 (en) * 2021-02-02 2024-02-13 Microsoft Technology Licensing, Llc Cloud computing capacity management system using automated fine-grained admission control
US11379752B1 (en) 2021-05-27 2022-07-05 Red Hat, Inc. Qubit reservation service
US11714692B2 (en) 2021-05-27 2023-08-01 Red Hat, Inc. Classical management of qubit requests
US11960943B2 (en) 2021-12-20 2024-04-16 Juniper Networks, Inc. Event log management
EP4198726A1 (en) * 2021-12-20 2023-06-21 Juniper Networks, Inc. Event log management
CN115129466B (zh) * 2022-03-31 2024-05-10 西安电子科技大学 云计算资源分层调度方法、系统、设备及介质
US20230367641A1 (en) * 2022-05-16 2023-11-16 Google Llc Centralized Control For Computing Resource Management
WO2024098333A1 (zh) * 2022-11-10 2024-05-16 华为技术有限公司 调整计算资源的方法、装置及智能驾驶设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080216081A1 (en) * 2005-03-11 2008-09-04 Cluster Resources, Inc. System and Method For Enforcing Future Policies in a Compute Environment
US20130311650A1 (en) 2011-02-28 2013-11-21 Amazon Technologies, Inc. Managing allocation of computing capacity

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030061260A1 (en) * 2001-09-25 2003-03-27 Timesys Corporation Resource reservation and priority management
ATE424073T1 (de) * 2002-03-28 2009-03-15 Operax Ab Verfahren und system zum reservieren von betriebsmitteln in einem ip-netzwerk
EP1424865A1 (en) * 2002-11-29 2004-06-02 Siemens Mobile Communications S.p.A. Method of and device for resource allocation in digital cellular communication systems
US7099974B2 (en) * 2003-03-20 2006-08-29 International Business Machines Corporation Method, apparatus, and system for reducing resource contention in multiprocessor systems
KR100705564B1 (ko) * 2004-12-10 2007-04-10 삼성전자주식회사 네트워크에서의 자원 관리 장치 및 방법
US8091088B2 (en) 2005-02-22 2012-01-03 Microsoft Corporation Method and system for hierarchical resource management involving hard and soft resource limits
PT3444992T (pt) * 2006-02-03 2020-06-17 Guangdong Oppo Mobile Telecommunications Corp Ltd Alocação de recursos de ligação ascendente num sistema de comunicações móveis
US8706858B2 (en) * 2008-04-17 2014-04-22 Alcatel Lucent Method and apparatus for controlling flow of management tasks to management system databases
CN101729379B (zh) * 2008-10-15 2013-02-27 华为技术有限公司 一种城域网接纳控制的方法及设备与系统
CN101715151B (zh) * 2009-11-02 2012-12-19 北京科技大学 一种基于优先级的域间资源预留方法
WO2013001392A1 (en) * 2011-06-29 2013-01-03 International Business Machines Corporation Managing organizational computing resources in accordance with computing environment entitlement contracts
US9479575B2 (en) 2012-03-27 2016-10-25 International Business Machines Corporation Managing capacity on demand in a server cloud
US9466036B1 (en) 2012-05-10 2016-10-11 Amazon Technologies, Inc. Automated reconfiguration of shared network resources
US10686677B1 (en) * 2012-05-18 2020-06-16 Amazon Technologies, Inc. Flexible capacity reservations for network-accessible resources
US8856341B2 (en) 2012-05-31 2014-10-07 Hewlett-Packard Development Company, L.P. Balancing management duties in a cloud system
US10169090B2 (en) * 2012-09-12 2019-01-01 Salesforce.Com, Inc. Facilitating tiered service model-based fair allocation of resources for application servers in multi-tenant environments
US9602426B2 (en) * 2013-06-21 2017-03-21 Microsoft Technology Licensing, Llc Dynamic allocation of resources while considering resource reservations
KR101543835B1 (ko) * 2013-07-09 2015-08-12 인하대학교 산학협력단 클라우드 컴퓨팅 환경에서의 동적 자원 신뢰도 계층 기반의 자원 거래 시스템 및 방법
KR101491689B1 (ko) * 2013-07-24 2015-02-11 한국과학기술정보연구원 다중 사용자를 위한 자원 할당 방법 및 장치
US10366358B1 (en) * 2014-12-19 2019-07-30 Amazon Technologies, Inc. Backlogged computing work exchange
WO2017010922A1 (en) 2015-07-14 2017-01-19 Telefonaktiebolaget Lm Ericsson (Publ) Allocation of cloud computing resources
US20170109815A1 (en) * 2015-10-16 2017-04-20 International Business Machines Corporation On demand auctions of cloud resources (bundles) in hybrid cloud environments
KR102433765B1 (ko) * 2016-04-21 2022-08-18 삼성에스디에스 주식회사 네트워크 기능 가상화 시스템 상의 컴퓨팅 리소스 관리 장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080216081A1 (en) * 2005-03-11 2008-09-04 Cluster Resources, Inc. System and Method For Enforcing Future Policies in a Compute Environment
US20130311650A1 (en) 2011-02-28 2013-11-21 Amazon Technologies, Inc. Managing allocation of computing capacity

Also Published As

Publication number Publication date
KR102315784B1 (ko) 2021-10-20
KR20210127822A (ko) 2021-10-22
CN116860456A (zh) 2023-10-10
EP3789876A1 (en) 2021-03-10
EP3529698B1 (en) 2021-02-03
US20220035682A1 (en) 2022-02-03
CN111433745A (zh) 2020-07-17
US11609796B2 (en) 2023-03-21
EP4187385A1 (en) 2023-05-31
US20200334088A1 (en) 2020-10-22
EP3789876B1 (en) 2023-03-08
KR20190140985A (ko) 2019-12-20
CN111433745B (zh) 2023-08-18
WO2019117921A1 (en) 2019-06-20
EP3529698A1 (en) 2019-08-28

Similar Documents

Publication Publication Date Title
KR102438621B1 (ko) 공유 컴퓨팅 자원들에 대한 동적 용량 최적화
US20220206859A1 (en) System and Method for a Self-Optimizing Reservation in Time of Compute Resources
US9886322B2 (en) System and method for providing advanced reservations in a compute environment
US9298514B2 (en) System and method for enforcing future policies in a compute environment
US8312460B1 (en) Allocating computer resources to workloads using utilization based probability distributions
US9218213B2 (en) Dynamic placement of heterogeneous workloads
EP2357561A1 (en) System and method for providing advanced reservations in a compute environment
US20160316003A1 (en) Balancing resources in distributed computing environments
US11704123B2 (en) Automated orchestration of containers by assessing microservices
US11308428B2 (en) Machine learning-based resource customization to increase user satisfaction
CN107203256B (zh) 一种网络功能虚拟化场景下的节能分配方法与装置
Zhang et al. PRMRAP: A proactive virtual resource management framework in cloud
US20210044497A1 (en) Hybrid approach for rate limiting in distributed systems
Sanad et al. Combining Spot Instances Hopping with Vertical Auto-scaling To Reduce Cloud Leasing Cost
US20230088294A1 (en) Preventing resource exploitation in mobile devices
Golmohammadi et al. A review on workflow scheduling and resource allocation algorithms in distributed mobile clouds

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant