WO2016099184A1 - 가상화 멀티 세션 지원을 위한 서버 구조 - Google Patents

가상화 멀티 세션 지원을 위한 서버 구조 Download PDF

Info

Publication number
WO2016099184A1
WO2016099184A1 PCT/KR2015/013910 KR2015013910W WO2016099184A1 WO 2016099184 A1 WO2016099184 A1 WO 2016099184A1 KR 2015013910 W KR2015013910 W KR 2015013910W WO 2016099184 A1 WO2016099184 A1 WO 2016099184A1
Authority
WO
WIPO (PCT)
Prior art keywords
cpu
terminal
application
streaming
bank
Prior art date
Application number
PCT/KR2015/013910
Other languages
English (en)
French (fr)
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 US15/537,381 priority Critical patent/US10560727B2/en
Publication of WO2016099184A1 publication Critical patent/WO2016099184A1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/232Content retrieval operation locally within server, e.g. reading video streams from disk arrays
    • H04N21/2326Scheduling disk or memory reading operations
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/226Characteristics of the server or Internal components of the server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/23406Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving management of server-side video buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • 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/45579I/O management, e.g. providing access to device drivers or storage
    • 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

가상화 서버가 개시된다. 개시된 가상화 서버는 복수의 CPU, 복수의 GPU, 복수의 그래픽 공유 메모리, 복수의 스트리밍 CPU, 복수의 네트워크 카드를 포함하고, 가상화 서버에 접속하는 단말기의 수, 단말기가 실행하는 어플리케이션의 속성, 가상화 서버와 단말기간의 대역폭 등을 고려하여 각 단말기에 대하여 CPU, GPU, 그래픽 공유 메모리, 스트리밍 CPU, 네트워크 카드를 할당한다. 각 단말기가 요구하는 성능에 맞춰 자원을 할당할 수 있으므로, 접속하는 단말기가 증가하는 경우에도 유연하게 대처할 수 있으며, 자원을 효율적으로 사용할 수 있다.

Description

가상화 멀티 세션 지원을 위한 서버 구조
하기의 실시예들은 가상화 서버에 대한 것으로, 구체적으로는 접속자 또는 로드의 증가에 유연하게 대처할 수 있는 가상화 서버의 구조에 대한 것이다.
인터넷과 통신의 발달, 디지털 영상 및 스마트폰의 발달에 따라 다양한 융합 서비스가 등장하고 있다. 그러나 디지털 영상에서 해당 방송 프로그램 영상에 실시간으로 연동되는 데이터 서비스를 제공하기에 많은 문제점이 있다. 방송 산업의 특성상 많은 시청자를 대상으로 동시에 서비스를 제공할 수 있어야 함에도 불구하고, 각 사용자 단말기의 종류, 성능, OS, 방송사 등에 따라 양방향 서비스를 위한 데이터 콘텐츠가 호환되지 않아 별도의 개발을 필요로 하였고, 사용자 단말기의 종류가 다양해짐에 따라 데이터 콘텐츠 개발에 대한 중복 비용과 시간이 과도하게 소요되어 현실적으로는 연동형 서비스를 제공하고 수익을 창출하는 데에 한계가 있었다.
이를 극복하기 위하여 가상화 시스템이 제안되었다. 가상화 시스템은 구체적인 어플리케이션의 실행, 동영상의 수신 및 재생은 모두 가상화 시스템에서 수행하고, 단말기는 가상화 시스템으로부터 단순히 렌더링된 화면 데이터만을 수신하여 디스플레이하는 시스템으로서, 데이터 콘텐츠의 개발 및 어플리케이션의 개발 등은 모두 표준화된 가상화 시스템을 기준으로 제작할 수 있어 번거로운 작업을 크게 감소시킬 수 있었다.
하기의 실시예들은 접속자 또는 로드의 증가에 유연하게 대처할 수 있는 가상화 서버를 제공하는 것을 목적으로 한다.
예시적 실시예에 따르면, 복수의 CPU들을 포함하는 CPU 뱅크, 복수의 GPU들을 포함하는 GPU 뱅크, 복수의 그래픽 공유 메모리(Graphic Shared Memory)를 포함하는 그래픽 공유 메모리 뱅크, 복수의 스트리밍 CPU를 포함하는 스트리밍 CPU 뱅크, 복수의 네트워크 카드를 포함하는 네트워크 카드 뱅크 및 단말기가 접속함에 따라서 상기 CPU 뱅크에서 적어도 하나 이상의 CPU를 선택하고, 상기 GPU 뱅크에서 적어도 하나 이상의 GPU를 선택하고, 상기 그래픽 공유 메모리 뱅크에서 적어도 하나 이상의 그래픽 공유 메모리를 선택하고, 상기 스트리밍 CPU 뱅크에서 적어도 하나 이상의 스트리밍 CPU를 선택하고, 상기 네트워크 카드 뱅크에서 적어도 하나 이상의 네트워크 카드를 선택하는 호스트 CPU를 포함하고, 상기 선택된 CPU는 상기 단말기의 요청에 따른 어플리케이션을 실행하고, 상기 선택된 GPU는 상기 실행된 어플리케이션의 화면을 렌더링하여 렌더링된 화면을 상기 그래픽 공유 메모리에 저장하고, 상기 선택된 스트리밍 CPU는 상기 그래픽 공유 메모리에 저장된 렌더링된 화면을 캡쳐하여 스트리밍을 위한 패킷으로 변환하고, 상기 선택된 네트워크 카드는 상기 변환된 패킷을 상기 접속한 단말기로 전송하고, 상기 단말기로 전송된 패킷은 상기 단말기의 디스플레이 장치에 상기 어플리케이션의 화면을 디스플레이하기 위하여 사용되는 가상화 서버가 제공된다.
여기서, 상기 호스트 CPU는 상기 어플리케이션의 특성 및 상기 각 CPU의 사용량, 상기 각 GPU의 사용량을 고려하여 상기 선택하는 CPU의 개수 및 상기 선택하는 GPU의 개수를 결정할 수 있다.
그리고, 상기 어플리케이션의 특성은 상기 어플리케이션의 계산량, 상기 어플리케이션의 메모리 사용량 및 상기 어플리케이션의 해상도 중에서 적어도 하나를 포함할 수 있다.
또한, 상기 선택된 CPU는 상기 단말기로부터 상기 단말기의 입력 장치에 대한 정보를 수신하고, 상기 입력 장치에 대한 정보를 참조하여 상기 입력 장치로부터 입력된 제어 정보에 따라 상기 어플리케이션을 실행할 수 있다.
여기서, 상기 호스트 CPU는 상기 가상화 서버와 상기 단말기간의 대역폭 및 상기 가상화 서버와 상기 단말기간의 지연 시간(Latency)에 따라서 상기 네트워크 카드를 선택할 수 있다.
그리고, 상기 선택된 스트리밍 CPU는 H.264 코덱을 이용하여 상기 렌더링된 화면을 상기 스트리밍을 위한 패킷으로 변환하거나, AAC 코덱을 이용하여 상기 실행된 어플리케이션의 음성 데이터를 상기 스트리밍을 위한 패킷으로 변환할 수 있다.
또한, 상기 선택된 그래픽 공유 메모리는 상기 선택된 CPU에 대응되어, 상기 선택된 복수의 CPU들이 각각 렌더링된 화면은 상기 선택된 그래픽 공유 메모리에 저장될 수 있다.
하기의 실시예들에 따르면, 접속자 또는 로드의 증가에 유연하게 대처할 수 있다.
하기의 실시예들에 따르면, 가상화를 위한 특유의 하드웨어를 사용하여 사용량이 급증하는 경우에도 효율적인 하드웨어를 동적으로 배분하여 사용할 수 있다.
하기의 실시예들에 따르면, 소규모 하드웨어 투자로 사용자의 대량의 요구에도 대응할 수 있다.
도 1은 예시적 실시예에 따른 가상화 서버를 이용하여 복수의 단말기들에 대한 IPTV 서비스를 제공하는 것을 도시한 도면이다.
도 2는 예시적 실시예에 따른 가상화 서버의 구조를 도시한 블록도이다.
도 3은 또 다른 예시적 실시예에 따른 가상화 서버의 구조를 도시한 블록도이다.
예시적 실시예에 따르면, 복수의 CPU들을 포함하는 CPU 뱅크, 복수의 GPU들을 포함하는 GPU 뱅크, 복수의 그래픽 공유 메모리(Graphic Shared Memory)를 포함하는 그래픽 공유 메모리 뱅크, 복수의 스트리밍 CPU를 포함하는 스트리밍 CPU 뱅크, 복수의 네트워크 카드를 포함하는 네트워크 카드 뱅크 및 단말기가 접속함에 따라서 상기 CPU 뱅크에서 적어도 하나 이상의 CPU를 선택하고, 상기 GPU 뱅크에서 적어도 하나 이상의 GPU를 선택하고, 상기 그래픽 공유 메모리 뱅크에서 적어도 하나 이상의 그래픽 공유 메모리를 선택하고, 상기 스트리밍 CPU 뱅크에서 적어도 하나 이상의 스트리밍 CPU를 선택하고, 상기 네트워크 카드 뱅크에서 적어도 하나 이상의 네트워크 카드를 선택하는 호스트 CPU를 포함하고, 상기 선택된 CPU는 상기 단말기의 요청에 따른 어플리케이션을 실행하고, 상기 선택된 GPU는 상기 실행된 어플리케이션의 화면을 렌더링하여 렌더링된 화면을 상기 그래픽 공유 메모리에 저장하고, 상기 선택된 스트리밍 CPU는 상기 그래픽 공유 메모리에 저장된 렌더링된 화면을 캡쳐하여 스트리밍을 위한 패킷으로 변환하고, 상기 선택된 네트워크 카드는 상기 변환된 패킷을 상기 접속한 단말기로 전송하고, 상기 단말기로 전송된 패킷은 상기 단말기의 디스플레이 장치에 상기 어플리케이션의 화면을 디스플레이하기 위하여 사용되는 가상화 서버가 제공된다.
여기서, 상기 호스트 CPU는 상기 어플리케이션의 특성 및 상기 각 CPU의 사용량, 상기 각 GPU의 사용량을 고려하여 상기 선택하는 CPU의 개수 및 상기 선택하는 GPU의 개수를 결정할 수 있다.
그리고, 상기 어플리케이션의 특성은 상기 어플리케이션의 계산량, 상기 어플리케이션의 메모리 사용량 및 상기 어플리케이션의 해상도 중에서 적어도 하나를 포함할 수 있다.
또한, 상기 선택된 CPU는 상기 단말기로부터 상기 단말기의 입력 장치에 대한 정보를 수신하고, 상기 입력 장치에 대한 정보를 참조하여 상기 입력 장치로부터 입력된 제어 정보에 따라 상기 어플리케이션을 실행할 수 있다.
여기서, 상기 호스트 CPU는 상기 가상화 서버와 상기 단말기간의 대역폭 및 상기 가상화 서버와 상기 단말기간의 지연 시간(Latency)에 따라서 상기 네트워크 카드를 선택할 수 있다.
그리고, 상기 선택된 스트리밍 CPU는 H.264 코덱을 이용하여 상기 렌더링된 화면을 상기 스트리밍을 위한 패킷으로 변환하거나, AAC 코덱을 이용하여 상기 실행된 어플리케이션의 음성 데이터를 상기 스트리밍을 위한 패킷으로 변환할 수 있다.
또한, 상기 선택된 그래픽 공유 메모리는 상기 선택된 CPU에 대응되어, 상기 선택된 복수의 CPU들이 각각 렌더링된 화면은 상기 선택된 그래픽 공유 메모리에 저장될 수 있다.
이하, 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 예시적 실시예에 따른 가상화 서버를 이용하여 복수의 단말기들에 대한 IPTV 서비스를 제공하는 것을 도시한 도면이다.
가상화 서버(130)는 데이터 서버(140)로부터 데이터를 수신한다. 여기서, 가상화 서버(130)가 데이터 서버(140)로부터 수신하는 데이터는 IPTV 방송 서비스를 위한 동영상 스트리밍 데이터, 게임서비스를 위한 어플리케이션 데이터, 웹 서비스를 위한 웹 데이터 등을 포함할 수 있다.
가상화 서버(130)는 복수의 CPU(Central Processing Unit), 복수의 GPU(Graphic Processing Unit) 및 대용량 메모리 등을 탑재한 매우 강력한 머신이다. 가상화 서버(130)는 강력한 처리 성능을 이용하여 각각의 단말기들(110, 150)을 위한 가상 머신을 생성한다. 각 가상 머신은 수신한 데이터를 이용하여 IPTV 방송을 스트리밍하거나, 게임 어플리케이션을 구동하거나, 웹 브라우징을 수행한다.
각각의 가상 머신은 IPTV 방송, 게임, 웹브라우징 등 수행된 서비스를 반영한 화면 데이터를 생성한다. 각 가상 머신이 생성한 화면 데이터는 가상화 서버(130) 내부의 그래픽 메모리에 저장된다.
가상화 서버(130)는 그래픽 메모리에 저장된 화면 데이터를 캡쳐하여 스크리밍을 위한 패킷으로 변환한다. 일측에 따르면, 가상화서버(130)는 H.264 등의 코덱을 이용하여 화면 데이터를 패킷을 변환할 수 있다.
가상화 서버(130)는 변환된 패킷을 통신망(120)을 경유하여 단말기(110, 150)로 전송할 수 있다. 이 경우에, 각각의 단말기(110, 150)들은 변환된 패킷을 수신하고, 변환된 패킷으로부터 화면 데이터를 복원한다. 복원된 데이터는 각 단말기(110, 150)에 연결된 디스플레이 장치에 IPTV, 게임, 웹 브라우저 등의 어플리케이션이 실행된 화면을 디스플레이하기 위하여 사용된다.
도 1에 설명된 실시예에 따르면, 어플리케이션은 가상화 서버(130)에서 생성된 가상 머신에서 실행된다. 어플리케이션이 실행된 화면은 패킷으로 변환되어 각 단말기(110, 150)로 전송된다. 각 단말기(110, 150)들은 어플리케이션을 직접 실행하지는 않으나, 어플리케이션이 실행된 화면을 디스플레이 할 수 있다.
각 단말기(110, 150)들이 어플리케이션을 직접 실행하지 않으므로, 각 단말기(110, 150)의 성능에 관계없이 각 단말기(110, 150)에게 고품질의 서비스를 서비스를 제공할 수 있다.
단말기(110, 150)가 가상화 서버(130)에 접속하면, 가상화 서버(130)는 복수의 CPU, 복수의 GPU 등 가상화 서버(130)의 컴퓨팅 자원을 선택하여 가상 머신을 구성한다. 구성된 가상 머신은 선택된 CPU, GPU 등을 이용하여 구동된다. 가상 머신은 단말기(110, 150)로부터 제어 신호를 수신하고, 수신된 제어 신호에 따라서 어플리케이션을 실행한다. 가상 머신에서 어플리케이션이 실행된 화면에 대한 정보를 화면 데이터라 할 수 있다. 가상 머신은 화면 데이터를 그래픽 메모리에 저장한다. 가상 머신은 그래픽 메모리에 저장된 화면 데이터를 패킷으로 변환하여 단말기(110, 150)로 전송한다.
가상화 서버(130)에 접속한 단말기(110, 150)의 개수가 증가하는 경우에도, 가상화 서버(130)는 가상 머신의 개수를 증가하여 각 단말기(110, 150)에 대한 서비스를 제공할 수 있다. 따라서, 단말기(110, 150)의 개수가 증가하거나, 각 단말기(110, 150)가 유발하는 로드가 크게 증가하는 경우에도 가상화 서버(130)는 유연하게 서비스를 제공할 수 있다.
도 2는 예시적 실시예에 따른 가상화 서버의 구조를 도시한 블록도이다. 예시적 실시예에 따른 가상화 서버(200)는 호스트 CPU(210), CPU 뱅크(220), GPU 뱅크(250), 그래픽 공유 메모리 뱅크(260), 스트리밍 CPU 뱅크(270), 네트워크 카드 뱅크(280), 메모리(230) 및 디스크(240)를 포함할 수 있다. 여기서, CPU 뱅크(220)는 복수개의 CPU들(221, 222, 223, 224)을 포함하고, GPU 뱅크(250)는 복수개의 GPU들(251, 252, 253)을 포함하고, 그래픽 공유 메모리 뱅크(260)는 복수의 그래픽 공유 메모리들(261, 262, 263, 264)을 포함한다. 또한, 스트리밍 CPU 뱅크(270)는 복수의 스트리밍 CPU들(271, 272, 273, 274)을 포함하고, 네트워크 카드 뱅크(280)는 복수의 네트워크 카드들(281, 282)을 포함한다.
호스트 CPU(210)는 단말기로부터 접속 요청을 수신한다. 일측에 따르면, 단말기로부터의 접속 요청은 단말기가 실행하고자 하는 어플리케이션에 대한 정보를 포함할 수 있다.
호스트 CPU(210)는 단말기로부터의 접속요청에 따라서 가상 머신을 구성한다. 일측에 따르면, 호스트 CPU(210)는 CPU 뱅크(220)에서 CPU를 선택하고, GPU 뱅크(250)에서 GPU를 선택하는 등, 가상 머신을 구동하기 위한 컴퓨팅 자원을 선택할 수 있다. 호스트 CPU(210)는 선택된 컴퓨팅 자원을 해당 가상 머신에 매핑하여, 가상 머신에 필요한 컴퓨팅 로드를 처리할 수 있다.
일측에 따르면, 호스트 CPU(210)는 CPU 뱅크(220)에서 적어도 하나 이상의 CPU를 선택한다. 일측에 따르면, 호스트 CPU(210)는 단말기가 실행하려는 어플리케이션의 특성, CPU 뱅크(220)에 포함된 CPU들(221, 222, 223, 224)의 사용량을 고려하여 CPU를 선택할 수 있다.
일측에 따르면, 호스트 CPU(210)는 GPU 뱅크(250)에서 적어도 하나 이상의 GPU를 선택한다. 일측에 따르면, 단말기가 실행하려는 어플리케이션의 특성, GPU 뱅크(250)에 포함된 GPU들(251, 252, 253)의 사용량을 고려하여 GPU를 선택할 수 있다.
여기서, 호스트 CPU가 CPU 및 GPU를 선택하기 위하여 고려하는 어플리케이션의 특성은 단말기가 실행하려는 어플리케이션의 계산량, 어플리케이션의 메모리 사용량 및 어플리케이션의 해당도 중에서 적어도 하나를 포함할 수 있다.
예를 들어, 단말기가 워드프로세서 등 계산량이 적은 어플리케이션을 실행하려고 한다면, 호스트 CPU(210)는 하나의 CPU만을 선택할 수 있으며, 다른 가상 머신에 의한 계산을 일부 수행하고 있는 CPU를 선택할 수도 있다. 그러나, 단말기가 동영상 재생 등 계산량이 많은 어플리케이션을 실행하려고 한다면, 호스트 CPU(210)는 복수의 CPU를 선택할 수 있으며, 다른 가상 머신에 의한 계산을 수행하고 있지 않은 CPU를 선택할 수도 있다.
예를 들어, 단말기가 워드 프로세서 등 GPU의 계산량이 적은 어플리케이션을 실행하려고 한다면, 호스트 CPU는 하나의 GPU만을 선택할 수 있으며, 다른 가상 머신에 의한 계산을 일부 수행하고 있는 GPU를 선택할 수도 있다. 그러나, 단말기가 게임 등 GPU의 계산량이 많은 어플리케이션을 실행하려고 한다면, 호스트 CPU(210)는 복수의 GPU를 선택할 수 있으며, 다른 가상 머신에 의한 계산을 수행하고 있지 않은 GPU를 선택할 수도 있다.
뿐만 아니라, 단말기가 실행하려는 어플리케이션의 해상도가 HD(720p)인 경우에, 호스트 CPU는 하나의 GPU 만을 선택할 수 있으나, 어플리케이션의 해상도가 FHD(1080p)인 경우에, 호스트 CPU는 복수의 GPU를 선택할 수 있다.
선택된 CPU는 단말기로부터 단말기의 입력 장치에 대한 정보를 수신한다. 단말기의 입력 장치에 대한 정보는 단말기가 리모컨과 같이 지연 시간이 큰 장치를 이용하여 조작되는지, 조이스틱과 같이 게임의 조작을 위한 입력 장치를 구비하였는지 여부, 하드웨어 키보드와 같이 타이핑을 위한 입력 장치를 구비하였는지 여부 등을 나타낸다. 선택된 CPU는 입력 장치에 대한 정보를 참조하여 입력 장치로부터 입력된 제어 정보에 따라 어플리케이션을 실행할 수 있다.
호스트 CPU(210)는 그래픽 공유 메모리, 스트리밍 CPU, 네트워크 카드도 추가적으로 선택한다. 호스트 CPU(210)가 선택한 CPU(221), GPU(251, 252), 그래픽 공유 메모리(261), 스트리밍 CPU(271), 네트워크 카드(281)은 단말기가 요구한 어플리케이션을 실행하는 가상 머신에 매핑된다.
선택된 CPU(221)는 가상 머신에 매핑되어 단말기가 요구한 어플리케이션을 실행한다. 또한 선택된 GPU(251)는 실행된 어플리케이션에 따른 화면을 렌더링하여 화면 데이터를 생성한다. 선택된 GPU(251)는 생성된 화면 데이터를 선택된 그래픽 공유 메모리(261)에 저장한다. 도 2와 같이, 하나의 CPU(221)에 대하여 2개의 GPU(251, 252)가 선택된 경우, 각각의 CPU(251, 252)는 하나의 그래픽 공유 메모리(261)에 화면 데이터를 저장할 수 있다.
선택된 스트리밍 CPU(271)는 그래픽 공유 메모리에 저장된 렌더링된 화면을 캡쳐하여 스트리밍을 위한 패킷으로 변환할 수 있다. 일측에 따르면, 스트리밍 CPU(271)는 H.264 코덱을 이용하여 렌더링된 화면을 변환할 수 있다. 또는, AAC 코덱을 이용하여 실행된 어플리케이션의 음성 데이터를 스트리밍을 위한 패킷으로 변환할 수 있다.
도 2에 도시된 실시예에 따르면, 어플리케이션을 실행하는 CPU(221)와 패킷으로 변환하는 스트리밍 CPU(271)가 그래픽 공유 메모리(261)을 중심으로 물리적으로 구분되어 있다. 따라서, 어플리케이션을 실행하는 CPU(221)는 스트리밍 CPU(271)에서 구동되는 코덱의 계산량과는 무관하다.
어플리케이션을 실행하는 CPU(221)가 어플리케이션의 실행에만 집중할 수 있으므로 가상화 서버의 성능은 향상되며, 호스트 CPU(210)는 코덱의 계산량을 고려하지 않고 CPU(221)를 선택할 수 있다.
네트워크 카드(281)는 변환된 패킷을 통신망 등을 통해 단말기로 전송한다. 일측에 따르면, 호스트 CPU(210)는 가상화 서버(200)와 단말기간의 대역폭 또는 가상화 서버(200)와 단말기간의 지연 시간에 따라서 네트워크 카드를 선택할 수 있다. 예를 들어, 가상화 서버(200)와 단말기간의 대역폭이 기준 대역폭 보다 좁거나, 가상화 서버(200)와 단말기간의 지연 시간이 기준 시간 보다 더 큰 값인 경우에, 호스트 CPU(210)는 복수의 네트워크 카드를 선택할 수 있다.
네트워크 카드(281)는 변환된 패킷을 단말기로 전송할 수 있다. 단말기는 변환된 패킷을 수신하고, 수신된 패킷으로부터 어플리케이션이 실행된 화면을 복구할 수 있다. 단말기는 디스플레이 장치에 연결될 수 있고, 연결된 디스플레이 장치를 통해 어플리케이션이 실행된 화면을 디스플레이 할 수 있다.
도 2에 도시된 실시예에 따르면, 가상화 서버(200)는 접속하는 단말기가 실행하려는 어플리케이션의 특성에 따라서 컴퓨팅 자원을 선택하고, 선택된 컴퓨팅 자원을 이용하여 가상 머신을 생성한다. 여기서, 가상화 서버(200)는 제1 가상 머신에 할당된 컴퓨팅 자원도 제2 가상 머신에 할당할 수 있다. 따라서, 가상화 서버(200)에 접속하는 단말기의 개수가 증가한 경우에도 가상화 서버는 유연하게 대처할 수 있다.
또한, 단말기의 성능이 특정 어플리케이션을 실행하기에 부족한 경우에, 해당 어플리케이션은 가상화 서버(200)에서 실행되고, 단말기는 어플리케이션이 실행된 화면만 스트리밍 받아 재생할 수 있다. 따라서, 단말기의 성능이 충분하지 않은 경우에도 해당 단말기를 통해 서비스를 제공할 수 있다.
그리고, 그래픽 공유 메모리(261)를 중심으로 어플리케이션을 실행하는 CPU(221)와 렌더링된 화면을 패킷으로 변환하는 CPU(271)이 분리되어 있어 어플리케이션을 실행하는 CPU(221)는 코덱 등의 계산량에 관계없이 어플리케이션의 실행에만 전념할 수 있다.
일측에 따르면, 그래픽 공유 메모리(261, 262, 263, 264)는 선택된 CPU에 대응되는 것일 수 있다. 그래픽 공유 메모리(261, 262, 263, 264)가 CPU에 대응되는 구성에 대해서는 이하 도 3에서 구체적으로 설명한다.
도 3은 또 다른 예시적 실시예에 따른 가상화 서버의 구조를 도시한 블록도이다.
도 3에서, 그래픽 공유 메모리(320)는 각각의 CPU(310)에 대응된다. 따라서, 만약 호스트 CPU(도 3에서는 생략됨)가 1개의 CPU(310)를 선택한 경우, 선택된 GPU(331, 332, 333)들은 렌더링된 화면 데이터를 모두 그래픽 공유 메모리(320)에 저장한다.
또한, CPU(310)가 여러 개의 가상 머신에 맵핑되는 경우, CPU는 여러 개의 가상 머신이 실행해야하는 복수의 어플리케이션들을 각각 실행하며, 이 경우 각각의 어플리케이션에 따른 화면 데이터가 모두 그래픽 공유 메모리(320)에 저장된다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
 
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
가상화 서버가 개시된다. 개시된 가상화 서버는 복수의 CPU, 복수의 GPU, 복수의 그래픽 공유 메모리, 복수의 스트리밍 CPU, 복수의 네트워크 카드를 포함하고, 가상화 서버에 접속하는 단말기의 수, 단말기가 실행하는 어플리케이션의 속성, 가상화 서버와 단말기간의 대역폭 등을 고려하여 각 단말기에 대하여 CPU, GPU, 그래픽 공유 메모리, 스트리밍 CPU, 네트워크 카드를 할당한다. 각 단말기가 요구하는 성능에 맞춰 자원을 할당할 수 있으므로, 접속하는 단말기가 증가하는 경우에도 유연하게 대처할 수 있으며, 자원을 효율적으로 사용할 수 있다.

Claims (7)

  1. 복수의 CPU들을 포함하는 CPU 뱅크;
    복수의 GPU들을 포함하는 GPU 뱅크
    복수의 그래픽 공유 메모리(Graphic Shared Memory)를 포함하는 그래픽 공유 메모리 뱅크;
    복수의 스트리밍 CPU를 포함하는 스트리밍 CPU 뱅크;
    복수의 네트워크 카드를 포함하는 네트워크 카드 뱅크; 및
    단말기가 접속함에 따라서 상기 CPU 뱅크에서 적어도 하나 이상의 CPU를 선택하고, 상기 GPU 뱅크에서 적어도 하나 이상의 GPU를 선택하고, 상기 그래픽 공유 메모리 뱅크에서 적어도 하나 이상의 그래픽 공유 메모리를 선택하고, 상기 스트리밍 CPU 뱅크에서 적어도 하나 이상의 스트리밍 CPU를 선택하고, 상기 네트워크 카드 뱅크에서 적어도 하나 이상의 네트워크 카드를 선택하는 호스트 CPU를 포함하고,
    상기 선택된 CPU는 상기 단말기의 요청에 따른 어플리케이션을 실행하고, 상기 선택된 GPU는 상기 실행된 어플리케이션의 화면을 렌더링하여 렌더링된 화면을 상기 그래픽 공유 메모리에 저장하고, 상기 선택된 스트리밍 CPU는 상기 그래픽 공유 메모리에 저장된 렌더링된 화면을 캡쳐하여 스트리밍을 위한 패킷으로 변환하고, 상기 선택된 네트워크 카드는 상기 변환된 패킷을 상기 접속한 단말기로 전송하고,
    상기 단말기로 전송된 패킷은 상기 단말기의 디스플레이 장치에 상기 어플리케이션의 화면을 디스플레이하기 위하여 사용되는 가상화 서버.
  2. 제1항에 있어서,
    상기 호스트 CPU는 상기 어플리케이션의 특성 및 상기 각 CPU의 사용량, 상기 각 GPU의 사용량을 고려하여 상기 선택하는 CPU의 개수 및 상기 선택하는 GPU의 개수를 결정하는 가상화 서버.
  3. 제2항에 있어서, 상기 어플리케이션의 특성은 상기 어플리케이션의 계산량, 상기 어플리케이션의 메모리 사용량 및 상기 어플리케이션의 해상도 중에서 적어도 하나를 포함하는 가상화 서버.
  4. 제1항에 있어서,
    상기 선택된 CPU는 상기 단말기로부터 상기 단말기의 입력 장치에 대한 정보를 수신하고, 상기 입력 장치에 대한 정보를 참조하여 상기 입력 장치로부터 입력된 제어 정보에 따라 상기 어플리케이션을 실행하는 가상화 서버.
  5. 제1항에 있어서,
    상기 호스트 CPU는 상기 가상화 서버와 상기 단말기간의 대역폭 및 상기 가상화 서버와 상기 단말기간의 지연 시간(Latency)에 따라서 상기 네트워크 카드를 선택하는 가상화 서버.
  6. 제1항에 있어서,
    상기 선택된 스트리밍 CPU는 H.264 코덱을 이용하여 상기 렌더링된 화면을 상기 스트리밍을 위한 패킷으로 변환하거나, AAC 코덱을 이용하여 상기 실행된 어플리케이션의 음성 데이터를 상기 스트리밍을 위한 패킷으로 변환하는 가상화 서버.
  7. 제1항에 있어서,
    상기 선택된 그래픽 공유 메모리는 상기 선택된 CPU에 대응되어,
    상기 선택된 복수의 CPU들이 각각 렌더링된 화면은 상기 선택된 그래픽 공유 메모리에 저장되는 가상화 서버.
PCT/KR2015/013910 2014-12-18 2015-12-18 가상화 멀티 세션 지원을 위한 서버 구조 WO2016099184A1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/537,381 US10560727B2 (en) 2014-12-18 2015-12-18 Server structure for supporting multiple sessions of virtualization

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2014-0183104 2014-12-18
KR1020140183104A KR101647099B1 (ko) 2014-12-18 2014-12-18 가상화 멀티 세션 지원을 위한 서버 구조

Publications (1)

Publication Number Publication Date
WO2016099184A1 true WO2016099184A1 (ko) 2016-06-23

Family

ID=56126976

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2015/013910 WO2016099184A1 (ko) 2014-12-18 2015-12-18 가상화 멀티 세션 지원을 위한 서버 구조

Country Status (3)

Country Link
US (1) US10560727B2 (ko)
KR (1) KR101647099B1 (ko)
WO (1) WO2016099184A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102173672B1 (ko) * 2019-04-23 2020-11-03 넷마블 주식회사 스트리밍에 기초한 게임 제공 방법 및 장치
US20220171657A1 (en) * 2020-12-01 2022-06-02 International Business Machines Corporation Dynamic workload tuning

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040139287A1 (en) * 2003-01-09 2004-07-15 International Business Machines Corporation Method, system, and computer program product for creating and managing memory affinity in logically partitioned data processing systems
KR20090055459A (ko) * 2007-11-28 2009-06-02 가부시키가이샤 히타치세이사쿠쇼 가상 머신 모니터 및 멀티프로세서 시스템
KR20120129740A (ko) * 2011-05-18 2012-11-28 한국전자통신연구원 제로 클라이언트를 지원하는 가상화 서버 및 가상 머신 관리 방법
JP2013210757A (ja) * 2012-03-30 2013-10-10 Nec Corp 仮想化システム、マイグレーション管理サーバ、マイグレーション管理方法、及びマイグレーション管理プログラム
JP2014500535A (ja) * 2010-09-30 2014-01-09 マイクロソフト コーポレーション Gpu利用可能仮想マシンの負荷分散技法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040139287A1 (en) * 2003-01-09 2004-07-15 International Business Machines Corporation Method, system, and computer program product for creating and managing memory affinity in logically partitioned data processing systems
KR20090055459A (ko) * 2007-11-28 2009-06-02 가부시키가이샤 히타치세이사쿠쇼 가상 머신 모니터 및 멀티프로세서 시스템
JP2014500535A (ja) * 2010-09-30 2014-01-09 マイクロソフト コーポレーション Gpu利用可能仮想マシンの負荷分散技法
KR20120129740A (ko) * 2011-05-18 2012-11-28 한국전자통신연구원 제로 클라이언트를 지원하는 가상화 서버 및 가상 머신 관리 방법
JP2013210757A (ja) * 2012-03-30 2013-10-10 Nec Corp 仮想化システム、マイグレーション管理サーバ、マイグレーション管理方法、及びマイグレーション管理プログラム

Also Published As

Publication number Publication date
US10560727B2 (en) 2020-02-11
KR101647099B1 (ko) 2016-08-09
US20190158892A1 (en) 2019-05-23
KR20160074168A (ko) 2016-06-28

Similar Documents

Publication Publication Date Title
WO2012086917A2 (ko) 클라우드 컴퓨팅 환경에서 게임 서비스 제공 방법, 클라우드 컴퓨팅 서버, 및 클라우드 컴퓨팅 시스템
CN110381322B (zh) 视频流解码方法、装置、终端设备及存储介质
US8893013B1 (en) Method and apparatus for providing a hybrid computing environment
CN110025957B (zh) 一种云游戏服务器端架构、客户端和系统
WO2013105760A1 (en) Contents providing system and operating method thereof
CN108449633A (zh) 基于nfv的机顶盒云化框架及业务实现方法
US8365168B1 (en) Method and system for processing isochronous data packets using virtual USB controller, and placing the isochronous data packets into a look-ahead queue having a plurality of blank packets
KR20200146007A (ko) 동영상 시스템 및 동영상 처리 방법, 장치 및 컴퓨터 판독 가능 매체
CN112354176A (zh) 云游戏实现方法、云游戏实现装置、存储介质与电子设备
WO2018169255A1 (en) Electronic apparatus and control method thereof
US10649921B2 (en) Composable serial console and KVM with remote accessibility
WO2016099184A1 (ko) 가상화 멀티 세션 지원을 위한 서버 구조
WO2022019656A1 (ko) Arm 서버 기반의 가상 클라우드 서비스 플랫폼
WO2019103293A1 (ko) 분산 트랜스코딩 클라우드 서비스 시스템
US20140297718A1 (en) Apparatus and method for transmitting image of multi-user
WO2011093629A2 (ko) 미디어 스트리밍을 이용한 리치미디어 서비스 방법 및 시스템
WO2015130062A1 (ko) 클라우드 스트리밍 기반의 영상데이터 제공 방법, 이를 위한 장치 및 시스템
WO2018021616A1 (en) Operating method of client for streaming service
WO2016018102A1 (ko) 클라우드 스트리밍 기반 방송 연동형 서비스 시스템, 방송 연동형 서비스 클라이언트 장치, 트리거 컨텐츠 제공 서버 및 이를 이용한 방법
WO2019225788A1 (ko) 복수의 채널을 이용하여 동적 비트레이트의 비디오를 송출 및 재생하는 방법 및 시스템
WO2015130126A1 (ko) 클라우드 스트리밍 서비스 시스템, 이를 위한 장치 및 클라우드 스트리밍 서비스 방법
WO2023090961A1 (ko) 웹 브라우저를 이용한 복수 3차원 컨텐츠 제공 시스템 및 방법
US9547612B2 (en) Method and architecture for data channel virtualization in an embedded system
WO2020204253A1 (ko) 관심 영역 기반의 vr 영상 수신 장치 및 방법
WO2014137007A1 (ko) 게임 가상화 장치

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15870351

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15870351

Country of ref document: EP

Kind code of ref document: A1