KR20200061828A - 전자장치 및 그 제어방법 - Google Patents

전자장치 및 그 제어방법 Download PDF

Info

Publication number
KR20200061828A
KR20200061828A KR1020180147569A KR20180147569A KR20200061828A KR 20200061828 A KR20200061828 A KR 20200061828A KR 1020180147569 A KR1020180147569 A KR 1020180147569A KR 20180147569 A KR20180147569 A KR 20180147569A KR 20200061828 A KR20200061828 A KR 20200061828A
Authority
KR
South Korea
Prior art keywords
instance
container
electronic device
server
assigned
Prior art date
Application number
KR1020180147569A
Other languages
English (en)
Other versions
KR102650976B1 (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 KR1020180147569A priority Critical patent/KR102650976B1/ko
Priority to PCT/KR2019/016150 priority patent/WO2020111671A1/en
Priority to US16/695,630 priority patent/US20200167183A1/en
Publication of KR20200061828A publication Critical patent/KR20200061828A/ko
Application granted granted Critical
Publication of KR102650976B1 publication Critical patent/KR102650976B1/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
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • 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/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
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • 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

Abstract

전자장치는, 통신부를 통해 수신되는 복수의 외부장치의 요청에 따라서, 각 요청에 대응하는 서비스의 컨테이너들을 복수의 인스턴스 중 어느 하나에 할당하고, 각 외부장치에 대하여 각 컨테이너에 기초한 서비스를 수행하고, 복수의 인스턴스 중에서, 제1인스턴스에 할당된 컨테이너를 제2인스턴스로 전환하여 할당하고, 제1인스턴스를 삭제하는 프로세서를 포함한다.

Description

전자장치 및 그 제어방법 {ELECTRONIC APPARATUS AND CONTROL METHOD THEREOF}
본 발명은 가상화 플랫폼을 통해 어플리케이션의 실행 환경을 외부장치에 제공하는 전자장치 및 그 제어방법에 관한 것으로서, 상세하게는 가상화 플랫폼에 사용되는 시스템 자원을 관리하는 전자장치 및 그 제어방법에 관한 것이다.
소정의 정보를 특정 프로세스에 따라서 연산 및 처리하기 위해, 연산을 위한 CPU, 칩셋, 메모리 등의 전자부품들을 기본적으로 포함하는 전자장치는, 처리 대상이 되는 정보 또는 사용 용도가 무엇인지에 따라서 다양한 종류로 구분될 수 있다. 예를 들면, 전자장치에는 범용의 정보를 처리하는 PC나 서버 등의 정보처리장치, 영상데이터를 처리하는 영상처리장치, 오디오를 처리하는 오디오장치, 가정 내 잡무를 수행하는 생활가전 등이 있다. 영상처리장치는 처리된 영상데이터를 자체 구비한 디스플레이 패널(display panel) 상에 영상으로 표시하는 디스플레이장치로 구현될 수 있다. 이와 같은 다양한 종류의 전자장치들은 상호 통신이 가능한 서버 및 클라이언트의 역할을 각기 수행할 수 있다.
서버는 복수의 클라이언트에 대해 어플리케이션 실행을 위한 프로세스 환경을 제공한다. 그런데, 각 클라이언트는 구동하는 운영체제가 상이할 수 있고, 또 동일한 운영체제라고 하더라도 어플리케이션이 동작하는 다양한 부가적 환경이 상이할 수 있다. 서버의 운영체제가 클라이언트의 운영체제와 상호 대응하는 경우도 있지만, 다수의 클라이언트가 서버에 접속하므로, 서버의 운영체제와 대응하지 않는 운영체제에 의해 동작하는 클라이언트도 있다. 그러나, 각 클라이언트의 운영체제 별로 서버가 마련되는 것은, 비용, 에너지, 장소, 관리 등 여러 측면에서 비효율적이다. 이에, 서버는 가상 플랫폼의 구현을 통해, 다양한 운영체제를 가진 다양한 클라이언트에 각기 대응하는 프로세스 환경을 제공한다.
예를 들면, 서버는 서버의 구동을 위한 호스트 운영체제와, 호스트 운영체제 상에서 개별적으로 구동하면서 단위 프로세스 환경을 생성하는 복수의 게스트 운영체제를 포함한다. 각 단위 프로세스 환경은 서로 상이한 게스트 운영체제에 의해 어플리케이션의 실행 환경을 제공하며, 복수의 단위 프로세스 환경은 프로세스 측면에서 상호간에 격리된다. 서버는 접속되는 클라이언트의 요청에 따라서, 호스트 운영체제 상에서 게스트 운영체제를 동작시키고, 게스트 운영체제에 의한 단위 프로세스 환경 내에서 클라이언트의 요청에 따른 어플리케이션의 실행 환경을 제공한다. 이로써, 서버는 다양한 운영체제 및 실행환경을 가진 다양한 클라이언트의 요청에 대응하는 프로세스 환경을 각 클라이언트에 제공할 수 있다.
그런데, 이런 방식으로 서버가 다양한 클라이언트로부터의 요청에 대응하는 단위 프로세스 환경을 제공하다 보면, 시간의 경과에 따라서 각 단위 프로세스 환경에서 시스템 자원의 단편화가 발생한다. 즉, 클라이언트의 요청에 따라서 단위 프로세스 환경이 생성되고 어플리케이션이 실행되었으나, 클라이언트의 접속이 끊기고 어플리케이션이 종료되더라도 이 단위 프로세스 환경에 할당된 시스템 자원은 할당된 상태를 유지한다. 각 단위 프로세스 환경은 생성된 수만큼 서버의 시스템 자원이 할당되므로, 이러한 단편화 현상은 서버 내에서 시스템 자원의 낭비를 초래한다. 이에, 이러한 문제점을 해결한 전자장치가 요구될 수 있다.
본 발명의 실시예에 따른 전자장치는, 통신부와, 상기 통신부를 통해 수신되는 복수의 외부장치의 요청에 따라서, 상기 각 요청에 대응하는 서비스의 컨테이너들을 복수의 인스턴스 중 어느 하나에 할당하고, 상기 각 외부장치에 대하여 상기 각 컨테이너에 기초한 서비스를 수행하고, 상기 복수의 인스턴스 중에서, 제1인스턴스에 할당된 컨테이너를 제2인스턴스로 전환하여 할당하고, 상기 제1인스턴스를 삭제하는 프로세서를 포함한다. 이로써, 전자장치는 시스템 자원의 낭비를 줄여서 효율적으로 관리할 수 있다.
여기서, 상기 프로세서는, 상기 제1인스턴스에 할당된 컨테이너의 현재 실행 이미지를 백업하고, 상기 백업된 이미지를 상기 제2인스턴스에 로딩시킴으로써 상기 컨테이너를 상기 제2인스턴스로 전환시킬 수 있다. 이로써, 전자장치는 컨테이너 내의 실행 상태의 변화 없이, 제1인스턴스의 컨테이너를 제2인스턴스로 이동할 수 있다.
여기서, 상기 프로세서는, 상기 외부장치를 상기 제1인스턴스에 할당된 컨테이너에 연결하고, 상기 컨테이너의 상기 제2인스턴스로의 전환에 대응하여, 상기 제1인스턴스의 컨테이너에 대한 상기 외부장치의 연결을 상기 제2인스턴스의 컨테이너로 전환하고, 상기 제1인스턴스를 삭제할 수 있다. 이로써, 전자장치는 외부장치에 대해 컨테이너에 의한 서비스를 제공하는 동안에 컨테이너를 제2인스턴스로 이동시키더라도, 그 동작을 외부장치의 사용자가 인지하지 못하도록 할 수 있다.
또한, 상기 프로세서는, 상기 제1인스턴스에 할당된 컨테이너들의 사용률이 기 설정된 문턱값보다 낮다고 판단하면, 상기 제1인스턴스에 할당된 컨테이너를 상기 제2인스턴스로 전환시킬 수 있다. 이로써, 전자장치는 복수의 인스턴스 내 컨테이너가 단편화되었는지를 판단할 수 있다.
또는, 상기 프로세서는, 상기 제1인스턴스의 생성 시점으로부터 기 설정된 시간을 경과한 것으로 판단하면, 상기 제1인스턴스에 할당된 컨테이너를 상기 제2인스턴스로 전환시킬 수 있다. 이로써, 전자장치는 복수의 인스턴스 내 컨테이너가 단편화되었는지를 판단할 수 있다.
또한, 상기 프로세서는, 상기 제1인스턴스에 할당된 컨테이너들의 사용율이 상기 제2인스턴스에 비하여 상대적으로 적다고 판단하면, 상기 제1인스턴스에 할당된 컨테이너를 상기 제2인스턴스로 전환시킬 수 있다. 이로써, 전자장치는 복수의 인스턴스 중에서 컨테이너를 이동시킬 인스턴스를 구분할 수 있다.
또는, 상기 프로세서는, 상기 제1인스턴스의 생성 시점이 상기 제2인스턴스에 비하여 상대적으로 오래되었다고 판단하면, 상기 제1인스턴스에 할당된 컨테이너를 상기 제2인스턴스로 전환시킬 수 있다. 이로써, 전자장치는 복수의 인스턴스 중에서 컨테이너를 이동시킬 인스턴스를 구분할 수 있다.
또한, 상기 프로세서는, 상기 외부장치의 요청에 따른 컨테이너를 기 생성된 상기 복수의 인스턴스에 할당할 수 없으면 새로운 인스턴스를 생성하여 상기 컨테이너를 할당할 수 있다. 이로써, 전자장치는 인스턴스의 개수를 줄여서 시스템 자원의 소모를 줄일 수 있다.
또한, 상기 인스턴스는, 상기 전자장치의 구동을 위한 제1운영체제 상에서, 제2운영체제에 의해 구동되는 단위 프로세스를 포함하고, 상기 컨테이너는, 상기 인스턴스 내 상기 제2운영체제 상에서 실행되는 어플리케이션에 의해 구현될 수 있다. 이로써, 전자장치는 다수의 외부장치에 대해 상호 분리된 서비스를 각각 제공할 수 있다.
또한, 본 발명의 실시예에 따른 전자장치의 제어방법은, 복수의 외부장치의 요청에 따라서, 상기 각 요청에 대응하는 서비스의 컨테이너들을 복수의 인스턴스 중 어느 하나에 할당하는 단계와, 상기 각 외부장치에 대하여 상기 각 컨테이너에 기초한 서비스를 수행하는 단계와, 상기 복수의 인스턴스 중에서, 제1인스턴스에 할당된 컨테이너를 제2인스턴스로 전환하여 할당하는 단계와, 상기 제1인스턴스를 삭제하는 단계를 포함할 수 있다. 이로써, 전자장치는 시스템 자원의 낭비를 줄여서 효율적으로 관리할 수 있다.
도 1은 본 발명의 실시예에 따른 전자장치의 예시도이다.
도 2는 본 발명의 실시예에 따른 서버의 구성 블록도이다.
도 3은 본 발명의 실시예에 따른 서버의 제어방법을 나타내는 플로우차트이다.
도 4는 본 발명의 실시예에 따른 서버에서 구동하는 가상화 플랫폼의 원리를 나타내는 예시도이다.
도 5는 본 발명의 실시예에 따른 서버가 인스턴스의 수를 늘리는 과정을 나타내는 예시도이다.
도 6은 본 발명의 실시예에 따른 서버에서 발생하는 인스턴스 내 컨테이너의 단편화 현상을 나타내는 예시도이다.
도 7은 본 발명의 실시예에 따른 서버가 도 6의 단편화 현상을 해소하도록 인스턴스 간에 컨테이너를 이동시키는 원리를 나타내는 예시도이다.
도 8은 본 발명의 실시예에 따른 서버가 인스턴스 간에 컨테이너를 이동시키는 원리를 나타내는 예시도이다.
도 9는 본 발명의 실시예에 따른 서버가 단말에 서비스를 제공하는 동안에 인스턴스 간의 컨테이너를 이동시키는 과정을 나타내는 플로우차트이다.
이하에서는 첨부도면을 참조하여 본 발명에 따른 실시예들에 관해 상세히 설명한다. 각 도면을 참조하여 설명하는 실시예들은 특별한 언급이 없는 한 상호 배타적인 구성이 아니며, 하나의 장치 내에서 복수 개의 실시예가 선택적으로 조합되어 구현될 수 있다. 이러한 복수의 실시예의 조합은 본 발명의 기술분야에서 숙련된 기술자가 본 발명의 사상을 구현함에 있어서 임의로 선택되어 적용될 수 있다.
만일, 실시예에서 제1구성요소, 제2구성요소 등과 같이 서수를 포함하는 용어가 있다면, 이러한 용어는 다양한 구성요소들을 설명하기 위해 사용되는 것이며, 용어는 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용되는 바, 이들 구성요소는 용어에 의해 그 의미가 한정되지 않는다. 실시예에서 사용하는 용어는 해당 실시예를 설명하기 위해 적용되는 것으로서, 본 발명의 사상을 한정하지 않는다.
또한, 본 명세서에서의 복수의 구성요소 중 "적어도 하나(at least one)"라는 표현이 나오는 경우에, 본 표현은 복수의 구성요소 전체 뿐만 아니라, 복수의 구성요소 중 나머지를 배제한 각 하나 혹은 이들의 조합 모두를 지칭한다.
도 1은 본 발명의 실시예에 따른 전자장치의 예시도이다.
도 1에 도시된 바와 같이, 본 발명의 실시예에 따른 전자장치는 서버(110)로 구현되며, 네트워크를 통해 복수의 클라이언트 또는 단말(120, 130, 140)과 각기 통신 가능하게 접속된다. 다만, 전자장치가 서버(110)로 구현되는 경우는 한 가지 예시일 뿐이며, 전자장치는 다양한 종류의 단말(120, 130, 140)에 각기 통신 가능하게 접속되는 호스트장치로 구현될 수도 있다. 서버(110) 및 단말(120, 130, 140) 사이의 접속 방식은 광역 네트워크, 근거리 네트워크, 케이블에 의한 일대 다 접속 등으로 다양하다. 단말(120, 130, 140)은 TV, 컴퓨터, 셋탑박스, 태블릿, 휴대용 미디어 플레이어, 웨어러블 디바이스, 생활가전 등 다양한 종류의 장치로 구현될 수 있으며, 본 실시예에 따르면 단말(120, 130, 140)은 TV로 구현된다.
서버(110)는 본 실시예와 같이 단일 장치는 물론, 다수의 장치군으로 구현될 수 있다. 서버(110)는 접속되는 각 단말(120, 130, 140)에 대해, 어플리케이션을 비롯한 다양한 형태의 프로그램에 관한 프로세스의 서비스 환경을 제공할 수 있다. 서버(110)가 제공하는 이러한 서비스 환경은 다양한 경우에 사용될 수 있다.
한 가지 예를 들면, 개발자가 단말(120, 130, 140)을 대상으로 배포되는 어플리케이션은, 지속적인 개발 및 관리를 통해 계속 버전업이 이루어진다. 제조자가 개발 및 생산하는 단말(120, 130, 140) 또한 기술의 발전에 따라서, 모델 별로 장치 특성이 상이하다. 통상적으로 개발자는 어플리케이션이 개발 시점에서 최신 모델의 단말(120, 130)에서 실행될 수 있도록 한다. 또한, 개발자가 구식 모델의 단말(140)에서도 실행될 수 있도록 하위 호환성을 고려하여 어플리케이션을 관리할 수 있다.
그러나, 최신 모델의 단말(120, 130)에서 실행 가능한 어플리케이션의 하위 호환성이 보장되지 않는 경우에는, 구식 모델의 단말(140)에서 어플리케이션이 실행될 수 없다. 이에 대비하여, 서버(110)는 어플리케이션이 실행되는 프로세스 환경을 단말(140)에 제공할 수 있다. 한 가지의 예를 들면, 특정 포맷의 컨텐츠를 재생시키는 어플리케이션을 단말(140)에서 실행시킬 수 없다고 할 때, 단말(140)은 해당 어플리케이션에 의해 컨텐츠가 재생되도록 하는 동작의 요청을 서버(110)에 보낼 수 있다. 서버(110)는 단말(140)의 요청에 응답하여 기 설정된 프로세스 환경 하에서 어플리케이션이 실행시켜 컨텐츠를 재생시키고, 어플리케이션에 의해 컨텐츠가 재생되는 화면의 정보를 단말(140)에 전송한다. 단말(140)은 서버(110)에서 수신되는 정보를 처리하여, 컨텐츠의 재생 화면을 표시한다.
그런데, 각 단말(120, 130, 140)은 서로 상이한 장치 환경 하에서 서로 상이한 운영체제에 의해 구동될 수 있으므로, 각 단말(120, 130, 140)이 요구하는 프로세스 환경 또한 서로 상이하다. 이에, 서버(110)는 각 단말(120, 130, 140)에 대응하는 프로세스 환경을 제공할 수 있도록 가상화 플랫폼을 작동시킨다.
이하, 서버(110)를 이루는 하드웨어 구성에 관해 설명한다.
도 2는 본 발명의 실시예에 따른 서버의 구성 블록도이다.
도 2에 도시된 바와 같이, 서버(200)는 하나 이상의 단말(201)과 통신하는 통신부(210)와, 사용자 입력이 수행되는 사용자입력부(220)와, 데이터가 저장되는 저장부(230)와, 데이터를 처리하는 프로세서(240)를 포함한다.
통신부(210)는 다양한 종류의 유선 및 무선 통신 프로토콜에 대응하는 통신모듈, 통신칩 등의 구성요소들 중 적어도 하나 이상을 포함하는 양방향 통신회로이다. 예를 들면, 통신부(210)는 와이파이 방식에 따라서 AP와 무선통신을 수행하는 무선통신모듈이나, 라우터 또는 게이트웨이에 유선 접속된 랜카드로 구현될 수 있다. 예를 들면, 통신부(120)는 네트워크를 통해 단말(201)과 통신함으로써, 단말(201)과의 사이에 데이터 패킷을 송수신할 수 있다.
사용자입력부(220)는 사용자의 입력을 수행하기 위해 마련된 다양한 종류의 입력 인터페이스를 포함한다. 사용자입력부(220)는 사용자 조작 방식에 따라서 여러 가지 형태의 구성이 가능하며, 예를 들면 서버(200)에 마련된 버튼부, 키보드, 마우스, 터치패드, 터치스크린, 리모트 컨트롤러 등이 있다.
저장부(230)는 프로세서(240)에 의해 억세스되며, 프로세서(240)의 제어에 따라서 데이터의 독취, 기록, 수정, 삭제, 갱신 등의 동작이 수행된다. 저장부(230)는 전원의 제공 유무와 무관하게 데이터를 저장할 수 있는 플래시메모리(flash-memory), HDD(hard-disc drive), SSD(solid-state drive) 등과 같은 비휘발성 메모리와, 처리를 위한 데이터가 로딩되는 버퍼(buffer), 램(RAM; Random Access Memory) 등과 같은 휘발성 메모리를 포함한다.
본 실시예에 따른 저장부(230)는 호스트 운영체제와, 복수의 게스트 운영체제를 저장한다. 호스트 운영체제는 서버(200)의 하드웨어 상에서 동작하며 서버를 구동시키는 운영체제이다. 게스트 운영체제는 가상화 플랫폼의 구현을 위해 호스트 운영체제 상에서 구동하도록 마련된다. 호스트 운영체제 및 게스트 운영체제라는 용어는 이러한 기능의 구분을 위해 편의상 지칭되는 것에 불과하며, 용어가 각 운영체제의 특징 또는 방식을 한정하는 것은 아니다.
프로세서(240)는 인쇄회로기판 상에 장착되는 CPU, 칩셋, 버퍼, 회로 등으로 구현되는 하나 이상의 하드웨어 프로세서를 포함하며, 설계 방식에 따라서는 SOC(system on chip)로 구현될 수도 있다. 프로세서(240)는 서버(200)가 부팅되면 호스트 운영체제를 실행시킴으로써 호스트 운영체제가 서버(200)를 제어할 수 있도록 한다. 또한, 프로세서(240)는 단말(201)에 어플리케이션의 실행을 위한 서비스를 제공하도록 가상화 플랫폼을 운용한다.
이하, 본 발명의 실시예에 따른 프로세서(240)의 동작에 관해 설명한다.
도 3은 본 발명의 실시예에 따른 서버의 제어방법을 나타내는 플로우차트이다.
도 3에 도시된 바와 같이, 하기 동작은 서버의 프로세서에 의해 수행된다.
310 단계에서 서버는 가상 플랫폼을 구축하고, 인스턴스(instance)를 생성한다. 인스턴스는 서버의 시스템 자원을 사용하여 구현된 프로그램의 실행 서비스에 관한 단위 환경을 지칭한다.
320 단계에서 서버는 복수의 단말로부터의 요청에 응답하여, 해당 요청에 각기 대응하는 서비스의 컨테이너를 인스턴스에 할당함으로써 각 단말에 서비스를 제공한다. 컨테이너는 예를 들면 인스턴스 내에서 소정 어플리케이션이 실행되는 프로세스 단위를 지칭한다.
330 단계에서 서버는 추가적인 단말로부터 요청에 대응하는 컨테이너를 인스턴스에 할당할 수 있는지 여부를 판단한다. 인스턴스는 컨테이너가 할당될 수 있는 수치에 제한이 있으므로, 서버는 인스턴스에서 이 제한을 넘는지 여부를 판단한다.
새 요청에 대응하는 컨테이너를 인스턴스에 할당할 수 있으면, 서버는 320 단계로 이행함으로써 해당 컨테이너를 인스턴스에 할당한다.
반면에, 새 요청에 대응하는 컨테이너를 인스턴스에 할당할 수 없으면, 340 단계에서 서버는 새 인스턴스를 생성하고, 생성된 새 인스턴스에 해당 컨테이너를 할당한다.
350 단계에서 서버는 복수의 인스턴스에서 컨테이너의 단편화를 나타내는 이벤트가 발생하였는지 여부를 판단한다. 본 이벤트는 서버에서 다양한 내용 및 형식을 가진 이벤트로 마련될 수 있다. 단편화 이벤트가 발생하지 않으면, 서버는 추가적인 동작을 실행하지 않는다.
단편화 이벤트가 발생하면, 360 단계에서 서버는 복수의 인스턴스 중 어느 하나의 인스턴스에 할당되어 있는 컨테이너를 다른 하나의 인스턴스로 전환하여 재할당한다. 이로써, 상기한 다른 하나의 인스턴스는 어떠한 컨테이너도 할당되지 않은 상태가 된다.
370 단계에서 서버는 복수의 인스턴스 중 컨테이너가 할당되지 않은 인스턴스를 삭제한다.
예를 들면, 서버는 복수의 인스턴스에서 컨테이너의 단편화가 발생하면, 어느 한 인스턴스의 컨테이너를 다른 인스턴스로 옮겨서 재할당하고 상기한 어느 한 인스턴스를 삭제함으로써, 사용중인 인스턴스의 총 개수를 줄인다. 이와 같이, 본 실시예에 따른 서버는 복수의 인스턴스의 사용 중에 컨테이너의 단편화가 발생하면, 인스턴스들 사이에서 컨테이너를 이동시킴으로써 단편화를 해소시킬 수 있다. 또한, 서버는 단편화의 해소에 따라서, 사용하는 인스턴스의 수를 줄일 수 있다.
이하 실시예에서는, 상기한 각 동작에 관해 보다 구체적으로 설명한다. 먼저, 서버의 가상화 플랫폼에 관해 이하 설명한다.
도 4는 본 발명의 실시예에 따른 서버에서 구동하는 가상화 플랫폼의 원리를 나타내는 예시도이다.
도 4에 도시된 바와 같이, 서버(400)는 하드웨어(410)의 동작을 제어하도록 하드웨어(410) 상에서 구동하는 호스트 운영체제(420)와, 호스트 운영체제(420) 상에서 하나 이상의 인스턴스(440)를 실행시키는 하이퍼바이저(hypervisor)(430)를 포함한다.
호스트 운영체제(420)는 서버(400)의 하드웨어(410)를 관리하고 다양한 소프트웨어를 실행시킨다. 호스트 운영체제(420)는 하드웨어(410)의 자원을 효율적으로 할당, 관리 및 보호하며, 하드웨어(410) 및 상위 소프트웨어 사이의 중재 역할을 수행한다. 예를 들면, 호스트 운영체제(420)는 프로세스 관리, 인터럽트, 메모리 관리, 파일 시스템, 장치 드라이버, 네트워킹, 보안, 입출력 등의 다양한 기능을 수행한다.
하이퍼바이저(430)는 호스트 운영체제(420) 상에서 실행되는 미드웨어이며, 호스트 운영체제(420) 상에서 다수의 게스트 운영체제(441)를 함께 실행하기 위한 논리적 플랫폼으로서 동작한다. 통상적으로 운영체제는, 계층적인 측면에서 하드웨어 상에서 실행됨으로써 하드웨어의 자원을 제어하게 된다. 그런데, 가상 플랫폼이 구현될 때, 호스트 운영체제(420) 상에서 게스트 운영체제(441)가 다이렉트로 실행되는 것은 소프트웨어의 특성 상 곤란하다.
이에, 하이퍼바이저(430)는 호스트 운영체제(420) 상에서 실행됨으로써 게스트 운영체제(441)가 실행될 수 있는 환경을 가상화시키며, 결과적으로 호스트 운영체제(420) 상에서 게스트 운영체제(441)가 실행될 수 있는 플랫폼을 구축한다. 즉, 하이퍼바이저(430)는 하나의 물리적 서버(400)를 여러 개의 독립된 가상의 서버(400) 환경으로 나누어 사용할 수 있게 한다.
인스턴스(440)는 하이퍼바이저(430) 상에서 구현되는 일종의 프로세스 환경의 단위를 지칭한다. 인스턴스(440)는 하이퍼바이저(430) 상에서 복수 개가 함께 실행될 수 있다. 하나의 인스턴스(440)는 하나의 게스트 운영체제(441)에 의해 구동되므로, 하나의 인스턴스(440)는 마치 한 대의 서버가 구동하는 것과 같은 환경을 제공한다. 따라서, 복수의 인스턴스(440)는 상호간에 격리된 프로세스 환경을 가진다.
인스턴스(440)는 논리적으로 생성되는 단위 프로세스 환경으로서, 서버(400)의 필요에 따라서 신규로 생성되거나 또는 삭제될 수 있도록 마련된다. 예를 들면, 서버(400)는 하드웨어(410)를 비롯한 다양한 시스템 자원을 할당하여 인스턴스(440)를 생성한다. 인스턴스(440)는 해당 인스턴스(440)의 구동을 위한 게스트 운영체제(441)와, 게스트 운영체제(441) 상에서 실행되며 소정의 어플리케이션(450)을 각기 실행시키기 위한 복수의 단위 시뮬레이터(442)를 포함한다.
본 실시예에서는 복수의 인스턴스(440)가 각기 게스트 운영체제(441)를 포함하는 경우에 관해 설명한다. 이러한 경우에는, 인스턴스(440)의 생성 시에 게스트 운영체제(441)가 실행되고, 인스턴스(440)의 종료 시에 게스트 운영체제(441)도 종료한다. 즉, 게스트 운영체제(441)는 인스턴스(440)에 종속적이다.
그러나, 가상화 플랫폼의 형태가 이에 한정되는 것은 아니며, 복수의 인스턴스(440)가 개별적으로 게스트 운영체제(441)를 포함하지 않고, 하나의 게스트 운영체제(441) 상에서 구동하는 경우도 가능하다. 이러한 경우에는, 인스턴스(440)의 생성에 앞서서 이미 게스트 운영체제(441)가 실행되어 있어야 한다. 또한, 인스턴스(440)가 종료되더라도, 타 인스턴스(440)가 여전히 실행중이라면 게스트 운영체제(441)는 종료되지 않는다. 즉, 이 경우에 게스트 운영체제(441)는 인스턴스(440)에 독립적이다.
서버(400)의 시스템 자원이 할당됨으로써 인스턴스(440)가 생성될 때, 해당 인스턴스(440)에는 게스트 운영체제(441) 및 복수의 시뮬레이터(442)가 마련된다. 하나의 인스턴스(440)가 포함하는 시뮬레이터(442)의 수는 사전에 지정되어 있으며, 즉 인스턴스(440)는 생성 시에 이미 기 설정된 개수의 시뮬레이터(442)를 포함한다. 하나의 시뮬레이터(442)는 하나의 어플리케이션을 실행시킨다고 하면, 하나의 인스턴스(440) 내에서 실행될 수 있는 어플리케이션(450)의 개수는 하나의 인스턴스(440) 내의 시뮬레이터(442)의 개수와 동일하다.
단말로부터의 요청에 따라서, 서버(400)는 인스턴스(440) 내 시뮬레이터(442)에 어플리케이션(450)을 할당하면, 시뮬레이터(442)는 어플리케이션(450)을 실행한다. 서버(400)는 어플리케이션(450)의 실행되는 화면의 정보를 단말에 전송함으로써, 단말이 해당 정보에 기초하여 어플리케이션(450)의 실행 화면을 표시할 수 있도록 한다. 이와 같이, 단말이 해당 어플리케이션(450)을 직접 실행할 수 없는 경우라고 하더라도, 서버(400)는 어플리케이션(450)이 실행되는 프로세스 환경을 단말에게 제공함으로써, 간접적으로 단말이 어플리케이션(450)을 실행시킬 수 있도록 한다.
하나의 인스턴스(440) 내에서 하나의 시뮬레이터(442)에 의해 어플리케이션(450)이 실행되는 단위를 컨테이너라고 편의상 지칭한다. 이 경우에, 하나의 인스턴스(440)가 포함할 수 있는 컨테이너의 최대 개수는 해당 인스턴스(440)의 시뮬레이터(442)의 개수에 해당한다. 컨테이너는, 예를 들면 어플리케이션(450)을 실행시키는 시뮬레이터(442)와, 어플리케이션(450)의 재생 화면을 단말에 제공하도록 어플리케이션(450)의 재생 정보를 단말에 전송하는 스트리밍 관리자를 포함한다.
단말의 요청에 따라서 어플리케이션(450)이 시뮬레이터(442)에 할당되어 실행되고, 이후 단말의 접속이 끊기는 등의 이벤트가 발생하면 해당 시뮬레이터(442)에 대한 어플리케이션(450)의 할당이 해제된다. 어플리케이션(450)의 할당이 해제된 시뮬레이터(442)에 대해서는, 서버(400)가 다른 어플리케이션(450)을 할당할 수 있다.
그런데, 서버(400)는 초기 단계에서부터 많은 수의 인스턴스(440)를 생성하여 사용하는 것은 아니다. 그 이유는 서버(400) 자원의 효율에 관한 측면도 있고, 서버(400)의 정책적인 측면도 있다. 이러한 이슈와 관련하여, 이하 서버(400)가 인스턴스(440)를 생성하는 과정에 관해 구체적으로 설명한다.
도 5는 본 발명의 실시예에 따른 서버가 인스턴스의 수를 늘리는 과정을 나타내는 예시도이다.
도 5에 도시된 바와 같이, 서버(500)는 초기 상태에서 인스턴스 A(510)를 생성한다. 인스턴스 A(510)는 기 설정된 개수의 시뮬레이터(511)를 포함하며, 초기 상태의 시뮬레이터(511)는 어떠한 어플리케이션도 할당되지 않은 아이들(idle) 상태에 있다. 서버(500)는 각 단말(530)의 요청에 응답하여, 아이들 상태의 각 시뮬레이터(511)에 개별적으로 어플리케이션을 할당하여 실행시키고, 각 어플리케이션의 실행 환경을 각 단말(530)에 대응하게 제공한다. 어플리케이션이 할당되어 실행중인 시뮬레이터(511)는 편의상 할당 상태라고 지칭한다. 시뮬레이터(511)가 할당 상태일 때에 이를 컨테이너라고 지칭할 수 있다. 서버(500)는 새로운 단말(530)로부터의 요청을 수신하면, 인스턴스 A(510) 내에서 아이들 상태의 시뮬레이터(511)에 어플리케이션을 할당한다.
그런데, 인스턴스 A(510) 내의 모든 시뮬레이터(511)가 할당 상태에 있을 때, 즉 인스턴스 A(510) 내에 아이들 상태에 있는 시뮬레이터(511)가 없을 때에, 새로운 단말(541)로부터의 요청이 수신될 수 있다. 인스턴스 A(510) 내에서 단말(541)로부터의 요청에 따른 어플리케이션의 구동이 불가하므로, 이 경우에 서버(500)는 새로운 인스턴스인 인스턴스 B(520)를 추가로 생성한다. 이러한 동작을 스케일 업(scale-up)이라고 지칭한다. 서버(500)는 스케일 업을 통해 새로 생성한 인스턴스 B(520)의 시뮬레이터(521)에, 단말(541)을 위한 어플리케이션을 할당한다.
만일 인스턴스 A(510) 및 인스턴스 B(520)의 모든 시뮬레이터(511, 521)가 할당 상태에 있을 때에 새로운 단말로부터의 요청이 수신되면, 서버(500)는 다시 스케일 업을 수행하여 새로운 인스턴스를 생성하고, 새 인스턴스의 시뮬레이터에 어플리케이션을 할당한다.
여기서, 서버(500)가 초기 상태에서 복수의 인스턴스(510, 520)를 미리 생성해 두지 않고, 필요한 경우에만 스케일 업을 수행하여 새로 인스턴스(520)를 생성하는 이유에 관해 설명한다.
모든 인스턴스(510, 520)는 서버(500)의 시스템 자원을 소모한다. 통상적으로 서버(500)는 많은 수의 단말과 통신을 수행하는 등의 가혹한 동작 환경 하에 있으므로, 원활한 동작을 위해서는 가능한 한 시스템 자원을 확보할 필요가 있다. 따라서, 서버(500)는 필요한 경우에 한해서만 인스턴스(510, 520)의 수를 늘림으로써 시스템 자원의 소모를 가능한 한 줄이고자 할 수 있다.
또한, 관리자가 서버(500)를 직접 운용하는 것이 아닌, 서버(500)를 가진 소유자로부터 서버(500)의 자원을 임대하여 사용하는 경우를 고려할 수 있다. 이 경우에, 관리자는 소유자로부터 임대받은 서버(500)의 자원을 사용하여 단말(530, 541)에 대한 서비스를 제공하고, 사용한 자원의 비용을 소유자에게 지불한다. 서버(500)의 자원을 사용한 비용을 산출하는 기준은 여러 가지가 가능한데, 한 가지 예시로는 인스턴스(510, 520)의 개수가 가능하다. 즉, 소정 시간 동안에 사용한 인스턴스(510, 520)의 개수에 비례하여, 서버(500)의 자원을 사용한 비용이 산출될 수 있다.
따라서, 서버(500)는 초기 상태에서는 최소한의 인스턴스(510)를 생성하여 서비스를 제공하되, 필요한 경우에 한해 인스턴스(520)를 확충시키는 것이, 비용의 절감 측면에서 유리하다.
서버(500)가 단말(530, 541)로부터의 접속이 끊기거나 또는 단말(530, 541)로부터 종료 지시를 수신하면, 각 인스턴스(510, 520)에 할당된 컨테이너(511, 521)는 아이들 상태가 된다.
그런데, 이와 같이 여러 단말(530, 541)의 요청에 따라서 스케일 업이 수행되는 한편, 시뮬레이터(511, 521)의 할당 상태 및 아이들 상태의 전환이 반복되다 보면, 필연적으로 인스턴스(510, 520)에서는 컨테이너(511, 521)의 단편화가 발생한다.
이하, 컨테이너(511, 521)의 단편화 현상에 관해 설명한다.
도 6은 본 발명의 실시예에 따른 서버에서 발생하는 인스턴스 내 컨테이너의 단편화 현상을 나타내는 예시도이다.
도 6에 도시된 바와 같이, 예를 들어 복수의 인스턴스(610, 620, 630)가 있다고 할 때, 각 인스턴스(610, 620, 630)는 복수의 시뮬레이터를 포함한다. 각 시뮬레이터는 할당 상태 및 아이들 상태 중 어느 하나의 상태를 가진다. 서버는 초기 상태에서 인스턴스 A(610)를 생성하고, 각 단말의 요청에 대응하여 인스턴스 A(610)의 시뮬레이터를 할당 상태로 변경함으로써, 각 요청에 대응하는 컨테이너를 인스턴스 A(610)에 할당한다.
인스턴스 A(610)의 모든 시뮬레이터가 할당 상태가 되면, 즉 인스턴스 A(610)에서 컨테이너의 할당 한계가 차서 더 이상 컨테이너를 할당할 수 없다면, 서버는 스케일 업을 통해 인스턴스 B(620)를 추가로 생성하고, 인스턴스 B(620)에 추가 컨테이너를 할당한다. 차후 인스턴스 B(620)의 컨테이너의 할당 한계가 차면, 서버는 다시 스케일 업을 통해 인스턴스 C(630)를 추가로 생성하고, 인스턴스 C(630)에 추가 컨테이너를 할당한다. 이러한 방식으로 서버는 계속적인 스케일 업을 통해 인스턴스(610, 620, 630)를 늘릴 수 있다.
그런데, 서버에 대한 단말의 통신 접속이 종료되거나 또는 단말로부터 어플리케이션에 대한 실행의 종료 지시가 서버에 수신되면, 서버는 해당 단말에 대응하는 시뮬레이터를 아이들 상태로 변경한다. 이와 같은 과정이 반복되면서 시간이 경과하면, 본 도면에서 나타난 바와 같이 각 인스턴스(610, 620, 630)에 아이들 상태의 시뮬레이터와 할당 상태의 시뮬레이터가 혼재된 상태, 즉 컨테이너의 단편화 상태가 된다. 본 도면에서, "allocated"는 할당 상태의 시뮬레이터, 즉 컨테이너를 나타내며, "idle"은 아이들 상태의 시뮬레이터를 나타낸다.
컨테이너의 단편화 상태는 인스턴스(610, 620, 630) 내에서 아이들 상태의 시뮬레이터가 많은 상태이므로, 컨테이너를 구동시키기 위해 실제로 필요한 시스템 자원 이상의 시스템 자원이 사용되고 있음을 의미한다.
여기서, 서버가 복수의 인스턴스(610, 620, 630)에서 컨테이너가 단편화 상태 여부를 판단하는 방법은 여러 가지가 있다. 예를 들면, 서버는 인스턴스(610, 620, 630) 내 컨테이너의 사용률, 즉 인스턴스(610, 620, 630) 내 시뮬레이터 중에서 할당 상태에 있는 시뮬레이터의 사용률이 기 설정된 문턱값보다 낮으면, 단편화 상태로 판단할 수 있다. 또는, 서버는 인스턴스(610, 620, 630) 중 적어도 어느 하나가 생성된 이후에 소정 시간을 경과하면, 단편화 상태인 것으로 판단할 수도 있다.
서버는 복수의 인스턴스(610, 620, 630)에서 컨테이너의 단편화 상태가 발생하고 있다고 판단하면, 다음과 같이 동작한다.
도 7은 본 발명의 실시예에 따른 서버가 도 6의 단편화 현상을 해소하도록 인스턴스 간에 컨테이너를 이동시키는 원리를 나타내는 예시도이다.
도 7에 도시된 바와 같이, 서버는 복수의 인스턴스(710, 720, 730)에서 컨테이너의 단편화 현상이 발생한다고 판단하면, 기 설정된 기준에 따라서 복수의 인스턴스(710, 720, 730) 중에서 컨테이너를 회수할 인스턴스와 및 회수한 컨테이너를 재할당할 인스턴스를 구분한다. 컨테이너를 회수할 인스턴스와 및 회수한 컨테이너를 재할당할 인스턴스 각각의 개수는 한정되지 않는다.
본 기준은 여러 가지가 적용될 수 있다. 예를 들면 서버는 생성 시점이 오래된 인스턴스, 또는 상대적으로 적은 수의 컨테이너를 포함하는 인스턴스를, 컨테이너를 회수할 인스턴스로 판단할 수 있다. 그리고, 서버는 생성 시점이 신규한 인스턴스, 또는 상대적으로 많은 수의 컨테이너를 포함하는 인스턴스를, 회수한 컨테이너를 재할당할 인스턴스로 판단할 수 있다. 또는, 서버는 반대로 생성 시점이 신규한 인스턴스에 대해, 컨테이너를 회수할 인스턴스로 판단하고, 생성 시점이 오래된 인스턴스에 대해, 회수한 컨테이너를 재할당할 인스턴스로 판단할 수도 있다.
본 실시예에서 서버는 복수의 인스턴스(710, 720, 730) 중에서, 인스턴스 B(720) 및 인스턴스 C(730)로부터 컨테이너를 회수하고, 회수한 컨테이너를 인스턴스 A(710)에 재할당하는 것으로 판단한다. 서버는 인스턴스 B(720) 및 인스턴스 C(730)로부터 회수된 컨테이너를, 인스턴스 A(710)에서 아이들 상태의 시뮬레이터로 이동시켜 재할당한다. 즉, 서버는 인스턴스 B(720) 및 인스턴스 C(730) 각각의 시뮬레이터에 할당된 어플리케이션 및 해당 어플리케이션의 실행 상태를, 그대로 인스턴스 A(710)의 아이들 상태의 시뮬레이터에 재할당하여 실행시킨다. 이에 따라서, 인스턴스 A(710)는 원래부터 인스턴스 A(710)에 있던 컨테이너와, 인스턴스 B(720) 및 인스턴스 C(730)로부터 이동해 온 컨테이너를 포함한다.
또한, 서버는 모든 시뮬레이터가 아이들 상태에 있는 인스턴스 B(720) 및 인스턴스 C(730)를 삭제한다. 이와 같이, 서버는 단편화된 복수의 인스턴스(710, 720, 730)의 컨테이너들을 인스턴스 A(710)로 이동시켜 모으고, 인스턴스 B(720) 및 인스턴스 C(730)를 삭제함으로써, 사용중인 인스턴스(710, 720, 730)의 개수를 줄일 수 있다.
그런데, 이와 같이 인스턴스(710, 720, 730)의 단편화를 해소하는 과정에서, 서버는 컨테이너에 접속하는 단말의 사용자가 해당 컨테이너의 이동을 인지하지 않도록 하는 것이 바람직하다. 이하, 인스턴스(710, 720, 730) 간의 컨테이너 이동에 관한 구체적인 동작에 관해 설명한다.
도 8은 본 발명의 실시예에 따른 서버가 인스턴스 간에 컨테이너를 이동시키는 원리를 나타내는 예시도이다.
도 8에 도시된 바와 같이, 서버(800)는 예를 들면 인스턴스 A(810) 및 인스턴스 B(820)를 실행시키며, 단말(801)로부터의 요청에 응답하여 인스턴스 B(820)의 컨테이너(821)에서 실행되는 프로세스 환경을 단말(801)에 제공한다. 이 때, 서버(800)는 인스턴스(810, 820) 내 단편화가 발생하는 것으로 판단하고, 단편화가 해소되도록 인스턴스(810, 820) 사이에서 이동시킨다. 이러한 동작을 위해, 서버(800)는 단말(801)과 컨테이너(821)를 상호 대응하게 연결시키는 프록시(proxy)(840)와, 컨테이너(811, 821)를 동면 및 해제시키는 CRIU (Checkpoint/Restore In User space) 모듈(850)을 포함한다.
프록시(840)는 일종의 라우터 역할을 수행하는 바, 인스턴스(810, 820) 내 다수의 컨테이너(821)를 다수의 단말(801)에 대해 각기 링크시킴으로써, 컨테이너(821)에서 실행되는 어플리케이션의 재생 정보가 대응 단말(801)에 전송될 수 있도록 제어한다.
CRIU 모듈(850)은 컨테이너(821)에서 어플리케이션의 실행 상태를 그대로 동결시킨다. 예를 들어 컨테이너(821)에서 소정의 어플리케이션이 실행되고 있다면, CRIU 모듈(850)은 실행중인 어플리케이션 실행 및 설정 상태를 파일로 기록하고, 어플리케이션을 종료시키며, 차후 본 파일의 기록에 따라서 어플리케이션의 실행 및 설정 상태를 되돌릴 수 있다.
이러한 구조 하에서, 서버(800)는 단편화 해소를 위해, 다음과 같은 방법에 따라서 인스턴스 B(820)의 컨테이너(821)를 인스턴스 A(810)로 이동시켜 재할당한다. 구체적으로, CRIU 모듈(850)은 인스턴스 B(820)에 할당되어 있는 컨테이너(821)의 현재 실행 상태를 이미지화하고, 이미지화된 데이터를 버퍼(860)에 저장함으로써 컨테이너(821)의 현재 실행 상태를 동결시켜 보존한다.
서버(800)는 인스턴스 A(810)에 동결된 이미지화된 데이터를 컨테이너(811)로 할당할 수 있는지 여부를 판단한다. 컨테이너(811)의 할당이 가능하다면, CRIU 모듈(850)은 버퍼(860)에 저장된 이미지화된 데이터를 인스턴스 A(810)에 로딩시키고 동결 시점에서의 상태를 복구시킴으로써, 컨테이너(811)가 인스턴스 A(810)에 할당되도록 한다.
여기서, 단편화 해소 동작에 의해 컨테이너(811)는 인스턴스 B(820)가 아닌 인스턴스 A(810)에 배치된다. 이에, 프록시(840)는 단말(801)에 대한 링크를 인스턴스 B(820)에 할당된 컨테이너(821)로부터 인스턴스 A(810)에 할당된 컨테이너(811)로 조정한다. 이로써, 컨테이너(821)가 인스턴스 B(820)에서 인스턴스 A(810)로 이동하더라도, 서버(800)는 컨테이너(811)의 서비스가 계속 단말(801)에 제공되도록 할 수 있다.
서버(800)는 컨테이너(821)의 이동 및 프록시(840)에 의한 연결 조정이 완료되면, 컨테이너(821) 및 인스턴스 B(820)를 삭제한다.
이와 같이, 서버(800)는 인스턴스(810, 820) 내 단편화가 발생하면, 인스턴스 B(820)의 컨테이너(821)와 동일한 컨테이너(811)를 인스턴스 A(810)에 구현하고, 단말(801)로의 링크를 인스턴스 A(810)의 컨테이너(811)로 전환시킨다. 링크의 전환은 신속하게 수행되므로, 단말(801)의 사용자 입장에서는 서비스의 끊김을 거의 체험하지 않게 된다.
도 9는 본 발명의 실시예에 따른 서버가 단말에 서비스를 제공하는 동안에 인스턴스 간의 컨테이너를 이동시키는 과정을 나타내는 플로우차트이다.
도 9에 도시된 바와 같이, 이하 동작은 서버의 프로세서에 의해 실행된다.
910 단계에서 서버는 제1인스턴스의 컨테이너에 의해 단말에 서비스를 제공한다.
920 단계에서 서버는 단편화 이벤트를 감지한다.
930 단계에서 서버는 제1인스턴스의 컨테이너를 현재 시점에서 이미지화시키고, 이미지 데이터를 백업한다.
940 단계에서 서버는 백업된 이미지 데이터를 제2인스턴스에 로딩시켜 컨테이너를 구현한다.
950 단계에서 서버는 단말에 대한 링크를 제1인스턴스의 컨테이너로부터 제2인스턴스의 컨테이너로 전환시킨다.
960 단계에서 서버는 제2인스턴스의 컨테이너에 의해 단말에 서비스를 제공한다.
970 단계에서 서버는 제1인스턴스를 삭제한다.
이로써, 서버는 사용자에게 제공하는 서비스를 단절시키지 않고도, 인스턴스 내 단편화를 해소할 수 있다.
이상 실시예들에서 설명한 바와 같은 장치의 동작은, 해당 장치에 탑재된 인공지능에 의해 수행될 수 있다. 인공지능은 기계 학습 알고리즘을 활용하여 다양한 제반 시스템에 적용될 수 있다. 인공지능 시스템은 인간 수준 내지는 인간 수준에 버금가는 지능을 구현하는 컴퓨터 시스템으로서, 기계, 장치 또는 시스템이 자율적으로 학습하고 판단하며, 사용 경험의 누적에 기반하여 인식률 및 판단 정확도가 향상되는 시스템이다. 인공지능 기술은 입력되는 데이터들의 특징을 스스로 분류하고 학습하는 알고리즘을 이용한 기계학습(deep-running) 기술 및 알고리즘을 활용하여, 인간의 두뇌의 인지, 판단 등의 기능을 모사하는 요소 기술들로 구성된다.
요소 기술들은, 예를 들면 인간의 언어와 문자를 인식하는 언어적 이해 기술, 사물을 인간의 시각처럼 인식하는 시각적 이해 기술, 정보를 판단하여 논리적으로 추론하고 예측하는 추론 및 예측 기술, 인간의 경험 정보를 지식 데이터로 처리하는 지식 표현 기술, 차량의 자율 주행이나 로봇의 움직임을 제어하는 동작 제어 기술 중 적어도 어느 하나를 포함한다.
여기서, 언어적인 이해는 인간의 언어 또는 문자를 인식하고 응용 처리하는 기술로서, 자연어의 처리, 기계 번역, 대화 시스템, 질의 응답, 음성 인식 및 합성 등을 포함한다.
추론 예측은 정보를 판단하여 논리적으로 예측하는 기술로서, 지식 및 확률 기반 추론, 최적화 예측, 선호 기반 계획, 추천 등을 포함한다.
지식 표현은 인간의 경험 정보를 지식 데이터로 자동화 처리하는 기술로서, 데이터의 생성 및 분류와 같은 지식 구축, 데이터의 활용과 같은 지식 관리 등을 포함한다.
본 발명의 예시적 실시예에 따른 방법들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 이러한 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 예를 들어, 컴퓨터 판독 가능 매체는 삭제 가능 또는 재기록 가능 여부와 상관없이, ROM 등의 저장 장치와 같은 휘발성 또는 비휘발성 저장 장치, 또는 예를 들어, RAM, 메모리 칩, 장치 또는 집적 회로와 같은 메모리, 또는 예를 들어 CD, DVD, 자기 디스크 또는 자기 테이프 등과 같은 광학 또는 자기적으로 기록 가능함과 동시에 기계(예를 들어, 컴퓨터)로 읽을 수 있는 저장 매체에 저장될 수 있다. 이동 단말 내에 포함될 수 있는 메모리는 본 발명의 실시 예들을 구현하는 지시들을 포함하는 프로그램 또는 프로그램들을 저장하기에 적합한 기계로 읽을 수 있는 저장 매체의 한 예임을 알 수 있을 것이다. 본 저장 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어의 기술 분야에서 숙련된 기술자에게 공지되어 사용 가능한 것일 수도 있다.
200 : 서버
201 : 단말
210 : 통신부
220 : 사용자입력부
230 : 저장부
240 : 프로세서

Claims (18)

  1. 전자장치에 있어서,
    통신부와,
    상기 통신부를 통해 수신되는 복수의 외부장치의 요청에 따라서, 상기 각 요청에 대응하는 서비스의 컨테이너들을 복수의 인스턴스 중 어느 하나에 할당하고,
    상기 각 외부장치에 대하여 상기 각 컨테이너에 기초한 서비스를 수행하고,
    상기 복수의 인스턴스 중에서, 제1인스턴스에 할당된 컨테이너를 제2인스턴스로 전환하여 할당하고,
    상기 제1인스턴스를 삭제하는 프로세서를 포함하는 전자장치.
  2. 제1항에 있어서,
    상기 프로세서는, 상기 제1인스턴스에 할당된 컨테이너의 현재 실행 이미지를 백업하고, 상기 백업된 이미지를 상기 제2인스턴스에 로딩시킴으로써 상기 컨테이너를 상기 제2인스턴스로 전환시키는 전자장치.
  3. 제2항에 있어서,
    상기 프로세서는,
    상기 외부장치를 상기 제1인스턴스에 할당된 컨테이너에 연결하고,
    상기 컨테이너의 상기 제2인스턴스로의 전환에 대응하여, 상기 제1인스턴스의 컨테이너에 대한 상기 외부장치의 연결을 상기 제2인스턴스의 컨테이너로 전환하고,
    상기 제1인스턴스를 삭제하는 전자장치.
  4. 제1항에 있어서,
    상기 프로세서는, 상기 제1인스턴스에 할당된 컨테이너들의 사용률이 기 설정된 문턱값보다 낮다고 판단하면, 상기 제1인스턴스에 할당된 컨테이너를 상기 제2인스턴스로 전환시키는 전자장치.
  5. 제1항에 있어서,
    상기 프로세서는, 상기 제1인스턴스의 생성 시점으로부터 기 설정된 시간을 경과한 것으로 판단하면, 상기 제1인스턴스에 할당된 컨테이너를 상기 제2인스턴스로 전환시키는 전자장치.
  6. 제1항에 있어서,
    상기 프로세서는, 상기 제1인스턴스에 할당된 컨테이너들의 사용율이 상기 제2인스턴스에 비하여 상대적으로 적다고 판단하면, 상기 제1인스턴스에 할당된 컨테이너를 상기 제2인스턴스로 전환시키는 전자장치.
  7. 제1항에 있어서,
    상기 프로세서는, 상기 제1인스턴스의 생성 시점이 상기 제2인스턴스에 비하여 상대적으로 오래되었다고 판단하면, 상기 제1인스턴스에 할당된 컨테이너를 상기 제2인스턴스로 전환시키는 전자장치.
  8. 제1항에 있어서,
    상기 프로세서는, 상기 외부장치의 요청에 따른 컨테이너를 기 생성된 상기 복수의 인스턴스에 할당할 수 없으면 새로운 인스턴스를 생성하여 상기 컨테이너를 할당하는 전자장치.
  9. 제1항에 있어서,
    상기 인스턴스는, 상기 전자장치의 구동을 위한 제1운영체제 상에서, 제2운영체제에 의해 구동되는 단위 프로세스를 포함하고,
    상기 컨테이너는, 상기 인스턴스 내 상기 제2운영체제 상에서 실행되는 어플리케이션에 의해 구현되는 전자장치.
  10. 전자장치의 제어방법에 있어서,
    복수의 외부장치의 요청에 따라서, 상기 각 요청에 대응하는 서비스의 컨테이너들을 복수의 인스턴스 중 어느 하나에 할당하는 단계와,
    상기 각 외부장치에 대하여 상기 각 컨테이너에 기초한 서비스를 수행하는 단계와,
    상기 복수의 인스턴스 중에서, 제1인스턴스에 할당된 컨테이너를 제2인스턴스로 전환하여 할당하는 단계와,
    상기 제1인스턴스를 삭제하는 단계를 포함하는 전자장치의 제어방법.
  11. 제10항에 있어서,
    상기 제1인스턴스에 할당된 컨테이너의 현재 실행 이미지를 백업하고, 상기 백업된 이미지를 상기 제2인스턴스에 로딩시킴으로써 상기 컨테이너를 상기 제2인스턴스로 전환시키는 전자장치의 제어방법.
  12. 제11항에 있어서,
    상기 외부장치를 상기 제1인스턴스에 할당된 컨테이너에 연결하고,
    상기 컨테이너의 상기 제2인스턴스로의 전환에 대응하여, 상기 제1인스턴스의 컨테이너에 대한 상기 외부장치의 연결을 상기 제2인스턴스의 컨테이너로 전환하고,
    상기 제1인스턴스를 삭제하는 전자장치의 제어방법.
  13. 제10항에 있어서,
    상기 제1인스턴스에 할당된 컨테이너들의 사용률이 기 설정된 문턱값보다 낮다고 판단하면, 상기 제1인스턴스에 할당된 컨테이너를 상기 제2인스턴스로 전환시키는 전자장치의 제어방법.
  14. 제10항에 있어서,
    상기 제1인스턴스의 생성 시점으로부터 기 설정된 시간을 경과한 것으로 판단하면, 상기 제1인스턴스에 할당된 컨테이너를 상기 제2인스턴스로 전환시키는 전자장치의 제어방법.
  15. 제10항에 있어서,
    상기 제1인스턴스에 할당된 컨테이너들의 사용율이 상기 제2인스턴스에 비하여 상대적으로 적다고 판단하면, 상기 제1인스턴스에 할당된 컨테이너를 상기 제2인스턴스로 전환시키는 전자장치의 제어방법.
  16. 제10항에 있어서,
    상기 제1인스턴스의 생성 시점이 상기 제2인스턴스에 비하여 상대적으로 오래되었다고 판단하면, 상기 제1인스턴스에 할당된 컨테이너를 상기 제2인스턴스로 전환시키는 전자장치의 제어방법.
  17. 제10항에 있어서,
    상기 외부장치의 요청에 따른 컨테이너를 기 생성된 상기 복수의 인스턴스에 할당할 수 없으면 새로운 인스턴스를 생성하여 상기 컨테이너를 할당하는 전자장치의 제어방법.
  18. 제10항에 있어서,
    상기 인스턴스는, 상기 전자장치의 구동을 위한 제1운영체제 상에서, 제2운영체제에 의해 구동되는 프로그램의 실행 서비스에 관한 단위 환경을 포함하고,
    상기 컨테이너는, 상기 인스턴스 내 상기 제2운영체제 상에서 실행되는 어플리케이션에 의해 구현되는 전자장치의 제어방법.
KR1020180147569A 2018-11-26 2018-11-26 전자장치 및 그 제어방법 KR102650976B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180147569A KR102650976B1 (ko) 2018-11-26 2018-11-26 전자장치 및 그 제어방법
PCT/KR2019/016150 WO2020111671A1 (en) 2018-11-26 2019-11-22 Electronic apparatus and control method thereof
US16/695,630 US20200167183A1 (en) 2018-11-26 2019-11-26 Electronic apparatus and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180147569A KR102650976B1 (ko) 2018-11-26 2018-11-26 전자장치 및 그 제어방법

Publications (2)

Publication Number Publication Date
KR20200061828A true KR20200061828A (ko) 2020-06-03
KR102650976B1 KR102650976B1 (ko) 2024-03-26

Family

ID=70770691

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180147569A KR102650976B1 (ko) 2018-11-26 2018-11-26 전자장치 및 그 제어방법

Country Status (3)

Country Link
US (1) US20200167183A1 (ko)
KR (1) KR102650976B1 (ko)
WO (1) WO2020111671A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102265886B1 (ko) * 2020-07-24 2021-06-16 (주)온넷시스템즈코리아 Arm 서버 기반의 가상 클라우드 서비스 플랫폼
KR20220079157A (ko) * 2020-12-04 2022-06-13 (주)글루버 가상화 서버, 이의 동작 방법, 및 프로그램

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11474873B2 (en) * 2020-09-22 2022-10-18 Rockwell Automation Technologies, Inc. Implementing serverless functions using container orchestration systems and operational technology devices

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160092252A (ko) * 2015-01-27 2016-08-04 부경대학교 산학협력단 다각형 분쇄용기를 구비한 볼밀장치

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170199770A1 (en) * 2014-06-23 2017-07-13 Getclouder Ltd. Cloud hosting systems featuring scaling and load balancing with containers
US9830193B1 (en) * 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US9256467B1 (en) * 2014-11-11 2016-02-09 Amazon Technologies, Inc. System for managing and scheduling containers
US9921885B2 (en) * 2015-06-19 2018-03-20 Vmware, Inc. Resource management for containers in a virtualized environment
US10104185B1 (en) * 2015-08-10 2018-10-16 Amazon Technologies, Inc. Policy-based container cotenancy

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160092252A (ko) * 2015-01-27 2016-08-04 부경대학교 산학협력단 다각형 분쇄용기를 구비한 볼밀장치

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102265886B1 (ko) * 2020-07-24 2021-06-16 (주)온넷시스템즈코리아 Arm 서버 기반의 가상 클라우드 서비스 플랫폼
WO2022019656A1 (ko) * 2020-07-24 2022-01-27 (주)온넷시스템즈코리아 Arm 서버 기반의 가상 클라우드 서비스 플랫폼
KR20220079157A (ko) * 2020-12-04 2022-06-13 (주)글루버 가상화 서버, 이의 동작 방법, 및 프로그램

Also Published As

Publication number Publication date
KR102650976B1 (ko) 2024-03-26
WO2020111671A1 (en) 2020-06-04
US20200167183A1 (en) 2020-05-28

Similar Documents

Publication Publication Date Title
CN110235104B (zh) 用于虚拟化的图形处理单元分区
US7581229B2 (en) Systems and methods for supporting device access from multiple operating systems
CN104583979B (zh) 动态物理存储器分区技术
KR102650976B1 (ko) 전자장치 및 그 제어방법
CN102387197A (zh) 从服务器到主机的流虚拟机技术
CN107209681A (zh) 一种存储设备访问方法、装置和系统
US20080271016A1 (en) Hypervisor with cloning-awareness notifications
JP2002520696A (ja) 仮想自動カートリッジシステム
US8966130B2 (en) Tag allocation for queued commands across multiple devices
US20170177225A1 (en) Mid-level controllers for performing flash management on solid state drives
CN111679911B (zh) 云环境中gpu卡的管理方法、装置、设备及介质
CN108379843B (zh) 虚拟对象控制方法与装置
JP6421470B2 (ja) 仮想マシンマイグレーションプログラム、仮想マシンマイグレーションシステムおよび仮想マシンマイグレーション方法
CN109032788B (zh) 预留资源池动态调度方法、装置、计算机设备及存储介质
CN104598170A (zh) 确定读写路径的方法和装置
CN114490062A (zh) 一种本地磁盘的调度方法、装置、电子设备及存储介质
KR102314221B1 (ko) 특정 시점의 환경을 제공할 수 있는 가상 데스크톱 시스템 및 그 데이터 처리 방법
US20220286406A1 (en) Dynamic allocation of bandwidth to virtual network ports
KR20200105174A (ko) 특정 시점의 환경을 제공할 수 있는 가상 데스크톱 시스템 및 그 데이터 처리 방법
KR20190106623A (ko) 전자장치 및 그 제어방법
CN113296876B (zh) 虚拟机的设备直通方法、设备及存储介质
US20230259457A1 (en) Electronic apparatus and control method thereof
WO2018173300A1 (ja) I/o制御方法およびi/o制御システム
US11544013B2 (en) Array-based copy mechanism utilizing logical addresses pointing to same data block
KR101974974B1 (ko) 컨테이너 기술 기반의 시스템 전환 장치 및 방법

Legal Events

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