KR102640232B1 - 가상화 환경에서의 자원 할당 방법 및 장치 - Google Patents

가상화 환경에서의 자원 할당 방법 및 장치 Download PDF

Info

Publication number
KR102640232B1
KR102640232B1 KR1020180067032A KR20180067032A KR102640232B1 KR 102640232 B1 KR102640232 B1 KR 102640232B1 KR 1020180067032 A KR1020180067032 A KR 1020180067032A KR 20180067032 A KR20180067032 A KR 20180067032A KR 102640232 B1 KR102640232 B1 KR 102640232B1
Authority
KR
South Korea
Prior art keywords
containers
resources
container
credit
host device
Prior art date
Application number
KR1020180067032A
Other languages
English (en)
Other versions
KR20190140341A (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 KR1020180067032A priority Critical patent/KR102640232B1/ko
Priority to PCT/KR2019/006260 priority patent/WO2019240400A1/ko
Priority to US17/251,036 priority patent/US20210191751A1/en
Publication of KR20190140341A publication Critical patent/KR20190140341A/ko
Application granted granted Critical
Publication of KR102640232B1 publication Critical patent/KR102640232B1/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/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/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
    • G06F40/00Handling natural language data
    • G06F40/40Processing or translation of natural language
    • G06F40/42Data-driven translation
    • 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and 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
    • 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/45562Creating, deleting, cloning virtual machine instances
    • 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
    • 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/45583Memory management, e.g. access or allocation
    • 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/45595Network integration; Enabling network access in virtual machine instances

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)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)

Abstract

일 개시에 의하여, 가상화된 복수의 컨테이너에 자원을 동적으로 할당하는 호스트 장치는 복수의 컨테이너로 자원의 할당을 요청하는 사용자 입력을 수신하는 사용자 인터페이스, 사용자 입력에 기초하여 복수의 컨테이너의 가중치를 산출하고, 가중치에 기초하여 복수의 컨테이너에 할당할 자원을 계산하고, 계산된 자원을 복수의 컨테이너에 할당하고, 복수의 컨테이너의 자원 사용량을 반영하여, 복수의 컨테이너에 할당할 자원을 동적으로 재계산하는 계산부 및 복수의 컨테이너의 서비스 제공에 따른 자원 사용량을 모니터링하는 스케줄러를 제공할 수 있다.

Description

가상화 환경에서의 자원 할당 방법 및 장치{METHOD AND APPARATUS FOR ALLOCATING RESOURCES IN VIRTUAL ENVIRONMENT}
일 개시에 의하여 컨테이너 가상화 환경에서 네트워크 자원을 동적으로 할당하기 위한 기술과 관련된다.
정보통신기술이 발전함에 따라서 물리적으로 한정적인 자원을 가지고 있는 서버를 좀 더 효율적으로 사용하기 위한 기술 중에 장치의 가상화(virtualization)가 있다. 가상화가 적용된 서버는 서버에 모든 사용자가 동시에 접근하지는 않는다는 점을 기초로 한정적인 자원으로 수많은 사용자가 요구하는 데이터를 처리할 수 있어, 수요가 점점 증가하고 있다.
장치의 가상화 방식으로는, 하드웨어적으로 고정된 성능의 서버 자체를 소프트웨어적으로 가상화하는 가상 머신(Virtual machine)방식과, 서버에서 처리되는 특정 프로세스 환경만 가상화하는 컨테이너(Container)방식이 있다.
종래의 가상화 환경에서는 여러 컨테이너가 동시에 동작하는 경우 CPU, 네트워크 등의 컴퓨팅 자원을 각 컨테이너에 균등하게 할당한다. 하지만, 자원을 균등하게 할당하게 되면, 각 컨테이너가 서로 다른 특성의 서비스를 수행하는 경우 서비스 특성에 따른 자원 할당이 불가능해져 사용량이 달라지게 되면 이를 반영할 수 없는 문제가 있다. IoT 환경에서는 다양한 서비스를 제공하며, 제공되는 서비스의 특성이 시시각각 달라지기 때문에, 동적 환경을 고려한 컨테이너의 자원 할당의 필요성이 증가하였다.
일 개시에 의하여, IoT 환경에서 서로 다른 서비스를 제공하는 복수의 컨테이너들의 네트워크 성능을 고려하여, 복수의 컨테이너에게 동적으로 자원을 할당하기 위한 네트워크 가상화 장치 및 방법을 개시하고 있다.
제 1 실시예에 있어서, 가상화된 복수의 컨테이너에 자원을 동적으로 할당하는 호스트 장치를 제공하며, 호스트 장치는 복수의 컨테이너로 자원의 할당을 요청하는 사용자 입력을 수신하는 사용자 인터페이스, 사용자 입력에 기초하여 복수의 컨테이너의 가중치를 산출하고, 가중치에 기초하여 복수의 컨테이너에 할당할 자원을 계산하고, 계산된 자원을 복수의 컨테이너에 할당하고, 복수의 컨테이너의 자원 사용량을 반영하여, 복수의 컨테이너에 할당할 자원을 동적으로 재계산하는 계산부 및 복수의 컨테이너의 서비스 제공에 따른 자원 사용량을 모니터링하는 스케줄러를 포함할 수 있다.
제 2 실시예에 있어서, 가상화된 복수의 컨테이너에 자원을 동적으로 할당하는 호스트 장치를 제공하며, 호스트 장치는 복수의 컨테이너로 자원의 할당을 요청하는 사용자 입력을 수신하는 사용자 인터페이스 및 사용자 입력에 기초하여 복수의 컨테이너의 가중치를 산출하고, 가중치에 기초하여 복수의 컨테이너에 할당할 자원을 계산하고, 계산된 자원을 복수의 컨테이너에 할당하고, 복수의 컨테이너의 자원 사용량을 반영하여, 복수의 컨테이너에 할당할 자원을 동적으로 재계산하고, 복수의 컨테이너의 서비스 제공에 따른 자원 사용량을 모니터링하는 프로세서를 포함할 수 있다.
제 3 실시예에 있어서, 가상화된 복수의 컨테이너를 포함하는 호스트 장치에서 자원을 동적으로 할당하는 방법을 제공하며, 일 개시에 따른 방법은 복수의 컨테이너로 자원의 할당을 요청하는 사용자 입력을 수신하는 단계, 사용자 입력에 기초하여 복수의 컨테이너의 가중치를 산출하고, 가중치에 기초하여 복수의 컨테이너에 할당할 자원을 계산하는 단계, 계산된 자원을 복수의 컨테이너에 할당하는 단계, 복수의 컨테이너의 서비스 제공에 따른 자원 사용량을 모니터링하는 단계 및 복수의 컨테이너의 자원 사용량을 반영하여, 복수의 컨테이너에 할당할 자원을 동적으로 재계산하는 단계를 포함할 수 있다.
제 4 실시예에 의하여, 다중언어로 구성된 문장을 획득하는 동작 및 다중언어 번역 모델을 이용하여, 다중언어로 구성된 문장에 포함되는 단어들 각각에 대응하는 벡터 값들을 획득하고, 획득한 벡터 값들을 목표 언어에 대응하는 벡터 값들로 변환하며, 변환된 벡터 값들에 기초하여, 목표 언어로 구성된 문장을 획득하는 동작을 수행하도록 하는 프로그램이 저장된 기록매체를 포함하는 컴퓨터 프로그램 제품을 제공할 수 있다.
일 개시는, 다음의 자세한 설명과 그에 수반되는 도면들의 결합으로 쉽게 이해될 수 있으며, 참조 번호(reference numerals)들은 구조적 구성요소(structural elements)를 의미한다.
도 1은 일 개시에 의한 복수개의 컨테이너 가상화 환경에서 자원을 동적으로 할당하기 위한 장치를 개략적으로 도시한 도면이다.
도 2는 일 개시에 의한 가상화 환경에서 자원을 할당하기 위한 방법을 나타낸 흐름도이다
도 3은 일 개시에 의한 IoT 환경에서의 컨테이너 네트워크 모드를 설명하기 위한 도면이다.
도 4는 일 개시에 의한 호스트 장치와 컨테이너 장치의 동작을 설명하기 위한 도면이다.
도 5는 일 개시에 의한 크레딧을 할당하는 계산부의 동작을 설명하는 흐름도이다.
도 6은 일 개시에 의한 컨테이너의 자원 사용에 따른 자원 재할당을 설명하기 위한 흐름도이다.
도 7은 일 개시에 의한 복수의 컨테이너의 자원 사용량이 할당된 자원양보다 적은 경우 자원을 재할당하는 것을 설명하는 도면이다.
도 8은 일 개시에 의한 복수의 컨테이너의 자원 사용량이 할당된 자원양보다 많은 경우 자원을 재할당하는 것을 설명하는 도면이다.
도 9는 일 개시에 의한 스케줄러의 동작을 설명하기 위한 도면이다.
본 명세서의 실시예들에서 사용되는 용어는 본 개시의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 실시예의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 명세서에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 정의되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 용어들은 본 명세서에 기재된 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 "...부", "...모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
본 명세서에서 사용된 표현 "~하도록 구성된(또는 설정된)(configured to)"은 상황에 따라, 예를 들면, "~에 적합한(suitable for)", "~하는 능력을 가지는(having the capacity to)", "~하도록 설계된(designed to)", "~하도록 변경된(adapted to)", "~하도록 만들어진(made to)", 또는 "~를 할 수 있는(capable of)"과 바꾸어 사용될 수 있다. 용어 "~하도록 구성된(또는 설정된)"은 하드웨어적으로 "특별히 설계된(specifically designed to)" 것만을 반드시 의미하지 않을 수 있다. 대신, 어떤 상황에서는, "~하도록 구성된 시스템"이라는 표현은, 그 시스템이 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성된(또는 설정된) 프로세서"는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(generic-purpose processor)(예: CPU 또는 application processor)를 의미할 수 있다.
일 개시에 따른 가상 머신 (virtual machine)은 컴퓨팅 환경을 소프트웨어로 구현한 것으로, 물리컴퓨터를 다중화하여 완전한 시스템 플랫폼을 제공하여 완전한 운영 체제의 실행이 가능하다.
일 개시에 따른 컨테이너는 가상화 방식의 일 형태로서 프로세스 가상화의 일정이다. 컨테이너를 이용한 가상화 기술은 호스트 OS(operating system) 내부를 물리적 자원을 관리하는 커널 공간과 사용자 프로세스, 즉 응용 프로그램(APP, application)을 실행하는 사용자 공간으로 구분하고, 사용자 공간을 여러 개로 나누어 각각의 사용자 프로세스에서 사용되는 하드웨어 자원을 할당하고 공유하는 기술을 의미한다.
컨테이너는 하이퍼바이저(Hardware emulator)와 게스트 OS(operating system)를 사용하지 않는 가벼운 OS 가상화 방식으로 호스트 자원의 소모량이 거의 없고 기동에 드는 시간이 매우 적어 어플리케이션 가상화에 적합한 기술이다. 또한 OS상의 가상화로 기존 물리 서버(Bare Metal)·가상 서버(Virtual Machine) 등 인프라에 독립적인 구성과 배포가 가능하다.
일 개시에 의하여, 컨테이너에 사용되는 핵심 기술은 Linux의 Cgroups(control groups)과 Namespace이다. 컨테이너는 cgroup을 통해 어플리케이션 프로세스에 자원을 할당하고, namespace로 격리한 OS상에 가상화된 독립 시스템을 의미한다. Namespace는 프로세스· 네트워크·마운드(mount) 등을 특정 name space로 격리하는 기술이다.
컨테이너는 자원 할당 정책에 따라 Cgroups 를 이용하여 컴퓨팅 리소스를 각 어플리케이션별로 할당할 수 있다. Cgroups는 OS상의 프로세스에 호스트 자원을 할당하기 위해 해당 프로세스 그룹을 만들고 자원의 할당 및 관리를 수행할 수 있다. 호스트 장치는 설정된 리소스 할당 정책에 따라 Cgroups를 이용하여 컴퓨팅 자원을 각 어플리케이션별로 할당할 수 있다. Cgroups는 리눅스에 구비되는 컴퓨팅 자원을 어플리케이션 별로 할당하도록 자원을 제어할 수 있다. 이에 따라, 컨테이너는 리눅스 커널의 Cgroups 기능을 사용하여 CPU 사용량, 메모리 사용량 등을 제한할 수 있어, 애플리케이션의 실행 중 발생하는 문제에 따른 컴파일 및 정밀한 실행에 대한 컨트롤이 가능하다.일 개시에 따른 작업 보존성(work-conserving)은 처리되어야 하는 작업이 없는 경우에만 유휴 상태가 되는 것을 의미한다.
일 개시에 의한 서버 통합 (server consolidation)이란 전체 운용 서버의 수를 줄이고, 낮은 활용률의 서버가 공간을 많이 차지하는 것을 막기 위한 접근 방식이다. 서버 통합에 따르면 효율적으로 자원 운용이 가능하여 비용 절감의 장점이 있다.
일 개시에 따른 하이퍼바이저(Hypervisor)는 가상화 시스템을 구축하기 위한 소프트웨어 계층이다. 하이퍼바이저는 운영체제와 하드웨어 사이에 존재하며, 각 가상머신에게 논리적으로 분리된 하드웨어를 제공할 수 있다. 하이퍼바이저는 다수의 컨테이너를 생성하고 관리하는 역할을 수행하는 것으로, 전 가상화, 반 가상화 방식 등 다양한 가상화 방식의 하이퍼바이저가 적용될 수 있다. 예를 들어, 하이퍼바이저는 리눅스 커널 기반 가상화 머신(KVM)으로 구현될 수 있으며, 이와 동등한 또는 유사한 작용/효과를 제공하는 다른 하이퍼바이저로 대체될 수 있다.
일 개시에서, 컴퓨터 시스템은 예를 들면, 데스크탑 PC(desktop personal computer), 랩탑 PC(laptop personal computer), 넷북 컴퓨터(netbook computer), 워크스테이션(workstation), 서버, PDA(personal digital assistant) 등을 의미하나, 이에 한정되는 것은 아니다. 일 실시예에서, 컴퓨터 시스템은 스마트폰(smartphone), 태블릿 PC(tablet personal computer), 이동 전화기(mobile phone), 영상 전화기, 전자책 리더기(e-book reader), PMP(portable multimedia player), MP3 플레이어, 모바일 의료기기, 카메라(camera), 또는 웨어러블 장치(wearable device) 중 적어도 하나를 포함할 수 있다.
아래에서는 첨부한 도면을 참고하여 본 개시의 실시예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
이하에서는 도면을 참조하여 본 개시의 실시예들을 상세하게 설명한다.
도 1은 일 개시에 의한 복수개의 컨테이너 가상화 환경에서 자원을 동적으로 할당하기 위한 장치를 개략적으로 도시한 도면이다.
일 개시에 의하여, 호스트 장치(100)는 복수개의 가상화 컨테이너를 포함할 수 있다. 호스트 장치(100)는 컴퓨터 시스템(5)과 네트워크를 통해 통신할 수 있다. 사용자는 컴퓨터 시스템(5)을 이용하여 호스트 장치(100)와 컨테이너를 생성하고, 자원을 할당하기 위한 정보를 전송할 수 있다.
호스트 장치(100)는 사용자에 의해 가상화가 적용되는 물리적인 서버(Server)를 의미한다. 호스트 장치(100)는 유무선 통신망을 통해 그 호스트 장치(100)로 흘러들어오는 각종 정보를, 각 정보의 특성에 맞춰서 처리하고 저장한다.
사용자는 컴퓨터 시스템(5)을 통해 호스트 장치(100)에 컨테이너 방식으로 가상화(Virtualization)를 적용시킬 수 있으며, 가상화된 장치인 컨테이너(Container)의 성능은 호스트 장치(100)의 성능을 상한선으로 한다. 예를 들어, 호스트 장치(100)가 옥타코어(Octa-core) CPU를 장착한 서버라면, 그 호스트 장치(100)내에 구현되는 가상머신의 CPU는 옥타코어를 초과할 수 없다.
가상화된 장치인 제 1 컨테이너(201), 제 2 컨테이너(202) 및 제 3 컨테이너(203)는 사용자가 호스트 장치(100)에 가상화를 적용하여 소프트웨어적으로 구현한 장치이다.
도 1을 참조하면, 호스트 장치(100)내에 구현된 가상화된 장치는 3개뿐이지만, 이는 설명의 편의를 위해 가상화된 장치의 수를 3개로 한정한 것뿐이며, 실시 예에 따라, 가상화된 장치의 수는 3개보다 적거나 많을 수도 있다. 호스트 장치(100)에 구현되는 제 1 컨테이너(201), 제 2 컨테이너(202) 및 제 3 컨테이너(203)는 모두 컨테이너 가상화 방식에 의해 구현될 수 있다.
일 개시에 의하여 제 1 컨테이너(201), 제 2 컨테이너(202) 및 제 3 컨테이너(203)의 자원량은 호스트 장치(100)의 최대 자원량을 초과할 수 없지만, 제 1 컨테이너(201), 제 2 컨테이너(202) 및 제 3 컨테이너(203)에 할당된 자원량의 총합은 호스트 장치(100)의 최대 자원량을 초과할 수도 있다. 이렇게 제 1 컨테이너(201), 제 2 컨테이너(202) 및 제 3 컨테이너(203)에 자원을 초과할당(over-commit)하는 것은 제 1 컨테이너(201), 제 2 컨테이너(202) 및 제 3 컨테이너(203)가 언제나 모든 자원을 이용하여 동작하고 있는 것이 아니므로, 제 1 컨테이너(201), 제 2 컨테이너(202) 및 제 3 컨테이너(203)를 통해 처리되는 작업의 효율성을 증대시키기 위함이다. 또한, 제 1 컨테이너(201), 제 2 컨테이너(202) 및 제 3 컨테이너(203)에 할당되고 사용되는 자원량은 호스트 장치(100)의 기본 성능내에서 가상화 기술에 따라 소프트웨어적으로 구현된 것이기 때문에 가상화된 장치(110, 130, 150)에 자원을 초과 할당하는 것이 가능하다.
일 개시에 의한 제 1 컨테이너(201), 제 2 컨테이너(202) 및 제 3 컨테이너(203)는 호스트 장치(100)내에 구현되는 장치로서, 호스트 장치(100)와 각종 데이터를 주고 받을 수 있다. 제 1 컨테이너(201), 제 2 컨테이너(202) 및 제 3 컨테이너(203)는 호스트 장치(100)내에 구현되는 논리적인 장치이므로, 호스트 장치(100)는 각각의 가상화된 장치를 식별할 수 있다. 또한, 이미 구현된 제 1 컨테이너(201), 제 2 컨테이너(202) 및 제 3 컨테이너(203) 중 적어도 하나 이상의 가상화된 장치를 호스트 장치(100)로부터 격리시킨 후, 기존의 호스트 장치(100)와 다른 호스트 장치로 이관(Migration)시키는 것도 가능하다.
일 개시에 의한 제 1 컨테이너(201), 제 2 컨테이너(202) 및 제 3 컨테이너(203)는 호스트 장치(100)의 최대 자원 범위 내에서 할당되는 자원량을 기초로 독자적으로 각종 데이터를 처리할 수 있으며, 호스트 장치(100) 또는 다른 가상화된 컨테이너에 발생하는 프로세스에 의해 영향을 받게 된다. 예를 들어, 어느 한 가상화된 장치가 사용자의 입력에 의해 새로운 데이터를 처리하려고 할 때, 그 가상화된 장치를 제외한 나머지 가상화된 장치들이 사용하고 있는 자원량이 호스트 장치(100)의 최대 자원량을 초과하는 경우에는, 그 가상화된 장치의 데이터 처리는 진행되지 않을 수 있다. 이런 상황에서, 호스트 장치(100)는 호스트 장치(100)에 정의된 모든 가상화된 장치가 병렬적으로 데이터를 처리할 수 있도록 조정하는 기능을 포함할 수 있다.
도 2는 일 개시에 의한 가상화 환경에서 자원을 할당하기 위한 방법을 나타낸 흐름도이다.
일 개시에 의하여, 가상화된 복수의 컨테이너를 포함하는 호스트 장치에서 자원을 동적으로 할당하는 방법을 제공할 수 있다. 일 개시에 의한 방법은 호스트 장치에서 이루어진다.
블록 2001에서 일 개시에 따른 호스트 장치는 복수의 컨테이너로 자원의 할당을 요청하는 사용자 입력을 수신할 수 있다. 일 개시에 의하여, 호스트 장치는 컨테이너의 성능 비율, 최소 성능 및 최대 성능에 대한 사용자 입력을 수신할 수 있다.
또한, 호스트 장치는 새로운 컨테이너를 생성할 때, 컨테이너의 성능 비율의 백분율, 컨테이너의 최소 성능의 절대값 및 컨테이너의 최대 성능의 절대값을 포함하는 사용자 입력을 수신할 수 있다.
블록 2002에서 일 개시에 따른 호스트 장치는 사용자 입력에 기초하여 복수의 컨테이너의 가중치를 산출하고, 가중치에 기초하여 복수의 컨테이너에 할당할 자원을 계산할 수 있다.
일 개시에 따른 호스트 장치는, 사용자 입력에 포함된 최소 성능의 절대값을 최소 값으로 결정하고, 사용자 입력에 포함된 최대 성능의 절대값을 최대 값으로 결정할 수 있다. 예를 들어, 20Mbps가 최대 성능인 라즈베리 파이 3보드에 50%의 컨테이너 성능이 설정되는 경우, 컨테이너에는 10Mbps의 성능이 제공될 수 있다.
일 개시에 따른 호스트 장치는 사용자 입력으로부터 복수의 컨테이너의 성능 비율을 획득할 수 있다. 또한, 호스트 장치는 복수의 컨테이너의 성능 비율에 따라 전체 네트워크에서 보장받을 수 있는 네트워크 성능을 백분율로 계산하여 복수의 컨테이너의 가중치를 산출할 수 있다. 예를 들어, 2 개의 컨테이너 각각에 대하여 20%, 80%의 성능 비율이 입력되는 경우, 2개의 컨테이너의 가중치를 1, 4로 변환할 수 있다.
블록 2003에서 일 개시에 따른 호스트 장치는 계산된 자원을 상기 복수의 컨테이너에 할당할 수 있다. 일 개시에 의하여, 호스트 장치는 주기적으로 컨테이너의 네트워크 인터페이스가 요구하는 성능 제어 정책에 기반하여 크레딧을 계산하여 할당할 수 있다.
일 개시에 의하여, 호스트 장치는 복수의 컨테이너의 네트워크 성능은 가중치에 비례하게 조정되므로, 복수의 컨테이너의 가중치를 조절하여 네트워크 대역폭 성능을 제어할 수 있다.
블록 2004에서 일 개시에 따른 호스트 장치는 복수의 컨테이너의 서비스 제공에 따른 자원 사용량을 모니터링할 수 있다. 예를 들어, 특정 컨테이너에 할당된 크레딧이 일정 값 이상으로 남은 것으로 판단된 경우, 컨테이너의 네트워크 사용량이 적어 할당받은 크레딧을 모두 소모하지 않은 것으로 판단할 수 있다.
블록 2005에서 일 개시에 따른 호스트 장치는 복수의 컨테이너의 자원 사용량을 반영하여, 상기 복수의 컨테이너에 할당할 자원을 동적으로 재계산할 수 있다. 예를 들어, 기 할당된 컨테이너의 자원을 다른 컨테이너로 분배함으로써, 네트워크 자원의 낭비를 줄일 수 있다.
도 3은 일 개시에 의한 IoT 환경에서의 컨테이너 네트워크 모드를 설명하기 위한 도면이다.
일 개시에 의한 본원발명의 목적은 IoT 장치에서 네트워크 자원을 동적으로 할당하여 컨테이너 단위로 네트워크 성능을 제어하기 위한 것이다. 일 개시에 의한 IoT 환경에서의 컨테이너 네트워크 모드는 브릿지 모드와 호스트 모드를 동시에 구현할 수 있다.
일 개시에 의하여 리눅스 네트워크 스택(300)에서는 호스트의 네트워크 인터페이스(301) 및 브릿지(302)를 포함할 수 있다.
일 개시에 의하여, 브릿지 모드는 복수의 컨테이너들이 하나의 브릿지를 공유하는 모드로서, 브릿지 모드에서는 복수의 컨테이너가 독립적으로 네트워크 스택을 이용하여 패킷들을 처리하기 때문에 독립적인 네트워크 동작이 가능하다.
일 개시에 의하여, 제 1 컨테이너(201), 제 2 컨테이너(202) 및 제 3 컨테이너(203)는 브릿지(302)를 공유할 수 있다. 또한, 제 1 컨테이너(201), 제 2 컨테이너(202) 및 제 3 컨테이너(203)는 각각 독립적인 네트워크 인터페이스, MAC 주소 및 IP 주소를 포함할 수 있다. 예를 들어, 제 1 컨테이너(201)는 네트워크 인터페이스 1(eth 1, 211)를 포함할 수 있다. 또한, 제 2 컨테이너(202) 및 제 3 컨테이너(302)도 eth2, eth3의 네트워크 인터페이스를 포함할 수 있다.
브릿지(302)는 링크 레이어 장치로 Media access address (MAC)를 확인하여 패킷을 네트워크 장치로 전달할 수 있다. 또한, 브릿지(302)는 Address resolution protocol (ARP)를 통해 주변 네트워크 장치들의 정보를 받아 작성된 MAC 주소 테이블의 정보를 이용하여 패킷을 전달할 수 있다.
일 개시에 의하여, 호스트 모드에서는 호스트의 네트워크 인터페이스(301)에서 복수의 컨테이너들의 패킷을 일괄적으로 처리할 수 있다. 따라서, 컨테이너의 부하 증가로 인한 네트워크 성능저하는 발생하지 않는다.
일 개시에 의하여 본원발명에서는 호스트의 네트워크 인터페이스(301)와 브릿지(302)를 모두 이용하여, 네트워크의 성능을 동적으로 제어할 수 있다, 예를 들어, 제 1 컨테이너(201)가 네트워크 인터페이스 1(211)을 이용하여 브릿지(302)로 패킷을 전송한 경우, 브릿지(302)는 제 1 컨테이너(201)가 패킷을 네트워크 장치로 송신할 수 있을 만큼 충분한 자원을 가지고 있는 지 판단할 수 있다. 브릿지(302)는 제 1 컨테이너(201)에 할당된 자원이 송신하려는 패킷의 크기보다 큰 경우에만 패킷을 네트워크 인터페이스(301)로 전달할 수 있다. 일 개시에 의하여 제 1 컨테이너(201)가 가지고 있는 자원이 패킷의 크기보다 작은 경우에는, 패킷을 네트워크 인터페이스(301)로 전달하지 않음으로써 네트워크 성능을 제한할 수 있다.
도 4는 일 개시에 의한 호스트 장치와 컨테이너 장치의 동작을 설명하기 위한 도면이다.
일 개시에 의하여 호스트 장치(100)는 사용자 인터페이스(110), 계산부(120) 및 스케줄러(130)를 포함할 수 있다. 일 개시에 의하여, 제 1 컨테이너 장치(201)는 가상 인터페이스(210) 및 제어부(220)를 포함할 수 있다.
일 개시에 의하여 사용자 인터페이스(110)는 사용자로부터 각각의 컨테이너 단위로 필요한 성능 수치를 수신할 수 있다. 일 개시에 의하여, 사용자 인터페이스(110)는 각 컨테이너의 성능 수치를 전체 네트워크 성능에서 해당 컨테이너가 차지하는 비율(%)로서 입력할 수 있다. 또한, 사용자 인터페이스(110)는 컨테이너의 성능의 최소값 및 최대값 범위를 절대값으로 입력할 수 있다.
일 개시에 의하여, 사용자 인터페이스(110)로부터 수신한 컨테이너의 성능 범위에 기초하여 자원을 동적으로 할당함으로써, 사용자의 의도에 맞도록 자원을 활용할 수 있는 효과가 있다
일 개시에 의하여 계산부(120)와 스케줄러(130)의 동작은 호스트 장치(100)의 프로세서에서 의하여 제어될 수 있다. 일 개시에 따라, 호스트 장치(100)의 프로세서는 계산부 및 스케줄러 중 적어도 하나를 포함할 수 있다.
일 개시에 의하여, 계산부(120) 및 스케줄러(130)는 호스트 장치(100)에 포함된 독립적인 물리적 프로세서로서 동작할 수 있다. 또한, 계산부(120) 및 스케줄러(130)는 하나의 호스트 장치(100)의 프로세서에 포함된 가상의 구성일 수 있다. 이하에서, 계산부(120) 및 스케줄러(130)의 동작을 분리하여 설명하고 있지만, 하나의 프로세서에 의하여 하기 동작들이 실행될 수 있다.
일 개시에 의한 계산부(120)는 컨테이너에 설정된 성능 수치를 기반으로 자원 할당량을 결정할 수 있다. 일 개시에 의하여, 계산부(120)는 사용자 입력에 기초하여 복수의 컨테이너의 가중치를 산출하고, 가중치에 기초하여 복수의 컨테이너에 할당할 자원을 계산할 수 있다. 일 개시에 의하여, 계산부(120)는 사용자 입력으로부터 복수의 컨테이너의 성능 비율을 획득하고, 복수의 컨테이너의 성능 비율에 따라 전체 네트워크에서 보장받을 수 있는 네트워크 성능을 백분율로 계산하여 복수의 컨테이너의 가중치를 산출할 수 있다. 예를 들어, 계산부(120)는 사용자의 입력에 기반하여, 제 1 컨테이너(201)의 가중치를 제 1 가중치, 제 2 컨테이너(202)의 가중치를 제 2 가중치로 결정할 수 있다.
일 개시에 의하여 계산부(120)는 계산된 자원을 복수의 컨테이너에 할당할 수 있다. 일 개시에 의하여 계산부(120)는 자원을 제 1 컨테이너(201)의 가상 인터페이스(210)로 전송할 수 있다. 가상 인터페이스(201)는 할당받은 자원을 제어부(202)로 전달할 수 있으며, 제어부(202)는 자원을 이용하여 제 1 컨테이너(201)를 동작시킬 수 있다. 또한 제어부(202)는 제 1 컨테이너(201)에 할당받은 자원만 제 1 컨테이너(201)의 원활한 동작이 어려운 경우, 가상 인터페이스(201)를 이용하여 호스트(100)로 추가적으로 자원을 요청할 수 있다.
일 개시에 의하여, 계산부(120)는 사용자 입력에 포함된 최소 성능의 절대값을 최소 값으로 결정하고, 사용자 입력에 포함된 최대 성능의 절대값을 최대 값으로 결정할 수 있다. 일 개시에 의하여, 계산부(120)는 가중치에 따라 비례적으로 자원을 할당하여 상대적인 네트워크 성능을 보장할 수 있지만, 사용자가 정량적인 성능 수치를 요구하는 경우에는 이를 만족시키기 어렵다. 그러므로, 사용자의 정량적 성능 보장 요청에 따라 컨테이너의 최소 및 최대 성능을 설정하여 설정 된 범위 내에서 정량적인 성능을 보장할 수 있다.
일 개시에 의하여 계산부(120)는 복수의 컨테이너에 할당할 크레딧을 계산할 수 있다. 예를 들어, 제 1 컨테이너(201)의 제 1 가중치에 따른 크레딧과 제 1 컨테이너(201)의 잔여 크레딧을 더하여 제 1 크레딧을 산출할 수 있다. 이 때, 계산부(120)는 제 1 크레딧이 최소 값과 최대 값 사이에 해당하는지 여부를 판단할 수 있다. 일 개시에 의하여 계산부(120)는 제 1 크레딧이 최소 값과 최대 값 사이에 해당하는 경우, 제 1 크레딧이 전체 크레딧보다 작은지 판단할 수 있다. 일 개시에 의하여, 제 1 크레딧이 전체 크레딧보다 작은 경우, 제 1 크레딧을 제 1 컨테이너(201)로 할당할 수 있다.
일 개시에 의하여 계산부(120)는 가중치에 의하여 할당된 제 1 크레딧이 최대 값보다 큰 경우, 최대 값을 제 1-2 크레딧으로 결정할 수 있다. 일 개시에 의하여 계산부(120)는 성능 최대값에 해당하는 제 1-2 크레딧의 크기만큼 제 1 컨테이너(201)에 할당하고, 제 1 크레딧에서 제 1-2 크레딧을 뺀 차이 값을 다른 컨테이너로 할당할 수 있다. 그에 따라, 계산부(120)는 제 1 컨테이너(201)의 네트워크 성능을 항상 최대 대역폭 이하로 유지할 수 있다.
일 개시에 의하여, 계산부(120)는 제 1 크레딧이 최소 값보다 작은 경우, 최소 값을 제 1-3 크레딧으로 결정할 수 있다. 계산부(120)는 제 1-3 크레딧을 제 1 컨테이너(201)로 할당함으로써, 제 1 컨테이너(201)의 최소 성능을 만족시킬 수 있다. 이 때, 계산부(120)는 제 1-3 크레딧에서 제 1 크레딧을 뺀 차이 값은 다른 컨테이너에 할당할 크레딧으로부터 가져올 수 있다.
일 개시에 의하여, 계산부(120)는 제 1 크레딧 값이 전체 크레딧보다 큰 경우, 제 1 컨테이너가 할당받은 자원을 사용하지 않는 것으로 추정할 수 있다. 이때, 계산부(120)는 제 1 가중치에 따른 크레딧을 제 1 컨테이너에 할당하지 않고, 다른 컨테이너에 분배할 수 있다. 따라서, 네트워크 자원 운영의 효율성을 높일 수 있다.
일 개시에 의하여 스케줄러(130)는 복수의 컨테이너의 서비스 제공에 따른 자원 사용량을 모니터링할 수 있다. 일 개시에 의하여 스케줄러(130)는 제 1 컨테이너(201)로부터 패킷을 수신하면 리눅스 커널의 브릿지에서 해당 패킷을 수신하여, 네트워크 인터페이스로 전송할 수 있다. 이때, 스케줄러에서는 네트워크 인터페이스로 전송하기 전에 제 1 컨테이너(201)의 잔여 크레딧과 전달받은 패킷의 크기를 비교할 수 있다. 예를 들어, 스케줄러(130)는, 제 1 컨테이너(201)로부터 수신한 패킷의 크기가 제 1 컨테이너(201)의 잔여 크레딧보다 작은 경우, 잔여 크레딧에서 패킷 전송을 위한 크레딧을 감산하고, 패킷을 네트워크 인터페이스로 전송할 수 있다. 다른 실시예에 따라, 스케줄러(130)는 제 1 컨테이너(201)로부터 수신한 패킷의 크기가 제 1 컨테이너(202)의 잔여 크레딧보다 큰 경우, 제 1 컨테이너(201)로부터 수신한 패킷의 메모리를 해제할 수 있다. 일 개시에 의하여, 독점적으로 네트워크 자원을 사용하려고 하는 악의적인 컨테이너의 네트워크 성능을 제한할 수 있어, IoT 장치의 제한된 용량의 초과 사용을 방지할 수 있다.
도 5는 일 개시에 의한 크레딧을 할당하는 계산부의 동작을 설명하는 흐름도이다.
일 실시예에 따른 계산부(120)는 적어도 하나 이상의 컨테이너의 네트워크 인터페이스에 상응하는 현재 크레딧에 기초하여 스케줄링 정책을 산출하고, 산출된 스케줄링 정책에 기초하여 상기 적어도 하나 이상의 컨테이너에 대한 작업 요청을 스케줄링할 수 있다.
블록 501에서 일 개시에 의한 계산부(120)는 일정 주기마다 컨테이너를 선택할 수 있다. 예를 들어, 계산부(120)는 10ms마다 주기적으로 컨테이너의 네트워크 인터페이스를 선택할 수 있다.
블록 502에서 일 개시에 의한 계산부(120)는 선택된 컨테이너의 네트워크 인터페이스의 자원인 크레딧 C1을 계산할 수 있다. 이 때, 크레딧 C1은 사용자의 입력에 기반한 가중치에 의해 산출된 크레딧이다.
블록 503에서 일 개시에 의한 계산부(120)는 잔여 크레딧 C0를 합산할 수 있다. 일 개시에 의하여, 계산부(120)는 계산된 C1을 현재 잔여 크레딧인 C0에 더함으로써 잔여 크레딧 C0을 결정할 수 있다.
블록 504에서 일 개시에 의한 계산부(120)는 더해진 잔여 크레딧 C0가 최소 값 최소 값과 최대 값의 범위를 만족하는지 판단할 수 있다.
블록 505에서 일 개시에 의한 계산부(120)는 잔여 크레딧 C0가 최소 값 최소 값과 최대 값의 범위를 만족하는 경우, 잔여 크레딧 C0이 전체 시스템의 크레딧(total C)보다 작은지 판단할 수 있다.
블록 506에서 일 개시에 의한 계산부(120)는 잔여 크레딧 C0가 최소 값 최소 값과 최대 값의 범위를 만족하는 경우, 잔여 크레딧 C0이 전체 시스템의 크레딧(total C)보다 작은경우, 마지막 컨테이너의 네트워크 인터페이스인지 여부를 고려하여 프로세스를 종료할 수 있다.
블록 507에서 일 개시에 의한 계산부(120)는 잔여 크레딧 C0이 최소 값 Min C와 최대 값 Max C의 범위 내에 존재하지 않거나, 전체 시스템의 크레딧 Total C 이하가 아니라면, 크레딧 C2를 재계산할 수 있다
블록 508에서 일 개시에 의한 계산부(120)는 이 전에 계산된 잔여 크레딧 C0과 다시 계산한 크레딧 C2의 차이를 이용해서 CreditLeft로 전체 시스템의 크레딧을 조정할 수 있다. 계산부(120)는 새롭게 계산된 크레딧 C2를 잔여 크레딧 C0에 더하지 않고 그대로 할당하여, 컨테이너의 네트워크 인터페이스의 네트워크 자원으로 활용할 수 있다.
블록 509에서 일 개시에 의한 계산부(120)는 마지막 컨테이너가 아니라면, 다음 컨테이너를 선택하여 크레딧 계산 과정을 반복할 수 있다. 일 개시에 의하여, 시스템 상의 모든 컨테이너의 네트워크 인터페이스의 크레딧 계산이 이루어질 때까지 반복되며 10ms마다 전체 알고리즘이 수행될 수 있다
도 6은 일 개시에 의한 컨테이너의 자원 사용에 따른 자원 재할당을 설명하기 위한 흐름도이다. 일 개시에 의하여 호스트 장치(100)는 복수의 컨테이너의 실제 자원 사용량을 모니터링함으로써, 동적으로 자원을 재 할당할 수 있다.
블록 601에서 일 개시에 의한 호스트 장치(100)는 호스트 장치(100)의 최대 자원양이 복수의 컨테이너에서 사용된 자원양보다 많은지 판단할 수 있다. 이때, 복수의 컨테이너에서 사용된 자원양은 각각의 컨테이너에서 실제로 사용된 자원양의 총합이다.
블록 602에서 일 개시에 의한 호스트 장치(100)는 호스트 장치(100)의 최대 자원양이 복수의 컨테이너에서 사용된 자원양보다 많은 경우, 호스트 장치(100)의 잔여 자원을 산출할 수 있다. 일 개시에 의하여, 호스트 장치(100)는 호스트 장치(100)의 최대 자원량에서 복수의 컨테이너에서 사용된 자원량의 총합을 차감하여, 호스트 장치의 잔여 자원을 산출할 수 있다.
블록 603에서 일 개시에 의한 호스트 장치(100)는 호스트 장치(100)의 잔여 자원을 복수의 컨테이너에 재할당할 수 있다. 이때, 호스트 장치(100)는 호스트 장치의 잔여 자원을 복수의 컨테이너에서 각각 사용된 자원 사용량의 비율에 따라 재할당할 수 있다.
블록 604에서 일 개시에 의한 호스트 장치(100)는 호스트 장치(100)의 최대 자원양이 복수의 컨테이너에서 사용된 자원양보다 적은 경우, 복수의 컨테이너에서 자원이 초과 사용되었다고 판단할 수 있다. 일 개시에 의한 호스트 장치(100)는 복수의 컨테이너에서 사용된 자원량의 총합에서 호스트 장치(100)의 최대 자원량을 차감하여 호스트 장치의 초과 자원을 산출할 수 있다.
블록 605에서 일 개시에 의한 호스트 장치(100)는 호스트 장치(100)의 초과 자원을 복수의 컨테이너에서 각각 사용된 자원 사용량의 비율에 따라 복수개의 분할 자원을 생성할 수 있다.
블록 606에서 일 개시에 의한 호스트 장치(100)는 복수의 컨테이너 각각의 할당 자원에서 복수개의 분할 자원을 차감할 수 있다.
도 7은 일 개시에 의한 복수의 컨테이너의 자원 사용량이 할당된 자원양보다 적은 경우 자원을 재할당하는 것을 설명하는 도면이다.
일 개시에 의하여, 호스트 장치(100)의 자원을 100으로 가정한다. 일 개시에 의하여 호스트 장치(100)는 사용자의 입력에 의한 컨테이너의 성능 비율, 최소값 및 최대값에 기초하여 복수의 컨테이너의 자원을 할당할 수 있다. 예를 들어, 제 1 컨테이너에 50, 제 2 컨테이너에 30, 제 3 컨테이너에 20의 자원을 할당할 수 있다.
일 개시에 의하여, 호스트 장치(100)는 복수의 컨테이너의 실제 자원 사용량을 모니터링할 수 있다. 일 개시에 의하여, 호스트 장치(100)는 제 1 컨테이너에서 사용된 자원이 10, 제 2 컨테이너에서 사용된 자원이 20, 제 3 컨테이너에서 사용된 자원이 30임을 확인할 수 있다. 복수의 컨테이너에서 실제 사용된 자원의 양은 50이며, 전체 잔여 자원의 양은 50이다.
일 개시에 의하여, 호스트 장치(100)는 제 1 컨테이너의 자원 사용률 : 제 2 컨테이너의 자원 사용률 : 제 3 컨테이너의 자원 사용률 = 1:2:1로 결정할 수 있다. 호스트 장치(100)는 전체 잔여 자원의 양인 50을 자원 사용률에 따라 재 분배할 수 있다.
일 개시에 의하여, 호스트 장치(100)는 제 1 컨테이너에 12.5, 제 2 컨테이너로 25, 제 3 컨테이너로 22.5를 재할당할 수 있다. 결과적으로, 제 1 컨테이너는 22.5, 제 2 컨테이너는 55, 제 3 컨테이너는 22.5의 자원을 할당받을 수 있으며, 호스트 장치의 자원활용률은 100%로 유지된다.
도 8은 일 개시에 의한 복수의 컨테이너의 자원 사용량이 할당된 자원양보다 많은 경우 자원을 재할당하는 것을 설명하는 도면이다.
일 개시에 의하여 호스트 장치(100)는 복수의 컨테이너 각각의 가중치, 최소값, 최고값을 고려하여 제 1 컨테이너에 80, 제 2 컨테이너에 60, 제 3 컨테이너에 40의 자원을 할당할 수 있다.
일 개시에 의하여, 복수의 컨테이너의 자원량은 호스트 장치(100)의 최대 자원량을 초과할 수 없지만, 복수의 컨테이너들에 할당된 자원량의 총합은 호스트 장치(100)의 최대 자원량을 초과할 수도 있다. 이렇게 복수의 컨테이너들에 자원을 초과할당(over-commit)하는 것은 복수의 컨테이너들가 언제나 모든 자원을 이용하여 동작하고 있는 것이 아니므로, 복수의 컨테이너들를 통해 처리되는 작업의 효율성을 증대시키기 위함이다. 일 개시에 의하여, 가상화된 복수의 컨테이너들에 할당되고, 사용되는 자원량은 호스트 장치(100)의 기본 성능내에서 가상화 기술에 따라 소프트웨어적으로 구현된 것이기 때문에 복수의 컨테이너들에 자원을 초과할당하는 것이 가능하다.
가상화된 복수의 컨테이너들은 최초에 할당된 자원량을 상한으로 하여 데이터를 처리할 수 밖에 없으므로, 각 가상화된 복수의 컨테이너들이 사용하는 자원량은 할당된 할당 자원량을 초과하지는 않는다.
다만, 전술한 것과 같이 호스트 장치(100) 내에 구현되는 가상화된 복수의 컨테이너들의 데이터 처리의 효율성을 위해서, 복수의 컨테이너들의 할당 자원량의 총합은 호스트 장치(100)의 최대 자원량을 초과할 수도 있다. 그에 따라 복수의 컨테이너들이 사용하는 자원량의 총합도 호스트 장치(100)의 최대 자원량을 초과하는 경우도 발생할 수 있다. 이런 상황에서 계측되는 복수의 컨테이너들의 자원의 사용량은, 복수의 컨테이너들의 내부에서 측정된 값으로서, 호스트 장치(100)의 자원량의 최대값이 한정되어 있는 이상, 복수의 컨테이너들의 자원의 실제 사용량은 복수의 컨테이너들의 내부에서 측정된 값보다 낮은 값이 되어야 한다.
일 개시에 의하여, 호스트 장치(100)는 복수의 컨테이너의 자원 사용량을 추측할 수 있다. 일 개시에 의하여, 호스트 장치(100)는 제 1 컨테이너에서 사용될 자원이 61, 제 2 컨테이너에서 사용될 자원이 29, 제 3 컨테이너에서 사용될 자원이 28임을 추측할 수 있다. 복수의 컨테이너에서 실제 사용될 것으로 추측된 자원의 양은 118이며, 전체 자원 중 초과될 수 있는 자원의 양은 18이다.
일 개시에 의하여, 호스트 장치(100)는 초과 자원을 복수의 컨테이너에서 사용된 자원의 사용량의 비율에 따라 복수개의 분할 자원을 산출할 수 있다. 호스트 장치(100)는 61:29:28의 비율로 분할 자원을 산출할 수 있다.
일 개시에 의하여, 호스트 장치(100)는 분할 자원을 복수의 컨테이너의 할당 자원에서 차감함으로써, 복수의 컨테이너에 자원을 재할당할 수 있다. 예를 들어, 호스트 장치(100)는 제 1 컨테이너의 재할당 자원을 53, 제 2 컨테이너의 재할당 자원을 23, 제 3 컨테이너의 재할당 자원을 24로 변경하여 재할당할 수 있다. 이때, 호스트 장치(100)의 자원활용률은 100%로 운용되는 바, 작업 보존성의 효과를 제공할 수 있다.
도 9는 일 개시에 의한 스케줄러의 동작을 설명하기 위한 도면이다.
블록 901에서 일 개시에 의한 스케줄러는 컨테이너로부터 서비스 제공을 위한 패킷을 수신할 수 있다.
블록 902에서 일 개시에 의한 스케줄러는 패킷의 크기와 컨테이너에 남은 자원의 크기를 비교할 수 있다.
블록 903에서 일 개시에 의한 스케줄러는 패킷의 크기가 더 큰 경우, 패킷을 네트워크 장치로 전송하지 않는다. 스케줄러는 패킷의 메모리를 해제함으로써, 특정 컨테이너의 자원 독점 사용을 방지할 수 있다.
블록 904에서 일 개시에 의한 컨테이너에 남은 자원에서 패킷 전송을 위한 자원을 감산할 수 있다.
블록 905에서 일 개시에 의한 스케줄러는 네트워크 장치로 패킷을 전송할 수 있다. 이 때, 컨테이너는 자원을 사용함으로써, 서비스를 제공할 수 있다.
가상화 환경에서의 자원 할당 방법 및 장치는 설명된 실시예들의 구성과 방법에 한정되게 적용될 수 있는 것이 아니라, 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
본 명세서에서 설명된 컴퓨터 시스템 및 컴퓨터 시스템에서 수행하는 메모리 오류 검출 방법은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다.
소프트웨어는, 컴퓨터로 읽을 수 있는 저장 매체(computer-readable storage media)에 저장된 명령어를 포함하는 컴퓨터 프로그램으로 구현될 수 있다. 컴퓨터가 읽을 수 있는 기록 매체로는, 예를 들어 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
컴퓨터로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, '비일시적'은 저장매체가 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다.
또한, 본 명세서에 개시된 실시예들에 따른 컴퓨터 시스템 및 컴퓨터 시스템에서 메모리 오류를 검출하는 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다.
컴퓨터 프로그램 제품은 소프트웨어 프로그램, 소프트웨어 프로그램이 저장된 컴퓨터로 읽을 수 있는 저장 매체를 포함할 수 있다. 예를 들어, 컴퓨터 프로그램 제품은 전자 장치의 제조사 또는 전자 마켓(예를 들어, 구글 플레이 스토어, 앱 스토어)을 통해 전자적으로 배포되는 소프트웨어 프로그램 형태의 상품(예를 들어, 다운로드 가능한 애플리케이션(downloadable application))을 포함할 수 있다. 전자적 배포를 위하여, 소프트웨어 프로그램의 적어도 일부는 저장 매체에 저장되거나, 임시적으로 생성될 수 있다. 이 경우, 저장 매체는 제조사의 서버, 전자 마켓의 서버, 또는 소프트웨어 프로그램을 임시적으로 저장하는 중계 서버의 저장매체가 될 수 있다.
컴퓨터 프로그램 제품은, 서버 및 단말(예로, 초음파 진단 장치)로 구성되는 시스템에서, 서버의 저장매체 또는 단말의 저장매체를 포함할 수 있다. 또는, 서버 또는 단말과 통신 연결되는 제3 장치(예, 스마트폰)가 존재하는 경우, 컴퓨터 프로그램 제품은 제3 장치의 저장매체를 포함할 수 있다. 또는, 컴퓨터 프로그램 제품은 서버로부터 단말 또는 제3 장치로 전송되거나, 제3 장치로부터 단말로 전송되는 소프트웨어 프로그램 자체를 포함할 수 있다.
이 경우, 서버, 단말 및 제3 장치 중 하나가 컴퓨터 프로그램 제품을 실행하여 개시된 실시예들에 따른 방법을 수행할 수 있다. 또는, 서버, 단말 및 제3 장치 중 둘 이상이 컴퓨터 프로그램 제품을 실행하여 개시된 실시예들에 따른 방법을 분산하여 실시할 수 있다.
예를 들면, 서버(예로, 클라우드 서버 또는 인공 지능 서버 등)가 서버에 저장된 컴퓨터 프로그램 제품을 실행하여, 서버와 통신 연결된 단말이 개시된 실시예들에 따른 방법을 수행하도록 제어할 수 있다.
또 다른 예로, 제3 장치가 컴퓨터 프로그램 제품을 실행하여, 제3 장치와 통신 연결된 단말이 개시된 실시예에 따른 방법을 수행하도록 제어할 수 있다.
제3 장치가 컴퓨터 프로그램 제품을 실행하는 경우, 제3 장치는 서버로부터 컴퓨터 프로그램 제품을 다운로드하고, 다운로드된 컴퓨터 프로그램 제품을 실행할 수 있다. 또는, 제3 장치는 프리로드된 상태로 제공된 컴퓨터 프로그램 제품을 실행하여 개시된 실시예들에 따른 방법을 수행할 수도 있다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 컴퓨터 시스템 또는 모듈 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.

Claims (20)

  1. 가상화된 복수의 컨테이너에 자원을 동적으로 할당하는 호스트 장치에서,
    상기 복수의 컨테이너로 자원의 할당을 요청하는 사용자 입력을 수신하는 사용자 인터페이스;
    상기 사용자 입력으로부터 상기 복수의 컨테이너의 성능 비율을 획득하고, 상기 복수의 컨테이너의 성능 비율에 따라 전체 네트워크에서 보장받을 수 있는 네트워크 성능을 백분율로 계산하여 상기 복수의 컨테이너의 가중치를 산출하고, 상기 가중치에 기초하여 상기 복수의 컨테이너에 할당할 자원을 계산하고, 상기 계산된 자원을 상기 복수의 컨테이너에 할당하고, 상기 복수의 컨테이너의 자원 사용량을 반영하여, 상기 복수의 컨테이너에 할당할 자원을 동적으로 재계산하는 계산부;및
    상기 복수의 컨테이너의 서비스 제공에 따른 자원 사용량을 모니터링하는 스케줄러;를 포함하는, 장치.
  2. 제 1 항에 있어서,
    상기 계산부는,
    상기 사용자 입력에 포함된 최소 성능의 절대값을 최소 값으로 결정하고,
    상기 사용자 입력에 포함된 최대 성능의 절대값을 최대 값으로 결정하는, 장치.
  3. 제 1 항에 있어서,
    상기 계산부는,
    제 1 컨테이너의 제 1 가중치에 따른 크레딧과 제 1 컨테이너의 잔여 크레딧을 더하여 제 1 크레딧을 산출하고,
    상기 제 1 크레딧이 최소 값과 최대 값 사이에 해당하는지 여부를 판단하고,
    상기 제 1 크레딧이 상기 최소 값과 상기 최대 값 사이에 해당하는 경우, 상기 제 1 크레딧이 전체 크레딧보다 작은지 판단하고,
    상기 제 1 크레딧이 전체 크레딧보다 작은 경우, 상기 제 1 크레딧을 제 1 컨테이너로 할당하는, 장치.
  4. ◈청구항 4은(는) 설정등록료 납부시 포기되었습니다.◈
    제 3 항에 있어서,
    상기 계산부는,
    상기 제 1 크레딧이 상기 최대 값보다 큰 경우, 상기 최대 값을 제 1-2 크레딧으로 결정하고, 상기 제 1-2 크레딧과 상기 제 1 크레딧의 차이 값을 다른 컨테이너로 할당하고,
    상기 제 1 크레딧이 상기 최소 값보다 작은 경우, 상기 최소 값을 제 1-3 크레딧으로 결정하고, 상기 제 1-3 크레딧을 제 1 컨테이너로 할당하는, 장치.
  5. ◈청구항 5은(는) 설정등록료 납부시 포기되었습니다.◈
    제 3 항에 있어서,
    상기 계산부는,
    상기 제 1 크레딧이 상기 전체 크레딧보다 큰 경우, 상기 제 1 가중치에 따른 크레딧을 상기 제 1 컨테이너에 할당하지 않고, 다른 컨테이너에 할당하는, 장치.
  6. 제 1 항에 있어서,
    상기 스케줄러는,
    제 1 컨테이너로부터 수신한 패킷의 크기가 상기 제 1 컨테이너의 잔여 크레딧보다 작은 경우, 상기 잔여 크레딧에서 패킷 전송을 위한 크레딧을 감산하고, 상기 패킷을 네트워크 장치로 전송하고,
    제 1 컨테이너로부터 수신한 패킷의 크기가 상기 제 1 컨테이너의 잔여 크레딧보다 큰 경우, 상기 제 1 컨테이너로부터 수신한 패킷의 메모리를 해제하는, 장치.
  7. 제 1 항에 있어서,
    상기 계산부는
    상기 호스트 장치의 최대 자원량에서 상기 복수의 컨테이너에서 사용된 자원량의 총합을 차감하여, 상기 호스트 장치의 잔여 자원을 산출하고,
    상기 호스트 장치의 잔여 자원을 상기 복수의 컨테이너에서 각각 사용된 자원 사용량의 비율에 따라 재할당하는, 장치.
  8. ◈청구항 8은(는) 설정등록료 납부시 포기되었습니다.◈
    제 1 항에 있어서,
    상기 계산부는,
    상기 복수의 컨테이너에서 사용된 자원량의 총합에서 상기 호스트 장치의 최대 자원량을 차감하여 상기 호스트 장치의 초과 자원을 산출하고,
    상기 호스트 장치의 초과 자원을 상기 복수의 컨테이너에서 각각 사용된 자원 사용량의 비율에 따라 복수개의 분할 자원을 생성하고,
    상기 복수의 컨테이너 각각의 할당 자원에서 상기 복수개의 분할 자원을 차감하는, 장치.
  9. ◈청구항 9은(는) 설정등록료 납부시 포기되었습니다.◈
    제 1 항에 있어서,
    상기 사용자 인터페이스는,
    상기 호스트 장치에서 새로운 컨테이너를 생성할 때, 컨테이너의 성능 비율의 백분율, 컨테이너의 최소 성능의 절대값 및 컨테이너의 최대 성능의 절대값을 포함하는 사용자 입력을 수신하는, 장치.
  10. 가상화된 복수의 컨테이너를 포함하는 호스트 장치에서 자원을 동적으로 할당하는 방법에 있어서,
    상기 복수의 컨테이너로 자원의 할당을 요청하는 사용자 입력을 수신하는 단계;
    상기 사용자 입력으로부터 상기 복수의 컨테이너의 성능 비율을 획득하는 단계;
    상기 복수의 컨테이너의 성능 비율에 따라 전체 네트워크에서 보장받을 수 있는 네트워크 성능을 백분율로 계산하여 상기 복수의 컨테이너의 가중치를 산출하고, 상기 가중치에 기초하여 상기 복수의 컨테이너에 할당할 자원을 계산하는 단계;
    상기 계산된 자원을 상기 복수의 컨테이너에 할당하는 단계;
    상기 복수의 컨테이너의 서비스 제공에 따른 자원 사용량을 모니터링하는 단계;및
    상기 복수의 컨테이너의 자원 사용량을 반영하여, 상기 복수의 컨테이너에 할당할 자원을 동적으로 재계산하는 단계;를 포함하는, 방법.
  11. 제 10 항에 있어서,
    상기 복수의 컨테이너의 가중치를 산출하는 단계는,
    상기 사용자 입력에 포함된 최소 성능의 절대값을 최소 값으로 결정하고,
    상기 사용자 입력에 포함된 최대 성능의 절대값을 최대 값으로 결정하는, 방법.
  12. 제 11 항에 있어서,
    제 1 컨테이너의 제 1 가중치에 따른 크레딧과 제 1 컨테이너의 잔여 크레딧을 더하여 제 1 크레딧을 산출하는 단계;
    상기 제 1 크레딧이 최소 값과 최대 값 사이에 해당하는지 여부를 판단하는 단계;
    상기 제 1 크레딧이 상기 최소 값과 상기 최대 값 사이에 해당하는 경우, 상기 제 1 크레딧이 전체 크레딧보다 작은지 판단하는 단계;및
    상기 제 1 크레딧이 전체 크레딧보다 작은 경우, 상기 제 1 크레딧을 제 1 컨테이너로 할당하는 단계;를 포함하는, 방법.
  13. ◈청구항 13은(는) 설정등록료 납부시 포기되었습니다.◈
    제 12 항에 있어서,
    상기 제 1 크레딧이 상기 최대 값보다 큰 경우, 상기 최대 값을 제 1-2 크레딧으로 결정하고, 상기 제 1-2 크레딧과 상기 제 1 크레딧의 차이 값을 다른 컨테이너로 할당하는 단계;및
    상기 제 1 크레딧이 상기 최소 값보다 작은 경우, 상기 최소 값을 제 1-3 크레딧으로 결정하고, 상기 제 1-3 크레딧을 제 1 컨테이너로 할당하는 단계;를 포함하는, 방법.
  14. ◈청구항 14은(는) 설정등록료 납부시 포기되었습니다.◈
    제 12 항에 있어서,
    상기 제 1 크레딧이 상기 전체 크레딧보다 큰 경우, 상기 제 1 가중치에 따른 크레딧을 상기 제 1 컨테이너에 할당하지 않고, 다른 컨테이너에 분배하는 단계;를 포함하는, 방법.
  15. 제 10 항에 있어서,
    제 1 컨테이너로부터 수신한 패킷의 크기가 상기 제 1 컨테이너의 잔여 크레딧보다 작은 경우, 상기 잔여 크레딧에서 패킷 전송을 위한 크레딧을 감산하고, 상기 패킷을 네트워크 장치로 전송하는 단계;및
    제 1 컨테이너로부터 수신한 패킷의 크기가 상기 제 1 컨테이너의 잔여 크레딧보다 큰 경우, 상기 제 1 컨테이너로부터 수신한 패킷의 메모리를 해제하는 단계;를 포함하는, 방법.
  16. 제 10 항에 있어서,
    상기 복수의 컨테이너의 서비스 제공에 따른 자원 사용량을 모니터링하는 단계는,
    상기 호스트 장치의 최대 자원량에서 상기 복수의 컨테이너에서 사용된 자원량의 총합을 차감하여, 상기 호스트 장치의 잔여 자원을 산출하는 단계;및
    상기 호스트 장치의 잔여 자원을 상기 복수의 컨테이너에서 각각 사용된 자원 사용량의 비율에 따라 재할당하는 단계;를 포함하는, 방법.
  17. ◈청구항 17은(는) 설정등록료 납부시 포기되었습니다.◈
    제 10 항에 있어서,
    상기 복수의 컨테이너에 할당할 자원을 동적으로 재계산하는 단계는,
    상기 복수의 컨테이너에서 사용된 자원량의 총합에서 상기 호스트 장치의 최대 자원량을 차감하여 상기 호스트 장치의 초과 자원을 산출하는 단계;
    상기 호스트 장치의 초과 자원을 상기 복수의 컨테이너에서 각각 사용된 자원 사용량의 비율에 따라 복수개의 분할 자원을 결정하는 단계;및
    상기 복수의 컨테이너 각각에 할당된 자원에서 상기 복수개의 분할 자원을 차감하는 단계;를 포함하는, 방법.
  18. ◈청구항 18은(는) 설정등록료 납부시 포기되었습니다.◈
    제 10 항 내지 제17항 중 어느 한 항의 호스트 장치의 동작 방법을 실행하기 위하여 매체에 저장된 컴퓨터 프로그램.
  19. 삭제
  20. 삭제
KR1020180067032A 2018-06-11 2018-06-11 가상화 환경에서의 자원 할당 방법 및 장치 KR102640232B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180067032A KR102640232B1 (ko) 2018-06-11 2018-06-11 가상화 환경에서의 자원 할당 방법 및 장치
PCT/KR2019/006260 WO2019240400A1 (ko) 2018-06-11 2019-05-24 가상화 환경에서의 자원 할당 방법 및 장치
US17/251,036 US20210191751A1 (en) 2018-06-11 2019-05-24 Method and device for allocating resource in virtualized environment

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180067032A KR102640232B1 (ko) 2018-06-11 2018-06-11 가상화 환경에서의 자원 할당 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20190140341A KR20190140341A (ko) 2019-12-19
KR102640232B1 true KR102640232B1 (ko) 2024-02-26

Family

ID=68843430

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180067032A KR102640232B1 (ko) 2018-06-11 2018-06-11 가상화 환경에서의 자원 할당 방법 및 장치

Country Status (3)

Country Link
US (1) US20210191751A1 (ko)
KR (1) KR102640232B1 (ko)
WO (1) WO2019240400A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021149808A (ja) * 2020-03-23 2021-09-27 富士通株式会社 Cpu状態表示方法及びcpu状態表示プログラム
KR20210157246A (ko) 2020-06-19 2021-12-28 재단법인대구경북과학기술원 임베디드시스템에서 동적자원관리방법 및 장치
US11740921B2 (en) * 2020-11-23 2023-08-29 Google Llc Coordinated container scheduling for improved resource allocation in virtual computing environment

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120060171A1 (en) * 2010-09-02 2012-03-08 International Business Machines Corporation Scheduling a Parallel Job in a System of Virtual Containers
US20170090992A1 (en) * 2015-09-28 2017-03-30 International Business Machines Corporation Dynamic transparent provisioning for application specific cloud services

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7143413B2 (en) * 2002-05-15 2006-11-28 Hewlett-Packard Development Company, L.P. Method and system for allocating system resources among applications using weights
US7136800B1 (en) * 2002-10-18 2006-11-14 Microsoft Corporation Allocation of processor resources in an emulated computing environment
JP2006092053A (ja) * 2004-09-22 2006-04-06 Nec Corp システム使用率管理装置及びそれに用いるシステム使用率管理方法並びにそのプログラム
US9081622B2 (en) * 2013-05-13 2015-07-14 Vmware, Inc. Automated scaling of applications in virtual data centers
KR20150007698A (ko) * 2013-07-12 2015-01-21 이규호 가상 데스크탑 서비스를 위한 부하 분산 시스템
KR20150011250A (ko) * 2013-07-22 2015-01-30 한국전자통신연구원 클라우드 센터 관리 방법 및 그 시스템
KR101740490B1 (ko) * 2015-12-29 2017-05-26 경희대학교 산학협력단 클라우드 컴퓨팅 환경에서의 사전 오토 스케일링 시스템 및 그 방법
KR102505855B1 (ko) * 2016-01-11 2023-03-03 삼성전자 주식회사 가중치 기반 멀티-큐 가능 리소스 공유 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120060171A1 (en) * 2010-09-02 2012-03-08 International Business Machines Corporation Scheduling a Parallel Job in a System of Virtual Containers
US20170090992A1 (en) * 2015-09-28 2017-03-30 International Business Machines Corporation Dynamic transparent provisioning for application specific cloud services

Also Published As

Publication number Publication date
KR20190140341A (ko) 2019-12-19
WO2019240400A1 (ko) 2019-12-19
US20210191751A1 (en) 2021-06-24

Similar Documents

Publication Publication Date Title
US11221884B2 (en) Hybrid virtual machine configuration management
US8825863B2 (en) Virtual machine placement within a server farm
US8484639B2 (en) Fine-grained cloud management control using nested virtualization
US9898794B2 (en) Host-based GPU resource scheduling
US9665154B2 (en) Subsystem-level power management in a multi-node virtual machine environment
US9529642B2 (en) Power budget allocation in a cluster infrastructure
US9176787B2 (en) Preserving, from resource management adjustment, portions of an overcommitted resource managed by a hypervisor
KR102640232B1 (ko) 가상화 환경에서의 자원 할당 방법 및 장치
US10007556B2 (en) Reducing utilization speed of disk storage based on rate of resource provisioning
KR20210095690A (ko) 리소스 관리 방법과 장치, 전자 디바이스 및 기록 매체
US11416306B1 (en) Placement to optimize heterogeneous physical host utilization
KR102001641B1 (ko) 가상화 환경에서의 gpu 자원 관리 방법 및 장치
KR101924467B1 (ko) 가상 머신의 cpu 및 블록 i/o 작업에 성능 보장을 위한 자원 할당 시스템 및 방법
US9891954B2 (en) Cluster resource management in a virtualized computing environment
Wu et al. Dynamic CPU allocation for Docker containerized mixed-criticality real-time systems
WO2018077030A1 (zh) 一种虚拟机内存资源的调度方法以及装置
KR101495069B1 (ko) 입출력 가상화 네트워크 인터페이스 카드 기반 가상 데스크탑 서비스 방법 및 장치
WO2021095943A1 (ko) 서비스 프로파일을 고려한 컨테이너의 배치 방법
US20140245300A1 (en) Dynamically Balanced Credit for Virtual Functions in Single Root Input/Output Virtualization
US20220237024A1 (en) Diagonal autoscaling of serverless computing processes for reduced downtime
US10963296B1 (en) Load balancing of compute resources based on resource credits
Xu et al. MemNet: Enhancing throughput and energy efficiency for hybrid workloads via para-virtualized memory sharing
KR20170094899A (ko) 컴퓨팅 리소스 관리 시스템 및 방법
WO2023173961A1 (zh) 一种内存分配方法及相关产品
Tippa Design of client aware scheduler for XEN with enhanced techniques to improve cloud performance

Legal Events

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