KR102574043B1 - 클라우드 환경에서 컨테이너 기반의 gpu 자원 공유 방법 및 장치 - Google Patents

클라우드 환경에서 컨테이너 기반의 gpu 자원 공유 방법 및 장치 Download PDF

Info

Publication number
KR102574043B1
KR102574043B1 KR1020210069497A KR20210069497A KR102574043B1 KR 102574043 B1 KR102574043 B1 KR 102574043B1 KR 1020210069497 A KR1020210069497 A KR 1020210069497A KR 20210069497 A KR20210069497 A KR 20210069497A KR 102574043 B1 KR102574043 B1 KR 102574043B1
Authority
KR
South Korea
Prior art keywords
gpu
cloud
rendering
container
management module
Prior art date
Application number
KR1020210069497A
Other languages
English (en)
Other versions
KR20220161070A (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 주식회사 엘지유플러스
Priority to KR1020210069497A priority Critical patent/KR102574043B1/ko
Publication of KR20220161070A publication Critical patent/KR20220161070A/ko
Application granted granted Critical
Publication of KR102574043B1 publication Critical patent/KR102574043B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/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/505Allocation 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 load
    • 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
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • 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
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Abstract

본 발명은 클라우드 환경에서 컨테이너 기반의 GPU 자원 공유 방법 및 장치에 관한 것이다. 본 발명에 의하면, 클라우드 렌더링 서비스 제공 시 컨테이너 기반의 가상화 환경에서 GPU 자원 한계에 따라 전체 성능 저하를 방지하여 일정한 품질 수준을 유지할 수 있다.

Description

클라우드 환경에서 컨테이너 기반의 GPU 자원 공유 방법 및 장치{CONTAINER-BASED GPU RESOURCE SHARING MTEHOD AND APPARATUS IN CLOUD ENVIRONMENT}
본 발명은 클라우드 환경에서 컨테이너 기반의 GPU 자원 공유 방법 및 장치에 관한 것이다.
하이퍼바이저 기반의 가상화 시스템은 하드웨어 상에 호스트 OS(Operating System)을 설치하고, 호스트 OS를 통해 하이퍼바이저를 구동시키면 하이퍼바이저가 자원을 분할하여 가상 머신을 생성하고 각각의 가상 머신에 게스트 OS를 설치하여 개별적으로 운영하는 시스템을 말한다. 각각의 가상 머신은 각각의 사용자에게 할당되어 사용자는 마치 물리적으로 분리된 독립적인 장치를 사용하는 것으로 인식하고 게스트 OS 상에서 다양한 응용 프로그램을 구동하게 된다.
그러한 가상화 시스템은 하나의 물리적 시스템에 독자적으로 여러 서버 환경을 운용할 수 있다는 장점이 있으나, 각각의 가상 머신에 개별 게스트 OS를 위한 자원을 할당해야 하므로, 자원 낭비가 크다는 단점을 갖는다. 또한, 하이퍼바이저 기반의 가상화 시스템에서는 응용 프로그램이 호스트 OS 자원을 이용하기 위하여 반드시 게스트 OS를 거쳐야 한다는 점에서 효율이 떨어지는 문제가 있다.
이러한 문제점을 해결하기 위하여, 최근 컨테이너 기반의 가상화 시스템이 제안되고 있다. 컨테이너 기반의 가상화 시스템은 하드웨어 상에 호스트 OS를 설치하고 호스트 OS 상에 복수의 컨테이너를 가상 머신으로 생성하는 기술을 말한다. 각각의 컨테이너는 개별 데이터(예를 들어, BIN(Binary Code, LIB(Library) 등)는 컨테이너 내에 독립적으로 설치되어 사용되고, 공통 데이터는 컨테이너 간의 공유를 통해 이용함으로써 자원을 효율적으로 활용할 수 있도록 한다.
그런데, 전형적인 컨테이너 기반 자원 스케쥴링 기술에서, CPU 자원은 코어 단위로 할당되는데, 멀티 코어를 제공하는 CPU 구조상 여러 개의 코어를 하나의 컨테이너에 할당하는 경우 CPU 내부 버스를 통해 데이터를 주고 받게 된다. 이때 다수의 컨테이너가 하나의 서버와 연관되어 구동되는 경우, CPU 코어 간에 주고받는 데이터의 양이 많아져 물리적인 CPU 내부 버스를 통한 통신에 병목 현상이 발생하며, 그 결과 전체적인 처리 속도가 저하될 수 있다.
특히, 컨테이너 가상화 환경에서 GPU 자원을 할당하여 사용시, GPU에서는 렌더링/인코딩/디코딩이 모두 수행될 수 있으나, GPU 부하에 따라 각 Job(렌더링/인코딩/디코딩)을 분리하여 처리가 가능해야 한다.
즉, GPU에서 렌더링 처리에 대한 부하가 증가하면, 인코딩/디코딩을 GPU에서 동시에 처리하게 되면, 렌더링/인코딩/디코딩 속도가 모두 감소하게 된다. 이를 방지하기 위해 CPU에서 처리할 수 있는 인코딩/디코딩 작업은 GPU의 렌더링 부하에 따라 동적으로 CPU를 이용해 처리될 수 있도록 스케줄링이 필요하다.
본 발명은 전술한 필요성 및/또는 문제점을 해결하는 것을 목적으로 한다.
또한, 클라우드 렌더링 서비스를 위해서 GPU의 자원을 실시간으로 모니터링하고, GPU 부하율에 따라 GPU에서 처리하는 인코딩/디코딩 Job을 동적으로 CPU로 처리하게 함으로써 GPU 자원 부족에 따른 전체 성능 저하를 방지할 수 있도록 한 클라우드 환경에서 컨테이너 기반의 GPU 자원 공유 방법 및 장치를 제공함을 목적으로 한다.
상기한 목적을 달성하기 위한 본 발명에 따른 클라우드 환경에서 컨테이너 기반의 GPU 자원 공유 방법의 일측면에 따르면, GPU 스케줄러 모듈이 GPU 자원 사용율을 모니터링하는 단계; 상기 GPU 스케줄러 모듈이 클라우드 렌더링 서비스를 위한 랜더링 작업의 부하가 기설정된 임계값을 초과하는지 판단하는 단계; 상기 GPU 스케줄러 모듈이 클라우드 렌더링 서비스를 위한 랜더링 작업의 부하가 기설정된 임계값을 초과하는 경우 클라우드 렌더링 서비스를 위한 인코딩 및 디코딩 작업 명령을 공통 자원 점유 관리모듈의 GPU 공통 자원 점유 관리모듈에서 CPU 공통 자원 점유 관리모듈로 변경하여 동적으로 할당하는 단계; 및 상기 CPU 공통 자원 점유 관리모듈이 클라우드 렌더링 서비스를 위한 인코딩 및 디코딩 작업 명령을 동적으로 할당된 CPU를 이용한 소프트웨어에 기초하여 수행하는 단계;를 포함할 수 있다.
상기 GPU 스케줄러 모듈이 GPU 자원 사용율을 모니터링하는 단계에서, 상기 GPU 스케줄러 모듈에서만 GPU 자원을 점유하여 다수의 팟(Pod)으로부터의 GPU 명령을 큐잉(Queuing)하고 타임 스케줄링을 통해 순차적으로 GPU로 전송하는 단계를 더 포함할 수 있다.
상기 GPU 스케줄러 모듈이 클라우드 렌더링 서비스를 위한 랜더링 작업의 부하가 기설정된 임계값을 초과하는 경우 클라우드 렌더링 서비스를 위한 랜더링 작업 명령을 상기 GPU 공통 자원 점유 관리모듈로 전달하는 단계를 더 포함할 수 있다.
상기 CPU 공통 자원 점유 관리모듈이 클라우드 렌더링 서비스를 위한 인코딩 및 디코딩 작업 명령을 CPU를 이용한 소프트웨어에 기초하여 수행하는 단계에서, 상기 CPU 공통 자원 점유 관리모듈이 FFMPEG 또는 OpenMAX를 이용해 클라우드 렌더링 서비스를 위한 소프트웨어 인코딩 및 디코딩 작업을 수행할 수 있다.
상기 GPU 스케줄러 모듈이 클라우드 렌더링 서비스를 위한 랜더링 작업의 부하가 기설정된 임계값을 초과하는지 판단하는 단계에서, 상기 GPU 스케줄러 모듈이 클라우드 렌더링 서비스를 위한 랜더링 작업의 부하가 기설정된 임계값 이하인 경우 클라우드 렌더링 서비스를 위한 인코딩 및 디코딩 작업 명령을 상기 GPU 공통 자원 점유 관리모듈로 전달하는 단계를 더 포함할 수 있다.
한편, 상기한 목적을 달성하기 위한 본 발명에 따른 클라우드 환경에서 컨테이너 기반의 GPU 자원 공유 장치의 일측면에 따르면, 복수의 노드에 각각 포함되는 다수의 팟(Pod); 및 상기 다수의 팟(Pod)으로부터의 GPU 명령에 기초하여 GPU 자원 사용율을 모니터링하여 클라우드 렌더링 서비스를 위한 랜더링 작업의 부하가 기설정된 임계값을 초과하는 경우 클라우드 렌더링 서비스를 위한 인코딩 및 디코딩 작업 명령을 공통 자원 점유 관리모듈의 GPU 공통 자원 점유 관리모듈에서 CPU 공통 자원 점유 관리모듈로 변경하여 동적으로 할당하는 GPU 스케줄러 모듈;을 포함하고, 상기 CPU 공통 자원 점유 관리모듈은, 클라우드 렌더링 서비스를 위한 인코딩 및 디코딩 작업 명령을 동적으로 할당된 CPU를 이용한 소프트웨어에 기초하여 수행할 수 있다.
상기 GPU 스케줄러 모듈은, GPU 자원을 점유하여 상기 다수의 팟(Pod)으로부터의 GPU 명령을 큐잉(Queuing)하고 타임 스케줄링을 통해 순차적으로 GPU로 전송할 수 있다.
상기 GPU 스케줄러 모듈은, 클라우드 렌더링 서비스를 위한 랜더링 작업의 부하가 기설정된 임계값을 초과하는 경우 클라우드 렌더링 서비스를 위한 랜더링 작업 명령을 상기 GPU 공통 자원 점유 관리모듈로 전달할 수 있다.
상기 CPU 공통 자원 점유 관리모듈은, FFMPEG 또는 OpenMAX를 이용해 클라우드 렌더링 서비스를 위한 소프트웨어 인코딩 및 디코딩 작업을 수행할 수 있다.
상기 GPU 스케줄러 모듈은, 클라우드 렌더링 서비스를 위한 랜더링 작업의 부하가 기설정된 임계값 이하인 경우 클라우드 렌더링 서비스를 위한 인코딩 및 디코딩 작업 명령을 상기 GPU 공통 자원 점유 관리모듈로 전달할 수 있다.
본 발명의 일 실시예에 따른 효과에 대해 설명하면 다음과 같다.
본 발명에 의하면, 클라우드 렌더링 서비스 제공 시 컨테이너 기반의 가상화 환경에서 GPU 자원 한계에 따라 전체 성능 저하를 방지하여 일정한 품질 수준을 유지할 수 있다.
또한, 컨테이너 가상화 환경에서 수용 가능한 동시 접속자 수 확대가 가능하고, GPU 자원 제약에 따라 처리 가능한 동시 접속자수를 CPU 자원을 추가로 활용함에 따라 GPU 성능에 종속적이지 않고 CPU를 통해 처리함에 따라 동시접속자수를 확대할 수 있다.
본 발명에 관한 이해를 돕기 위해 상세한 설명의 일부로 포함되는, 첨부 도면은 본 발명에 대한 실시예를 제공하고, 상세한 설명과 함께 본 발명의 기술적 특징을 설명한다.
도 1은 가상 머신(VM: Virtual Machine) 방식의 안드로이드 가상화 구성의 일예를 나타내는 도면이다.
도 2는 컨테이너(Container) 방식의 안드로이드 가상화 구성의 일예를 나타내는 도면이다.
도 3은 본 발명의 일실시예에 따른 컨테이너(Container) 기반 안드로이드 실행환경에서 GPU 자원 공유 방법의 일예를 나타내는 도면이다.
도 4는 본 발명의 일실시예에 따른 클라우드 렌더링 서비스를 위한 렌더링/인코딩/디코딩 처리시 GPU 자원 사용율에 따라 CPU와 GPU를 동적으로 할당하여 처리하는 구성의 일예를 나타내는 도면이다.
도 5는 본 발명의 일실시예에 따른 클라우드 렌더링 서비스를 위한 렌더링/인코딩/디코딩 처리 시 GPU 자원 사용율에 따라 CPU와 GPU를 동적으로 할당하여 처리하는 방법의 일예를 나타내는 도면이다.
이하, 첨부된 도면을 참조하여 본 발명에 개시된 실시예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 명세서 작성의 용이함만이 고려되어 부여되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다. 또한, 본 발명에 개시된 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명에 개시된 실시예의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 발명에 개시된 실시예를 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 발명에 개시된 기술적 사상이 제한되지 않으며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되지는 않는다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
본 출원에서, "포함한다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
도 1은 가상 머신(VM: Virtual Machine) 방식의 안드로이드 가상화 구성의 일예를 나타내는 도면이다.
도시된 바와 같이, 다중 인스턴스(multi instance) 제공을 하지 않고 가상 머신(VM) 상에서 1개의 앱만 실행 가능하다. Host OS(Linux) 위에 Guest OS(안드로이드)가 구동이 되는 형태로 2개의 OS가 구동되어 하드웨어(HW) 자원 점유가 늘어나고, 안드로이드 OS의 Linux 커널까지 같이 설치할 수 있다. 또한, 가상 머신(VM) 1개당 1명의 유저(User)만 수용 가능함으로써 동시 접속자 수를 감소시킬 수 있다.
도 2는 컨테이너(Container) 방식의 안드로이드 가상화 구성의 일예를 나타내는 도면이다.
도시된 바와 같이, 노드(Node) 내에 여러 개의 팟(Pod)를 구성할 수 있으며, 팟(Pod) 내에 안드로이드 런타임 환경을 제공할 수 있다. 즉, 하드웨어 자원이 할당된 1개의 노드(Node)에 여러 팟(Pod)을 구성하여 다중 유저(Multi-user) 수용이 가능하고, 노드(Node) 당 여러 안드로이드 앱을 실행할 수 있다. 또한, Host OS를 가상화하여 각 팟(Pod)이 공유하게 되므로 Guest OS 신규 설치가 불필요하고, 안드로이드 실행을 위한 프레임워크만 설치하고, Linux 커널은 Host OS를 공유할 수 있다.
도 3은 본 발명의 일실시예에 따른 컨테이너(Container) 기반 안드로이드 실행환경에서 GPU 자원 공유 방법의 일예를 나타내는 도면이다.
도시된 바와 같이, 컨테이너(Container) 구조에서 각 노드(Node) 단위로 GPU를 1개 할당할 수 있다. 이에 따라, 노드(Node) 내 여러 팟(Pod)에서 1개의 GPU 카드 자원을 공유하여 클라우드 렌더링 서비스를 위해 렌더링/인코딩/디코딩 처리가 될 수 있다.
일반적으로 GPU 처리 프로세스는 GPU를 사용하는 앱에서는 ① GPU 자원 점유(GPU Context), ② GPU 명령 실행(GPU Kernel) 절차로 GPU를 사용할 수 있다. 하지만, 하나의 앱에서 GPU 자원 점유(GPU Context)를 점유하고 있으면 다른 앱에서 해당 GPU 자원 점유(GPU Context) 가 해제될 때까지 기다려야 한다. 즉, 앱이 종료되기 전까지 하나의 앱에서 GPU 자원을 독점한다. 따라서, 다중 유저(Multi-user)를 수용하기 위해서는 동시 접속자 수만큼 GPU를 할당하거나, GRID 라이선스를 구매하여 제공해야 한다.
한편, 여러 팟(Pod)이 각각 GPU 자원을 점유하지 않고 GPU 스케줄러(100)에서만 GPU 자원을 점유하고 각 팟(Pod)의 앱에서 GPU 명령(GPU kernel)을 GPU 스케줄러(100)로 전송할 수 있다. 이에 따라, GPU 스케줄러(100)의 공통 자원 점유(Context) 관리 모듈(120)에서 각 팟(Pod)의 GPU 명령을 큐잉(Queuing)하고 타임 스케줄링을 통해 명령어를 순차적으로 GPU로 전송할 수 있다. 또한, 컨테이너 매니저(Container Manager)(130)는 각 노드에 포함된 다수의 컨테이너를 관리하는 역할을 수행할 수 있다.
도 4는 본 발명의 일실시예에 따른 클라우드 렌더링 서비스를 위한 렌더링/인코딩/디코딩 처리시 GPU 자원 사용율에 따라 CPU와 GPU를 동적으로 할당하여 처리하는 구성의 일예를 나타내는 도면이다.
도시된 바와 같이, GPU 스케줄러(100)에서는 GPU 자원 사용율을 모니터링 하고, 해당 GPU의 특정 Job(렌더링)의 부하가 늘어남에 따라 정해진 임계값(Thresh-hold)을 넘게 되면 렌더링 Job 외의 인코딩/디코딩을 CPU를 이용해 SW 인코딩/디코딩 처리를 할 수 있도록 동적으로 CPU를 할당할 수 있다.
즉, GPU 스케줄러(100)에서 GPU 자원 모니터링 결과, 렌더링 Job의 부하 > 임계값(Thresh-hold)인 경우, 스케줄러 모듈(110)에서 GPU 인코딩/디코딩 관련 명령을 GPU 공통 자원 점유(Context) 관리 모듈(121)에서 CPU 공통 자원 점유(Context) 관리 모듈(122)로 변경할 수 있다. 이때, 렌더링은 기존과 같이 GPU를 통해 명령어 전달이 가능할 수 있다. 이에 따라, CPU 공통 자원 점유(Context) 관리 모듈(122)에서 클라우드 렌더링 서비스를 위한 인코딩/디코딩 관련 명령을 CPU를 이용해 처리할 수 있다. 이때, FFMPEG 또는 OpenMAX를 이용해 소프트웨어(SW) 인코딩/디코딩을 수행하는 것이 바람직할 수 있다.
한편, 클라우드 렌더링 서비스를 위한 렌더링 Job의 부하 < 임계값(Thresh-hold)인 경우에는 스케줄러 모듈(110)에서 GPU 인코딩/디코딩 관련 명령을 GPU 공통 자원 점유(Context) 관리 모듈(121)로 전달할 수 있으며, 이에 따라, GPU를 통해 클라우드 렌더링 서비스를 위한 렌더링/인코딩/디코딩 작업이 수행될 수 있다.
도 5는 본 발명의 일실시예에 따른 클라우드 렌더링 서비스를 위한 렌더링/인코딩/디코딩 처리 시 GPU 자원 사용율에 따라 CPU와 GPU를 동적으로 할당하여 처리하는 방법의 일예를 나타내는 도면이다.
도시된 바와 같이, GPU 스케줄러의 스케줄러 모듈에서 주기적으로 GPU 자원(resource) 사용량을 실시간으로 모니터링할 수 있으며, 기본적으로 인코딩/디코딩 모듈에서 GPU를 이용한 하드웨어(HW) 기반의 클라우드 렌더링 서비스를 위한 인코딩/디코딩을 수행할 수 있다.
이어서, GPU 스케줄러의 스케줄러 모듈에서는 주기적으로 GPU 자원을 모니터링한 결과, GPU 로드율 > 임계값(Thresh-hold)인 경우에는 인코딩/디코딩 모듈로 GPU 부하 알림(Notification) 메시지를 전달할 수 있다.
이어서, 스케줄러 모듈에서 인코딩/디코딩 모듈로 GPU 부하 알림(Notification)을 전달함으로써 CPU를 통한 소프트웨어(SW) 기반의 클라우드 렌더링 서비스를 위한 인코딩/디코딩이 수행될 수 있다. 즉, 스케줄러 모듈에서 GPU 리소스 사용율이 정해진 임계값(Thresh-hold)을 초과하면 인코딩/디코딩 Job을 CPU로 처리하게끔 인코딩/디코딩 모듈로 알림(Notification)을 전달할 수 있다. 이에 따라, 알림(Notification)을 수신한 인코딩/디코딩 모듈에서는 GPU 기반의 하드웨어(HW) 인코딩/디코딩 방식이 아닌 CPU를 활용한 소프트웨어(SW) 인코딩/디코딩 방식으로 전환할 수 있다.
즉, Agent 애플리케이션을 통해 GPU 리소스 사용량을 실시간으로 모니터링하고, Agent를 통해 GPU 리소스 사용율이 정해진 임계값(Thresh-hold)을 초과하면 인코딩/디코딩 Job을 CPU로 처리하게끔 인코딩/디코딩 모듈로 알림(Notification)으로서, 알림(Notification)을 수신한 인코딩/디코딩 모듈은 GPU 기반의 하드웨어(HW) 인코딩/디코딩 방식이 아닌 CPU를 활용한 소프트웨어(SW) 인코딩/디코딩 방식으로 전환할 수 있다.
이와 같이 본 발명에서는 GPU에서 렌더링 처리에 대한 부하가 증가하면, 인코딩/디코딩을 GPU에서 동시에 처리하게 되면, 렌더링/인코딩/디코딩 속도가 모두 감소하게 됨에 따라, 이를 방지하기 위해 CPU에서 처리할 수 있는 인코딩/디코딩 작업은 GPU의 렌더링 부하에 따라 동적으로 CPU를 이용해 처리될 수 있도록 스케줄링이 될 수 있다. 즉, 클라우드 렌더링 서비스를 위해 렌더링/인코딩/디코딩 처리시 GPU 자원 사용율에 따라 CPU와 GPU를 동적으로 할당하여 처리할 수 있다.
이에 따라, 클라우드 가상화 환경에서 GPU를 사용하는 클라우드 렌더링 서비스를 위한 렌더링/인코딩/디코딩 처리가 필요한 클라우드 렌더링 서비스 제공을 위해 GPU 자원을 최적화하여 관리할 수 있다. 즉, 본 발명에서는 클라우드 렌더링 서비스를 위해서 GPU의 자원을 실시간으로 모니터링하고, GPU 부하율에 따라 GPU에서 처리하는 인코딩/디코딩 Job을 동적으로 CPU로 처리하게 함으로써 GPU 자원 부족에 따른 전체 성능 저하를 방지할 수 있다.
또한, 클라우드 렌더링 서비스 제공 시 컨테이너 기반의 가상화 환경에서 GPU 자원 한계에 따른 전체 성능 저하를 방지하여 일정한 품질 수준을 유지할 수 있으며, 컨테이너 가상화 환경에서 수용 가능한 동시 접속자 수 확대가 가능할 수 있다. 즉, GPU 자원 제약에 따라 처리 가능한 동시 접속자 수를 GPU 성능에 종속적이지 않고 CPU 자원을 추가로 활용함에 따라 확대가 가능할 수 있다.
전술한 본 발명은, 프로그램이 기록된 매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 매체는, 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 매체의 예로는, HDD(Hard Disk Drive), SSD(Solid State Disk), SDD(Silicon Disk Drive), ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있으며, 또한 캐리어 웨이브(예를 들어, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 따라서, 상기의 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니되고 예시적인 것으로 고려되어야 한다. 본 발명의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 발명의 등가적 범위 내에서의 모든 변경은 본 발명의 범위에 포함된다.

Claims (10)

  1. 클라우드 환경에서 컨테이너 기반의 GPU 자원 공유 방법으로서,
    GPU 스케줄러 모듈이 GPU 자원 사용율을 모니터링하는 단계;
    상기 GPU 스케줄러 모듈이 클라우드 렌더링 서비스를 위한 랜더링 작업의 부하가 기설정된 임계값을 초과하는지 판단하는 단계;
    상기 GPU 스케줄러 모듈이 클라우드 렌더링 서비스를 위한 랜더링 작업의 부하가 기설정된 임계값을 초과하는 경우 클라우드 렌더링 서비스를 위한 인코딩 및 디코딩 작업 명령을 공통 자원 점유 관리모듈의 GPU 공통 자원 점유 관리모듈에서 CPU 공통 자원 점유 관리모듈로 변경하여 동적으로 할당하는 단계; 및
    상기 CPU 공통 자원 점유 관리모듈이 클라우드 렌더링 서비스를 위한 인코딩 및 디코딩 작업 명령을 동적으로 할당된 CPU를 이용한 소프트웨어에 기초하여 수행하는 단계;를 포함하는 클라우드 환경에서 컨테이너 기반의 GPU 자원 공유 방법.
  2. 청구항 1에 있어서,
    상기 GPU 스케줄러 모듈이 GPU 자원 사용율을 모니터링하는 단계에서,
    상기 GPU 스케줄러 모듈에서만 GPU 자원을 점유하여 다수의 팟(Pod)으로부터의 GPU 명령을 큐잉(Queuing)하고 타임 스케줄링을 통해 순차적으로 GPU로 전송하는 단계를 더 포함하는 것을 특징으로 하는 클라우드 환경에서 컨테이너 기반의 GPU 자원 공유 방법.
  3. 청구항 1에 있어서,
    상기 GPU 스케줄러 모듈이 클라우드 렌더링 서비스를 위한 랜더링 작업의 부하가 기설정된 임계값을 초과하는 경우 클라우드 렌더링 서비스를 위한 랜더링 작업 명령을 상기 GPU 공통 자원 점유 관리모듈로 전달하는 단계를 더 포함하는 것을 특징으로 하는 클라우드 환경에서 컨테이너 기반의 GPU 자원 공유 방법.
  4. 청구항 1에 있어서,
    상기 CPU 공통 자원 점유 관리모듈이 클라우드 렌더링 서비스를 위한 인코딩 및 디코딩 작업 명령을 CPU를 이용한 소프트웨어에 기초하여 수행하는 단계에서,
    상기 CPU 공통 자원 점유 관리모듈이 FFMPEG 또는 OpenMAX를 이용해 클라우드 렌더링 서비스를 위한 소프트웨어 인코딩 및 디코딩 작업을 수행하는 것을 특징으로 하는 클라우드 환경에서 컨테이너 기반의 GPU 자원 공유 방법.
  5. 청구항 1에 있어서,
    상기 GPU 스케줄러 모듈이 클라우드 렌더링 서비스를 위한 랜더링 작업의 부하가 기설정된 임계값을 초과하는지 판단하는 단계에서,
    상기 GPU 스케줄러 모듈이 클라우드 렌더링 서비스를 위한 랜더링 작업의 부하가 기설정된 임계값 이하인 경우 클라우드 렌더링 서비스를 위한 인코딩 및 디코딩 작업 명령을 상기 GPU 공통 자원 점유 관리모듈로 전달하는 단계를 더 포함하는 것을 특징으로 하는 클라우드 환경에서 컨테이너 기반의 GPU 자원 공유 방법.
  6. 클라우드 환경에서 컨테이너 기반의 GPU 자원 공유 장치로서,
    복수의 노드에 각각 포함되는 다수의 팟(Pod); 및
    상기 다수의 팟(Pod)으로부터의 GPU 명령에 기초하여 GPU 자원 사용율을 모니터링하여 클라우드 렌더링 서비스를 위한 랜더링 작업의 부하가 기설정된 임계값을 초과하는 경우 클라우드 렌더링 서비스를 위한 인코딩 및 디코딩 작업 명령을 공통 자원 점유 관리모듈의 GPU 공통 자원 점유 관리모듈에서 CPU 공통 자원 점유 관리모듈로 변경하여 동적으로 할당하는 GPU 스케줄러 모듈;을 포함하고,
    상기 CPU 공통 자원 점유 관리모듈은,
    클라우드 렌더링 서비스를 위한 인코딩 및 디코딩 작업 명령을 동적으로 할당된 CPU를 이용한 소프트웨어에 기초하여 수행하는 클라우드 환경에서 컨테이너 기반의 GPU 자원 공유 장치.
  7. 청구항 6에 있어서,
    상기 GPU 스케줄러 모듈은,
    GPU 자원을 점유하여 상기 다수의 팟(Pod)으로부터의 GPU 명령을 큐잉(Queuing)하고 타임 스케줄링을 통해 순차적으로 GPU로 전송하는 것을 특징으로 하는 클라우드 환경에서 컨테이너 기반의 GPU 자원 공유 장치.
  8. 청구항 6에 있어서,
    상기 GPU 스케줄러 모듈은,
    클라우드 렌더링 서비스를 위한 랜더링 작업의 부하가 기설정된 임계값을 초과하는 경우 클라우드 렌더링 서비스를 위한 랜더링 작업 명령을 상기 GPU 공통 자원 점유 관리모듈로 전달하는 것을 특징으로 하는 클라우드 환경에서 컨테이너 기반의 GPU 자원 공유 장치.
  9. 청구항 6에 있어서,
    상기 CPU 공통 자원 점유 관리모듈은,
    FFMPEG 또는 OpenMAX를 이용해 클라우드 렌더링 서비스를 위한 소프트웨어 인코딩 및 디코딩 작업을 수행하는 것을 특징으로 하는 클라우드 환경에서 컨테이너 기반의 GPU 자원 공유 장치.
  10. 청구항 6에 있어서,
    상기 GPU 스케줄러 모듈은,
    클라우드 렌더링 서비스를 위한 랜더링 작업의 부하가 기설정된 임계값 이하인 경우 클라우드 렌더링 서비스를 위한 인코딩 및 디코딩 작업 명령을 상기 GPU 공통 자원 점유 관리모듈로 전달하는 것을 특징으로 하는 클라우드 환경에서 컨테이너 기반의 GPU 자원 공유 장치.
KR1020210069497A 2021-05-28 2021-05-28 클라우드 환경에서 컨테이너 기반의 gpu 자원 공유 방법 및 장치 KR102574043B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210069497A KR102574043B1 (ko) 2021-05-28 2021-05-28 클라우드 환경에서 컨테이너 기반의 gpu 자원 공유 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210069497A KR102574043B1 (ko) 2021-05-28 2021-05-28 클라우드 환경에서 컨테이너 기반의 gpu 자원 공유 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20220161070A KR20220161070A (ko) 2022-12-06
KR102574043B1 true KR102574043B1 (ko) 2023-09-01

Family

ID=84407416

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210069497A KR102574043B1 (ko) 2021-05-28 2021-05-28 클라우드 환경에서 컨테이너 기반의 gpu 자원 공유 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102574043B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116719605A (zh) * 2023-06-09 2023-09-08 摩尔线程智能科技(北京)有限责任公司 一种gpu负载部署方法及云计算平台、电子设备
CN116932230B (zh) * 2023-09-15 2023-12-08 湖南马栏山视频先进技术研究院有限公司 一种基于动态任务调度的视频渲染方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017069744A (ja) * 2015-09-30 2017-04-06 沖電気工業株式会社 通信制御装置及びプログラム、記録媒体、並びに、通信制御方法
KR101794696B1 (ko) * 2016-08-12 2017-11-07 서울시립대학교 산학협력단 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법 및 분산 처리 시스템
KR102154446B1 (ko) * 2019-11-14 2020-09-09 한국전자기술연구원 분산·협업형 컨테이너 플랫폼 환경에서의 자원 균등 배분을 위한 고속 스케줄링 방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200097498A (ko) * 2019-02-08 2020-08-19 에스케이플래닛 주식회사 비디오 클라우드 스트리밍 인코더 할당 장치 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017069744A (ja) * 2015-09-30 2017-04-06 沖電気工業株式会社 通信制御装置及びプログラム、記録媒体、並びに、通信制御方法
KR101794696B1 (ko) * 2016-08-12 2017-11-07 서울시립대학교 산학협력단 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법 및 분산 처리 시스템
KR102154446B1 (ko) * 2019-11-14 2020-09-09 한국전자기술연구원 분산·협업형 컨테이너 플랫폼 환경에서의 자원 균등 배분을 위한 고속 스케줄링 방법

Also Published As

Publication number Publication date
KR20220161070A (ko) 2022-12-06

Similar Documents

Publication Publication Date Title
US10659318B2 (en) Methods and apparatus related to management of unit-based virtual resources within a data center environment
US9898795B2 (en) Host-based heterogeneous multi-GPU assignment
JP5689526B2 (ja) マルチキュー・ネットワーク・アダプタの動的再構成によるリソース・アフィニティ
US9183016B2 (en) Adaptive task scheduling of Hadoop in a virtualized environment
EP2577450B1 (en) Virtual machine migration techniques
US9183061B2 (en) Preserving, from resource management adjustment, portions of an overcommitted resource managed by a hypervisor
US20090089780A1 (en) Method and apparatus to convey physical resource relationships
US20180157519A1 (en) Consolidation of idle virtual machines
KR102574043B1 (ko) 클라우드 환경에서 컨테이너 기반의 gpu 자원 공유 방법 및 장치
US20170017511A1 (en) Method for memory management in virtual machines, and corresponding system and computer program product
Cheng et al. vBalance: Using interrupt load balance to improve I/O performance for SMP virtual machines
KR20210095690A (ko) 리소스 관리 방법과 장치, 전자 디바이스 및 기록 매체
US11740921B2 (en) Coordinated container scheduling for improved resource allocation in virtual computing environment
CN113296926B (zh) 一种资源分配方法、计算设备及存储介质
Suo et al. Preserving i/o prioritization in virtualized oses
KR101330609B1 (ko) 모바일 멀티코어 가상화 시스템에서 실시간 처리를 보장하기 위한 스케쥴링 방법
US8245229B2 (en) Temporal batching of I/O jobs
Dey et al. Vagabond: Dynamic network endpoint reconfiguration in virtualized environments
KR102570905B1 (ko) 클라우드 환경에서의 컨테이너 기반 자원의 최적화 시스템
US10042790B2 (en) Computer and method with interrupt vector management
US8566829B1 (en) Cooperative multi-level scheduler for virtual engines
Zhi Literature Survey on Virtual Machine Performance Isolation

Legal Events

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