KR102230901B1 - 클라우드 자원 관리를 위한 비율방식의 QoS 지원 방법 및 장치 - Google Patents

클라우드 자원 관리를 위한 비율방식의 QoS 지원 방법 및 장치 Download PDF

Info

Publication number
KR102230901B1
KR102230901B1 KR1020200147592A KR20200147592A KR102230901B1 KR 102230901 B1 KR102230901 B1 KR 102230901B1 KR 1020200147592 A KR1020200147592 A KR 1020200147592A KR 20200147592 A KR20200147592 A KR 20200147592A KR 102230901 B1 KR102230901 B1 KR 102230901B1
Authority
KR
South Korea
Prior art keywords
pods
pod
cloud computing
qos class
classified
Prior art date
Application number
KR1020200147592A
Other languages
English (en)
Inventor
진현욱
임인구
장현준
Original Assignee
건국대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 건국대학교 산학협력단 filed Critical 건국대학교 산학협력단
Priority to KR1020200147592A priority Critical patent/KR102230901B1/ko
Application granted granted Critical
Publication of KR102230901B1 publication Critical patent/KR102230901B1/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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/5044Allocation 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 hardware capabilities

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

쿠버네티스의 Best-effort QoS 클래스를 위한 CPU 자원 관리 방법 및 장치가 개시된다. 일 실시예에 따른 클라우드 컴퓨팅 자원 설정 방법은, 쿠버네티스(Kubernetes) 내 노드(node)에 포함된 제1 복수의 파드(pod)들에 클라우드 컴퓨팅 자원을 설정하는 방법에 있어서, 상기 제1 복수의 파드들에 대한 요청량(request) 및 상기 제1 복수의 파드들에 대한 제한량(limit)을 수신하는 단계와, 상기 클라우드 컴퓨팅 자원 중에서, 상기 제1 복수의 파드들 중 상기 요청량 및 상기 제한량에 기초하여 Best-effort QoS(Quality of Service) 클래스로 분류한 제2 복수의 파드들에 설정할 잔여 자원을 결정하는 단계와, 상기 제2 복수의 파드들 중에서 어느 하나의 상기 제2 복수의 파드들에 대한 비율(ratio)에 따라, 상기 어느 하나에 상기 잔여 자원을 설정하는 단계를 포함한다.

Description

클라우드 자원 관리를 위한 비율방식의 QoS 지원 방법 및 장치{QUALITY OF SERVICE SUPPORT METHOD AND APPARATUS FOR CLOUD RESOURCE MANAGEMENT}
본 개시는 클라우드 자원 관리를 위한 비율방식의 QoS 지원 방법 및 장치 에 관한 것이다.
클라우드 서비스는 IT분야를 넘어서 헬스케어, 금융, 제조, 및 유통업과 같은 산업의 다양한 분야에서 활용되고 있다. 클라우드 서비스 사용자는 온디멘드(On-Demand) 형태로 제공되는 클라우드 컴퓨팅 자원을 사용하고, 사용한 만큼의 비용을 지불한다. 따라서 클라우드 서비스 제공자는 과금된 클라우드 컴퓨팅 자원에 대한 신속하고 신뢰성 있는 서비스를 보장해야 한다.
클라우드 서비스에서 클라우드 컴퓨팅 자원에 대한 관리 방법의 발전은 클라우드 서비스 제공자가 적은 비용으로 다양한 서비스 모델의 제공을 가능하게 한다. 또한, 클라우드 서비스 사용자는 비용 효율적인 클라우드 컴퓨팅 자원의 운영이 가능해진다.
클라우드의 자원 관리 기능은 쿠버네티스(Kubernetes)와 같은 대표적인 컨테이너 오케스트레이션 플랫폼에서 확인할 수 있다. 쿠버네티스는 컨테이너 기반 가상화 기술과 대규모 분산처리 기술을 통해 클라우드 서비스를 효과적으로 지원한다. 쿠버네티스는 컴퓨팅 자원을 크게 CPU, 메모리, 및 스토리지로 구분한다. 쿠버네티스는 CPU 자원과 메모리 자원을 ‘요청량(request)’과 ‘제한량(limit)’을 통해 관리한다. 클라우드 서비스 사용자는 CPU 자원과 메모리 자원에 대해 제공되는 단위(예를 들어, vCPU 또는 byte 등)를 활용하여 컨테이너마다 자원에 대한 요청량 및 제한량을 설정할 수 있다.
쿠버네티스는 컨테이너에 설정된 클라우드 컴퓨팅 자원에 따라 Guaranteed, Burstable, 및 Best-effort의 3가지 서비스 품질(Quality of Service, QoS)을 제공한다. 요청 자원이 있는 컨테이너는 높은 우선순위의 클래스인 Guaranteed QoS 클래스 및 Burstable QoS 클래스에 할당된다. 자원을 요청하지 않은 클래스의 경우 가장 낮은 우선순위의 Best-effort QoS 클래스에 할당된다. Best-effort QoS 클래스의 컨테이너는 Guaranteed QoS 클래스 및 Burstable QoS 클래스에 할당된 컨테이너의 자원 사용이 모두 끝난 뒤 남는 잔여 자원에 대한 사용 권한을 갖는다. Best-effort QoS 클래스의 컨테이너는 클라우드 시스템의 자원 부족 등의 이유로 클라우드 자원을 회수해야 하는 경우 우선적으로 종료 대상이 된다. Best-effort QoS 클래스에 속한 복수의 파드들은 잔여 자원에 대한 관리 기능이 존재하지 않는다.
실시예들은 클라우드 서비스에서 실제 정량 자원을 예약하여 결정되는 QoS 서비스에 대해 최하위 QoS에 해당하는 작업 그룹에 비율 방식의 자원 관리 기능을 제공하여 상위 우선순위 작업의 자원 관리 기능을 유지하면서도 정량 자원을 예약하지 않는 작업에 대한 자원을 관리할 수 있는 기술을 제공할 수 있다.
다만, 기술적 과제는 상술한 기술적 과제들로 한정되는 것은 아니며, 또 다른 기술적 과제들이 존재할 수 있다.
일 실시예에 따른 클라우드 컴퓨팅 자원 설정 방법은, 쿠버네티스(Kubernetes) 내 노드(node)에 포함된 제1 복수의 파드(pod)들에 클라우드 컴퓨팅 자원을 설정하는 방법에 있어서, 상기 제1 복수의 파드들에 대한 요청량(request) 및 상기 제1 복수의 파드들에 대한 제한량(limit)을 수신하는 단계와, 상기 클라우드 컴퓨팅 자원 중에서, 상기 제1 복수의 파드들 중 상기 요청량 및 상기 제한량에 기초하여 Best-effort QoS(Quality of Service) 클래스로 분류한 제2 복수의 파드들에 설정할 잔여 자원을 결정하는 단계와, 상기 제2 복수의 파드들 중에서 어느 하나의 상기 제2 복수의 파드들에 대한 비율(ratio)에 따라, 상기 어느 하나에 상기 잔여 자원을 설정하는 단계를 포함한다.
상기 결정하는 단계는, 상기 요청량 및 상기 제한량에 기초하여 상기 제1 복수의 파드들을 요청량에 대해 최대한의 자원 사용을 보장하는 Guaranteed QoS 클래스, 요청량 만큼의 최소 자원 사용을 보장하는 Burstable QoS 클래스 및 상기 Best-effort QoS(Quality of Service) 클래스로 분류하는 단계와, 상기 Guaranteed QoS 클래스로 분류한 파드에 대응하는 요청량 및 상기 Burstable QoS 클래스로 분류한 파드에 대응하는 요청량에 따라, 상기 Guaranteed QoS 클래스로 분류한 파드 및 상기 Burstable QoS 클래스로 분류한 파드에 상기 클라우드 컴퓨팅 자원을 설정하는 단계와, 상기 클라우드 컴퓨팅 자원 중에서 상기 Guaranteed QoS 클래스로 분류한 파드에 설정한 자원 및 상기 Burstable QoS 클래스로 분류한 파드에 설정한 자원을 뺀 나머지를 상기 Best-effort QoS(Quality of Service) 클래스로 분류한 파드에 설정할 잔여 자원으로 결정하는 단계를 포함할 수 있다.
상기 분류하는 단계는, 상기 제1 복수의 파드들 중에서 상기 요청량 및 상기 제한량이 동일한 파드를 상기 Guaranteed QoS 클래스로 분류하는 단계와, 상기 제1 복수의 파드들 중에서 상기 요청량이 상기 제한량 미만인 파드를 상기 Burstable QoS 클래스로 분류하는 단계와, 상기 제1 복수의 파드들 중에서 상기 요청량 및 상기 제한량이 0인 파드를 상기 Best-effort QoS(Quality of Service) 클래스로 분류하는 단계를 포함할 수 있다.
상기 클라우드 컴퓨팅 자원을 설정하는 단계는, 상기 Guaranteed QoS 클래스로 분류한 파드에 대응하는 요청량에 따라, 상기 Guaranteed QoS 클래스로 분류한 파드에 상기 클라우드 컴퓨팅 자원을 설정하는 단계와, 상기 Burstable QoS 클래스로 분류한 파드에 대응하는 요청량에 따라, 상기 Burstable Qos 클래스로 분류한 파드에 상기 클라우드 컴퓨팅 자원을 설정하는 단계를 포함할 수 있다.
상기 잔여 자원을 설정하는 단계는, 상기 제2 복수의 파드들 중에서 어느 하나의 상기 제2 복수의 파드들에 대한 비율(ratio)을 계산하는 단계와, 상기 어느 하나에 상기 잔여 자원을 상기 비율에 따라 설정하는 단계를 포함할 수 있다.
상기 클라우드 컴퓨팅 자원은 CPU 자원일 수 있다.
일 실시예에 따른 클라우드 컴퓨팅 자원 설정 장치는, 쿠버네티스(Kubernetes) 내 노드(node)에 포함된 제1 복수의 파드(pod)들에 클라우드 컴퓨팅 자원을 설정하기 위한 인스트럭션들을 저장하는 메모리와, 상기 인스트럭션들을 실행하기 위한 프로세서를 포함하고, 상기 인스트럭션들이 상기 프로세서에 의해 실행될 때, 상기 프로세서는, 상기 제1 복수의 파드들에 대한 요청량(request) 및 상기 제1 복수의 파드들에 대한 제한량(limit)을 수신하고, 상기 클라우드 컴퓨팅 자원 중에서, 상기 제1 복수의 파드들 중 상기 요청량 및 상기 제한량에 기초하여 Best-effort QoS(Quality of Service) 클래스로 분류한 제2 복수의 파드들에 설정할 잔여 자원을 결정하고, 상기 제2 복수의 파드들 중에서 어느 하나의 상기 제2 복수의 파드들에 대한 비율(ratio)에 따라, 상기 어느 하나에 상기 잔여 자원을 설정한다.
상기 프로세서는, 상기 요청량 및 상기 제한량에 기초하여 상기 제1 복수의 파드들을 요청량에 대해 최대한의 자원 사용을 보장하는 Guaranteed QoS 클래스, 요청량 만큼의 최소 자원 사용을 보장하는 Burstable QoS 클래스 및 상기 Best-effort QoS(Quality of Service) 클래스로 분류하고, 상기 Guaranteed QoS 클래스로 분류한 파드에 대응하는 요청량 및 상기 Burstable QoS 클래스로 분류한 파드에 대응하는 요청량에 따라, 상기 Guaranteed QoS 클래스로 분류한 파드 및 상기 Burstable QoS 클래스로 분류한 파드에 상기 클라우드 컴퓨팅 자원을 설정하고, 상기 클라우드 컴퓨팅 자원 중에서 상기 Guaranteed QoS 클래스로 분류한 파드에 설정한 자원 및 상기 Burstable QoS 클래스로 분류한 파드에 설정한 자원을 뺀 나머지를 상기 Best-effort QoS(Quality of Service) 클래스로 분류한 파드에 설정할 잔여 자원으로 결정할 수 있다.
상기 프로세서는, 상기 제1 복수의 파드들 중에서 상기 요청량 및 상기 제한량이 동일한 파드를 상기 Guaranteed QoS 클래스로 분류하고, 상기 제1 복수의 파드들 중에서 상기 요청량이 상기 제한량 미만인 파드를 상기 Burstable QoS 클래스로 분류하고, 상기 제1 복수의 파드들 중에서 상기 요청량 및 상기 제한량이 0인 파드를 상기 Best-effort QoS(Quality of Service) 클래스로 분류할 수 있다.
상기 프로세서는, 상기 Guaranteed QoS 클래스로 분류한 파드에 대응하는 요청량에 따라, 상기 Guaranteed QoS 클래스로 분류한 파드에 상기 클라우드 컴퓨팅 자원을 설정하고, 상기 Burstable QoS 클래스로 분류한 파드에 대응하는 요청량에 따라, 상기 Burstable Qos 클래스로 분류한 파드에 상기 클라우드 컴퓨팅 자원을 설정할 수 있다.
상기 프로세서는, 상기 제2 복수의 파드들 중에서 어느 하나의 상기 제2 복수의 파드들에 대한 비율(ratio)을 계산하고, 상기 어느 하나에 상기 잔여 자원을 상기 비율에 따라 설정할 수 있다.
상기 클라우드 컴퓨팅 자원은 CPU 자원일 수 있다.
도 1은 기존 쿠버네티스를 설명하기 위한 도면이다.
도 2는 기존 쿠버네티스 계층, 도커 계층 및 c 그룹(cgroup) 계층의 관계도를 나타낸다.
도 3은 기존 쿠버네티스의 Guaranteed QoS 클래스, Burstable QoS 클래스 및 Best-effort Qos 클래스가 도커에 적용되는 방식을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 자원 설정 장치를 나타낸 도면이다.
도 5 및 도 6은 자원 설정 장치의 동작을 설명하기 위한 도면이다.
도 7은 자원 설정 장치의 동작을 설명하기 위한 순서도이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
본 명세서에서의 모듈(module) 은 본 명세서에서 설명되는 각 명칭에 따른 기능과 동작을 수행할 수 있는 하드웨어를 의미할 수도 있고, 특정 기능과 동작을 수행할 수 있는 컴퓨터 프로그램 코드를 의미할 수도 있고, 또는 특정 기능과 동작을 수행시킬 수 있는 컴퓨터 프로그램 코드가 탑재된 전자적 기록 매체, 예를 들어 프로세서 또는 마이크로 프로세서를 의미할 수 있다. 다시 말해, 모듈이란 본 발명의 기술적 사상을 수행하기 위한 하드웨어 및/또는 하드웨어를 구동하기 위한 소프트웨어의 기능적 및/또는 구조적 결합을 의미할 수 있다.
도 1은 기존 쿠버네티스를 설명하기 위한 도면이다.
클라우드 서비스는 IT분야를 넘어서 헬스케어, 금융, 제조, 및 유통업과 같은 산업의 다양한 분야에서 활용될 수 있다. 클라우드 서비스 사용자는 온디멘드(On-Demand) 형태로 제공되는 클라우드 컴퓨팅 자원을 사용하고, 사용한 만큼의 비용을 지불할 수 있다. 따라서 클라우드 서비스 제공자는 과금된 클라우드 컴퓨팅 자원에 대한 신속하고 신뢰성 있는 서비스를 보장해야 할 수 있다.
클라우드 서비스에서 클라우드 컴퓨팅 자원에 대한 관리 방법의 발전은 클라우드 서비스 제공자가 적은 비용으로 다양한 서비스 모델의 제공을 가능하게 할 수 있다. 또한, 클라우드 서비스 사용자는 비용 효율적인 클라우드 컴퓨팅 자원의 운영이 가능해질 수 있다.
쿠버네티스(Kubernetes)는 도커(Doker)를 사용하는 대표적인 컨테이너 오케스트레이션(Container Orchestration) 플랫폼일 수 있다. 기존 쿠버네티스는 컨테이너 기반 가상화 기술과 대규모 분산처리 기술을 통해 클라우드 서비스를 효과적으로 지원할 수 있다. 기존 쿠버네티스는 컴퓨팅 자원을 크게 CPU, 메모리, 및 스토리지로 구분할 수 있다. 기존 쿠버네티스는 CPU 자원과 메모리 자원을 ‘요청량(request)’과 ‘제한량(limit)’을 통해 관리할 수 있다. 클라우드 서비스 사용자는 CPU 자원과 메모리 자원에 대해 제공되는 단위(예를 들어, vCPU 또는 byte 등)를 활용하여 컨테이너마다 자원에 대한 요청량 및 제한량을 설정할 수 있다.
도 1을 참조하면, 기존 쿠버네티스 내 노드(node; 예를 들어, node 1 및 node 2)는 기존 쿠버네티스를 구성하는 컴포넌트 중 하나로 기존 쿠버네티스에서 파드(pod)를 배치하고 실행할 수 있는 가상 또는 물리적 머신을 의미할 수 있다. 파드(pod)는 쿠버네티스의 객체 모델중 가장 작은 배포 가능한 단위로써 클러스터에서 러닝(Running) 프로세스를 의미할 수 있다. 하나의 파드(pod)는 하나의 컨테이너 또는 복수의 컨테이너들을 포함할 수 있다. 파드(pod)에 예약되는 자원은 파드(pod)에 속한 복수의 컨테이너들의 클라우드 컴퓨팅 자원의 합으로 결정될 수 있다.
기존 쿠버네티스에서 관리하는 기본적인 클라우드 컴퓨팅 자원은 CPU 자원과 메모리 자원을 포함할 수 있다. 기존 쿠버네티스는 CPU 자원과 메모리 자원을 ‘요청량(request)’과 ‘제한량(limit)’을 통해 관리할 수 있다. 기존 쿠버네티스는 노드에 자원을 배포할때 파드에 요청량 만큼의 자원을 보장하며, 각 노드에서 제한량 이상의 자원을 사용하지 못하도록 관리할 수 있다.
기존 쿠버네티스는 컨테이너에 설정된 클라우드 컴퓨팅 자원에 따라 Guaranteed, Burstable, 및 Best-effort의 3가지 서비스 품질(Quality of Service, QoS)을 제공할 수 있다. 요청 자원이 있는 컨테이너는 높은 우선순위의 클래스인 Guaranteed QoS 클래스 또는 Burstable QoS 클래스로 분류될 수 있다. 자원을 요청하지 않은 컨테이너의 경우 가장 낮은 우선순위의 Best-effort QoS 클래스로 분류될 수 있다. Best-effort QoS 클래스로 분류된 컨테이너는 Guaranteed QoS 클래스 및 Burstable QoS 클래스에 할당된 컨테이너의 자원 사용이 모두 끝난 뒤 남는 잔여 자원에 대한 사용 권한을 가질 수 있다. Best-effort QoS 클래스로 분류된 컨테이너는 클라우드 시스템의 자원 부족 등의 이유로 클라우드 자원을 회수해야 하는 경우 우선적으로 종료 대상이 될 수 있다.
Guaranteed QoS 클래스, Burstable QoS 클래스 및 Best-effort QoS 클래스의 특징은 다음과 같을 수 있다.
i) Guaranteed QoS 클래스는 제한량과 자원량을 동등하게 요청하는 파드에게 부여되는 클래스이며, 가장 높은 우선 순위의 QoS클래스일 수 있다. 기존 쿠버네티스는 Guaranteed QoS 클래스에 속한 파드의 요청량에 대해서 최대한의 자원 사용을 보장할 수 있다.
ii) Burstable QoS 클래스는 제한량보다 낮은 자원을 요청하는 파드에게 부여되는 클래스이며, 두번째 우선순위의 QoS 클래스일 수 있다. 기존 쿠버네티스는 Burstable QoS 클래스에 속한 파드의 요청량에 대해서 요청한 만큼의 최소자원을 보장할 수 있다. 기존 쿠버네티스는 가능한 경우 Burstable QoS 클래스에 속한 파드에 요청량 이상의 자원(최대 제한량까지)을 할당할 수 있다.
iii) Best-effort QoS 클래스는 별도의 자원 요청을 하지 않은 파드에게 부여되는 클래스이며며, 최하위 QoS 클래스일 수 있다. 기존 쿠버네티스는 Best-effort QoS 클래스에 대해 별도의 자원 관리 및 보장을 수행하지 않을 수 있다. Best-effort QoS 클래스에 속한 파드들은 각 노드에서 상위 우선순위 QoS 클래스인 Guaranteed QoS 클래스 및 Burstable QoS 클래스의 자원 사용이 모두 끝난 뒤 남는 자원을 사용할 수 있다.
기존 쿠버네티스는 효율적인 자원 활용을 위해 오버 커밋을 지원하고 있을 수 있다. 기존 쿠버네티스에서 압축가능한 자원에 해당하는 CPU자원의 경우 오버커밋에 의한 리소스 경합이 발생하는 때 내부 프로세스의 CPU 자원 사용에 제한이 발생하는 수준으로 문제가 발생할 수 있다. 하지만 기존 쿠버네티스에서 압축 불가능한 자원으로 분류되는 메모리 및/또는 스토리지의 경우 경합이 발생하면 Out of Memory와 같은 이유로 파드가 종료될 수 있다. 이때 기존 쿠버네티스는 비교적 낮은 QoS 클래스의 파드를 우선적으로 종료시키며 자원 경합을 해소할 수 있다. 또한, 기존 쿠버네티스에는 Best-effort QoS 클래스에 속한 복수의 파드들은 잔여 자원에 대한 관리 기능이 존재하지 않는다.
도 2는 기존 쿠버네티스 계층, 도커 계층 및 c 그룹(cgroup) 계층의 관계도를 나타낸다.
기존 쿠버네티스에서 자원이 예약된 각 파드(pod)는 도커(docker)에서 컨테이너 그룹의 형태로 사상되며, 컨테이너 그룹은 linux의 태스크 그룹(task group)으로 노드내 CPU 자원 관리를 수행할 수 있다. 기존 쿠버네티스를 통해 예약된 자원은 각 노드에서 도커(docker)의 자원 관리 기능을 따르도록 설정될 수 있다. 예를 들어, 도커(docker)는 리눅스의 c 그룹(cgroup)을 통해 자원 관리를 수행하기 때문에 최종적으로 c 그룹(cgroup)의 자원 관리 기능으로 사상(mapping)될 수 있다.
쿠버네티스 계층에서, 파드(pod)의 CPU 자원은 파드에 속한 컨테이너(Container) 자원의 합으로 결정될 수 있다((A)). 파드(pod) 및 컨테이너(Container)의 CPU 자원은 도커(docker)의 컨테이너(Container-group 및 Container), c 그룹(cgroup)의 컨테이너 및 태스크 그룹(Parent task group 및 child task group)의 계층 구조로 각각 사상될 수 있다.
기존 쿠버네티스 계층에서 파드(Pod)-컨테이너(Container)의 관계는 도커(docker) 계층에서의 상위 컨테이너(Container-group; 부모 컨테이너)-하위 컨테이너(Container; 자식 컨테이너) 관계로 사상되며, c 그룹(cgroup) 계층에서는 부모 태스크 그룹(Parent task group)-자식 태스크 그룹(child task group)의 형태로 사상될 수 있다.
기존 쿠버네티스의 cpu 자원 명세는 요청량(request) 및 제한량(limit)으로 구성되어 있을 수 있다.
기존 쿠버네티스 계층에서의 제한량(limit)은 도커(docker) 계층에서 cpu.cfs_quota_us 값으로 단위 변환되어 설정될 수 있다. 도커(docker)에서의 cpu.cfs_quota_us 값은 linux의 c 그룹(cgroup) 계층으로 전달될 수 있다. 예를 들어, 제한량(limit)에 대한 CPU 자원은 도커(docker)의 100ms의 주기를 갖는 CPU 대역폭 자원으로 예약될 수 있다((B)). 요청량(request)에 대한 CPU 자원은 도커(docker)의 cpu.shares에 예약되며((C)), vCPU는 1024의 공유비율로 예약될 수 있다.
전달된 cpu.cfs_quota_us 값은 defaul값으로 설정되어 있는 컨테이너의 주기(cfs_period_us)에 대해 cpu.cfs_quota_us 값만큼의 자원을 사용할 수 있도록 컨테이너의 자원 사용 상한을 결정할 수 있다.
기존 쿠버네티스 계층에서의 요청량(request)은 도커(docker) 계층에서 cpu.shares 값으로 단위가 변환되어 설정될 수 있다. cpu.shares 값은 linux의 c 그룹(cgroup)계층으로 사상될 수 있다. 전달된 cpu.shares 값은 linux c 그룹(cgroup)에서 같은 부모 태스크 그룹을 갖는 형제 태스크 그룹간 자원 사용 우선순위를 비율 형태로 설정되며 실질적으로 매 주기마다 자원 사용의 하한을 결정하도록 동작할 수 있다.
도 3은 기존 쿠버네티스의 Guaranteed QoS 클래스, Burstable QoS 클래스 및 Best-effort Qos 클래스가 도커에 적용되는 방식을 설명하기 위한 도면이다.
기존 쿠버네티스의 Guaranteed QoS 클래스, Burstable QoS 클래스 및 Best-effort Qos 클래스는 두 가지 방식으로 도커에 적용될 수 있다.
1) Guaranteed QoS 클래스의 경우 root 하단에서 파드(pod)를 관리할 수 있다.
2) Burstable QoS 클래스, Best-effort QoS 클래스의 경우 도커의 최상위(root)태스크 그룹 하단에 QoS 태스크 그룹(Burstable 및 Best-effort)을 생성하고, QoS 태스크 그룹(Burstable 및 Best-dffort)에서 파드(pod)를 관리할 수 있다.
기존 쿠버네티스의 QoS클래스는 Guaranteed Qos 클래스를 제외하고는 Root 그룹(쿠버네티스 자원 관리 기능의 최상단 그룹)의 자식 태스크 그룹으로 사상될 수 있다.
Guaranteed QoS 클래스에 해당하는 파드의 경우 각 태스크 그룹이 바로 Root 그룹의 자식 태스크 그룹으로 사상되며, 도 3의 점선과 같이 개념적으로만 구분될 수 있다.
도 3의 구조에서 모든 태스크 그룹(도 3의 사각형)은 cpu.cfs_quota_us 값 및 cpu.shares에 해당하는 자원 설정을 가질 수 있다. 기존 쿠버네티스에 포함된 부모 태스크 그룹의 cpu.cfs_quota_us 값 및 cpu.shares는 각각 자식 태스크 그룹의 cpu.cfs_quota_us 값의 합 및 cpu.shares의 합일 수 있다.
기존 쿠버네티스는 요청량(request)에 따라 각 QoS의 자원 사용량, 자원 사용 우선순위가 결정될 수 있다.
Best-effort QoS 클래스의 경우 요청량(request)이 0 인 파드들의 QoS이기 때문에 자원 사용 우선 순위 또한 0(최소값)으로 설정될 수 있다. Best-effort QoS 클래스는 Guaranteed QoS 클래스 및 Burstable QoS 클래스의 CPU 자원 사용이 모두 끝난 뒤 Best-effort QoS 클래스에 포함되는 복수의 파드들에 대한 CPU 자원 사용이 가능해질 수 있다.
Best-effort QoS 클래스에 속한 복수의 파드들은 요청량(request)이 설정되지 않기 때문에 최소값에 해당하는 cpu.shares 자원을 할당 받을 수 있다. Best-effort QoS 클래스에 속한 복수의 파드들은 c 그룹(cgroup)의 계층간 자원 관리 기능에 의해 다른 QoS 클래스의 자원 사용이 끝난 뒤 잔여 자원에 대한 실행 우선 순위를 가질 수 있다. 또한, Best-effort QoS 클래스에 속한 복수의 파드들은 파드 간 우선순위가 별도로 존재하지 않으며 남는 자원에 대해 동등한 우선순위로 CPU 자원을 사용할 수 있다. 예를 들어, 기존 쿠버네티스는 각 파드가 요청하는 CPU 자원이 c 그룹(cgroup)의 공유 비율(cpu.shares)자원으로 사상될 때 1 core 당 1024의 비율로 정량화될 수 있다. 기존 쿠버네티스는 요청량(request)이 0인 Best-effort Qos 클래스 및 Best-effort QoS 클래스에 속한 복수의 파드들의 경우 최소값(MIN_SHARES)으로 자원이 설정될 수 있다.
기존 쿠버네티스에서 요청량(request) 및 제한량(limit)은 자원의 QoS를 구분짓는 요소가 될 수 있다. 기존 쿠버네티스에서 Best-effort QoS 클래스에 속한 복수의 파드들의 자원 관리를 위해 요청량(request) 및 제한량(limit)에 변화를 가하면 파드들의 QoS 클래스 자체가 변경될 수 있다.
실시예들은 기존 쿠버네티스에서 별도의 자원 관리를 수행하지 않는 Best-effort QoS 클래스에 대한 새로운 자원 관리 기술을 제공할 수 있다.
실시예들은 기존 쿠버네티스의 상위 우선 순위 QoS(예를 들어, Guaranteed QoS 및 Burstable QoS)의 클라우드 컴퓨팅 자원에 대한 사용을 간섭하지 않으면서도 Best-effort QoS 클래스에 대한 자원을 관리할 수 있는 기술을 제공할 수 있다.
이하에서는, 도 4 내지 도 7을 참조하여 실시예들을 설명하도록 한다.
도 4는 일 실시예에 따른 자원 설정 장치를 나타낸 도면이다.
자원 설정 장치(10)는 프로세서(100) 및 메모리(300)를 포함한다.
자원 설정 장치(10)는 Best-effort QoS 클래스에 속한 복수의 파드들에 잔여 자원을 보다 효율적으로 사용할 수 있도록 비율 방식으로 클라우드 컴퓨팅 자원을 설정할 수 있다.
자원 설정 장치(10)는 기존 쿠버네티스의 상위 우선 순위 QoS 클래스(예를 들어, Guaranteed QoS 클래스 및 Burstable QoS 클래스)에 대한 정책을 유지하며 Best-effort QoS 클래스에 속한 복수의 파드들의 클라우드 컴퓨팅 자원을 관리할 수 있다. 자원 설정 장치(10)는 Best-effort QoS 클래스보다 상위 우선 순위 QoS 클래스의 클라우드 컴퓨팅 자원 사용을 간섭하지 않을 수 있다.
자원 설정 장치(10)는 클라우드 또는 클러스터의 잔여 자원을 효율적으로 관리하기 위해 Best-effort QoS 클래스에 속한 복수의 파드들 간 비율에 따라 잔여 자원을 설정할 수 있다.
자원 설정 장치(10)는 파드를 배포할 때 클러스터의 여러 노드에 걸친 Best-effort QoS 클래스에 속한 복수의 파드들이 설정된 만큼의 자원 사용 비율을 유지할 수 있는 기술을 제공할 수 있다.
자원 설정 장치(10)는 복수의 파드들의 클라우드 컴퓨팅 자원에 대한 요청량(request)과 제한량(limits)을 변경하지 않고 Best-effort QoS 클래스의 자원을 비율 방식으로 설정할 수 있다. 예를 들어, 자원 설정 장치(10)는 기존 쿠버네티스의 요청량(예를 들어, Best-effort QoS 클래스에 속한 파드의 요청량 0)을 사상하는 대신, 하나의 Best-effort QoS 클래스에 속한 파드가 사용하는 자원이 기본 비율에 대응될 수 있도록 공유 비율을 조정할 수 있다. 조정된 공유 비율은 컨테이너, 파드 계층에 적용되며, QoS 클래스 계층의 공유비율은 기존 쿠버네티스의 정책을 따를 수 있다.
프로세서(100)는 중앙처리장치, 어플리케이션 프로세서, 또는 커뮤니케이션 프로세서(communication processor) 중 하나 또는 그 이상을 포함할 수 있다.
프로세서(100)는 자원 설정 장치(10)의 적어도 하나의 다른 구성요소들의 제어에 관한 연산이나 데이터 처리를 실행할 수 있다. 예를 들어, 프로세서(100)는 메모리(300)에 저장된 어플리케이션 및/또는 소프트웨어 등을 실행할 수 있다.
프로세서(100)는 수신한 데이터 및 메모리(300)에 저장된 데이터를 처리할 수 있다. 프로세서(100)는 메모리(300)에 저장된 데이터를 처리할 수 있다. 프로세서(100)는 메모리(300)에 저장된 컴퓨터로 읽을 수 있는 코드(예를 들어, 소프트웨어) 및 프로세서(100)에 의해 유발된 인스트럭션(instruction)들을 실행할 수 있다.
프로세서(100)는 목적하는 동작들(desired operations)을 실행시키기 위한 물리적인 구조를 갖는 회로를 가지는 하드웨어로 구현된 데이터 처리 장치일 수 있다. 예를 들어, 목적하는 동작들은 프로그램에 포함된 코드(code) 또는 인스트럭션들(instructions)을 포함할 수 있다.
예를 들어, 하드웨어로 구현된 데이터 처리 장치는 마이크로프로세서(microprocessor), 중앙 처리 장치(central processing unit), 프로세서 코어(processor core), 멀티-코어 프로세서(multi-core processor), 멀티프로세서(multiprocessor), ASIC(Application-Specific Integrated Circuit), FPGA(Field Programmable Gate Array)를 포함할 수 있다.
프로세서(100)는 제1 복수의 파드들에 대한 요청량(request) 및 제1 복수의 파드들에 대한 제한량(limit)을 수신할 수 있다. 예를 들어, 제1 복수의 파드들은 쿠버네티스의 QoS 클래스가 분류되지 않은 파드들을 의미할 수 있다.
프로세서(100)는 클라우드 컴퓨팅 자원 중에서, 제1 복수의 파드들 중 요청량 및 제한량에 기초하여 Best-effort QoS(Quality of Service) 클래스로 분류한 제2 복수의 파드들에 설정할 잔여 자원을 결정할 수 있다. 예를 들어, 클라우드 컴퓨팅 자원은 CPU 자원을 의미할 수 있다.
프로세서(100)는 요청량 및 제한량에 기초하여 제1 복수의 파드들을 요청량에 대해 최대한의 자원 사용을 보장하는 Guaranteed QoS 클래스, 요청량 만큼의 최소 자원 사용을 보장하는 Burstable QoS 클래스 및 Best-effort QoS(Quality of Service) 클래스로 분류할 수 있다. 예를 들어, 프로세서(100)는 제1 복수의 파드들 중에서 요청량 및 제한량이 동일한 파드를 Guaranteed QoS 클래스로 분류할 수 있다. 프로세서(100)는 제1 복수의 파드들 중에서 요청량이 제한량 미만인 파드를 Burstable QoS 클래스로 분류할 수 있다. 프로세서(100)는 제1 복수의 파드들 중에서 요청량 및 제한량이 0인 파드를 Best-effort QoS 클래스로 분류할 수 있다.
프로세서(100)는 Guaranteed QoS 클래스로 분류한 파드에 대응하는 요청량에 따라, Guaranteed QoS 클래스로 분류한 파드에 클라우드 컴퓨팅 자원을 설정할 수 있다.
프로세서(100)는 Burstable QoS 클래스로 분류한 파드에 대응하는 요청량에 따라, Burstable QoS 클래스로 분류한 파드에 클라우드 컴퓨팅 자원을 설정할 수 있다.
프로세서(100)는 클라우드 컴퓨팅 자원 중에서 Guaranteed QoS 클래스로 분류한 파드에 설정한 자원 및 Burstable QoS 클래스로 분류한 파드에 설정한 자원을 뺀 나머지를 Best-effort QoS(Quality of Service) 클래스로 분류한 파드에 설정할 잔여 자원으로 결정할 수 있다.
프로세서(100)는 제2 복수의 파드들 중에서 어느 하나의 제2 복수의 파드들에 대한 비율(ratio)에 따라, 제2 복수의 파드들 중에서 어느 하나에 잔여 자원을 설정할 수 있다. 예를 들어, 제2 복수의 파드들은 Best-effort QoS(Quality of Service) 클래스로 분류된 파드들을 의미할 수 있다. 프로세서(100)는 제2 복수의 파드들 중에서 어느 하나(1)의 제2 복수의 파드들(n)에 대한 비율(ratio)을 계산할 수 있다. 제2 복수의 파드들 중에서 어느 하나(1)의 제2 복수의 파드들(n)에 대한 비율은 1/n을 의미할 수 있다. 프로세서(100)는 제2 복수의 파드들 중에서 어느 하나에 잔여 자원을 계산한 비율에 따라 설정할 수 있다. 프로세서(100)는 제2 복수의 파드들의 갯수가 10이라고 가정하면 비율은 1/10으로 계산할 수 있다. 프로세서(100)는 잔여 자원이 100이면, 파드 하나에 10의 자원을 설정할 수 있다.
메모리(300)는 휘발성 및/또는 비휘발성 메모리를 포함할 수 있다. 메모리(300)는 자원 설정 장치(10)의 적어도 하나의 다른 구성요소에 관계된 명령 및/또는 데이터를 저장할 수 있다.
메모리(300)는 소프트웨어(software) 및/또는 프로그램(program) 등을 저장할 수 있다. 예를 들어, 메모리(300)는 쿠버네티스 내 노드에 포함된 복수의 파드들에 클라우드 컴퓨팅 자원을 설정하기 위한 어플리케이션 및 소프트웨어 등을 저장할 수 있다.
도 5 및 도 6은 자원 설정 장치의 동작을 설명하기 위한 도면이다.
자원 설정 장치(10)는 쿠버네티스 계층에 비율 모듈(BE_Ratio)을 생성할 수 있다. 예를 들어, 비율 모듈(BE_Ratio)은 자원 설정 장치(10)가 쿠버네티스 계층에 생성하는 가상의 모듈일 수 있다.
비율 모듈(BE_Ratio)은 요청량(request) 및 제한량(limit)이 0 인 파드를 Best-effort QoS 클래스로 분류할 수 있다. 비율 모듈(BE_Ratio)은 도커(docker) 계층의 cpu.shares 값을 복수의 파드들의 비율에 따라 결정할 수 있다. 예를 들어, 비율 모듈(BE_Ratio)은 Best-effort QoS 클래스에 속한 복수의 파드가 다른 계층으로 사상될 때 비율 방식으로 사상할 수 있다. 비율 모듈(BE_Ratio)은 부모 태스크 그룹과의 shares자원 관계인 자식 shares의 합 = 부모 shares를 따르지 않아도 논리적 오류가 발생하지 않을 수 있다.
비율 모듈(BE_Ratio)은 Best-effort QoS 클래스에 해당하는 태스크 그룹의 cpu.shares를 최소 값을 유지하도록 설정할 수 있다. 비율 모듈(BE_Ratio)은 기존 쿠버네티스의 각 QoS간 자원 관리 시멘틱을 벗어나지 않을 수 있다. 예를 들어, Best-effort QoS 클래스에 속한 복수의 파드들은 상위 우선순위 QoS인 Guaranteed QoS 클래스 및 Burstable QoS 클래스의 자원 사용이 끝난 뒤 클라우드 컴퓨팅 자원 사용에 대한 우선 순위를 얻을 수 있다.
도 6을 참조하면, 비율 모듈(BE_Ratio)의 동작을 설명하기 위하여 제1 노드(node 1)에는 2개의 BE 파드(Best-effort QoS Pod), 제2 노드(node 2)에는 3개의 BE 파드가 포함되어 있다고 가정할 수 있다. 제1 노드(node 1)의 Guaranteed Qos 클래스 및 Burstable QoS 클래스가 사용하고 남은 잔여 자원이 0.1이라고 가정할 수 있다. 제2 노드(node 2)의 잔여 자원은 0.6이라고 가정할 수 있다.
비율 모듈(BE_Ratio)은 제1 노드(node 1)의 BE 파드의 경우 각각 0.05만큼의 클라우드 컴퓨팅 자원을 설정할 수 있다. 제1 노드(node 1)의 BE 파드는 0.05 수준의 자원 사용 우선 순위를 가질 수 있다. 비율 모듈(BE_Ratio)은 제2 노드(node 2)의 BE 파드의 경우 각각 0.2 만큼의 클라우드 컴퓨팅 자원을 설정할 수 있다. 제2 노드(node 2)의 BE 파드는 0.2 수준의 자원 사용 우선 순위를 가질 수 있다.
비율 모듈(BE_Ratio)은 파드를 각 노드에 분배하는 시점에 Master Node(배포를 수행하는 노드)로부터 각 노드의 파드 비율 정보를 수신할 수 있다.
비율 모듈(BE_Ratio)은 각 노드 내에서 파드 하나가 가지는 자원 사용 기대량이 전체적으로 비슷한 값으로 유지될 수 있도록 로드밸런싱을 수행할 수 있다. 비율 모듈(BE_Ratio)은 수학식 1 및 수학식 2를 통해 로드밸런싱을 수행할 수 있다.
Figure 112020118790596-pat00001
Figure 112020118790596-pat00002
Figure 112020118790596-pat00003
는 노드 A에서 파드 하나가 가지는 자원 사용 기대량,
Figure 112020118790596-pat00004
는 노드 A에서 각 파드에 설정된 자원량,
Figure 112020118790596-pat00005
는 노드 B에서 파드 하나가 가지는 자원 사용 기대량,
Figure 112020118790596-pat00006
는 노드 B에서 각 파드에 설정된 자원량을 의미할 수 있다.
도 7은 자원 설정 장치의 동작을 설명하기 위한 순서도이다.
자원 설정 장치(10)는 제1 복수의 파드들에 대한 요청량(request) 및 제1 복수의 파드들에 대한 제한량(limit)을 수신할 수 있다(710).
자원 설정 장치(10)는 클라우드 컴퓨팅 자원 중에서, 제1 복수의 파드들 중 상기 요청량 및 상기 제한량에 기초하여 Best-effort QoS(Quality of Service) 클래스로 분류한 제2 복수의 파드들에 설정할 잔여 자원을 결정할 수 있다(720).
자원 설정 장치(10)는 제2 복수의 파드들 중에서 어느 하나의 제2 복수의 파드들에 대한 비율(ratio)에 따라, 제2 복수의 파드들 중에서 어느 하나에 잔여 자원을 설정할 수 있다(730).
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (12)

  1. 클라우드 컴퓨팅 자원 설정 장치가 쿠버네티스(Kubernetes) 내 노드(node)에 포함된 제1 복수의 파드(pod)들에 클라우드 컴퓨팅 자원을 설정하는 방법에 있어서,
    상기 클라우드 컴퓨팅 자원 설정 장치가 상기 제1 복수의 파드들에 대한 요청량(request) 및 상기 제1 복수의 파드들에 대한 제한량(limit)을 수신하는 단계;
    상기 클라우드 컴퓨팅 자원 설정 장치가 상기 클라우드 컴퓨팅 자원 중에서, 상기 제1 복수의 파드들 중 상기 요청량 및 상기 제한량에 기초하여 상기 요청량 및 상기 제한량이 0인 Best-effort QoS(Quality of Service) 클래스로 분류한 제2 복수의 파드들에 설정할 잔여 자원을 결정하는 단계; 및
    상기 클라우드 컴퓨팅 자원 설정 장치가 상기 제2 복수의 파드들에서 파드 전체 개수에 대한 파드 하나의 비율(ratio)에 따라, 상기 잔여 자원을 상기 제2 복수의 파드들 각각에 설정하는 단계
    를 포함하는 클라우드 컴퓨팅 자원 설정 방법.
  2. 제1항에 있어서,
    상기 결정하는 단계는,
    상기 요청량 및 상기 제한량에 기초하여 상기 제1 복수의 파드들을 요청량에 대해 최대한의 자원 사용을 보장하는 Guaranteed QoS 클래스, 요청량 만큼의 최소 자원 사용을 보장하는 Burstable QoS 클래스 및 상기 Best-effort QoS(Quality of Service) 클래스로 분류하는 단계;
    상기 Guaranteed QoS 클래스로 분류한 파드에 대응하는 요청량 및 상기 Burstable QoS 클래스로 분류한 파드에 대응하는 요청량에 따라, 상기 Guaranteed QoS 클래스로 분류한 파드 및 상기 Burstable QoS 클래스로 분류한 파드에 상기 클라우드 컴퓨팅 자원을 설정하는 단계; 및
    상기 클라우드 컴퓨팅 자원 중에서 상기 Guaranteed QoS 클래스로 분류한 파드에 설정한 자원 및 상기 Burstable QoS 클래스로 분류한 파드에 설정한 자원을 뺀 나머지를 상기 Best-effort QoS(Quality of Service) 클래스로 분류한 파드에 설정할 잔여 자원으로 결정하는 단계
    를 포함하는 클라우드 컴퓨팅 자원 설정 방법.
  3. 제2항에 있어서,
    상기 분류하는 단계는,
    상기 제1 복수의 파드들 중에서 상기 요청량 및 상기 제한량이 동일한 파드를 상기 Guaranteed QoS 클래스로 분류하는 단계;
    상기 제1 복수의 파드들 중에서 상기 요청량이 상기 제한량 미만인 파드를 상기 Burstable QoS 클래스로 분류하는 단계;
    상기 제1 복수의 파드들 중에서 상기 요청량 및 상기 제한량이 0인 파드를 상기 Best-effort QoS(Quality of Service) 클래스로 분류하는 단계
    를 포함하는 클라우드 컴퓨팅 자원 설정 방법.
  4. 제2항에 있어서,
    상기 클라우드 컴퓨팅 자원을 설정하는 단계는,
    상기 Guaranteed QoS 클래스로 분류한 파드에 대응하는 요청량에 따라, 상기 Guaranteed QoS 클래스로 분류한 파드에 상기 클라우드 컴퓨팅 자원을 설정하는 단계; 및
    상기 Burstable QoS 클래스로 분류한 파드에 대응하는 요청량에 따라, 상기 Burstable QoS 클래스로 분류한 파드에 상기 클라우드 컴퓨팅 자원을 설정하는 단계
    를 포함하는 클라우드 컴퓨팅 자원 설정 방법.
  5. 제1항에 있어서,
    상기 잔여 자원을 설정하는 단계는,
    상기 비율(ratio)을 계산하는 단계; 및
    상기 잔여 자원을 상기 비율에 따라 설정하는 단계
    를 포함하는 클라우드 컴퓨팅 자원 설정 방법.
  6. 제1항에 있어서,
    상기 클라우드 컴퓨팅 자원은 CPU 자원인
    클라우드 컴퓨팅 자원 설정 방법.
  7. 쿠버네티스(Kubernetes) 내 노드(node)에 포함된 제1 복수의 파드(pod)들에 클라우드 컴퓨팅 자원을 설정하기 위한 인스트럭션들을 저장하는 메모리; 및
    상기 인스트럭션들을 실행하기 위한 프로세서
    를 포함하고,
    상기 인스트럭션들이 상기 프로세서에 의해 실행될 때, 상기 프로세서는,
    상기 제1 복수의 파드들에 대한 요청량(request) 및 상기 제1 복수의 파드들에 대한 제한량(limit)을 수신하고,
    상기 클라우드 컴퓨팅 자원 중에서, 상기 제1 복수의 파드들 중 상기 요청량 및 상기 제한량에 기초하여 상기 요청량 및 상기 제한량이 0인 Best-effort QoS(Quality of Service) 클래스로 분류한 제2 복수의 파드들에 설정할 잔여 자원을 결정하고,
    상기 제2 복수의 파드들에서 파드 전체 개수에 대한 파드 하나의 비율(ratio)에 따라, 상기 잔여 자원을 상기 제2 복수의 파드들 각각에 설정하는
    클라우드 컴퓨팅 자원 설정 장치.
  8. 제7항에 있어서,
    상기 프로세서는,
    상기 요청량 및 상기 제한량에 기초하여 상기 제1 복수의 파드들을 요청량에 대해 최대한의 자원 사용을 보장하는 Guaranteed QoS 클래스, 요청량 만큼의 최소 자원 사용을 보장하는 Burstable QoS 클래스 및 상기 Best-effort QoS(Quality of Service) 클래스로 분류하고,
    상기 Guaranteed QoS 클래스로 분류한 파드에 대응하는 요청량 및 상기 Burstable QoS 클래스로 분류한 파드에 대응하는 요청량에 따라, 상기 Guaranteed QoS 클래스로 분류한 파드 및 상기 Burstable QoS 클래스로 분류한 파드에 상기 클라우드 컴퓨팅 자원을 설정하고,
    상기 클라우드 컴퓨팅 자원 중에서 상기 Guaranteed QoS 클래스로 분류한 파드에 설정한 자원 및 상기 Burstable QoS 클래스로 분류한 파드에 설정한 자원을 뺀 나머지를 상기 Best-effort QoS(Quality of Service) 클래스로 분류한 파드에 설정할 잔여 자원으로 결정하는
    클라우드 컴퓨팅 자원 설정 장치.
  9. 제8항에 있어서,
    상기 프로세서는,
    상기 제1 복수의 파드들 중에서 상기 요청량 및 상기 제한량이 동일한 파드를 상기 Guaranteed QoS 클래스로 분류하고,
    상기 제1 복수의 파드들 중에서 상기 요청량이 상기 제한량 미만인 파드를 상기 Burstable QoS 클래스로 분류하고,
    상기 제1 복수의 파드들 중에서 상기 요청량 및 상기 제한량이 0인 파드를 상기 Best-effort QoS(Quality of Service) 클래스로 분류하는
    클라우드 컴퓨팅 자원 설정 장치.
  10. 제8항에 있어서,
    상기 프로세서는,
    상기 Guaranteed QoS 클래스로 분류한 파드에 대응하는 요청량에 따라, 상기 Guaranteed QoS 클래스로 분류한 파드에 상기 클라우드 컴퓨팅 자원을 설정하고,
    상기 Burstable QoS 클래스로 분류한 파드에 대응하는 요청량에 따라, 상기 Burstable QoS 클래스로 분류한 파드에 상기 클라우드 컴퓨팅 자원을 설정하는
    클라우드 컴퓨팅 자원 설정 장치.
  11. 제7항에 있어서,
    상기 프로세서는,
    상기 비율(ratio)을 계산하고,
    상기 잔여 자원을 상기 비율에 따라 설정하는
    클라우드 컴퓨팅 자원 설정 장치.
  12. 제7항에 있어서,
    상기 클라우드 컴퓨팅 자원은 CPU 자원인
    클라우드 컴퓨팅 자원 설정 장치.
KR1020200147592A 2020-11-06 2020-11-06 클라우드 자원 관리를 위한 비율방식의 QoS 지원 방법 및 장치 KR102230901B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200147592A KR102230901B1 (ko) 2020-11-06 2020-11-06 클라우드 자원 관리를 위한 비율방식의 QoS 지원 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200147592A KR102230901B1 (ko) 2020-11-06 2020-11-06 클라우드 자원 관리를 위한 비율방식의 QoS 지원 방법 및 장치

Publications (1)

Publication Number Publication Date
KR102230901B1 true KR102230901B1 (ko) 2021-03-22

Family

ID=75222958

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200147592A KR102230901B1 (ko) 2020-11-06 2020-11-06 클라우드 자원 관리를 위한 비율방식의 QoS 지원 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102230901B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102338422B1 (ko) * 2021-07-30 2021-12-10 클로우플레이크(주) Did 기반 클라우드 환경의 협업툴 서비스 제공 방법, 장치 및 시스템
KR102381185B1 (ko) * 2020-11-27 2022-03-31 주식회사 알티스트 쿠버네티스에서 저지연 서비스용 전담코어 설정 방법
KR102527066B1 (ko) * 2022-11-21 2023-05-03 주식회사 데이터스트림즈 쿠버네티스 환경에서 활용도를 극대화하기 위한 효율적인 동적 리소스 할당 방법 및 시스템
KR20230075634A (ko) * 2021-11-23 2023-05-31 (주) 글루시스 쿠버네티스 포드를 위한 자원 프로비저닝 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130083032A (ko) * 2011-12-28 2013-07-22 대전대학교 산학협력단 클라우드 환경에서 서비스품질 보장을 위한 서비스수준협약 관리방법
KR101471749B1 (ko) * 2013-03-27 2014-12-12 인하대학교 산학협력단 클라우드 서비스의 가상자원 할당을 위한 퍼지 로직 기반의 자원평가 장치 및 방법
KR20160073892A (ko) * 2014-12-17 2016-06-27 (주)에임투지 사용자 서비스 품질 기반 클라우드 오토 스케일링 장치 및 그 방법
KR101958112B1 (ko) * 2017-09-29 2019-07-04 건국대학교 산학협력단 태스크 스케줄링 장치 및 태스크 스케줄링 방법
KR102172607B1 (ko) * 2019-11-15 2020-11-02 한국전자기술연구원 분산·협업형 컨테이너 플랫폼 환경에서의 자원간 균형적 스케일아웃 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130083032A (ko) * 2011-12-28 2013-07-22 대전대학교 산학협력단 클라우드 환경에서 서비스품질 보장을 위한 서비스수준협약 관리방법
KR101471749B1 (ko) * 2013-03-27 2014-12-12 인하대학교 산학협력단 클라우드 서비스의 가상자원 할당을 위한 퍼지 로직 기반의 자원평가 장치 및 방법
KR20160073892A (ko) * 2014-12-17 2016-06-27 (주)에임투지 사용자 서비스 품질 기반 클라우드 오토 스케일링 장치 및 그 방법
KR101958112B1 (ko) * 2017-09-29 2019-07-04 건국대학교 산학협력단 태스크 스케줄링 장치 및 태스크 스케줄링 방법
KR102172607B1 (ko) * 2019-11-15 2020-11-02 한국전자기술연구원 분산·협업형 컨테이너 플랫폼 환경에서의 자원간 균형적 스케일아웃 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
kubernetes 문서, ‘파드에 대한 서비스 품질(QoS) 구성’, 2020.05.30. (출처: https://kubernetes.io/ko/docs/tasks/configure-pod-container/quality-service-pod/)* *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102381185B1 (ko) * 2020-11-27 2022-03-31 주식회사 알티스트 쿠버네티스에서 저지연 서비스용 전담코어 설정 방법
KR102338422B1 (ko) * 2021-07-30 2021-12-10 클로우플레이크(주) Did 기반 클라우드 환경의 협업툴 서비스 제공 방법, 장치 및 시스템
KR20230075634A (ko) * 2021-11-23 2023-05-31 (주) 글루시스 쿠버네티스 포드를 위한 자원 프로비저닝 방법
WO2023096109A1 (ko) * 2021-11-23 2023-06-01 (주)글루시스 쿠버네티스 포드를 위한 자원 프로비저닝 방법
KR102527066B1 (ko) * 2022-11-21 2023-05-03 주식회사 데이터스트림즈 쿠버네티스 환경에서 활용도를 극대화하기 위한 효율적인 동적 리소스 할당 방법 및 시스템

Similar Documents

Publication Publication Date Title
KR102230901B1 (ko) 클라우드 자원 관리를 위한 비율방식의 QoS 지원 방법 및 장치
US11314551B2 (en) Resource allocation and scheduling for batch jobs
US12020072B2 (en) Computing resource allocation
US9304803B2 (en) Cooperative application workload scheduling for a consolidated virtual environment
EP3761170A1 (en) Virtual machine creation method and apparatus
US9052932B2 (en) Hybrid virtual machine configuration management
US8060883B1 (en) System for managing and providing expandable resource reservations in a tree hierarchy
US11924117B2 (en) Automated local scaling of compute instances
Xu et al. Nbwguard: Realizing network qos for kubernetes
JP2006236351A (ja) リソース管理方法およびシステム
CN109992418B (zh) Sla感知的多租户大数据平台资源优先级调度方法及系统
US11726816B2 (en) Scheduling workloads on a common set of resources by multiple schedulers operating independently
WO2012115666A1 (en) Publishing and updating of multidimensional models using orchestration tools for software offerings
KR102527066B1 (ko) 쿠버네티스 환경에서 활용도를 극대화하기 위한 효율적인 동적 리소스 할당 방법 및 시스템
US11776087B2 (en) Function-as-a-service (FAAS) model for specialized processing units
CN115063282A (zh) 一种gpu资源调度方法、装置、设备及存储介质
US10990519B2 (en) Multi-tenant cloud elastic garbage collector
US10496331B2 (en) Hierarchical resource tree memory operations
CN116932143A (zh) 虚拟机数量调整方法、装置、计算机设备及存储介质
CN115562796A (zh) 容器集群的存储资源管理方法、装置及系统
CN114268549A (zh) 一种云平台抢占资源的方法、系统、设备和存储介质
CN118295802A (zh) 基于多核处理器的负载均衡方法、装置、车辆及存储介质
KR20170017183A (ko) 가상 cpu를 제어하는 장치, 방법 및 컴퓨터 프로그램

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant