KR101668282B1 - System and Method for operating application based Presentation Virtualization - Google Patents
System and Method for operating application based Presentation Virtualization Download PDFInfo
- Publication number
- KR101668282B1 KR101668282B1 KR1020110073058A KR20110073058A KR101668282B1 KR 101668282 B1 KR101668282 B1 KR 101668282B1 KR 1020110073058 A KR1020110073058 A KR 1020110073058A KR 20110073058 A KR20110073058 A KR 20110073058A KR 101668282 B1 KR101668282 B1 KR 101668282B1
- Authority
- KR
- South Korea
- Prior art keywords
- load
- application
- cpu
- gpu
- user terminal
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/238—Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
- H04N21/2385—Channel allocation; Bandwidth allocation
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- User Interface Of Digital Computer (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
본 발명은 화면 가상화 기반 어플리케이션 구동 시스템 및 방법에 관한 것으로서, 어플리케이션 제공 장치에 접속하여 어플리케이션의 구동을 요청하고, 상기 어플리케이션 제공 장치로부터의 어플리케이션 구동 화면을 디코딩하여 출력하는 사용자 단말, 상기 사용자 단말로부터 어플리케이션 구동 요청 수신 시, 장치 부하 정보를 수집하고, 상기 수집된 장치 부하 정보를 근거로 상기 사용자 단말의 요청 수용 가능 여부를 판단하고, 요청 수용이 가능한 경우 CPU 인코더와 GPU 인코더 중 어플리케이션 구동 화면을 인코딩할 인코더를 결정하여 해당 어플리케이션 구동에 따른 어플리케이션 구동 화면을 상기 결정된 인코더로 인코딩하여 상기 사용자 단말로 전송하는 어플리케이션 제공 장치를 포함한다.
따라서, 본 발명에 따르면, GPU와 CPU의 사용률을 기반으로 하여 어플리케이션 제공 장치에서 실시간으로 video encoding 처리 개수를 최대화할 수 있다. The present invention relates to a system and method for operating a screen virtualization-based application, and more particularly, to a system and method for operating a screen virtualization-based application, including a user terminal for accessing an application providing apparatus, requesting an application to run, decoding an application running screen from the application providing apparatus, When receiving the drive request, it collects the device load information, determines whether or not the request of the user terminal can be accepted based on the collected device load information, encodes the application running screen of the CPU encoder and the GPU encoder And an application providing apparatus for determining an encoder, encoding an application driving screen according to the application driving, and transmitting the encoded application driving screen to the user terminal.
Therefore, according to the present invention, it is possible to maximize the number of video encoding processes in real time in the application providing apparatus based on the usage rate of the GPU and the CPU.
Description
본 발명은 화면 가상화 기반 어플리케이션 구동 시스템 및 방법에 관한 것으로, 더욱 상세하게는 어플리케이션 제공 장치가 사용자 단말로부터 어플리케이션 구동 요청 수신 시, 장치 부하 정보를 수집하고, 상기 수집된 장치 부하 정보를 근거로 상기 사용자 단말의 요청 수용 가능 여부를 판단하고, 요청 수용이 가능한 경우 CPU 인코더와 GPU 인코더 중 어플리케이션 구동 화면을 인코딩할 인코더를 결정하여 해당 어플리케이션 구동에 따른 어플리케이션 구동 화면을 상기 결정된 인코더로 인코딩하여 상기 사용자 단말로 전송하는 화면 가상화 기반 어플리케이션 구동 시스템 및 방법에 관한 것이다.
More particularly, the present invention relates to a system and method for operating a screen virtualization-based application, and more particularly, to a system and method for operating a screen virtualization-based application, Determining whether the terminal can accept the request, determining an encoder to encode the application running screen of the CPU encoder and the GPU encoder when the request can be accepted, encoding the application running screen according to the application running to the determined encoder, And to a system and method for operating a screen virtualization-based application.
최근에 클라우드(Cloud) 기반 서비스가 활성화 됨에 따라, 서비스나 어플리케이션(application)이 클라우드 장치에서 구동되고 그 결과를 단말을 통해 서비스하는 기술이 요구되고 있다. 특히 서비스 화면과 오디오만을 단말기에서 구동하는 화면 가상화(Presentation Virtualization) 기술이 핵심기술로 요구된다. Recently, with the activation of a cloud-based service, there is a demand for a technology in which a service or an application is run on a cloud device and the result is served through the terminal. In particular, the key technology is required for the presentation virtualization technology that drives only the service screen and audio on the terminal.
화면 가상화 기술은 어플리케이션 제공 장치에서 어플리케이션을 구동하고, 어플리케이션 구동 화면을 단말로 전송하여 단말에서는 화면에 대한 rendering 처리와 사용자 입력만을 처리하도록 함으로써 단말의 성능에 관계없이 복잡한 어플리케이션을 구동 가능 하도록 하는 기술이다.The screen virtualization technology enables an application to run an application in an application providing device and transmits an application running screen to a terminal so that a terminal can process a rendering process and a user input only on a screen, thereby enabling a complicated application to be driven regardless of the performance of the terminal .
또한, 어플리케이션을 어플리케이션 제공 장치에서 구동시키고 구동화면을 video encoding을 통해 압축하여 단말에 전송하고, 단말은 전송된 비디오를 재생하여 마치 자신의 단말에서 어플리케이션이 구동되는 것과 같은 효과를 내는 화면 가상화 기반 N screen 서비스가 각광받고 있다. 이러한 시스템에서 video encoding은 실시간으로 화면을 압축해야 하고, 어플리케이션 제공 장치는 인코더를 접속한 단말 개수만큼 구동할 필요가 있다. 이때 video encoding은 매우 높은 연산량을 필요로 하고 이 때문에 어플리케이션 제공 장치에서 처리할 수 있는 단말의 개수에 제한이 생겨 더 많은 어플리케이션 제공 장치가 필요하게 되어 서비스의 경제성이 낮아지는 문제가 발생한다.
In addition, the application is driven by the application providing apparatus, the driving screen is compressed through video encoding and transmitted to the terminal, and the terminal reproduces the transmitted video to generate screen virtualization based on N screen service is getting popular. In such a system, the video encoding needs to compress the screen in real time, and the application providing device needs to be driven by the number of terminals connected to the encoder. At this time, the video encoding requires a very high computational complexity, which limits the number of terminals that can be processed by the application providing apparatus, which requires more application providing apparatuses, resulting in lowering the economical efficiency of the service.
본 발명은 상기한 문제점을 해결하기 위하여 안출한 것으로, 본 발명의 목적은 CPU(Central Processing Unit)와 GPU(Graphic Processing Unit)의 사용률을 기반으로 실시간으로 video encoding 처리 개수를 최대화할 수 있는 화면 가상화 기반 어플리케이션 구동 시스템 및 방법을 제공하는데 있다.
SUMMARY OF THE INVENTION The present invention has been made to solve the above problems, and it is an object of the present invention to provide a screen virtualization system capable of maximizing the number of video encoding processes in real time based on a usage rate of a CPU (Central Processing Unit) and a GPU Based application running system and method.
상기 목적들을 달성하기 위하여 본 발명의 일 측면에 따르면, 어플리케이션 제공 장치에 접속하여 어플리케이션의 구동을 요청하고, 상기 어플리케이션 제공 장치로부터의 어플리케이션 구동 화면을 디코딩하여 출력하는 사용자 단말, 상기 사용자 단말로부터 어플리케이션 구동 요청 수신 시, 장치 부하 정보를 수집하고, 상기 수집된 장치 부하 정보를 근거로 상기 사용자 단말의 요청 수용 가능 여부를 판단하고, 요청 수용이 가능한 경우 CPU(Central Processing Unit) 인코더와 GPU(Graphic Processing Unit) 인코더 중 어플리케이션 구동 화면을 인코딩할 인코더를 결정하여 해당 어플리케이션 구동에 따른 어플리케이션 구동 화면을 상기 결정된 인코더로 인코딩하여 상기 사용자 단말로 전송하는 어플리케이션 제공 장치를 포함하는 화면 가상화 기반 어플리케이션 구동 시스템이 제공된다. According to an aspect of the present invention, there is provided an information processing apparatus including a user terminal connected to an application providing apparatus, requesting an application to be activated, decoding and outputting an application running screen from the application providing apparatus, A central processing unit (CPU) encoder and a graphics processing unit (GPU), if the request can be accepted, and if the request can be accepted, And an application providing device for deciding an encoder to encode an application running screen of the encoder and encoding the application running screen according to the application driving by the determined encoder and transmitting the encoded application running screen to the user terminal The drive system is provided.
본 발명의 다른 측면에 따르면, 사용자 단말과의 통신을 위한 통신부, 어플리케이션이 저장된 어플리케이션 데이터베이스, 상기 통신부를 통해 사용자 단말이 접속된 경우, 복수의 어플리케이션에 대한 구동버튼들이 상기 사용자 단말에 표시되도록 제어하는 접속 제어부, 상기 통신부를 통해 어플리케이션 구동 요청 신호가 수신된 경우, CPU 및 GPU와 관련된 장치 부하 정보를 수집하고, 상기 수집된 장치 부하 정보를 기반으로 평균 부하값을 예측하는 부하 수집부, 상기 예측된 평균 부하값과 상기 장치 부하 정보를 이용하여 상기 사용자 단말의 요청 수용 가능 여부 및 CPU 인코더와 GPU 인코더 중에서 해당 어플리케이션 구동 화면을 인코딩할 인코더를 결정하는 부하 할당부, 상기 부하 할당부에서 상기 사용자 단말의 요청 수용이 가능하다고 결정된 경우, 상기 어플리케이션 데이터베이스로부터 해당 어플리케이션을 추출하여 구동하는 어플리케이션 구동부, 상기 부하 할당부의 결정에 따라, 상기 어플리케이션 구동부에서 구동된 어플리케이션 구동 화면을 인코딩하여 상기 통신부를 통해 상기 사용자 단말로 전송하는 GPU 인코더부, 상기 부하 할당부의 결정에 따라, 상기 어플리케이션 구동부에서 구동된 어플리케이션 구동 화면을 인코딩하여 상기 통신부를 통해 상기 사용자 단말로 전송하는 CPU 인코더부를 포함하는 어플리케이션 제공 장치가 제공된다. According to another aspect of the present invention, there is provided a communication system including a communication unit for communication with a user terminal, an application database in which an application is stored, and a control unit for controlling driving buttons for a plurality of applications to be displayed on the user terminal when the user terminal is connected through the communication unit A load collecting unit for collecting device load information related to the CPU and the GPU when the application driving request signal is received through the communication unit and for predicting an average load value based on the collected device load information, A load allocator for determining an acceptability of the request of the user terminal and an encoder to encode the corresponding application running screen from the CPU encoder and the GPU encoder using the average load value and the device load information, Determined to be acceptable A GPU encoder for encoding an application driving screen driven by the application driver and transmitting the encoded application driving screen to the user terminal through the communication unit according to the determination of the load allocator, And a CPU encoder unit encoding the application driving screen driven by the application driving unit and transmitting the encoded application driving screen to the user terminal through the communication unit according to the determination of the load allocating unit.
상기 장치 부하 정보는 CPU 부하, GPU 부하, 어플리케이션 구동에 의한 CPU 부하, 실시간 비디오 인코딩의 CPU 부하, 실시간 비디오 인코딩의 GPU 부하, CPU와 GPU간 데이터 전송 부하율, 현재 접속자 수, 현재 CPU로 구동되는 CPU 인코더 수, 현재 GPU로 구동되는 GPU 인코더 수, 장치에서 허용되는 Max CPU 부하, 장치에서 허용되는 Max GPU 부하, 장치에서 허용되는 Max CPU/GPU간 전송 부하 중 적어도 하나를 포함한다. The device load information includes information such as CPU load, GPU load, CPU load by application driving, CPU load of real time video encoding, GPU load of real time video encoding, data transmission load ratio between CPU and GPU, The number of encoders, the number of GPU encoders driven by the current GPU, the Max CPU load allowed by the device, the Max GPU load allowed by the device, and the Max CPU / GPU transfer load allowed by the device.
상기 부하 수집부는 CPU 및 GPU의 부하, 어플리케이션 구동에 의한 CPU 부하, 실시간 비디오 인코딩의 CPU 부하, 실시간 비디오 인코딩의 GPU 부하, CPU와 GPU간 데이터 전송 부하를 각각 현재 접속자 수로 나누어 평균 부하값을 예측한다. The load collecting unit predicts the average load value by dividing the load of the CPU and the GPU, the CPU load by the application driving, the CPU load of the real time video encoding, the GPU load of the real time video encoding, and the data transmission load between the CPU and the GPU, .
상기 부하 할당부는 를 만족하는 경우, 상기 사용자 단말의 요청 수용이 가능하다고 판단하되, The load allocator , It is determined that the request acceptance of the user terminal is possible,
상기 L은 현재 CPU로 인코더 수, Tc는 최대 CPU 부하, a는 하나의 어플리케이션 구동시의 CPU 부하, N은 현재의 접속자 수, c는 하나의 어플리케이션 구동에 따른 실시간 비디오 인코딩의 CPU 부하이다.Where L is the current number of encoders by the CPU, Tc is the maximum CPU load, a is the CPU load when one application is running, N is the number of current users, and c is the CPU load of real-
또한, 상기 부하 할당부는 와 을 동시에 만족하는 경우, GPU 인코더부에서 해당 어플리케이션 구동 화면의 인코딩을 수행하도록 결정하고, Further, the load allocating unit Wow The GPU encoder unit determines to perform encoding of the application running screen,
과 을 동시에 만족하지 않으면서 를 만족하는 경우, CPU 인코더부에서 해당 어플리케이션 구동 화면의 인코딩을 수행하도록 결정하되, and At the same time The CPU encoder unit determines to perform encoding of the application driving screen,
상기 g는 하나의 어플리케이션 구동에 따른 실시간 비디오 인코딩의 GPU 부하, t는 CPU와 GPU간 데이터 전송 부하의 예측값, N은 현재의 접속자 수, L은 현재 CPU로 구동되는 CPU 인코더 수, M은 현재 GPU로 구동되는 GPU 인코더 수, Tc는 장치에서 허용되는 Max CPU 부하, Tg는 장치에서 허용되는 Max GPU 부하, Tt는 장치에서 허용되는 Max CPU/GPU간 전송 부하이다. Where g is the GPU load of real-time video encoding according to one application run, t is the predicted value of the data transmission load between the CPU and the GPU, N is the number of current connections, L is the number of CPU encoders driven by the current CPU, , Tc is the Max CPU load allowed by the device, Tg is the Max GPU load allowed by the device, and Tt is the Max CPU / GPU transfer load allowed by the device.
상기 GPU 인코더부는 복수 개의 GPU 인코더로 구성되고, 각 GPU 인코더는 각기 다른 사용자 단말의 요청에 따른 어플리케이션 구동 화면을 각각 인코딩한다. The GPU encoder unit is composed of a plurality of GPU encoders, and each GPU encoder encodes an application driving screen according to a request of each of the different user terminals.
상기 CPU 인코더부는 복수 개의 CPU 인코더로 구성되고, 각 CPU 인코더는 각기 다른 사용자 단말의 요청에 따른 어플리케이션 구동 화면을 각각 인코딩한다. The CPU encoder unit is composed of a plurality of CPU encoders, and each of the CPU encoders encodes an application driving screen according to a request of a different user terminal.
본 발명의 또 다른 측면에 따르면, (a) 사용자 단말이 어플리케이션 제공 장치에 접속하여 어플리케이션 구동 요청 신호를 전송하는 단계, (b) 상기 어플리케이션 제공 장치가 CPU 및 GPU와 관련된 장치 부하 정보를 수집하는 단계, (c) 상기 어플리케이션 제공 장치가 상기 수집된 장치 부하 정보를 이용하여 상기 사용자 단말의 요청 수용 가능 여부를 판단하는 단계, (d) 상기 사용자 단말의 요청 수용이 가능한 경우, 상기 어플리케이션 제공 장치가 상기 장치 부하 정보를 이용하여 CPU 인코더와 GPU 인코더 중 어플리케이션 구동 화면을 인코딩할 인코더를 결정하는 단계, (e) 상기 어플리케이션 제공 장치가 해당 어플리케이션을 구동하고, 어플리케이션 구동 화면을 상기 결정된 CPU 인코더 또는 GPU 인코더를 통해 인코딩하여 상기 사용자 단말로 전송하는 단계, (f) 상기 사용자 단말이 상기 어플리케이션 제공 장치로부터의 어플리케이션 구동 화면을 디코딩하여 출력하는 단계를 포함하는 화면 가상화 기반 어플리케이션 구동 방법이 제공된다. According to another aspect of the present invention, there is provided a method for controlling an application, the method comprising the steps of: (a) connecting a user terminal to an application providing device and transmitting an application driving request signal; (b) collecting device load information related to a CPU and a GPU (c) determining whether the application providing apparatus can accept a request of the user terminal using the collected device load information; (d) if the request for the user terminal can be accepted, Determining an encoder to encode an application running screen of the CPU encoder and the GPU encoder using the device load information; (e) determining whether the application providing apparatus drives the application and displays the application running screen to the CPU encoder or the GPU encoder And transmits the encoded data to the user terminal , (F) the user terminal is a screen-based virtual application driving method comprising the step of outputting the decoded application driving screen from the application service is provided.
상기 (a)단계는, 상기 사용자 단말이 상기 어플리케이션 제공 장치에 접속하면, 상기 어플리케이션 제공 장치가 어플리케이션 목록이 표시된 어플리케이션 구동 버튼들을 상기 사용자 단말에 제공하는 단계, 상기 사용자 단말이 상기 어플리케이션 구동 버튼들을 화면상에 출력하고, 사용자에 의해 선택된 어플리케이션 목록을 포함하는 어플리케이션 구동 요청 신호를 상기 어플리케이션 제공 장치로 전송하는 단계를 포함한다. Wherein the step (a) comprises the steps of: when the user terminal accesses the application providing apparatus, the application providing apparatus providing the application terminal with the application list displayed with the application list to the user terminal, And transmitting the application driving request signal including the application list selected by the user to the application providing apparatus.
본 발명의 또 다른 측면에 따르면, 어플리케이션 제공 장치가 화면 가상화 기반 어플리케이션을 구동하는 방법에 있어서, (a) 사용자 단말로부터 어플리케이션 구동 요청 신호가 수신된 경우, CPU 및 GPU와 관련된 장치 부하 정보를 수집하는 단계, (b) 상기 수집된 장치 부하 정보를 이용하여 상기 사용자 단말의 요청 수용 가능 여부를 판단하는 단계, (c) 상기 사용자 단말의 요청 수용이 가능한 경우, 상기 장치 부하 정보를 이용하여 CPU 인코더와 GPU 인코더 중 어플리케이션 구동 화면을 인코딩할 인코더를 결정하는 단계, (d) 해당 어플리케이션을 구동하고, 해당 어플리케이션 구동 화면을 상기 결정된 CPU 인코더 또는 GPU 인코더를 통해 인코딩하여 상기 사용자 단말로 전송하는 단계를 포함하는 화면 가상화 기반 어플리케이션 구동 방법이 제공된다. According to another aspect of the present invention, there is provided a method of operating a screen virtualization-based application, the method comprising: (a) collecting device load information related to a CPU and a GPU when an application driving request signal is received from a user terminal (B) determining whether the user terminal can accept a request based on the collected device load information; (c) if the request is acceptable to the user terminal, Determining an encoder to encode an application running screen of the GPU encoder, (d) driving the application, and encoding the application running screen through the determined CPU encoder or GPU encoder and transmitting the encoded application running screen to the user terminal A method of operating a screen virtualization based application is provided.
상기 (b) 단계는, 를 만족하는 경우, 상기 사용자 단말의 요청 수용이 가능하다고 판단하되, The step (b) , It is determined that the request acceptance of the user terminal is possible,
상기 L은 현재 CPU로 인코더 수, Tc는 최대 CPU 부하값, a는 하나의 어플리케이션 구동시의 CPU 부하, N은 현재의 접속자 수, c는 하나의 어플리케이션 구동시에 따른 실시간 비디오 인코딩의 CPU 부하이다. Where L is the current number of encoders by the CPU, Tc is the maximum CPU load value, a is the CPU load when one application is running, N is the number of current users, and c is the CPU load of real-
상기 (c) 단계는, 와 을 동시에 만족하는 경우, GPU 인코더에서 해당 어플리케이션 구동 화면의 인코딩을 수행하도록 결정하고, The step (c) Wow , It is determined that the GPU encoder performs encoding of the application running screen,
과 을 동시에 만족하지 않으면서 를 만족하는 경우, CPU 인코더에서 해당 어플리케이션 구동 화면의 인코딩을 수행하도록 결정하되, and At the same time , The CPU encoder determines to perform encoding of the application running screen,
상기 g는 하나의 어플리케이션 구동에 따른 실시간 비디오 인코딩의 GPU 부하, t는 CPU와 GPU간 데이터 전송 부하의 예측값, N은 현재의 접속자 수, L은 현재 CPU로 구동되는 CPU 인코더 수, M은 현재 GPU로 구동되는 GPU 인코더 수, Tc는 장치에서 허용되는 Max CPU 부하, Tg는 장치에서 허용되는 Max GPU 부하, Tt는 장치에서 허용되는 Max CPU/GPU간 전송 부하를 말한다. Where g is the GPU load of real-time video encoding according to one application run, t is the predicted value of the data transmission load between the CPU and the GPU, N is the number of current connections, L is the number of CPU encoders driven by the current CPU, Tc is the maximum CPU load allowed by the device, Tg is the Max GPU load allowed by the device, and Tt is the maximum CPU / GPU transfer load allowed by the device.
상기 과 을 동시에 만족하지 않으면서 를 만족하지 않은 경우, 상기 사용자 단말에 요청 수용 불가 메시지를 전송한다. remind and At the same time , It transmits a request acceptance message to the user terminal.
상술한 바와 같이 본 발명에 따르면, 어플리케이션 제공 장치가 CPU(Central Processing Unit)와 GPU(Graphic Processing Unit)의 사용률을 기반으로 실시간으로 video encoding 처리 개수를 최대화할 수 있다.
As described above, according to the present invention, an application providing apparatus can maximize the number of video encoding processes in real time based on a usage rate of a CPU (Central Processing Unit) and a GPU (Graphic Processing Unit).
도 1은 본 발명에 따른 화면 가상화 기반 어플리케이션 구동 시스템을 나타낸 도면.
도 2는 본 발명에 따른 어플리케이션 제공 장치의 구성을 개략적으로 나타낸 블럭도.
도 3은 본 발명에 따른 사용자 단말의 구성을 개략적으로 나타낸 블럭도.
도 4는 본 발명에 따른 화면 가상화 기반 어플리케이션 구동 방법을 나타낸 도면.
도 5는 본 발명에 따른 어플리케이션 제공 장치가 화면 가상화 기반 어플리케이션 구동하는 방법을 나타낸 흐름도.BRIEF DESCRIPTION OF THE DRAWINGS FIG. 1 is a diagram illustrating a screen virtualization-based application operating system according to the present invention.
2 is a block diagram schematically showing a configuration of an application providing apparatus according to the present invention.
3 is a block diagram schematically illustrating a configuration of a user terminal according to the present invention;
4 illustrates a method of driving an application based on screen virtualization according to the present invention.
5 is a flowchart illustrating a method of operating an application based on a screen virtualization by an application providing apparatus according to the present invention.
본 발명의 전술한 목적과 기술적 구성 및 그에 따른 작용 효과에 관한 자세한 사항은 본 발명의 명세서에 첨부된 도면에 의거한 이하 상세한 설명에 의해 보다 명확하게 이해될 것이다.The foregoing and other objects, features, and advantages of the present invention will become more apparent from the following detailed description taken in conjunction with the accompanying drawings, in which: FIG.
도 1은 본 발명에 따른 화면 가상화 기반 어플리케이션 구동 시스템을 나타낸 도면이다. 1 is a diagram illustrating a screen virtualization-based application driving system according to the present invention.
도 1을 참조하면, 화면 가상화 기반 어플리케이션 구동 시스템은 사용자 단말(100)로부터의 어플리케이션 구동 요청에 따라 해당 어플리케이션을 구동하고, 화면 가상화 기술을 이용하여 어플리케이션 구동 화면을 상기 사용자 단말(100)에 제공하는 어플리케이션 제공 장치(200)를 포함한다.1, a screen virtualization-based application operating system drives an application in response to an application activation request from the
상기 화면 가상화(Presentation Virtualization)는 어플리케이션을 어플리케이션 제공 장치(200)에서 구동하고, 그 구동에 따른 어플리케이션 구동 화면과 오디오를 인코딩하여 상기 사용자 단말(100)로 제공하는 서비스이다.The presentation virtualization is a service that drives an application on an
상기 사용자 단말(100)은 상기 어플리케이션 제공 장치(200)에 접속하여 사용자에 의해 선택된 어플리케이션의 구동을 요청하고, 상기 어플리케이션 제공 장치(200)로부터의 어플리케이션 구동 화면 및 오디오를 디코딩하여 출력한다.The
즉, 상기 사용자 단말(100)은 어플리케이션 제공 장치(200)로부터 다수의 어플리케이션에 대한 각각의 구동버튼을 제공받아 화면 상에 디스플레이하고, 다수의 어플리케이션 중 하나가 선택되면, 상기 선택된 어플리케이션의 구동에 따른 어플리케이션 구동 화면을 어플리케이션 제공 장치(200)로부터 수신하여 출력한다. 여기서, 사용자 단말(100)은 어플리케이션의 구동 요청을 입력할 수 있는 입력 기능과, 디지털 미디어를 재생할 수 있는 미디어 재생기능을 구비한 TV, LCD 모니터, 프로젝션 TV, 빔 프로젝트 장치, 모바일 장치 등을 포함한다. That is, the
상기와 같은 사용자 단말(100)에 대한 상세한 설명은 도 3을 참조하기로 한다. The
상기 어플리케이션 제공 장치(200)는 상기 사용자 단말(100)로부터 어플리케이션 구동 요청 신호를 수신한 경우, CPU(Central Processing Unit) 및 GPU(Graphic Processing Unit)에 관련된 장치 부하 정보를 수집하고, 상기 수집된 장치 부하 정보를 이용하여 상기 사용자 단말(100)의 요청 수용 가능 여부 및 어플리케이션 구동 화면의 인코딩을 CPU 인코더 또는 GPU 인코더 중 어디에 할당할지를 결정한다. 여기서, 상기 장치 부하 정보는 CPU 부하, GPU 부하, 어플리케이션 구동에 의한 CPU 부하, 실시간 비디오 인코딩의 CPU 부하, 실시간 비디오 인코딩의 GPU 부하, CPU와 GPU간 데이터 전송 부하, 현재 접속자 수, 현재 CPU로 구동되는 CPU 인코더 수, 현재 GPU로 구동되는 GPU 인코더 수, 허용되는 Max CPU 부하, 허용되는 Max GPU 부하, 허용되는 Max CPU/GPU간 전송 부하 등을 포함한다. 여기서, 상기 CPU와 GPU간 데이터 전송 부하는 GPU에서 어플리케이션 구동 화면의 인코딩 발생시 발생한다.The
또한, 상기 어플리케이션 제공 장치(200)는 상기 사용자 단말(100)의 요청 수용이 가능한 경우, 해당 어플리케이션을 구동하고 그 어플리케이션 구동 화면을 상기 결정된 CPU 인코더 또는 GPU 인코더를 통해 인코딩하여 상기 사용자 단말(100)로 전송한다. When the
또한, 어플리케이션 제공 장치(200)는 다수의 어플리케이션에 대한 각각의 구동버튼을 상기 사용자 단말(100)에 전송하고, 사용자 단말(100)로부터 구동 요청된 어플리케이션을 구동하여 발생되는 오디오 및 비디오를 인코딩하여 상기 사용자 단말(100)로 전송한다.In addition, the
또한, 상기 어플리케이션 제공 장치(200)는 예컨대, PC(Personal Computer)와 같이 오디오 및 비디오로 구성된 멀티미디어 데이터를 재생하거나 편집, 수정, 제어할 수 있는 어플리케이션을 비롯해 다수 개의 어플리케이션을 구비하고, 어플리케이션을 구동하는 장치이다. 여기서, 어플리케이션 제공 장치(200)는 어플리케이션을 실행할 수 있는 데스크탑(Desktop) PC, 노트북(Notebook) PC, 고성능 모바일 단말기 등을 포함한다.The
또한, 상기 어플리케이션 제공 장치(200)는 클라우드 컴퓨팅 기반으로 동작될 수 있다. Also, the
상기와 같은 어플리케이션 제공 장치(200)에 대한 상세한 설명은 도 2를 참조하기로 한다.The
도 2는 본 발명에 따른 어플리케이션 제공 장치의 구성을 개략적으로 나타낸 블럭도이다.2 is a block diagram schematically showing the configuration of an application providing apparatus according to the present invention.
도 2를 참조하면, 어플리케이션 제공 장치(200)는 사용자 단말과의 통신을 위한 통신부(202), 어플리케이션이 저장된 어플리케이션 데이터베이스(204), 접속 제어부(206), 부하 수집부(208), 부하 할당부(210), 어플리케이션 구동부(212), GPU 인코더부(216), CPU 인코더부(214)를 포함한다.2, the
상기 접속 제어부(206)는 상기 통신부(202)를 통해 사용자 단말이 접속된 경우, 상기 사용자 단말에 다수의 어플리케이션에 대한 각각의 구동버튼이 표시되도록 제어한다.When the user terminal is connected through the
또한, 상기 접속 제어부(206)는 사용자 단말로부터 어플리케이션 구동 요청 신호가 수신된 경우, 해당 어플리케이션을 구동시키기 위한 어플리케이션 구동 명령을 상기 부하 수집부(208)에 전송한다. 여기서, 상기 어플리케이션 구동 요청 신호는 사용자 단말 식별정보, 해당 어플리케이션 식별정보 등을 포함한다. In addition, when the application driving request signal is received from the user terminal, the
상기 부하 수집부(208)는 어플리케이션 구동 명령이 수신되면, CPU와 GPU에 관련된 장치 부하 정보를 수집하고, 상기 수집된 장치 부하 정보를 기반으로 평균 부하값을 예측한다. 즉, 상기 부하 수집부(208)는 CPU 부하, GPU 부하, 어플리케이션 구동에 의한 CPU 부하, 실시간 비디오 인코딩의 CPU 부하, 실시간 비디오 인코딩의 GPU 부하, CPU와 GPU간 데이터 전송 부하를 현재 접속자 수로 나누어 평균 부하값을 예측한다. 여기서, 상기 예측된 평균 부하값은 하나의 어플리케이션 구동에 따른 CPU 부하, 하나의 어플리케이션 구동에 따른 실시간 비디오 인코딩의 CPU 부하, 하나의 어플리케이션 구동에 따른 실시간 비디오 인코딩의 GPU 부하를 말한다. When the application driving command is received, the
상기 부하 할당부(210)는 상기 예측된 평균 부하값과 상기 장치 부하 정보를 이용하여 사용자 단말의 요청 수용 가능 여부 및 어플리케이션 구동 화면의 인코딩을 CPU 인코더 또는 GPU 인코더 중 어디에 할당할지를 결정한다. The
먼저, 상기 부하 할당부(210)는 수학식 1을 이용하여 상기 사용자 단말의 요청 수용 가능 여부를 결정한다. First, the
여기서, 상기 L은 현재 CPU로 구동되는 CPU 인코더 수, Tc는 최대 CPU 부하 값, a는 하나의 어플리케이션 구동시의 CPU 부하, N은 현재 접속자 수, c는 하나의 어플리케이션 구동에 따른 실시간 비디오 인코딩의 CPU 부하를 말한다.Here, L is the number of CPU encoders driven by the current CPU, Tc is the maximum CPU load value, a is the CPU load at the time of driving one application, N is the number of current users, and c is the number of current users CPU load.
상기 부하 할당부(210)는 상기 수학식 1을 만족하는 경우, 상기 사용자 단말의 어플리케이션 구동 요청을 수용하고, 만족하지 않은 경우 상기 사용자 단말의 어플리케이션 구동 요청을 수용하지 않는다.If the
다시 말하면, 상기 부하 할당부(210)는 상기 수학식 1을 만족하지 못하면, 어플리케이션을 구동할 CPU 연산량이 부족하므로 추가 사용자를 받지 못함을 알린다.In other words, if the
다음으로, 상기 부하 할당부(210)는 수학식 2와 수학식 3을 동시에 만족하는지의 여부를 이용하여 어플리케이션 구동 화면을 인코딩할 인코더를 결정한다. Next, the
여기서, g는 하나의 어플리케이션 구동에 따른 실시간 비디오 인코딩의 GPU 부하, t는 CPU와 GPU간 데이터 전송 부하의 예측값, N은 현재 접속자 수, M은 현재 GPU로 구동되는 GPU 인코더 수, Tg는 장치에서 허용되는 Max GPU 부하값, Tt는 장치에서 허용되는 Max CPU/GPU간 전송 부하값을 말한다.Where g is the GPU load of real-time video encoding according to the driving of one application, t is the predicted value of the data transmission load between CPU and GPU, N is the number of current users, M is the number of GPU encoders driven by the current GPU, Allowable Max GPU load value, and Tt is the Max CPU / GPU transfer load value allowed by the device.
상기 부하 할당부(210)는 상기 수학식 2와 수학식 3을 동시에 만족하는 경우, GPU 인코더에서 해당 어플리케이션 구동 화면의 인코딩을 수행하도록 결정한다.If the
또한, 상기 부하 할당부(210)는 상기 수학식 2와 수학식 3을 동시에 만족하지 않으면, 수학식 4를 만족하는지의 여부를 이용하여 CPU 인코더에 해당 어플리케이션 구동 화면의 인코딩을 수행하도록 결정한다.If the
여기서, 상기 c는 하나의 어플리케이션 구동에 따른 실시간 비디오 인코딩의 CPU 부하, Tc는 장치에서 허용되는 Max CPU 부하값, N은 현재 접속자 수, L은 현재 CPU로 구동되는 CPU 인코더 수를 말한다.Here, c is a CPU load of real-time video encoding according to one application driving, Tc is a maximum CPU load value allowed by the device, N is the number of current users, and L is the number of CPU encoders driven by the current CPU.
즉, 상기 부하 할당부(210)는 상기 수학식 2와 수학식 3을 동시에 만족하지 않으면서, 상기 수학식 4를 만족하면, CPU 인코더가 해당 어플리케이션 구동 화면의 인코딩을 수행하도록 결정한다.That is, the
만약, 상기 수학식 2와 수학식 3을 동시에 만족하지 않으면서 상기 수학식 4를 만족하지 않으면, 상기 부하 할당부(210)는 상기 사용자 단말의 요청을 수용하지 않는다.If Equation (2) and Equation (3) are not satisfied simultaneously and Equation (4) is not satisfied, the
상기 어플리케이션 구동부(212)는 상기 부하 할당부(210)에서 상기 사용자 단말의 요청 수용이 가능하다고 판단된 경우, 상기 어플리케이션 데이터베이스(204)로부터 해당 어플리케이션을 추출하여 구동한다. 즉, 상기 어플리케이션 구동부(212)는 상기 어플리케이션 구동 요청 신호를 분석하여 사용자 단말 식별정보, 해당 어플리케이션을 판단하고, 상기 판단된 어플리케이션을 상기 어플리케이션 데이터베이스(204)로부터 추출하여 구동한다.The
상기 GPU 인코더부(216)와 상기 CPU 인코더부(214)는 상기 어플리케이션 구동부(212)에서 구동된 어플리케이션 구동 화면을 인코딩하여 상기 통신부(202)를 통해 상기 사용자 단말로 전송한다.The
상기 GPU 인코더부(216)는 복수개의 GPU 인코더로 구성되어 있고, 각 GPU 인코더는 각기 다른 사용자 단말의 요청에 따른 어플리케이션 구동 화면을 각각 인코딩한다. The
상기 CPU 인코더부(214)는 복수개의 CPU 인코더로 구성되어 있고, 각 CPU 인코더는 각기 다른 사용자 단말의 요청에 따른 어플리케이션 구동 화면을 각각 인코딩한다. 이때, 상기 CPU 인코더(214)와 GPU 인코더(216)는 각 사용자 단말의 사양정보(예를 들면, 코덱 정보임)에 따라 다르게 인코딩을 수행할 수 있다. The
상기에서는 상기 GPU 인코더부(216)와 상기 CPU 인코더부(214)가 어플리케이션 구동 화면을 인코딩하는 것만을 설명하였으나, 오디오가 존재하는 어플리케이션의 경우 오디오도 함께 인코딩함은 당연하다.In the above description, the
도 3은 본 발명에 따른 사용자 단말의 구성을 개략적으로 나타낸 블럭도이다. 3 is a block diagram schematically illustrating the configuration of a user terminal according to the present invention.
도 3을 참조하면, 사용자 단말(100)은 어플리케이션 제공 장치와의 통신을 위한 통신부(102), 출력부(104), 화면 제어부(106), 어플리케이션 구동 요청부(108), 디코딩부(110)를 포함한다.3, the
상기 출력부(104)는 상기 통신부(102)를 통해 어플리케이션 제공 장치로부터 제공받은 다수의 어플리케이션에 대한 구동버튼들과 어플리케이션 구동 화면을 출력한다. 여기서, 상기 다수의 어플리케이션에 대한 구동버튼들은 어플리케이션 목록 형태일 수 있다. The
상기 화면 제어부(106)는 상기 어플리케이션 제공 장치로부터 화면 가상화 기술을 통해 다수의 어플리케이션에 대한 각각의 구동버튼을 제공받아 상기 출력부(104)의 화면상에 표시되도록 제어한다.The
상기 어플리케이션 구동 요청부(108)는 상기 출력부(104)에 출력된 다수의 어플리케이션 목록 중에서 사용자에 의해 하나가 선택되면, 상기 선택된 어플리케이션의 구동을 요청하는 어플리케이션 구동 요청 신호를 상기 어플리케이션 제공 장치로 전송한다. 상기 어플리케이션 구동 요청 신호는 사용자 단말 식별정보, 어플리케이션 식별정보, 사용자 단말 사양정보(예를 들면, 코덱 정보, 해상도, 사이즈 정보 등을 포함함) 등을 포함한다.When one of the plurality of application lists output from the
상기 디코딩부(110)는 상기 어플리케이션 제공 장치로부터 전송된 어플리케이션 구동 화면과 오디오를 디코딩하여 상기 출력부(104)를 통해 출력한다.The
도 4는 본 발명에 따른 화면 가상화 기반 어플리케이션 구동 방법을 나타낸 도면이다. 4 is a diagram illustrating a method of driving an application based on a screen virtualization according to the present invention.
도 4를 참조하면, 사용자 단말은 어플리케이션 제공 장치에 접속하여 어플리케이션 구동 요청 신호를 전송한다(S402). 즉, 사용자 단말이 상기 어플리케이션 제공 장치에 접속하면, 상기 어플리케이션 제공 장치는 어플리케이션 목록이 표시된 어플리케이션 구동 버튼들을 상기 사용자 단말에 제공한다. 상기 사용자 단말은 상기 어플리케이션 구동 버튼들을 화면상에 출력하고, 사용자는 구동을 원하는 어플리케이션 구동 버튼을 선택한다. 그러면, 상기 사용자 단말은 상기 선택된 어플리케이션 목록을 포함하는 어플리케이션 구동 요청 신호를 상기 어플리케이션 제공 장치로 전송한다.Referring to FIG. 4, the user terminal accesses an application providing apparatus and transmits an application run request signal (S402). That is, when the user terminal accesses the application providing apparatus, the application providing apparatus provides the application terminal with the application list showing the application list to the user terminal. The user terminal outputs the application driving buttons on the screen, and the user selects an application driving button to be driven. Then, the user terminal transmits an application activation request signal including the selected application list to the application providing device.
상기 S402가 수행되면, 상기 어플리케이션 제공 장치는 CPU 및 GPU와 관련된 장치 부하 정보를 수집하고(S404), 상기 수집된 장치 부하 정보를 이용하여 상기 사용자 단말의 요청 수용 가능 여부를 판단한다(S406). 즉, 상기 어플리케이션 제공 장치는 현재 CPU로 구동되는 CPU 인코더 수에 여유가 있는지를 판단하고, CPU 인코더 수에 여유가 있는 경우 상기 사용자 단말의 어플리케이션 구동 요청을 허용한다.In step S402, the application providing apparatus collects device load information related to the CPU and the GPU in step S404, and determines whether the user terminal can accept the request based on the collected device load information in step S406. That is, the application providing apparatus determines whether the number of CPU encoders driven by the current CPU is sufficient, and permits a request to drive the application of the user terminal when there is room in the number of the CPU encoders.
상기 S406의 판단결과 상기 사용자 단말의 요청 수용이 가능한 경우, 상기 어플리케이션 제공 장치는 상기 장치 부하 정보를 이용하여 어플리케이션 구동 화면의 인코딩을 CPU 인코더 또는 GPU 인코더 중 어느 인코더로 할 것인지를 결정한다(S408). 즉, 상기 어플리케이션 제공 장치는 수학식 2 내지 수학식 4를 이용하여 어플리케이션 구동 화면을 인코딩할 인코더를 결정한다. If it is determined in step S406 that the request can be accepted by the user terminal, the application providing apparatus decides which of the CPU encoder and the GPU encoder to encode the application running screen using the device load information (S408) . That is, the application providing apparatus determines an encoder to encode an application running screen using Equations (2) to (4).
상기 어플리케이션 구동 화면을 인코딩할 인코더가 결정되면, 상기 어플리케이션 제공 장치는 해당 어플리케이션을 구동하고(S410), 어플리케이션 구동 화면을 상기 결정된 CPU 인코더 또는 GPU 인코더를 통해 인코딩하여(S412) 상기 사용자 단말로 전송한다(S414). 이때, 상기 어플리케이션 제공 장치는 오디오도 함께 인코딩하여 상기 사용자 단말로 전송한다.When the encoder to encode the application driving screen is determined, the application providing apparatus drives the application (S410), encodes the application driving screen through the determined CPU encoder or GPU encoder (S412), and transmits the encoded application driving screen to the user terminal (S414). At this time, the application providing apparatus also encodes audio and transmits it to the user terminal.
그러면, 상기 사용자 단말은 상기 어플리케이션 제공 장치로부터의 어플리케이션 구동 화면을 디코딩하여 출력한다(S416).Then, the user terminal decodes and outputs an application running screen from the application providing apparatus (S416).
만약, 상기 S406의 판단결과 상기 사용자 단말의 요청 수용이 가능하지 않으면, 상기 어플리케이션 제공 장치는 상기 사용자 단말로 어플리케이션 구동 불가 메시지를 전송한다(S418). If it is determined in step S406 that the user terminal can not accept the request, the application providing apparatus transmits an application operation disable message to the user terminal in step S418.
도 5는 본 발명에 따른 어플리케이션 제공 장치가 화면 가상화 기반 어플리케이션 구동하는 방법을 나타낸 흐름도이다.FIG. 5 is a flowchart illustrating a method of operating an application for screen virtualization according to an embodiment of the present invention.
도 5를 참조하면, 어플리케이션 제공 장치는 사용자 단말로부터 어플리케이션 구동 요청 신호가 수신되면(S502), CPU 및 GPU와 관련된 장치 부하 정보를 수집한다(S504). Referring to FIG. 5, when an application driving request signal is received from a user terminal (S502), the application providing apparatus collects device load information related to the CPU and the GPU (S504).
상기 S504의 수행 후, 상기 어플리케이션 제공 장치는 상기 수집된 장치 부하 정보를 기반으로 평균 부하값을 예측하고(S506), 상기 예측된 평균 부하값과 장치 부하 정보를 이용하여 상기 사용자 단말의 요청 수용 가능 여부를 판단한다(S508). 즉, 상기 어플리케이션 제공 장치는 CPU의 부하, GPU의 부하, 어플리케이션 구동에 의한 CPU 부하, 실시간 비디오 인코딩의 CPU 부하, 실시간 비디오 인코딩의 GPU 부하, CPU와 GPU간 데이터 전송 부하를 현재 접속자 수로 나누어 평균 부하값을 예측한다. After the execution of step S504, the application providing apparatus predicts an average load value based on the collected device load information (S506). The application providing apparatus estimates an average load value based on the collected device load information (S508). That is, the application providing apparatus divides the load of the CPU, the load of the GPU, the CPU load by the application driving, the CPU load of the real time video encoding, the GPU load of the real time video encoding, Estimate the value.
그런 다음 상기 어플리케이션 제공 장치는 수학식 1을 만족하는지의 여부를 판단하여, 만족하는 경우 상기 사용자 단말의 요청 수용이 가능하다고 판단한다. Then, the application providing apparatus judges whether or not the equation (1) is satisfied, and judges that the request acceptance of the user terminal is possible if the equation (1) is satisfied.
상기 S508의 판단결과 상기 사용자 단말의 요청 수용이 가능한 경우, 상기 어플리케이션 제공 장치는 GPU 인코더부 관련 조건을 만족하는지의 여부를 판단한다(S510). 상기 GPU 인코더부 관련 조건은 수학식 2 및 수학식 3을 말한다. If it is determined in step S508 that the user terminal can accept the request, the application providing apparatus determines whether the GPU encoder unit related condition is satisfied (S510). The GPU encoder section related conditions refer to Equation (2) and Equation (3).
상기 S510의 판단결과 상기 GPU 인코더부 관련 조건을 만족하는 경우, 상기 어플리케이션 제공 장치는 어플리케이션 구동 화면을 인코딩할 인코더를 GPU 인코더로 결정한다(S512).If the condition of the GPU encoder unit is satisfied as a result of the determination in step S510, the application providing apparatus determines the encoder to encode the application running screen by the GPU encoder (S512).
그런 다음 상기 어플리케이션 제공 장치는 해당 어플리케이션을 구동하고(S514), 어플리케이션 구동 화면을 상기 결정된 GPU 인코더를 통해 인코딩하여 상기 사용자 단말로 전송한다(S516).Then, the application providing apparatus drives the corresponding application (S514), encodes the application running screen through the determined GPU encoder, and transmits the encoded application running screen to the user terminal (S516).
만약, 상기 S510의 판단결과 GPU 인코더부 관련 조건을 만족하지 않으면, 상기 어플리케이션 제공 장치는 CPU 인코더부 관련 조건을 만족하는지의 여부를 판단한다(S520). 상기 CPU 인코더부 관련 조건은 수학식 4를 말한다. If it is determined in operation S510 that the GPU encoder unit related condition is not satisfied, the application providing apparatus determines whether the condition related to the CPU encoder unit is satisfied (S520). The condition related to the CPU encoder section is Equation (4).
상기 S520의 판단결과 CPU 인코더부 관련 조건을 만족하면, 상기 어플리케이션 제공 장치는 해당 어플리케이션 구동 화면을 인코딩할 인코더를 CPU 인코더로 결정한다(S522).If it is determined in operation S520 that the conditions related to the CPU encoder unit are satisfied, the application providing apparatus determines the encoder to encode the application running screen as a CPU encoder in operation S522.
그런 다음 상기 어플리케이션 제공 장치는 해당 어플리케이션을 구동하고(S524), 어플리케이션 구동 화면을 상기 결정된 CPU 인코더를 통해 인코딩하여 상기 사용자 단말로 전송한다(S526).Then, the application providing apparatus drives the corresponding application (S524), encodes the application running screen through the determined CPU encoder, and transmits the encoded application running screen to the user terminal (S526).
만약, 상기 S508의 판단결과 상기 사용자 단말의 요청 수용이 불가능한 경우, 상기 어플리케이션 제공 장치는 요청 수용 불가 메시지를 상기 사용자 단말로 전송한다(S518).If it is determined in step S508 that the user terminal can not accept the request, the application providing apparatus transmits a request acceptance message to the user terminal (step S518).
이와 같이, 본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
Thus, those skilled in the art will appreciate that the present invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. It is therefore to be understood that the embodiments described above are to be considered in all respects only as illustrative and not restrictive. The scope of the present invention is defined by the appended claims rather than the detailed description and all changes or modifications derived from the meaning and scope of the claims and their equivalents are to be construed as being included within the scope of the present invention do.
이상과 같이 본 발명의 화면 가상화 기반 어플리케이션 구동 시스템 및 방법은 GPU와 CPU의 사용률을 기반으로 하여 어플리케이션 제공 장치에서 실시간으로 video encoding 처리 개수를 최대화할 수 있는 필요가 있는 경우에 적합하다.
As described above, the screen virtualization-based application operating system and method of the present invention are suitable for the case where there is a need to maximize the number of video encoding processes in real time in an application providing apparatus based on the usage rates of the GPU and the CPU.
100 : 사용자 단말 102, 202 : 통신부
104 : 출력부 106 : 화면 제어부
108 : 어플리케이션 구동 요청부 110 : 디코딩부
200 : 어플리케이션 제공 장치 204 : 어플리케이션 DB
206 : 접속 제어부 208 : 부하 수집부
210 : 부하 할당부 212 : 어플리케이션 구동부
214 : CPU 인코더부 216 : GPU 인코더부100:
104: output unit 106: screen control unit
108: Application driving requesting unit 110: Decoding unit
200: Application providing device 204: Application DB
206: connection control section 208: load collecting section
210: load allocating unit 212: application driving unit
214: CPU encoder section 216: GPU encoder section
Claims (14)
어플리케이션이 저장된 어플리케이션 데이터베이스;
상기 통신부를 통해 사용자 단말이 접속된 경우, 복수의 어플리케이션에 대한 구동버튼들이 상기 사용자 단말에 표시되도록 제어하는 접속 제어부;
상기 통신부를 통해 어플리케이션 구동 요청 신호가 수신된 경우, CPU 및 GPU와 관련된 장치 부하 정보를 수집하고, 상기 수집된 장치 부하 정보를 기반으로 평균 부하값을 예측하는 부하 수집부;
상기 예측된 평균 부하값과 상기 장치 부하 정보를 이용하여 상기 사용자 단말의 요청 수용 가능 여부 및 CPU 부하, GPU 부하, CPU와 GPU 간 데이터 전송 부하를 이용하여 CPU 인코더와 GPU 인코더 중에서 해당 어플리케이션 구동 화면을 인코딩할 인코더를 결정하는 부하 할당부;
상기 부하 할당부에서 상기 사용자 단말의 요청 수용이 가능하다고 결정된 경우, 상기 어플리케이션 데이터베이스로부터 해당 어플리케이션을 추출하여 구동하는 어플리케이션 구동부;
상기 부하 할당부의 결정에 따라, 상기 어플리케이션 구동부에서 구동된 어플리케이션 구동 화면을 인코딩하여 상기 통신부를 통해 상기 사용자 단말로 전송하는 GPU 인코더부; 및
상기 부하 할당부의 결정에 따라, 상기 어플리케이션 구동부에서 구동된 어플리케이션 구동 화면을 인코딩하여 상기 통신부를 통해 상기 사용자 단말로 전송하는 CPU 인코더부;
를 포함하는 어플리케이션 제공 장치.A communication unit for communication with a user terminal;
An application database in which the application is stored;
A connection controller for controlling driving buttons for a plurality of applications to be displayed on the user terminal when the user terminal is connected through the communication unit;
A load collector for collecting device load information related to the CPU and the GPU when the application driving request signal is received through the communication unit and for predicting an average load value based on the collected device load information;
Using the predicted average load value and the device load information, whether the request can be accepted by the user terminal and the load of the CPU load, the GPU load, and the data transmission load between the CPU and the GPU, A load allocator for determining an encoder to be encoded;
An application driver for extracting and driving a corresponding application from the application database when it is determined in the load allocator that acceptance of the request from the user terminal is possible;
A GPU encoder which encodes an application driving screen driven by the application driver and transmits the encoded application driving screen to the user terminal through the communication unit according to the determination of the load allocator; And
A CPU encoder unit encoding an application driving screen driven by the application driving unit and transmitting the encoded application driving screen to the user terminal through the communication unit according to the determination of the load allocation unit;
The application providing apparatus comprising:
상기 장치 부하 정보는 CPU 부하, GPU 부하, 어플리케이션 구동에 의한 CPU 부하, 실시간 비디오 인코딩의 CPU 부하, 실시간 비디오 인코딩의 GPU 부하, CPU와 GPU간 데이터 전송 부하율, 현재 접속자 수, 현재 CPU로 구동되는 CPU 인코더 수, 현재 GPU로 구동되는 GPU 인코더 수, 장치에서 허용되는 Max CPU 부하, 장치에서 허용되는 Max GPU 부하, 장치에서 허용되는 Max CPU/GPU간 전송 부하 중 적어도 하나를 포함하는 것을 특징으로 하는 어플리케이션 제공 장치.3. The method of claim 2,
The device load information includes information such as CPU load, GPU load, CPU load by application driving, CPU load of real time video encoding, GPU load of real time video encoding, data transmission load ratio between CPU and GPU, The number of encoders, the number of GPU encoders driven by the current GPU, the Max CPU load allowed by the device, the Max GPU load allowed by the device, and the Max CPU / GPU transfer load allowed by the device. .
상기 부하 수집부는 CPU 및 GPU의 부하, 어플리케이션 구동에 의한 CPU 부하, 실시간 비디오 인코딩의 CPU 부하, 실시간 비디오 인코딩의 GPU 부하, CPU와 GPU간 데이터 전송 부하를 각각 현재 접속자 수로 나누어 평균 부하값을 예측하는 것을 특징으로 하는 어플리케이션 제공 장치.3. The method of claim 2,
The load collecting unit predicts an average load value by dividing the load of the CPU and the GPU, the CPU load by the application driving, the CPU load of the real time video encoding, the GPU load of the real time video encoding, and the data transmission load between the CPU and the GPU, Wherein the application providing apparatus comprises:
상기 부하 할당부는 다음의 수학식을 만족하는 경우, 상기 사용자 단말의 요청 수용이 가능하다고 판단하는 것을 특징으로 하는 어플리케이션 제공 장치.
[수학식]
여기서, 상기 L은 현재 CPU로 구동되는 인코더 수, Tc는 최대 CPU 부하, a는 하나의 어플리케이션 구동시의 CPU 부하, N은 현재의 접속자 수, c는 하나의 어플리케이션 구동에 따른 실시간 비디오 인코딩의 CPU 부하임.3. The method of claim 2,
Wherein the load allocator determines that the request acceptance of the user terminal is possible when the following equation is satisfied.
[Mathematical Expression]
Here, L is the number of encoders currently driven by the CPU, Tc is the maximum CPU load, a is the CPU load at the time of running one application, N is the number of current users, c is the number of current users Load.
상기 부하 할당부는 와 을 동시에 만족하는 경우, GPU 인코더부에서 해당 어플리케이션 구동 화면의 인코딩을 수행하도록 결정하고,
과 을 동시에 만족하지 않으면서 를 만족하는 경우, CPU 인코더부에서 해당 어플리케이션 구동 화면의 인코딩을 수행하도록 결정하되,
상기 g는 하나의 어플리케이션 구동에 따른 실시간 비디오 인코딩의 GPU 부하, t는 CPU와 GPU간 데이터 전송 부하의 예측값, N은 현재의 접속자 수, L은 현재 CPU로 구동되는 CPU 인코더 수, M은 현재 GPU로 구동되는 GPU 인코더 수, Tc는 장치에서 허용되는 Max CPU 부하, Tg는 장치에서 허용되는 Max GPU 부하, Tt는 장치에서 허용되는 Max CPU/GPU간 전송 부하인 것을 특징으로 하는 어플리케이션 제공 장치.3. The method of claim 2,
The load allocator Wow The GPU encoder unit determines to perform encoding of the application running screen,
and At the same time The CPU encoder unit determines to perform encoding of the application driving screen,
Where g is the GPU load of real-time video encoding according to one application run, t is the predicted value of the data transmission load between the CPU and the GPU, N is the number of current connections, L is the number of CPU encoders driven by the current CPU, Tc is the maximum CPU load allowed by the device, Tg is the Max GPU load allowed by the device, and Tt is the maximum CPU / GPU transfer load allowed by the device.
상기 GPU 인코더부는 복수 개의 GPU 인코더로 구성되고, 각 GPU 인코더는 각기 다른 사용자 단말의 요청에 따른 어플리케이션 구동 화면을 각각 인코딩하는 것을 특징으로 하는 어플리케이션 제공 장치.3. The method of claim 2,
Wherein the GPU encoder unit comprises a plurality of GPU encoders, and each of the GPU encoders encodes an application driving screen according to a request of each of the different user terminals.
상기 CPU 인코더부는 복수 개의 CPU 인코더로 구성되고, 각 CPU 인코더는 각기 다른 사용자 단말의 요청에 따른 어플리케이션 구동 화면을 각각 인코딩하는 것을 특징으로 하는 어플리케이션 제공 장치.3. The method of claim 2,
Wherein the CPU encoder unit comprises a plurality of CPU encoders, and each of the CPU encoders encodes an application driving screen according to a request of each of the different user terminals.
(a) 사용자 단말로부터 어플리케이션 구동 요청 신호가 수신된 경우, CPU 및 GPU와 관련된 장치 부하 정보를 수집하는 단계;
(b) 상기 수집된 장치 부하 정보를 이용하여 상기 사용자 단말의 요청 수용 가능 여부를 판단하는 단계;
(c) 상기 사용자 단말의 요청 수용이 가능한 경우, CPU 부하, GPU 부하, CPU와 GPU 간 데이터 전송 부하를 이용하여 CPU 인코더와 GPU 인코더 중 어플리케이션 구동 화면을 인코딩할 인코더를 결정하는 단계; 및
(d) 해당 어플리케이션을 구동하고, 해당 어플리케이션 구동 화면을 상기 결정된 CPU 인코더 또는 GPU 인코더를 통해 인코딩하여 상기 사용자 단말로 전송하는 단계;
를 포함하는 화면 가상화 기반 어플리케이션 구동 방법.A method for an application providing apparatus to run a screen virtualization-based application,
(a) collecting device load information related to a CPU and a GPU when an application driving request signal is received from a user terminal;
(b) determining whether the request of the user terminal can be accepted using the collected device load information;
(c) determining an encoder to encode an application running screen of the CPU encoder and the GPU encoder using the CPU load, the GPU load, and the data transmission load between the CPU and the GPU when the user terminal can accept the request; And
(d) driving the corresponding application, encoding the application running screen through the determined CPU encoder or GPU encoder, and transmitting the encoded application running screen to the user terminal;
Based virtualization-based application.
상기 (b) 단계는 다음의 수학식을 만족하는 경우, 상기 사용자 단말의 요청 수용이 가능하다고 판단하는 것을 특징으로 하는 화면 가상화 기반 어플리케이션 구동 방법.
[수학식]
여기서, 상기 L은 현재 CPU로 인코더 수, Tc는 최대 CPU 부하값, a는 하나의 어플리케이션 구동시의 CPU 부하, N은 현재의 접속자 수, c는 하나의 어플리케이션 구동시에 따른 실시간 비디오 인코딩의 CPU 부하임.12. The method of claim 11,
Wherein the step (b) determines that the request acceptance of the user terminal is possible when the following equation is satisfied.
[Mathematical Expression]
Here, L is the number of the current CPU, Tc is the maximum CPU load value, a is the CPU load at the time of driving one application, N is the number of current users, c is the CPU load being.
상기 (c) 단계는,
와 을 동시에 만족하는 경우, GPU 인코더에서 해당 어플리케이션 구동 화면의 인코딩을 수행하도록 결정하고,
과 을 동시에 만족하지 않으면서 를 만족하는 경우, CPU 인코더에서 해당 어플리케이션 구동 화면의 인코딩을 수행하도록 결정하되,
상기 g는 하나의 어플리케이션 구동에 따른 실시간 비디오 인코딩의 GPU 부하, t는 CPU와 GPU간 데이터 전송 부하의 예측값, N은 현재의 접속자 수, L은 현재 CPU로 구동되는 CPU 인코더 수, M은 현재 GPU로 구동되는 GPU 인코더 수, Tc는 장치에서 허용되는 Max CPU 부하, Tg는 장치에서 허용되는 Max GPU 부하, Tt는 장치에서 허용되는 Max CPU/GPU간 전송 부하인 것을 특징으로 하는 화면 가상화 기반 어플리케이션 구동 방법.12. The method of claim 11,
The step (c)
Wow , It is determined that the GPU encoder performs encoding of the application running screen,
and At the same time , The CPU encoder determines to perform encoding of the application running screen,
Where g is the GPU load of real-time video encoding according to one application run, t is the predicted value of the data transmission load between the CPU and the GPU, N is the number of current connections, L is the number of CPU encoders driven by the current CPU, , Tc is the maximum CPU load allowed by the device, Tg is the Max GPU load allowed by the device, and Tt is the maximum CPU / GPU transfer load allowed by the device. Way.
상기 과 을 동시에 만족하지 않으면서 를 만족하지 않은 경우, 상기 사용자 단말에 요청 수용 불가 메시지를 전송하는 것을 특징으로 하는 화면 가상화 기반 어플리케이션 구동 방법.14. The method of claim 13,
remind and At the same time The method comprising: transmitting a request acceptance message to the user terminal;
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110073058A KR101668282B1 (en) | 2011-07-22 | 2011-07-22 | System and Method for operating application based Presentation Virtualization |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110073058A KR101668282B1 (en) | 2011-07-22 | 2011-07-22 | System and Method for operating application based Presentation Virtualization |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130011714A KR20130011714A (en) | 2013-01-30 |
KR101668282B1 true KR101668282B1 (en) | 2016-10-24 |
Family
ID=47840631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110073058A KR101668282B1 (en) | 2011-07-22 | 2011-07-22 | System and Method for operating application based Presentation Virtualization |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101668282B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109379626A (en) * | 2018-11-27 | 2019-02-22 | Oppo广东移动通信有限公司 | Method for processing video frequency, device, electronic equipment and storage medium |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102265419B1 (en) * | 2014-10-02 | 2021-06-15 | 에스케이플래닛 주식회사 | System for cloud streaming service, method of cloud streaming service using selective encoding processing unit and apparatus for the same |
CN106717007B (en) | 2014-07-30 | 2020-04-03 | Sk 普兰尼特有限公司 | Cloud end streaming media server |
CN106664439B (en) | 2014-07-30 | 2020-04-03 | Sk普兰尼特有限公司 | Cloud streaming server |
WO2016017952A1 (en) * | 2014-07-30 | 2016-02-04 | 엔트릭스 주식회사 | System for cloud streaming service, method for same using still-image compression technique and apparatus therefor |
WO2016017953A1 (en) * | 2014-07-30 | 2016-02-04 | 엔트릭스 주식회사 | System for cloud streaming service, method for still image-based cloud streaming service and apparatus therefor |
KR102232900B1 (en) * | 2014-10-02 | 2021-03-26 | 에스케이플래닛 주식회사 | System for cloud streaming service, method of cloud streaming service using optumal gpu and apparatus for the same |
KR102354268B1 (en) * | 2015-01-05 | 2022-01-21 | 에스케이플래닛 주식회사 | Method for dynamic processing application for cloud streaming service and apparatus for the same |
CN111221640B (en) * | 2020-01-09 | 2023-10-17 | 黔南民族师范学院 | GPU-CPU cooperative energy saving method |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007200349A (en) * | 2007-03-26 | 2007-08-09 | Club It Corp | Server-client system, load distribution device, load distribution method, and load distribution program |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100623710B1 (en) | 2006-05-19 | 2006-09-13 | 윈포시스(주) | Method of processing a plurality of moving picture contents by sharing a hardware resource |
KR101467558B1 (en) * | 2007-07-26 | 2014-12-01 | 엘지전자 주식회사 | A apparatus and a method of graphic data processing |
KR101316677B1 (en) * | 2009-12-17 | 2013-10-10 | 한국전자통신연구원 | Application service system based on user interface virtualization and method thereof |
-
2011
- 2011-07-22 KR KR1020110073058A patent/KR101668282B1/en active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007200349A (en) * | 2007-03-26 | 2007-08-09 | Club It Corp | Server-client system, load distribution device, load distribution method, and load distribution program |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109379626A (en) * | 2018-11-27 | 2019-02-22 | Oppo广东移动通信有限公司 | Method for processing video frequency, device, electronic equipment and storage medium |
Also Published As
Publication number | Publication date |
---|---|
KR20130011714A (en) | 2013-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101668282B1 (en) | System and Method for operating application based Presentation Virtualization | |
KR101471366B1 (en) | Device adaptive presentation virtualization method and its system | |
US9300754B2 (en) | Information processing system, information processing apparatus, information processing method, and program | |
KR102133531B1 (en) | Method for reproducing a content, terminal thereof, and system thereof | |
TW201507440A (en) | Screen map and standards-based progressive codec for screen content coding | |
JP6467503B2 (en) | Cloud streaming service system, data compression method for preventing memory bottleneck, and apparatus therefor | |
EP2793475A1 (en) | Distribution control system, distribution control method, and computer-readable storage medium | |
CN105556979A (en) | Streaming Media | |
CN110856036A (en) | Remote desktop implementation method, interaction method, device, equipment and storage medium | |
WO2014142342A1 (en) | Distribution control system, distribution control method, and computer-readable storage medium | |
WO2018040428A1 (en) | Screen interface display method and system | |
EP2974327A1 (en) | Distribution control system and distribution system | |
KR101630638B1 (en) | System and Method for operating application based Presentation Virtualization | |
US8700736B2 (en) | System for providing related content, method for providing related content, service server, end terminal, and storage medium | |
KR101671310B1 (en) | System and Method for operating application based Presentation Virtualization | |
KR102247886B1 (en) | System for cloud streaming service, method of cloud streaming service based on type of image and apparatus for the same | |
JP2006339855A (en) | Network control apparatus, coding system conversion apparatus, and content data reproduction system | |
KR101871403B1 (en) | Media control device application executing method and system in media displaying device using presentation virtualization | |
JP6781445B1 (en) | Information processing method | |
US10075325B2 (en) | User terminal device and contents streaming method using the same | |
US8762545B2 (en) | Network data sharing system for sharing multimedia data on network and handheld electronic device thereof | |
KR20160043398A (en) | System for cloud streaming service, method of cloud streaming service using source information and apparatus for the same | |
CN117119234A (en) | Display equipment and media asset playing method | |
KR20120010031A (en) | Application remote control system, application remote control apparatus and method | |
KR20160039887A (en) | System for cloud streaming service, method of cloud streaming service using selective encoding processing unit and apparatus for the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
A201 | Request for examination | ||
N231 | Notification of change of applicant | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20190916 Year of fee payment: 4 |