KR20130011714A - System and method for operating application based presentation virtualization - Google Patents

System and method for operating application based presentation virtualization Download PDF

Info

Publication number
KR20130011714A
KR20130011714A KR1020110073058A KR20110073058A KR20130011714A KR 20130011714 A KR20130011714 A KR 20130011714A KR 1020110073058 A KR1020110073058 A KR 1020110073058A KR 20110073058 A KR20110073058 A KR 20110073058A KR 20130011714 A KR20130011714 A KR 20130011714A
Authority
KR
South Korea
Prior art keywords
application
cpu
load
gpu
user terminal
Prior art date
Application number
KR1020110073058A
Other languages
Korean (ko)
Other versions
KR101668282B1 (en
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 KR1020110073058A priority Critical patent/KR101668282B1/en
Publication of KR20130011714A publication Critical patent/KR20130011714A/en
Application granted granted Critical
Publication of KR101668282B1 publication Critical patent/KR101668282B1/en

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/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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
    • 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/238Interfacing 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/2385Channel allocation; Bandwidth allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

PURPOSE: An application operating system based on screen virtualization and a method thereof are provided to maximize the number of video encoding processing based on the usage of a CPU(Central Processing Unit) and a GPU(Graphic Processing Unit). CONSTITUTION: A user terminal(100) requests the operation of an application to an application providing unit(200). The user terminal decodes an application operating screen of the application providing unit. The application providing unit determines the possibility of accepting the request of the user terminal based on collected device load information. If the request is accepted, the application providing device determines an encoder for encoding the application operating screen among a CPU encoder and a GPU encoder. The application providing device encodes the application operating screen with the determined encoder. [Reference numerals] (100) User terminal; (200) Application providing unit; (AA) Communication network

Description

화면 가상화 기반 어플리케이션 구동 시스템 및 방법{System and Method for operating application based Presentation Virtualization}System and Method for Operating Application Based Presentation Virtualization

본 발명은 화면 가상화 기반 어플리케이션 구동 시스템 및 방법에 관한 것으로, 더욱 상세하게는 어플리케이션 제공 장치가 사용자 단말로부터 어플리케이션 구동 요청 수신 시, 장치 부하 정보를 수집하고, 상기 수집된 장치 부하 정보를 근거로 상기 사용자 단말의 요청 수용 가능 여부를 판단하고, 요청 수용이 가능한 경우 CPU 인코더와 GPU 인코더 중 어플리케이션 구동 화면을 인코딩할 인코더를 결정하여 해당 어플리케이션 구동에 따른 어플리케이션 구동 화면을 상기 결정된 인코더로 인코딩하여 상기 사용자 단말로 전송하는 화면 가상화 기반 어플리케이션 구동 시스템 및 방법에 관한 것이다.
The present invention relates to a screen virtualization based application driving system and method, and more particularly, an application providing apparatus collects device load information when an application driving request is received from a user terminal, and based on the collected device load information. It is determined whether the request can be accepted by the terminal, and if the request can be accepted, the encoder to determine the application driving screen among the CPU encoder and the GPU encoder is determined, and the application driving screen according to the application driving is encoded into the determined encoder to the user terminal. It relates to a screen virtualization based application driving system and method for transmitting.

최근에 클라우드(Cloud) 기반 서비스가 활성화 됨에 따라, 서비스나 어플리케이션(application)이 클라우드 장치에서 구동되고 그 결과를 단말을 통해 서비스하는 기술이 요구되고 있다. 특히 서비스 화면과 오디오만을 단말기에서 구동하는 화면 가상화(Presentation Virtualization) 기술이 핵심기술로 요구된다. Recently, as a cloud-based service is activated, a technology for running a service or an application on a cloud device and serving the result through a terminal is required. In particular, a screen virtualization (Presentation Virtualization) technology for driving only a service screen and audio in a terminal is required as a core technology.

화면 가상화 기술은 어플리케이션 제공 장치에서 어플리케이션을 구동하고, 어플리케이션 구동 화면을 단말로 전송하여 단말에서는 화면에 대한 rendering 처리와 사용자 입력만을 처리하도록 함으로써 단말의 성능에 관계없이 복잡한 어플리케이션을 구동 가능 하도록 하는 기술이다.Screen virtualization technology is a technology that drives an application in an application providing device and transmits an application driving screen to a terminal so that the terminal processes only rendering processing and user input for the screen, thereby enabling the complex application to be driven regardless of the performance of the terminal. .

또한, 어플리케이션을 어플리케이션 제공 장치에서 구동시키고 구동화면을 video encoding을 통해 압축하여 단말에 전송하고, 단말은 전송된 비디오를 재생하여 마치 자신의 단말에서 어플리케이션이 구동되는 것과 같은 효과를 내는 화면 가상화 기반 N screen 서비스가 각광받고 있다. 이러한 시스템에서 video encoding은 실시간으로 화면을 압축해야 하고, 어플리케이션 제공 장치는 인코더를 접속한 단말 개수만큼 구동할 필요가 있다. 이때 video encoding은 매우 높은 연산량을 필요로 하고 이 때문에 어플리케이션 제공 장치에서 처리할 수 있는 단말의 개수에 제한이 생겨 더 많은 어플리케이션 제공 장치가 필요하게 되어 서비스의 경제성이 낮아지는 문제가 발생한다.
In addition, a screen virtualization-based N that drives an application in an application providing apparatus, compresses a driving screen through video encoding, and transmits the video to a terminal, and the terminal plays the transmitted video as if the application is running in its own terminal. The screen service is in the spotlight. In such a system, video encoding should compress the screen in real time, and the application providing apparatus needs to drive as many terminals as the encoders. At this time, the video encoding requires a very high amount of computation, which causes a limitation in the number of terminals that can be processed in the application providing apparatus, thus requiring more application providing apparatuses, thereby lowering the economics of services.

한국등록특허 제623710호(2006.09.06), 발명의 명칭: 하드웨어 리소스를 공유하여 복수의 동영상 콘텐츠를 처리하는 방법Korea Registered Patent No. 623710 (06.06.2006), Title of the Invention: Method of Processing Multiple Video Contents by Sharing Hardware Resource

본 발명은 상기한 문제점을 해결하기 위하여 안출한 것으로, 본 발명의 목적은 CPU(Central Processing Unit)와 GPU(Graphic Processing Unit)의 사용률을 기반으로 실시간으로 video encoding 처리 개수를 최대화할 수 있는 화면 가상화 기반 어플리케이션 구동 시스템 및 방법을 제공하는데 있다.
The present invention has been made to solve the above problems, an object of the present invention is to screen virtualization to maximize the number of video encoding processing in real time based on the utilization rate of the CPU (Central Processing Unit) and GPU (Graphic Processing Unit) The present invention provides a system and method for driving an application.

상기 목적들을 달성하기 위하여 본 발명의 일 측면에 따르면, 어플리케이션 제공 장치에 접속하여 어플리케이션의 구동을 요청하고, 상기 어플리케이션 제공 장치로부터의 어플리케이션 구동 화면을 디코딩하여 출력하는 사용자 단말, 상기 사용자 단말로부터 어플리케이션 구동 요청 수신 시, 장치 부하 정보를 수집하고, 상기 수집된 장치 부하 정보를 근거로 상기 사용자 단말의 요청 수용 가능 여부를 판단하고, 요청 수용이 가능한 경우 CPU(Central Processing Unit) 인코더와 GPU(Graphic Processing Unit) 인코더 중 어플리케이션 구동 화면을 인코딩할 인코더를 결정하여 해당 어플리케이션 구동에 따른 어플리케이션 구동 화면을 상기 결정된 인코더로 인코딩하여 상기 사용자 단말로 전송하는 어플리케이션 제공 장치를 포함하는 화면 가상화 기반 어플리케이션 구동 시스템이 제공된다. According to an aspect of the present invention in order to achieve the above object, a user terminal for accessing the application providing apparatus requesting the driving of the application, and decoding and outputting the application driving screen from the application providing apparatus, the application driving from the user terminal Upon receipt of the request, device load information is collected, and based on the collected device load information, it is determined whether the user terminal can accept the request, and when the request is available, a CPU (Central Processing Unit) encoder and a GPU (Graphic Processing Unit) A screen virtualization-based application comprising an application providing apparatus for determining an encoder to encode an application driving screen among encoders and encoding an application driving screen according to the corresponding application driving to the determined encoder and transmitting the same to the user terminal. The drive system is provided.

본 발명의 다른 측면에 따르면, 사용자 단말과의 통신을 위한 통신부, 어플리케이션이 저장된 어플리케이션 데이터베이스, 상기 통신부를 통해 사용자 단말이 접속된 경우, 복수의 어플리케이션에 대한 구동버튼들이 상기 사용자 단말에 표시되도록 제어하는 접속 제어부, 상기 통신부를 통해 어플리케이션 구동 요청 신호가 수신된 경우, CPU 및 GPU와 관련된 장치 부하 정보를 수집하고, 상기 수집된 장치 부하 정보를 기반으로 평균 부하값을 예측하는 부하 수집부, 상기 예측된 평균 부하값과 상기 장치 부하 정보를 이용하여 상기 사용자 단말의 요청 수용 가능 여부 및 CPU 인코더와 GPU 인코더 중에서 해당 어플리케이션 구동 화면을 인코딩할 인코더를 결정하는 부하 할당부, 상기 부하 할당부에서 상기 사용자 단말의 요청 수용이 가능하다고 결정된 경우, 상기 어플리케이션 데이터베이스로부터 해당 어플리케이션을 추출하여 구동하는 어플리케이션 구동부, 상기 부하 할당부의 결정에 따라, 상기 어플리케이션 구동부에서 구동된 어플리케이션 구동 화면을 인코딩하여 상기 통신부를 통해 상기 사용자 단말로 전송하는 GPU 인코더부, 상기 부하 할당부의 결정에 따라, 상기 어플리케이션 구동부에서 구동된 어플리케이션 구동 화면을 인코딩하여 상기 통신부를 통해 상기 사용자 단말로 전송하는 CPU 인코더부를 포함하는 어플리케이션 제공 장치가 제공된다. According to another aspect of the present invention, a communication unit for communication with a user terminal, an application database in which an application is stored, and when the user terminal is connected through the communication unit, controlling to display driving buttons for a plurality of applications on the user terminal. When the application driving request signal is received through the access control unit and the communication unit, the load collection unit for collecting the device load information associated with the CPU and GPU, and predicting the average load value based on the collected device load information, the predicted A load allocator configured to determine whether the user terminal can accept the request using an average load value and the device load information, and an encoder to encode the application driving screen from among a CPU encoder and a GPU encoder; Determined that the request is acceptable An application driver for extracting and driving the corresponding application from the application database; 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 allocating unit, an application providing apparatus including a CPU encoder unit encoding an application driving screen driven by the application driving unit and transmitting the encoded image to the user terminal through the communication unit is provided.

상기 장치 부하 정보는 CPU 부하, GPU 부하, 어플리케이션 구동에 의한 CPU 부하, 실시간 비디오 인코딩의 CPU 부하, 실시간 비디오 인코딩의 GPU 부하, CPU와 GPU간 데이터 전송 부하율, 현재 접속자 수, 현재 CPU로 구동되는 CPU 인코더 수, 현재 GPU로 구동되는 GPU 인코더 수, 장치에서 허용되는 Max CPU 부하, 장치에서 허용되는 Max GPU 부하, 장치에서 허용되는 Max CPU/GPU간 전송 부하 중 적어도 하나를 포함한다. The device load information includes a CPU load, a GPU load, a CPU load driven by an application, a CPU load of real time video encoding, a GPU load of real time video encoding, a data transfer load ratio between a CPU and a GPU, a current number of users, and a CPU driven by a current CPU. And at least one of the number of encoders, the number of GPU encoders currently driven by the 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 collector estimates the average load value by dividing the CPU and GPU load, the CPU load by application driving, the CPU load of real-time video encoding, the GPU load of real-time video encoding, and the data transfer load between the CPU and GPU, respectively, by the number of current users. .

상기 부하 할당부는

Figure pat00001
를 만족하는 경우, 상기 사용자 단말의 요청 수용이 가능하다고 판단하되, The load allocator
Figure pat00001
If satisfies, it is determined that the user terminal can accept the request,

상기 L은 현재 CPU로 인코더 수, Tc는 최대 CPU 부하, a는 하나의 어플리케이션 구동시의 CPU 부하, N은 현재의 접속자 수, c는 하나의 어플리케이션 구동에 따른 실시간 비디오 인코딩의 CPU 부하이다.L is the number of encoders as the current CPU, Tc is the maximum CPU load, a is the CPU load when driving one application, N is the current number of connections, and c is the CPU load of real-time video encoding according to one application driving.

또한, 상기 부하 할당부는

Figure pat00002
Figure pat00003
을 동시에 만족하는 경우, GPU 인코더부에서 해당 어플리케이션 구동 화면의 인코딩을 수행하도록 결정하고, In addition, the load allocation unit
Figure pat00002
Wow
Figure pat00003
If both of the above are satisfied at the same time, the GPU encoder determines to encode the application driving screen,

Figure pat00004
Figure pat00005
을 동시에 만족하지 않으면서
Figure pat00006
를 만족하는 경우, CPU 인코더부에서 해당 어플리케이션 구동 화면의 인코딩을 수행하도록 결정하되,
Figure pat00004
and
Figure pat00005
Without satisfying
Figure pat00006
If satisfies, the CPU encoder determines to encode 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 running, t is the predicted value of the data transfer load between the CPU and the GPU, N is the current number of connections, L is the number of CPU encoders currently driven by the CPU, and M is the current GPU. The number of GPU encoders driven by Tc is the maximum CPU load allowed by the device, Tg is the maximum GPU load allowed by the device, and Tt is the maximum CPU / GPU transfer load allowed by the device.

상기 GPU 인코더부는 복수 개의 GPU 인코더로 구성되고, 각 GPU 인코더는 각기 다른 사용자 단말의 요청에 따른 어플리케이션 구동 화면을 각각 인코딩한다. The GPU encoder unit includes a plurality of GPU encoders, and each GPU encoder encodes an application driving screen according to requests of different user terminals.

상기 CPU 인코더부는 복수 개의 CPU 인코더로 구성되고, 각 CPU 인코더는 각기 다른 사용자 단말의 요청에 따른 어플리케이션 구동 화면을 각각 인코딩한다. The CPU encoder unit includes a plurality of CPU encoders, and each CPU encoder encodes an application driving screen according to requests of different user terminals.

본 발명의 또 다른 측면에 따르면, (a) 사용자 단말이 어플리케이션 제공 장치에 접속하여 어플리케이션 구동 요청 신호를 전송하는 단계, (b) 상기 어플리케이션 제공 장치가 CPU 및 GPU와 관련된 장치 부하 정보를 수집하는 단계, (c) 상기 어플리케이션 제공 장치가 상기 수집된 장치 부하 정보를 이용하여 상기 사용자 단말의 요청 수용 가능 여부를 판단하는 단계, (d) 상기 사용자 단말의 요청 수용이 가능한 경우, 상기 어플리케이션 제공 장치가 상기 장치 부하 정보를 이용하여 CPU 인코더와 GPU 인코더 중 어플리케이션 구동 화면을 인코딩할 인코더를 결정하는 단계, (e) 상기 어플리케이션 제공 장치가 해당 어플리케이션을 구동하고, 어플리케이션 구동 화면을 상기 결정된 CPU 인코더 또는 GPU 인코더를 통해 인코딩하여 상기 사용자 단말로 전송하는 단계, (f) 상기 사용자 단말이 상기 어플리케이션 제공 장치로부터의 어플리케이션 구동 화면을 디코딩하여 출력하는 단계를 포함하는 화면 가상화 기반 어플리케이션 구동 방법이 제공된다. According to another aspect of the invention, (a) the user terminal is connected to the application providing apparatus for transmitting an application driving request signal, (b) the application providing apparatus to collect the device load information associated with the CPU and GPU (c) determining, by the application providing apparatus, whether the request of the user terminal can be accepted using the collected device load information; and (d) when the request of the user terminal is acceptable, the application providing apparatus determines the request. Determining an encoder to encode an application driving screen among the CPU encoder and the GPU encoder using device load information, (e) the application providing apparatus drives the corresponding application, and uses the determined CPU encoder or the GPU encoder to execute the application driving screen. Encoding through the transmission 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)단계는, 상기 사용자 단말이 상기 어플리케이션 제공 장치에 접속하면, 상기 어플리케이션 제공 장치가 어플리케이션 목록이 표시된 어플리케이션 구동 버튼들을 상기 사용자 단말에 제공하는 단계, 상기 사용자 단말이 상기 어플리케이션 구동 버튼들을 화면상에 출력하고, 사용자에 의해 선택된 어플리케이션 목록을 포함하는 어플리케이션 구동 요청 신호를 상기 어플리케이션 제공 장치로 전송하는 단계를 포함한다. In the step (a), when the user terminal accesses the application providing apparatus, the application providing apparatus provides application driving buttons displaying an application list to the user terminal, and the user terminal displays the application driving buttons. And transmitting an application driving request signal to the application providing apparatus, the application driving request signal including an application list selected by a user.

본 발명의 또 다른 측면에 따르면, 어플리케이션 제공 장치가 화면 가상화 기반 어플리케이션을 구동하는 방법에 있어서, (a) 사용자 단말로부터 어플리케이션 구동 요청 신호가 수신된 경우, CPU 및 GPU와 관련된 장치 부하 정보를 수집하는 단계, (b) 상기 수집된 장치 부하 정보를 이용하여 상기 사용자 단말의 요청 수용 가능 여부를 판단하는 단계, (c) 상기 사용자 단말의 요청 수용이 가능한 경우, 상기 장치 부하 정보를 이용하여 CPU 인코더와 GPU 인코더 중 어플리케이션 구동 화면을 인코딩할 인코더를 결정하는 단계, (d) 해당 어플리케이션을 구동하고, 해당 어플리케이션 구동 화면을 상기 결정된 CPU 인코더 또는 GPU 인코더를 통해 인코딩하여 상기 사용자 단말로 전송하는 단계를 포함하는 화면 가상화 기반 어플리케이션 구동 방법이 제공된다. According to another aspect of the present invention, in the application providing apparatus for driving a screen virtualization-based application, (a) when the application driving request signal is received from the user terminal, collecting the device load information associated with the CPU and GPU Step (b) Determining whether the user terminal can accept the request using the collected device load information, (c) If the user terminal can accept the request, and using the device load information and CPU encoder Determining an encoder to encode an application driving screen among GPU encoders, and (d) driving the corresponding application, and encoding the corresponding application driving screen through the determined CPU encoder or the GPU encoder and transmitting the same to the user terminal. A method of driving an application based on screen virtualization is provided.

상기 (b) 단계는,

Figure pat00007
를 만족하는 경우, 상기 사용자 단말의 요청 수용이 가능하다고 판단하되, The step (b)
Figure pat00007
If satisfies, it is determined that the user terminal can accept the request,

상기 L은 현재 CPU로 인코더 수, Tc는 최대 CPU 부하값, a는 하나의 어플리케이션 구동시의 CPU 부하, N은 현재의 접속자 수, c는 하나의 어플리케이션 구동시에 따른 실시간 비디오 인코딩의 CPU 부하이다. L is the number of encoders as the current CPU, Tc is the maximum CPU load value, a is the CPU load when driving one application, N is the current number of connections, and c is the CPU load of real-time video encoding when driving one application.

상기 (c) 단계는,

Figure pat00008
Figure pat00009
을 동시에 만족하는 경우, GPU 인코더에서 해당 어플리케이션 구동 화면의 인코딩을 수행하도록 결정하고, The step (c)
Figure pat00008
Wow
Figure pat00009
If both are satisfied at the same time, the GPU encoder determines to perform the encoding of the application driving screen,

Figure pat00010
Figure pat00011
을 동시에 만족하지 않으면서
Figure pat00012
를 만족하는 경우, CPU 인코더에서 해당 어플리케이션 구동 화면의 인코딩을 수행하도록 결정하되,
Figure pat00010
and
Figure pat00011
Without satisfying
Figure pat00012
If is satisfied, the CPU encoder determines to perform encoding of the corresponding 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 running, t is the predicted value of the data transfer load between the CPU and the GPU, N is the current number of connections, L is the number of CPU encoders currently driven by the CPU, and M is the current GPU. The number of GPU encoders driven by Tc is the maximum CPU load allowed by the device, Tg is the maximum GPU load allowed by the device, and Tt is the maximum CPU / GPU transfer load allowed by the device.

상기

Figure pat00013
Figure pat00014
을 동시에 만족하지 않으면서
Figure pat00015
를 만족하지 않은 경우, 상기 사용자 단말에 요청 수용 불가 메시지를 전송한다.
remind
Figure pat00013
and
Figure pat00014
Without satisfying
Figure pat00015
If not satisfied, the request not acceptable message is transmitted to the user terminal.

상술한 바와 같이 본 발명에 따르면, 어플리케이션 제공 장치가 CPU(Central Processing Unit)와 GPU(Graphic Processing Unit)의 사용률을 기반으로 실시간으로 video encoding 처리 개수를 최대화할 수 있다.
As described above, according to the present invention, the application providing apparatus may maximize the number of video encoding processes in real time based on the utilization rates of the central processing unit (CPU) and the graphics processing unit (GPU).

도 1은 본 발명에 따른 화면 가상화 기반 어플리케이션 구동 시스템을 나타낸 도면.
도 2는 본 발명에 따른 어플리케이션 제공 장치의 구성을 개략적으로 나타낸 블럭도.
도 3은 본 발명에 따른 사용자 단말의 구성을 개략적으로 나타낸 블럭도.
도 4는 본 발명에 따른 화면 가상화 기반 어플리케이션 구동 방법을 나타낸 도면.
도 5는 본 발명에 따른 어플리케이션 제공 장치가 화면 가상화 기반 어플리케이션 구동하는 방법을 나타낸 흐름도.
1 is a view showing a screen virtualization based application driving system according to the present invention.
Figure 2 is a block diagram schematically showing the configuration of an application providing apparatus according to the present invention.
3 is a block diagram schematically showing the configuration of a user terminal according to the present invention;
4 is a diagram illustrating a screen virtualization-based application driving method according to the present invention.
5 is a flowchart illustrating a method of driving a screen virtualization based application 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)를 포함한다.Referring to FIG. 1, a screen virtualization based application driving system drives a corresponding application according to an application driving request from a user terminal 100, and provides an application driving screen to the user terminal 100 using screen virtualization technology. The application providing apparatus 200 is included.

상기 화면 가상화(Presentation Virtualization)는 어플리케이션을 어플리케이션 제공 장치(200)에서 구동하고, 그 구동에 따른 어플리케이션 구동 화면과 오디오를 인코딩하여 상기 사용자 단말(100)로 제공하는 서비스이다.The presentation virtualization is a service that runs an application in the application providing apparatus 200, encodes an application driving screen and audio according to the driving, and provides the application to the user terminal 100.

상기 사용자 단말(100)은 상기 어플리케이션 제공 장치(200)에 접속하여 사용자에 의해 선택된 어플리케이션의 구동을 요청하고, 상기 어플리케이션 제공 장치(200)로부터의 어플리케이션 구동 화면 및 오디오를 디코딩하여 출력한다.The user terminal 100 accesses the application providing apparatus 200 to request driving of an application selected by a user, and decodes and outputs an application driving screen and audio from the application providing apparatus 200.

즉, 상기 사용자 단말(100)은 어플리케이션 제공 장치(200)로부터 다수의 어플리케이션에 대한 각각의 구동버튼을 제공받아 화면 상에 디스플레이하고, 다수의 어플리케이션 중 하나가 선택되면, 상기 선택된 어플리케이션의 구동에 따른 어플리케이션 구동 화면을 어플리케이션 제공 장치(200)로부터 수신하여 출력한다. 여기서, 사용자 단말(100)은 어플리케이션의 구동 요청을 입력할 수 있는 입력 기능과, 디지털 미디어를 재생할 수 있는 미디어 재생기능을 구비한 TV, LCD 모니터, 프로젝션 TV, 빔 프로젝트 장치, 모바일 장치 등을 포함한다. That is, the user terminal 100 receives the respective driving buttons for the plurality of applications from the application providing apparatus 200 and displays them on the screen. When one of the plurality of applications is selected, the user terminal 100 is driven according to the driving of the selected application. The application driving screen is received from the application providing apparatus 200 and output. Here, the user terminal 100 includes a TV, an LCD monitor, a projection TV, a beam project device, a mobile device, and the like, having an input function for inputting a driving request of an application and a media playback function for playing digital media. do.

상기와 같은 사용자 단말(100)에 대한 상세한 설명은 도 3을 참조하기로 한다. A detailed description of the user terminal 100 as described above will be made with reference to FIG. 3.

상기 어플리케이션 제공 장치(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에서 어플리케이션 구동 화면의 인코딩 발생시 발생한다.When the application providing apparatus 200 receives an application driving request signal from the user terminal 100, the application providing apparatus 200 collects device load information related to a central processing unit (CPU) and a graphic processing unit (GPU), and the collected device. The load information is used to determine whether to accept the request of the user terminal 100 and whether to allocate an encoding of an application driving screen to a CPU encoder or a GPU encoder. Here, the device load information includes CPU load, GPU load, CPU load by driving an application, CPU load in real time video encoding, GPU load in real time video encoding, data transfer load between CPU and GPU, current number of users, and current CPU. The number of CPU encoders that are currently running, the number of GPU encoders currently running with the GPU, the maximum CPU load allowed, the maximum GPU load allowed, and the maximum CPU / GPU transfer load allowed. Here, the data transfer load between the CPU and the GPU is generated when an application driving screen is encoded in the GPU.

또한, 상기 어플리케이션 제공 장치(200)는 상기 사용자 단말(100)의 요청 수용이 가능한 경우, 해당 어플리케이션을 구동하고 그 어플리케이션 구동 화면을 상기 결정된 CPU 인코더 또는 GPU 인코더를 통해 인코딩하여 상기 사용자 단말(100)로 전송한다. In addition, when the application providing apparatus 200 is capable of accepting the request of the user terminal 100, the user terminal 100 drives the corresponding application and encodes the application driving screen through the determined CPU encoder or GPU encoder. To send.

또한, 어플리케이션 제공 장치(200)는 다수의 어플리케이션에 대한 각각의 구동버튼을 상기 사용자 단말(100)에 전송하고, 사용자 단말(100)로부터 구동 요청된 어플리케이션을 구동하여 발생되는 오디오 및 비디오를 인코딩하여 상기 사용자 단말(100)로 전송한다.In addition, the application providing apparatus 200 transmits each driving button for a plurality of applications to the user terminal 100, and encodes audio and video generated by driving an application requested to be driven from the user terminal 100. Transmit to the user terminal 100.

또한, 상기 어플리케이션 제공 장치(200)는 예컨대, PC(Personal Computer)와 같이 오디오 및 비디오로 구성된 멀티미디어 데이터를 재생하거나 편집, 수정, 제어할 수 있는 어플리케이션을 비롯해 다수 개의 어플리케이션을 구비하고, 어플리케이션을 구동하는 장치이다. 여기서, 어플리케이션 제공 장치(200)는 어플리케이션을 실행할 수 있는 데스크탑(Desktop) PC, 노트북(Notebook) PC, 고성능 모바일 단말기 등을 포함한다.In addition, the application providing apparatus 200 includes a plurality of applications, including an application capable of playing, editing, modifying, and controlling multimedia data composed of audio and video, such as a personal computer (PC), for example, and driving the application. Device. Here, the application providing apparatus 200 may include a desktop PC, a notebook PC, a high performance mobile terminal, etc. capable of executing an application.

또한, 상기 어플리케이션 제공 장치(200)는 클라우드 컴퓨팅 기반으로 동작될 수 있다. In addition, the application providing apparatus 200 may be operated based on cloud computing.

상기와 같은 어플리케이션 제공 장치(200)에 대한 상세한 설명은 도 2를 참조하기로 한다.A detailed description of the application providing apparatus 200 as described above will be provided with reference to FIG. 2.

도 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)를 포함한다.Referring to FIG. 2, the application providing apparatus 200 may include a communication unit 202 for communicating with a user terminal, an application database 204 in which an application is stored, a connection controller 206, a load collector 208, and a load allocator. 210, an application driver 212, a GPU encoder 216, and a CPU encoder 214.

상기 접속 제어부(206)는 상기 통신부(202)를 통해 사용자 단말이 접속된 경우, 상기 사용자 단말에 다수의 어플리케이션에 대한 각각의 구동버튼이 표시되도록 제어한다.When the user terminal is connected through the communication unit 202, the connection controller 206 controls the user terminal to display driving buttons for a plurality of applications.

또한, 상기 접속 제어부(206)는 사용자 단말로부터 어플리케이션 구동 요청 신호가 수신된 경우, 해당 어플리케이션을 구동시키기 위한 어플리케이션 구동 명령을 상기 부하 수집부(208)에 전송한다. 여기서, 상기 어플리케이션 구동 요청 신호는 사용자 단말 식별정보, 해당 어플리케이션 식별정보 등을 포함한다. In addition, when an application driving request signal is received from the user terminal, the connection controller 206 transmits an application driving command for driving the corresponding application to the load collection unit 208. Here, the application driving request signal includes user terminal identification information, corresponding application identification information, and the like.

상기 부하 수집부(208)는 어플리케이션 구동 명령이 수신되면, CPU와 GPU에 관련된 장치 부하 정보를 수집하고, 상기 수집된 장치 부하 정보를 기반으로 평균 부하값을 예측한다. 즉, 상기 부하 수집부(208)는 CPU 부하, GPU 부하, 어플리케이션 구동에 의한 CPU 부하, 실시간 비디오 인코딩의 CPU 부하, 실시간 비디오 인코딩의 GPU 부하, CPU와 GPU간 데이터 전송 부하를 현재 접속자 수로 나누어 평균 부하값을 예측한다. 여기서, 상기 예측된 평균 부하값은 하나의 어플리케이션 구동에 따른 CPU 부하, 하나의 어플리케이션 구동에 따른 실시간 비디오 인코딩의 CPU 부하, 하나의 어플리케이션 구동에 따른 실시간 비디오 인코딩의 GPU 부하를 말한다. When an application driving command is received, the load collector 208 collects device load information related to the CPU and the GPU, and estimates an average load value based on the collected device load information. That is, the load collector 208 divides the CPU load, the GPU load, the CPU load driven by the application, the CPU load of the real-time video encoding, the GPU load of the real-time video encoding, and the data transfer load between the CPU and the GPU by an average number of current users. Predict the load value. Here, the predicted average load value refers to a CPU load according to one application driving, a CPU load of real time video encoding according to one application driving, and a GPU load of real time video encoding according to one application driving.

상기 부하 할당부(210)는 상기 예측된 평균 부하값과 상기 장치 부하 정보를 이용하여 사용자 단말의 요청 수용 가능 여부 및 어플리케이션 구동 화면의 인코딩을 CPU 인코더 또는 GPU 인코더 중 어디에 할당할지를 결정한다. The load allocator 210 determines whether to accept the request of the user terminal and whether to encode an application driving screen by using the predicted average load value and the device load information.

먼저, 상기 부하 할당부(210)는 수학식 1을 이용하여 상기 사용자 단말의 요청 수용 가능 여부를 결정한다. First, the load allocator 210 determines whether the user terminal can accept a request by using Equation 1 below.

Figure pat00016
Figure pat00016

여기서, 상기 L은 현재 CPU로 구동되는 CPU 인코더 수, Tc는 최대 CPU 부하 값, a는 하나의 어플리케이션 구동시의 CPU 부하, N은 현재 접속자 수, c는 하나의 어플리케이션 구동에 따른 실시간 비디오 인코딩의 CPU 부하를 말한다.Where L is the number of CPU encoders currently driven by the CPU, Tc is the maximum CPU load value, a is the CPU load when driving one application, N is the number of current users, and c is the real time video encoding according to one application driving. CPU load.

상기 부하 할당부(210)는 상기 수학식 1을 만족하는 경우, 상기 사용자 단말의 어플리케이션 구동 요청을 수용하고, 만족하지 않은 경우 상기 사용자 단말의 어플리케이션 구동 요청을 수용하지 않는다.When the load allocator 210 satisfies Equation 1, the load allocator 210 accepts an application driving request of the user terminal, and does not accept an application driving request of the user terminal.

다시 말하면, 상기 부하 할당부(210)는 상기 수학식 1을 만족하지 못하면, 어플리케이션을 구동할 CPU 연산량이 부족하므로 추가 사용자를 받지 못함을 알린다.In other words, if the load allocator 210 does not satisfy Equation 1, the load allocator 210 notifies the additional user because the amount of CPU computation to drive the application is insufficient.

다음으로, 상기 부하 할당부(210)는 수학식 2와 수학식 3을 동시에 만족하는지의 여부를 이용하여 어플리케이션 구동 화면을 인코딩할 인코더를 결정한다. Next, the load allocator 210 determines an encoder to encode the application driving screen by using whether to satisfy Equation 2 and Equation 3 simultaneously.

Figure pat00017
Figure pat00017

Figure pat00018
Figure pat00018

여기서, 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 estimated value of the data transfer load between the CPU and the GPU, N is the number of current users, M is the number of GPU encoders currently driven by the GPU, and Tg is Allowed Max GPU load value, Tt is the Max CPU / GPU transfer load value allowed in the device.

상기 부하 할당부(210)는 상기 수학식 2와 수학식 3을 동시에 만족하는 경우, GPU 인코더에서 해당 어플리케이션 구동 화면의 인코딩을 수행하도록 결정한다.When the load allocator 210 satisfies Equation 2 and Equation 3 simultaneously, the load allocator 210 determines to encode the corresponding application driving screen in the GPU encoder.

또한, 상기 부하 할당부(210)는 상기 수학식 2와 수학식 3을 동시에 만족하지 않으면, 수학식 4를 만족하는지의 여부를 이용하여 CPU 인코더에 해당 어플리케이션 구동 화면의 인코딩을 수행하도록 결정한다.In addition, if the load allocator 210 does not satisfy Equation 2 and Equation 3 simultaneously, the load allocator 210 determines to encode the corresponding application driving screen to the CPU encoder using whether Equation 4 is satisfied.

Figure pat00019
Figure pat00019

여기서, 상기 c는 하나의 어플리케이션 구동에 따른 실시간 비디오 인코딩의 CPU 부하, Tc는 장치에서 허용되는 Max CPU 부하값, N은 현재 접속자 수, L은 현재 CPU로 구동되는 CPU 인코더 수를 말한다.Here, c denotes a CPU load of real-time video encoding according to driving of one application, Tc denotes a maximum CPU load value allowed by the device, N denotes the number of current users, and L denotes the number of CPU encoders driven by the current CPU.

즉, 상기 부하 할당부(210)는 상기 수학식 2와 수학식 3을 동시에 만족하지 않으면서, 상기 수학식 4를 만족하면, CPU 인코더가 해당 어플리케이션 구동 화면의 인코딩을 수행하도록 결정한다.That is, the load allocator 210 determines that the CPU encoder performs encoding of the corresponding application driving screen when the equation 4 is satisfied while not satisfying the equations 2 and 3 at the same time.

만약, 상기 수학식 2와 수학식 3을 동시에 만족하지 않으면서 상기 수학식 4를 만족하지 않으면, 상기 부하 할당부(210)는 상기 사용자 단말의 요청을 수용하지 않는다.If the equation 2 and the equation 3 are not satisfied at the same time and the equation 4 is not satisfied, the load allocator 210 does not accept the request of the user terminal.

상기 어플리케이션 구동부(212)는 상기 부하 할당부(210)에서 상기 사용자 단말의 요청 수용이 가능하다고 판단된 경우, 상기 어플리케이션 데이터베이스(204)로부터 해당 어플리케이션을 추출하여 구동한다. 즉, 상기 어플리케이션 구동부(212)는 상기 어플리케이션 구동 요청 신호를 분석하여 사용자 단말 식별정보, 해당 어플리케이션을 판단하고, 상기 판단된 어플리케이션을 상기 어플리케이션 데이터베이스(204)로부터 추출하여 구동한다.When the load allocator 210 determines that the request of the user terminal is possible, the application driver 212 extracts and drives the corresponding application from the application database 204. That is, the application driver 212 analyzes the application driving request signal to determine user terminal identification information and a corresponding application, and extracts and drives the determined application from the application database 204.

상기 GPU 인코더부(216)와 상기 CPU 인코더부(214)는 상기 어플리케이션 구동부(212)에서 구동된 어플리케이션 구동 화면을 인코딩하여 상기 통신부(202)를 통해 상기 사용자 단말로 전송한다.The GPU encoder 216 and the CPU encoder 214 encode an application driving screen driven by the application driver 212 and transmit the encoded application driving screen to the user terminal through the communication unit 202.

상기 GPU 인코더부(216)는 복수개의 GPU 인코더로 구성되어 있고, 각 GPU 인코더는 각기 다른 사용자 단말의 요청에 따른 어플리케이션 구동 화면을 각각 인코딩한다. The GPU encoder 216 is composed of a plurality of GPU encoders, and each GPU encoder encodes application driving screens according to requests of different user terminals.

상기 CPU 인코더부(214)는 복수개의 CPU 인코더로 구성되어 있고, 각 CPU 인코더는 각기 다른 사용자 단말의 요청에 따른 어플리케이션 구동 화면을 각각 인코딩한다. 이때, 상기 CPU 인코더(214)와 GPU 인코더(216)는 각 사용자 단말의 사양정보(예를 들면, 코덱 정보임)에 따라 다르게 인코딩을 수행할 수 있다. The CPU encoder 214 includes a plurality of CPU encoders, and each CPU encoder encodes an application driving screen according to requests of different user terminals. In this case, the CPU encoder 214 and the GPU encoder 216 may perform encoding differently according to specification information (eg, codec information) of each user terminal.

상기에서는 상기 GPU 인코더부(216)와 상기 CPU 인코더부(214)가 어플리케이션 구동 화면을 인코딩하는 것만을 설명하였으나, 오디오가 존재하는 어플리케이션의 경우 오디오도 함께 인코딩함은 당연하다.In the above description, the GPU encoder unit 216 and the CPU encoder unit 214 encode only the application driving screen. However, in the case of an application in which audio exists, it is natural to encode audio together.

도 3은 본 발명에 따른 사용자 단말의 구성을 개략적으로 나타낸 블럭도이다. 3 is a block diagram schematically showing the configuration of a user terminal according to the present invention.

도 3을 참조하면, 사용자 단말(100)은 어플리케이션 제공 장치와의 통신을 위한 통신부(102), 출력부(104), 화면 제어부(106), 어플리케이션 구동 요청부(108), 디코딩부(110)를 포함한다.Referring to FIG. 3, the user terminal 100 includes a communication unit 102, an output unit 104, a screen control unit 106, an application driving request unit 108, and a decoding unit 110 for communication with an application providing device. It includes.

상기 출력부(104)는 상기 통신부(102)를 통해 어플리케이션 제공 장치로부터 제공받은 다수의 어플리케이션에 대한 구동버튼들과 어플리케이션 구동 화면을 출력한다. 여기서, 상기 다수의 어플리케이션에 대한 구동버튼들은 어플리케이션 목록 형태일 수 있다. The output unit 104 outputs driving buttons and application driving screens for a plurality of applications provided from the application providing device through the communication unit 102. Here, the driving buttons for the plurality of applications may be in the form of an application list.

상기 화면 제어부(106)는 상기 어플리케이션 제공 장치로부터 화면 가상화 기술을 통해 다수의 어플리케이션에 대한 각각의 구동버튼을 제공받아 상기 출력부(104)의 화면상에 표시되도록 제어한다.The screen controller 106 receives each driving button for a plurality of applications from the application providing device through a screen virtualization technology and controls the screen controller 106 to be displayed on the screen of the output unit 104.

상기 어플리케이션 구동 요청부(108)는 상기 출력부(104)에 출력된 다수의 어플리케이션 목록 중에서 사용자에 의해 하나가 선택되면, 상기 선택된 어플리케이션의 구동을 요청하는 어플리케이션 구동 요청 신호를 상기 어플리케이션 제공 장치로 전송한다. 상기 어플리케이션 구동 요청 신호는 사용자 단말 식별정보, 어플리케이션 식별정보, 사용자 단말 사양정보(예를 들면, 코덱 정보, 해상도, 사이즈 정보 등을 포함함) 등을 포함한다.The application driving request unit 108 transmits an application driving request signal for requesting the driving of the selected application to the application providing apparatus when one is selected by a user from a plurality of application lists output to the output unit 104. do. The application driving request signal includes user terminal identification information, application identification information, user terminal specification information (eg, including codec information, resolution, size information, etc.).

상기 디코딩부(110)는 상기 어플리케이션 제공 장치로부터 전송된 어플리케이션 구동 화면과 오디오를 디코딩하여 상기 출력부(104)를 통해 출력한다.The decoding unit 110 decodes the application driving screen and audio transmitted from the application providing apparatus and outputs the audio through the output unit 104.

도 4는 본 발명에 따른 화면 가상화 기반 어플리케이션 구동 방법을 나타낸 도면이다. 4 is a diagram illustrating a method of driving a screen virtualization based application according to the present invention.

도 4를 참조하면, 사용자 단말은 어플리케이션 제공 장치에 접속하여 어플리케이션 구동 요청 신호를 전송한다(S402). 즉, 사용자 단말이 상기 어플리케이션 제공 장치에 접속하면, 상기 어플리케이션 제공 장치는 어플리케이션 목록이 표시된 어플리케이션 구동 버튼들을 상기 사용자 단말에 제공한다. 상기 사용자 단말은 상기 어플리케이션 구동 버튼들을 화면상에 출력하고, 사용자는 구동을 원하는 어플리케이션 구동 버튼을 선택한다. 그러면, 상기 사용자 단말은 상기 선택된 어플리케이션 목록을 포함하는 어플리케이션 구동 요청 신호를 상기 어플리케이션 제공 장치로 전송한다.Referring to FIG. 4, the user terminal accesses an application providing apparatus and transmits an application driving request signal (S402). That is, when a user terminal accesses the application providing apparatus, the application providing apparatus provides application driving buttons displaying an application list to the user terminal. The user terminal outputs the application driving buttons on a screen, and the user selects an application driving button to be driven. Then, the user terminal transmits an application driving request signal including the selected application list to the application providing apparatus.

상기 S402가 수행되면, 상기 어플리케이션 제공 장치는 CPU 및 GPU와 관련된 장치 부하 정보를 수집하고(S404), 상기 수집된 장치 부하 정보를 이용하여 상기 사용자 단말의 요청 수용 가능 여부를 판단한다(S406). 즉, 상기 어플리케이션 제공 장치는 현재 CPU로 구동되는 CPU 인코더 수에 여유가 있는지를 판단하고, CPU 인코더 수에 여유가 있는 경우 상기 사용자 단말의 어플리케이션 구동 요청을 허용한다.When the S402 is performed, the application providing apparatus collects device load information related to the CPU and the GPU (S404), and determines whether the user terminal can accept the request using the collected device load information (S406). That is, the application providing apparatus determines whether there is room for the number of CPU encoders currently driven by the CPU, and when the number of CPU encoders is free, allows the user terminal to request the application.

상기 S406의 판단결과 상기 사용자 단말의 요청 수용이 가능한 경우, 상기 어플리케이션 제공 장치는 상기 장치 부하 정보를 이용하여 어플리케이션 구동 화면의 인코딩을 CPU 인코더 또는 GPU 인코더 중 어느 인코더로 할 것인지를 결정한다(S408). 즉, 상기 어플리케이션 제공 장치는 수학식 2 내지 수학식 4를 이용하여 어플리케이션 구동 화면을 인코딩할 인코더를 결정한다. If it is determined in S406 that the user terminal can accept the request, the application providing apparatus determines whether to encode an application driving screen as a CPU encoder or a GPU encoder using the device load information (S408). . That is, the application providing apparatus determines an encoder to encode an application driving screen by using Equations 2 to 4.

상기 어플리케이션 구동 화면을 인코딩할 인코더가 결정되면, 상기 어플리케이션 제공 장치는 해당 어플리케이션을 구동하고(S410), 어플리케이션 구동 화면을 상기 결정된 CPU 인코더 또는 GPU 인코더를 통해 인코딩하여(S412) 상기 사용자 단말로 전송한다(S414). 이때, 상기 어플리케이션 제공 장치는 오디오도 함께 인코딩하여 상기 사용자 단말로 전송한다.When the encoder for encoding the application driving screen is determined, the application providing apparatus drives the corresponding application (S410), and encodes the application driving screen through the determined CPU encoder or GPU encoder (S412) and transmits the same to the user terminal. (S414). In this case, the application providing apparatus also encodes audio and transmits the same to the user terminal.

그러면, 상기 사용자 단말은 상기 어플리케이션 제공 장치로부터의 어플리케이션 구동 화면을 디코딩하여 출력한다(S416).Then, the user terminal decodes and outputs an application driving screen from the application providing apparatus (S416).

만약, 상기 S406의 판단결과 상기 사용자 단말의 요청 수용이 가능하지 않으면, 상기 어플리케이션 제공 장치는 상기 사용자 단말로 어플리케이션 구동 불가 메시지를 전송한다(S418). If it is determined in S406 that the user terminal cannot accept the request, the application providing apparatus transmits an application driving impossible message to the user terminal (S418).

도 5는 본 발명에 따른 어플리케이션 제공 장치가 화면 가상화 기반 어플리케이션 구동하는 방법을 나타낸 흐름도이다.5 is a flowchart illustrating a method of driving a screen virtualization based application by an application providing apparatus according to the present invention.

도 5를 참조하면, 어플리케이션 제공 장치는 사용자 단말로부터 어플리케이션 구동 요청 신호가 수신되면(S502), CPU 및 GPU와 관련된 장치 부하 정보를 수집한다(S504). Referring to FIG. 5, when an application driving request signal is received from the 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 the S504, the application providing apparatus predicts an average load value based on the collected device load information (S506), and can accept the request of the user terminal using the estimated average load value and the device load information. It is determined whether or not (S508). That is, the application providing apparatus is an average load by dividing the CPU load, the GPU load, the CPU load by the application running, the CPU load of the real-time video encoding, the GPU load of the real-time video encoding, the data transfer load between the CPU and the GPU by the number of current users Predict the value.

그런 다음 상기 어플리케이션 제공 장치는 수학식 1을 만족하는지의 여부를 판단하여, 만족하는 경우 상기 사용자 단말의 요청 수용이 가능하다고 판단한다. Then, the application providing apparatus determines whether or not to satisfy Equation 1, and determines that the request is accepted by the user terminal if satisfied.

상기 S508의 판단결과 상기 사용자 단말의 요청 수용이 가능한 경우, 상기 어플리케이션 제공 장치는 GPU 인코더부 관련 조건을 만족하는지의 여부를 판단한다(S510). 상기 GPU 인코더부 관련 조건은 수학식 2 및 수학식 3을 말한다. If it is determined in S508 that the user terminal can accept the request, the application providing apparatus determines whether the GPU encoder-related condition is satisfied (S510). The GPU encoder-related condition refers to equations (2) and (3).

상기 S510의 판단결과 상기 GPU 인코더부 관련 조건을 만족하는 경우, 상기 어플리케이션 제공 장치는 어플리케이션 구동 화면을 인코딩할 인코더를 GPU 인코더로 결정한다(S512).If it is determined in S510 that the GPU encoder-related condition is satisfied, the application providing apparatus determines an encoder to encode an application driving screen as a GPU encoder (S512).

그런 다음 상기 어플리케이션 제공 장치는 해당 어플리케이션을 구동하고(S514), 어플리케이션 구동 화면을 상기 결정된 GPU 인코더를 통해 인코딩하여 상기 사용자 단말로 전송한다(S516).Then, the application providing apparatus drives the corresponding application (S514), and encodes an application driving screen through the determined GPU encoder and transmits it to the user terminal (S516).

만약, 상기 S510의 판단결과 GPU 인코더부 관련 조건을 만족하지 않으면, 상기 어플리케이션 제공 장치는 CPU 인코더부 관련 조건을 만족하는지의 여부를 판단한다(S520). 상기 CPU 인코더부 관련 조건은 수학식 4를 말한다. If it is determined in S510 that the GPU encoder unit related condition is not satisfied, the application providing apparatus determines whether the CPU encoder unit related condition is satisfied (S520). The CPU encoder-related condition refers to equation (4).

상기 S520의 판단결과 CPU 인코더부 관련 조건을 만족하면, 상기 어플리케이션 제공 장치는 해당 어플리케이션 구동 화면을 인코딩할 인코더를 CPU 인코더로 결정한다(S522).As a result of the determination in S520, when the CPU encoder unit related condition is satisfied, the application providing apparatus determines the encoder to encode the corresponding application driving screen as the CPU encoder (S522).

그런 다음 상기 어플리케이션 제공 장치는 해당 어플리케이션을 구동하고(S524), 어플리케이션 구동 화면을 상기 결정된 CPU 인코더를 통해 인코딩하여 상기 사용자 단말로 전송한다(S526).Then, the application providing apparatus drives the corresponding application (S524), encodes an application driving screen through the determined CPU encoder, and transmits the encoded application driving screen to the user terminal (S526).

만약, 상기 S508의 판단결과 상기 사용자 단말의 요청 수용이 불가능한 경우, 상기 어플리케이션 제공 장치는 요청 수용 불가 메시지를 상기 사용자 단말로 전송한다(S518).If it is determined in S508 that the request of the user terminal is not possible, the application providing apparatus transmits a request not accept message to the user terminal (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 driving system and method of the present invention are suitable when there is a need to maximize the number of video encoding processes in real time in the application providing apparatus based on the utilization 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: user terminal 102, 202: communication unit
104: output unit 106: screen control unit
108: application driving request unit 110: decoding unit
200: application providing device 204: application DB
206: connection control unit 208: load collection unit
210: load allocator 212: application driver
214: CPU encoder unit 216: GPU encoder unit

Claims (14)

어플리케이션 제공 장치에 접속하여 어플리케이션의 구동을 요청하고, 상기 어플리케이션 제공 장치로부터의 어플리케이션 구동 화면을 디코딩하여 출력하는 사용자 단말;
상기 사용자 단말로부터 어플리케이션 구동 요청 수신 시, 장치 부하 정보를 수집하고, 상기 수집된 장치 부하 정보를 근거로 상기 사용자 단말의 요청 수용 가능 여부를 판단하며, 요청 수용이 가능한 경우 CPU(Central Processing Unit) 인코더와 GPU(Graphic Processing Unit) 인코더 중 어플리케이션 구동 화면을 인코딩할 인코더를 결정하여 해당 어플리케이션 구동에 따른 어플리케이션 구동 화면을 상기 결정된 인코더로 인코딩한 후, 상기 사용자 단말로 전송하는 어플리케이션 제공 장치;
를 포함하는 화면 가상화 기반 어플리케이션 구동 시스템.
A user terminal connected to an application providing apparatus to request driving of an application and decoding and outputting an application driving screen from the application providing apparatus;
Upon receiving an application driving request from the user terminal, device load information is collected, and based on the collected device load information, it is determined whether the user terminal can accept the request. And an application providing apparatus for determining an encoder to encode an application driving screen among a GPU (Graphic Processing Unit) encoder, encoding an application driving screen according to the corresponding application driving with the determined encoder, and transmitting the encoded application driving screen to the user terminal;
Screen virtualization based application driving system comprising a.
사용자 단말과의 통신을 위한 통신부;
어플리케이션이 저장된 어플리케이션 데이터베이스;
상기 통신부를 통해 사용자 단말이 접속된 경우, 복수의 어플리케이션에 대한 구동버튼들이 상기 사용자 단말에 표시되도록 제어하는 접속 제어부;
상기 통신부를 통해 어플리케이션 구동 요청 신호가 수신된 경우, CPU 및 GPU와 관련된 장치 부하 정보를 수집하고, 상기 수집된 장치 부하 정보를 기반으로 평균 부하값을 예측하는 부하 수집부;
상기 예측된 평균 부하값과 상기 장치 부하 정보를 이용하여 상기 사용자 단말의 요청 수용 가능 여부 및 CPU 인코더와 GPU 인코더 중에서 해당 어플리케이션 구동 화면을 인코딩할 인코더를 결정하는 부하 할당부;
상기 부하 할당부에서 상기 사용자 단말의 요청 수용이 가능하다고 결정된 경우, 상기 어플리케이션 데이터베이스로부터 해당 어플리케이션을 추출하여 구동하는 어플리케이션 구동부;
상기 부하 할당부의 결정에 따라, 상기 어플리케이션 구동부에서 구동된 어플리케이션 구동 화면을 인코딩하여 상기 통신부를 통해 상기 사용자 단말로 전송하는 GPU 인코더부; 및
상기 부하 할당부의 결정에 따라, 상기 어플리케이션 구동부에서 구동된 어플리케이션 구동 화면을 인코딩하여 상기 통신부를 통해 상기 사용자 단말로 전송하는 CPU 인코더부;
를 포함하는 어플리케이션 제공 장치.
A communication unit for communicating with a user terminal;
An application database in which the application is stored;
A connection controller which controls 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 configured to collect device load information related to a CPU and a GPU and to predict an average load value based on the collected device load information when an application driving request signal is received through the communication unit;
A load allocator configured to determine whether to accept the request of the user terminal and an encoder to encode a corresponding application driving screen from a CPU encoder and a GPU encoder using the predicted average load value and the device load information;
An application driver for extracting and driving the corresponding application from the application database when the load allocation unit determines that the request of the user terminal can be accepted;
A GPU encoder for encoding an application driving screen driven by the application driver and transmitting the encoded image to the user terminal through the communication unit according to the determination of the load allocator; And
A CPU encoder configured to encode an application driving screen driven by the application driver and transmit the encoded application driving screen to the user terminal through the communicator;
Application providing apparatus comprising a.
제2항에 있어서,
상기 장치 부하 정보는 CPU 부하, GPU 부하, 어플리케이션 구동에 의한 CPU 부하, 실시간 비디오 인코딩의 CPU 부하, 실시간 비디오 인코딩의 GPU 부하, CPU와 GPU간 데이터 전송 부하율, 현재 접속자 수, 현재 CPU로 구동되는 CPU 인코더 수, 현재 GPU로 구동되는 GPU 인코더 수, 장치에서 허용되는 Max CPU 부하, 장치에서 허용되는 Max GPU 부하, 장치에서 허용되는 Max CPU/GPU간 전송 부하 중 적어도 하나를 포함하는 것을 특징으로 하는 어플리케이션 제공 장치.
The method of claim 2,
The device load information includes a CPU load, a GPU load, a CPU load driven by an application, a CPU load of real time video encoding, a GPU load of real time video encoding, a data transfer load ratio between a CPU and a GPU, a current number of users, and a CPU driven by a current CPU. An application comprising at least one of the number of encoders, the number of GPU encoders currently driven by the GPU, the Max CPU load allowed on the device, the Max GPU load allowed on the device, and the Max CPU / GPU transfer load allowed on the device Provision device.
제2항에 있어서,
상기 부하 수집부는 CPU 및 GPU의 부하, 어플리케이션 구동에 의한 CPU 부하, 실시간 비디오 인코딩의 CPU 부하, 실시간 비디오 인코딩의 GPU 부하, CPU와 GPU간 데이터 전송 부하를 각각 현재 접속자 수로 나누어 평균 부하값을 예측하는 것을 특징으로 하는 어플리케이션 제공 장치.
The method of claim 2,
The load collector calculates an average load value by dividing the CPU and GPU load, the CPU load by application driving, the CPU load of real-time video encoding, the GPU load of real-time video encoding, and the data transfer load between the CPU and the GPU by the number of current users. Application providing apparatus, characterized in that.
제2항에 있어서,
상기 부하 할당부는 다음의 수학식을 만족하는 경우, 상기 사용자 단말의 요청 수용이 가능하다고 판단하는 것을 특징으로 하는 어플리케이션 제공 장치.
[수학식]
Figure pat00020

여기서, 상기 L은 현재 CPU로 인코더 수, Tc는 최대 CPU 부하, a는 하나의 어플리케이션 구동시의 CPU 부하, N은 현재의 접속자 수, c는 하나의 어플리케이션 구동에 따른 실시간 비디오 인코딩의 CPU 부하임.
The method of claim 2,
The load allocator determines that the request is accepted by the user terminal when the following equation is satisfied.
[Mathematical Expression]
Figure pat00020

Where L is the number of encoders as the current CPU, Tc is the maximum CPU load, a is the CPU load when driving one application, N is the current number of connections, and c is the CPU load of real-time video encoding according to driving one application. .
제2항에 있어서,
상기 부하 할당부는
Figure pat00021
Figure pat00022
을 동시에 만족하는 경우, GPU 인코더부에서 해당 어플리케이션 구동 화면의 인코딩을 수행하도록 결정하고,
Figure pat00023
Figure pat00024
을 동시에 만족하지 않으면서
Figure pat00025
를 만족하는 경우, CPU 인코더부에서 해당 어플리케이션 구동 화면의 인코딩을 수행하도록 결정하되,
상기 g는 하나의 어플리케이션 구동에 따른 실시간 비디오 인코딩의 GPU 부하, t는 CPU와 GPU간 데이터 전송 부하의 예측값, N은 현재의 접속자 수, L은 현재 CPU로 구동되는 CPU 인코더 수, M은 현재 GPU로 구동되는 GPU 인코더 수, Tc는 장치에서 허용되는 Max CPU 부하, Tg는 장치에서 허용되는 Max GPU 부하, Tt는 장치에서 허용되는 Max CPU/GPU간 전송 부하인 것을 특징으로 하는 어플리케이션 제공 장치.
The method of claim 2,
The load allocator
Figure pat00021
Wow
Figure pat00022
If both of the above are satisfied at the same time, the GPU encoder determines to encode the application driving screen,
Figure pat00023
and
Figure pat00024
Without satisfying
Figure pat00025
If satisfies, the CPU encoder determines to encode the application driving screen,
Where g is the GPU load of real-time video encoding according to one application running, t is the predicted value of the data transfer load between the CPU and the GPU, N is the current number of connections, L is the number of CPU encoders currently driven by the CPU, and M is the current GPU. Wherein the number of GPU encoders driven by Tc is the maximum CPU load allowed by the device, Tg is the maximum GPU load allowed by the device, and Tt is the maximum CPU / GPU transfer load allowed by the device.
제2항에 있어서,
상기 GPU 인코더부는 복수 개의 GPU 인코더로 구성되고, 각 GPU 인코더는 각기 다른 사용자 단말의 요청에 따른 어플리케이션 구동 화면을 각각 인코딩하는 것을 특징으로 하는 어플리케이션 제공 장치.
The method of claim 2,
The GPU encoder unit is composed of a plurality of GPU encoders, each GPU encoder, the application providing apparatus, characterized in that for encoding the application driving screen according to the request of different user terminal.
제2항에 있어서,
상기 CPU 인코더부는 복수 개의 CPU 인코더로 구성되고, 각 CPU 인코더는 각기 다른 사용자 단말의 요청에 따른 어플리케이션 구동 화면을 각각 인코딩하는 것을 특징으로 하는 어플리케이션 제공 장치.
The method of claim 2,
The CPU encoder unit is composed of a plurality of CPU encoder, each CPU encoder is characterized in that for encoding the application driving screen according to the request of different user terminal, respectively.
(a) 사용자 단말이 어플리케이션 제공 장치에 접속하여 어플리케이션 구동 요청 신호를 전송하는 단계;
(b) 상기 어플리케이션 제공 장치가 CPU 및 GPU와 관련된 장치 부하 정보를 수집하는 단계;
(c) 상기 어플리케이션 제공 장치가 상기 수집된 장치 부하 정보를 이용하여 상기 사용자 단말의 요청 수용 가능 여부를 판단하는 단계;
(d) 상기 사용자 단말의 요청 수용이 가능한 경우, 상기 어플리케이션 제공 장치가 상기 장치 부하 정보를 이용하여 CPU 인코더와 GPU 인코더 중 어플리케이션 구동 화면을 인코딩할 인코더를 결정하는 단계;
(e) 상기 어플리케이션 제공 장치가 해당 어플리케이션을 구동하고, 어플리케이션 구동 화면을 상기 결정된 CPU 인코더 또는 GPU 인코더를 통해 인코딩하여 상기 사용자 단말로 전송하는 단계; 및
(f) 상기 사용자 단말이 상기 어플리케이션 제공 장치로부터의 어플리케이션 구동 화면을 디코딩하여 출력하는 단계;
를 포함하는 화면 가상화 기반 어플리케이션 구동 방법.
(a) a user terminal accessing an application providing apparatus and transmitting an application driving request signal;
(b) collecting, by the application providing device, device load information related to a CPU and a GPU;
(c) the application providing device determining whether the user terminal can accept the request using the collected device load information;
(d) determining, by the application providing apparatus, an encoder to encode an application driving screen from a CPU encoder and a GPU encoder using the device load information when the request of the user terminal is available;
(e) driving the application by the application providing apparatus, encoding an application driving screen through the determined CPU encoder or GPU encoder, and transmitting the same to the user terminal; And
(f) the user terminal decoding and outputting an application driving screen from the application providing apparatus;
Screen virtualization based application driving method comprising a.
제9항에 있어서,
상기 (a)단계는,
상기 사용자 단말이 상기 어플리케이션 제공 장치에 접속하면, 상기 어플리케이션 제공 장치가 어플리케이션 목록이 표시된 어플리케이션 구동 버튼들을 상기 사용자 단말에 제공하는 단계; 및
상기 사용자 단말이 상기 어플리케이션 구동 버튼들을 화면상에 출력하고, 사용자에 의해 선택된 어플리케이션 목록을 포함하는 어플리케이션 구동 요청 신호를 상기 어플리케이션 제공 장치로 전송하는 단계를 포함하는 것을 특징으로 하는 화면 가상화 기반 어플리케이션 구동 방법.
10. The method of claim 9,
The step (a)
When the user terminal accesses the application providing apparatus, providing the application driving buttons on which the application list is displayed to the user terminal by the application providing apparatus; And
And outputting, by the user terminal, the application driving buttons on a screen, and transmitting an application driving request signal including an application list selected by a user to the application providing apparatus. .
어플리케이션 제공 장치가 화면 가상화 기반 어플리케이션을 구동하는 방법에 있어서,
(a) 사용자 단말로부터 어플리케이션 구동 요청 신호가 수신된 경우, CPU 및 GPU와 관련된 장치 부하 정보를 수집하는 단계;
(b) 상기 수집된 장치 부하 정보를 이용하여 상기 사용자 단말의 요청 수용 가능 여부를 판단하는 단계;
(c) 상기 사용자 단말의 요청 수용이 가능한 경우, 상기 장치 부하 정보를 이용하여 CPU 인코더와 GPU 인코더 중 어플리케이션 구동 화면을 인코딩할 인코더를 결정하는 단계; 및
(d) 해당 어플리케이션을 구동하고, 해당 어플리케이션 구동 화면을 상기 결정된 CPU 인코더 또는 GPU 인코더를 통해 인코딩하여 상기 사용자 단말로 전송하는 단계;
를 포함하는 화면 가상화 기반 어플리케이션 구동 방법.
In the method for the application providing device to drive a screen virtualization-based application,
(a) when the application driving request signal is received from the user terminal, collecting device load information related to the CPU and the GPU;
determining whether the user terminal can accept the request using the collected device load information;
(c) determining an encoder to encode an application driving screen among a CPU encoder and a GPU encoder using the device load information when the request of the user terminal is available; And
(d) driving the corresponding application, encoding the corresponding application driving screen through the determined CPU encoder or the GPU encoder and transmitting the encoded application driving screen to the user terminal;
Screen virtualization based application driving method comprising a.
제11항에 있어서,
상기 (b) 단계는 다음의 수학식을 만족하는 경우, 상기 사용자 단말의 요청 수용이 가능하다고 판단하는 것을 특징으로 하는 화면 가상화 기반 어플리케이션 구동 방법.
[수학식]
Figure pat00026

여기서, 상기 L은 현재 CPU로 인코더 수, Tc는 최대 CPU 부하값, a는 하나의 어플리케이션 구동시의 CPU 부하, N은 현재의 접속자 수, c는 하나의 어플리케이션 구동시에 따른 실시간 비디오 인코딩의 CPU 부하임.
The method of claim 11,
In the step (b), when the following equation is satisfied, it is determined that the user terminal can accept the request.
[Mathematical Expression]
Figure pat00026

Where L is the number of encoders as the current CPU, Tc is the maximum CPU load value, a is the CPU load when driving one application, N is the current number of connections, and c is the CPU load of real-time video encoding when driving one application. being.
제11항에 있어서,
상기 (c) 단계는,
Figure pat00027
Figure pat00028
을 동시에 만족하는 경우, GPU 인코더에서 해당 어플리케이션 구동 화면의 인코딩을 수행하도록 결정하고,
Figure pat00029
Figure pat00030
을 동시에 만족하지 않으면서
Figure pat00031
를 만족하는 경우, CPU 인코더에서 해당 어플리케이션 구동 화면의 인코딩을 수행하도록 결정하되,
상기 g는 하나의 어플리케이션 구동에 따른 실시간 비디오 인코딩의 GPU 부하, t는 CPU와 GPU간 데이터 전송 부하의 예측값, N은 현재의 접속자 수, L은 현재 CPU로 구동되는 CPU 인코더 수, M은 현재 GPU로 구동되는 GPU 인코더 수, Tc는 장치에서 허용되는 Max CPU 부하, Tg는 장치에서 허용되는 Max GPU 부하, Tt는 장치에서 허용되는 Max CPU/GPU간 전송 부하인 것을 특징으로 하는 화면 가상화 기반 어플리케이션 구동 방법.
The method of claim 11,
The step (c)
Figure pat00027
Wow
Figure pat00028
If both are satisfied at the same time, the GPU encoder determines to perform the encoding of the application driving screen,
Figure pat00029
and
Figure pat00030
Without satisfying
Figure pat00031
If is satisfied, the CPU encoder determines to perform encoding of the corresponding application driving screen,
Where g is the GPU load of real-time video encoding according to one application running, t is the predicted value of the data transfer load between the CPU and the GPU, N is the current number of connections, L is the number of CPU encoders currently driven by the CPU, and M is the current GPU. Driving the screen virtualization-based application, characterized in that the number of GPU encoders driven by Tc is the maximum CPU load allowed by the device, Tg is the maximum GPU load allowed by the device, and Tt is the maximum CPU / GPU transfer load allowed by the device. Way.
제13항에 있어서,
상기
Figure pat00032
Figure pat00033
을 동시에 만족하지 않으면서
Figure pat00034
를 만족하지 않은 경우, 상기 사용자 단말에 요청 수용 불가 메시지를 전송하는 것을 특징으로 하는 화면 가상화 기반 어플리케이션 구동 방법.
The method of claim 13,
remind
Figure pat00032
and
Figure pat00033
Without satisfying
Figure pat00034
If it is not satisfied, the screen virtualization based application driving method, characterized in that for transmitting a request acceptance message to the user terminal.
KR1020110073058A 2011-07-22 2011-07-22 System and Method for operating application based Presentation Virtualization KR101668282B1 (en)

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 true KR20130011714A (en) 2013-01-30
KR101668282B1 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 (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
WO2016052845A1 (en) * 2014-10-02 2016-04-07 엔트릭스 주식회사 Cloud streaming service system, cloud streaming service method using optimal gpu, and apparatus for same
KR20160039887A (en) * 2014-10-02 2016-04-12 엔트릭스 주식회사 System for cloud streaming service, method of cloud streaming service using selective encoding processing unit and apparatus for the same
KR20160084215A (en) * 2015-01-05 2016-07-13 엔트릭스 주식회사 Method for dynamic processing application for cloud streaming service and apparatus for the same
US10462200B2 (en) 2014-07-30 2019-10-29 Sk Planet Co., Ltd. System for cloud streaming service, method for still image-based cloud streaming service and apparatus therefor
US10652591B2 (en) 2014-07-30 2020-05-12 Sk Planet Co., Ltd. System for cloud streaming service, method for same using still-image compression technique and apparatus therefor
CN111221640A (en) * 2020-01-09 2020-06-02 黔南民族师范学院 GPU-CPU (graphics processing unit-central processing unit) cooperative energy-saving method

Families Citing this family (1)

* Cited by examiner, † Cited by third party
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

Citations (4)

* Cited by examiner, † Cited by third party
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
JP2007200349A (en) * 2007-03-26 2007-08-09 Club It Corp Server-client system, load distribution device, load distribution method, and load distribution program
KR20090011574A (en) * 2007-07-26 2009-02-02 엘지전자 주식회사 A apparatus and a method of graphic data processing
KR20110069443A (en) * 2009-12-17 2011-06-23 한국전자통신연구원 Application service system based on user interface virtualization and method thereof

Patent Citations (4)

* Cited by examiner, † Cited by third party
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
JP2007200349A (en) * 2007-03-26 2007-08-09 Club It Corp Server-client system, load distribution device, load distribution method, and load distribution program
KR20090011574A (en) * 2007-07-26 2009-02-02 엘지전자 주식회사 A apparatus and a method of graphic data processing
KR20110069443A (en) * 2009-12-17 2011-06-23 한국전자통신연구원 Application service system based on user interface virtualization and method thereof

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US10462200B2 (en) 2014-07-30 2019-10-29 Sk Planet Co., Ltd. System for cloud streaming service, method for still image-based cloud streaming service and apparatus therefor
US10652591B2 (en) 2014-07-30 2020-05-12 Sk Planet Co., Ltd. System for cloud streaming service, method for same using still-image compression technique and apparatus therefor
WO2016052845A1 (en) * 2014-10-02 2016-04-07 엔트릭스 주식회사 Cloud streaming service system, cloud streaming service method using optimal gpu, and apparatus for same
KR20160039888A (en) * 2014-10-02 2016-04-12 엔트릭스 주식회사 System for cloud streaming service, method of cloud streaming service using optumal gpu and apparatus for the same
KR20160039887A (en) * 2014-10-02 2016-04-12 엔트릭스 주식회사 System for cloud streaming service, method of cloud streaming service using selective encoding processing unit and apparatus for the same
US10601891B2 (en) 2014-10-02 2020-03-24 Sk Planet Co., Ltd. Cloud streaming service system and cloud streaming service method for utilizing an optimal GPU for video decoding based on resource conditions, and apparatus for the same
KR20160084215A (en) * 2015-01-05 2016-07-13 엔트릭스 주식회사 Method for dynamic processing application for cloud streaming service and apparatus for the same
CN111221640A (en) * 2020-01-09 2020-06-02 黔南民族师范学院 GPU-CPU (graphics processing unit-central processing unit) cooperative energy-saving method
CN111221640B (en) * 2020-01-09 2023-10-17 黔南民族师范学院 GPU-CPU cooperative energy saving method

Also Published As

Publication number Publication date
KR101668282B1 (en) 2016-10-24

Similar Documents

Publication Publication Date Title
KR101668282B1 (en) System and Method for operating application based Presentation Virtualization
CN109640188B (en) Video preview method and device, electronic equipment and computer readable storage medium
EP2624611B1 (en) Method and system for visualizing an adaptive screen according to a terminal
KR101966921B1 (en) Method and Apparatus of managing muti-session
EP2136509A1 (en) Information processing system, apparatus, method and program for providing information from a parent terminal to a child terminal
TW201507440A (en) Screen map and standards-based progressive codec for screen content coding
KR20160069443A (en) Service providing apparatus and method for web application, user equipment for the same
US9723337B2 (en) Distribution control system and distribution system
EP2790383B1 (en) Distribution control system, distribution system, distribution control method, and computer-readable storage medium
US10250665B2 (en) Distribution control system, distribution system, distribution control method, and computer-readable storage medium
CN110856036A (en) Remote desktop implementation method, interaction method, device, equipment and storage medium
WO2018040428A1 (en) Screen interface display method and system
WO2014142342A1 (en) Distribution control system, distribution control method, and computer-readable storage medium
KR101630638B1 (en) System and Method for operating application based Presentation Virtualization
CN111031389A (en) Video processing method, electronic device and storage medium
KR20130134117A (en) System and method for operating application based presentation virtualization
KR20160015134A (en) System for cloud streaming service, method of cloud streaming service based on type of image and apparatus for the same
KR101871403B1 (en) Media control device application executing method and system in media displaying device using presentation virtualization
JP6781445B1 (en) Information processing method
JP5506250B2 (en) Stream decoding apparatus and stream decoding method
EP2888888B1 (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
KR101237504B1 (en) Server for supporting heterogeneous remote control service and method 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

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