KR101569502B1 - 트랜스코딩 작업 할당 장치, 방법 및 컴퓨터 판독 가능한 기록 매체 - Google Patents

트랜스코딩 작업 할당 장치, 방법 및 컴퓨터 판독 가능한 기록 매체 Download PDF

Info

Publication number
KR101569502B1
KR101569502B1 KR1020120124680A KR20120124680A KR101569502B1 KR 101569502 B1 KR101569502 B1 KR 101569502B1 KR 1020120124680 A KR1020120124680 A KR 1020120124680A KR 20120124680 A KR20120124680 A KR 20120124680A KR 101569502 B1 KR101569502 B1 KR 101569502B1
Authority
KR
South Korea
Prior art keywords
transcoding
format
gpus
cpus
information
Prior art date
Application number
KR1020120124680A
Other languages
English (en)
Other versions
KR20140058091A (ko
Inventor
노원우
김일규
오두환
이창민
장기준
Original Assignee
네이버 주식회사
연세대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 네이버 주식회사, 연세대학교 산학협력단 filed Critical 네이버 주식회사
Priority to KR1020120124680A priority Critical patent/KR101569502B1/ko
Publication of KR20140058091A publication Critical patent/KR20140058091A/ko
Application granted granted Critical
Publication of KR101569502B1 publication Critical patent/KR101569502B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명은 트랜스코딩 작업 할당 장치에 관한 것으로, 사용자 단말로부터 수신된 컨텐츠 요청 정보를 순서대로 저장하는 작업 큐 및 상기 저장된 컨텐츠 요청 정보에 기초하여 트랜스코딩 포맷을 설정하고, 상기 설정된 트랜스코딩 포맷으로 얻어지는 성능 정보에 기초하여 상기 컨텐츠의 트랜스코딩 작업을 할당하는 스케쥴러를 포함한다.

Description

트랜스코딩 작업 할당 장치, 방법 및 컴퓨터 판독 가능한 기록 매체{APPARATUS, METHOD AND COMPUTER READABLE RECORDING MEDIUM FOR ASSIGNING TRNSCORDING WORKS}
본 발명은 트랜스코딩 작업을 할당하는 장치 등에 관한 것으로, 보다 상세하게는 멀티미디어의 트랜스코딩 작업이 가장 효율적으로 이루어질 수 있도록 CPU 또는 GPU를 선택하여 할당하는 장치, 방법 및 컴퓨터 판독 가능한 기록 매체에 관한 것이다.
오늘날 인터넷의 광범위한 보급에 따라 각종 디지털 가입자 회선(xDSL), 케이블(Cable), 모바일(Mobile), 공중 무선 랜 서비스(WLAN), 전력선 통신 등 다양한 네트워크를 이용하여 고성능 개인용 컴퓨터(Personal Computer;PC), 개인 휴대 정보 단말기(Personal Digital Assistance; PDA), 휴대폰, 각종 태블릿(Tablet) 등 다양한 종류의 사용자 단말이 사용되고 있다. 또한, MPEG1 MPEG2, MPEG 4, H.264 등 서로 다른 멀티 미디어 압축 방식들이 공존하고 있다.
따라서, 이러한 다양한 네트워크 및 사용자 단말, 그리고 다양한 압축 방식들을 모두 고려하여 멀티미디어 컨텐츠를 개발한다면 하나의 컨텐츠에 대해 서로 다른 네트워크를 이용하여 서로 다른 사용자 단말에게 적합한, 즉 다양한 종류의 멀티미디어 파일들을 각각 개발하여야 한다는 문제점을 야기한다.
이러한 문제점을 해결하기 위한 방법으로서, 하나의 컨텐츠를 서로 다른 네트워크, 해상도, 사용자 단말의 성능, 사용자 인터페이스(User Interface; UI) 등에서 공통으로 사용될 수 있도록 변환 기능을 제공하여 OSMU(One Source Multi Use)의 개념을 구현하는 것이 고려되고 있으며, 이를 위해 원래의 컨텐츠를 각 네트워크 대역폭, 사용자 단말의 특성 및 성능에 적합하도록 가공, 변환, 선별하는 과정이 수행되어야 하는데 이러한 과정을 멀티미디어의 “트랜스코딩”이라 한다.
한편, 각종 기기 및 네트워크의 성능이 좋아지면서 멀티미디어 컨텐츠를 보유하고 있는 서버측에서 미리 사용자 단말에 적합하게 트랜스코딩을 수행해 두는 것이 아니라 각 사용자 단말의 요청시에 트랜스코딩을 수행하는, 즉 실시간 트랜스코딩을 지원하게 되었다. 하지만 복수의 사용자 단말이 서버측에 접속하여 멀티미디어 컨텐츠를 요청하는 것이 일반적인 점을 고려할 때 서버측에서 사용자들이 기대하는 지연시간(latency) 내에 실시간 트랜스코딩을 수행하고 트랜스코딩된 멀티미디어 컨텐츠를 제공하는 것은 매우 중요하다 할 수 있다. 따라서, 서버 내에서 멀티미디어 컨텐츠를 가장 효율적으로 트랜스코딩하기 위한 방안들이 고려되어야 한다.
한편, 그래픽 처리 장치인 GPU(Graphics Processing Unit)는 컴퓨터 그래픽을 전문으로 담당하는 부품으로서, 종래에는 그래픽 API(Application Programming Interface)를 사용하여 이미지를 디스플레이 장치로 출력하는 기능만을 수행하였으나, 최근에는 중앙 처리 장치인 CPU(Central Processing Unit)만이 취급하였던 응용 프로그램들의 계산까지 수행 가능하도록 하였는데 이러한 기능을 제공하는 GPU를 범용 GPU(General-Purpose computing on Graphics Processing Units:GPGPU)라고 일컫는다.
이러한 GPGPU 기술의 일 예로서 GPU 제조 업체인 엔비디아(Nvidia)에서는 CUDA(Compute Unified Device Architecture, 쿠다)라는 기술을, 또 다른 GPU 제조 업체인 AMD에서는 ATI Stream이라는 기술을 개발하게 되었고, 이 밖에도 다수의 업체가 그룹 멤버로서 참여한 크로노스 그룹(Khronos Group)이 개발한 OpenCL(Open Computing Language) 기술 역시 이 범주에 포함될 수 있다. 이러한 GPGPU 기술을 이용하여 개발자들은 CPU에만 의존하였던 멀티미디어의 트랜스코딩 작업 등에 대해 GPU를 추가적으로 이용할 수 있게 된 것이다. 다만, GPU는 본래 CPU와 동일한 연산을 위해 개발된 하드웨어 자원이 아니므로 작업의 종류에 따른 처리 속도 및 소모 전력 등에 있어 CPU와는 확연한 차이를 보이고 있다. 일 예로서, GPU의 경우 다수의 연산 코어로 구성되어 다량의 데이터를 병렬적으로 동시에 처리하는 작업에 더 유리한 반면 CPU의 경우 단일 또는 소수의 코어로 처리하는 순차적 연산에 더 유리하다. 또한, GPU의 경우 다수의 연산 코어를 동시에 처리하므로 단위 시간당 전력 소모량이 상대적으로 CPU 대비 높다는 특징을 갖는다.
전술한 기술의 발전 및 필요한 방안들을 고려할 때, 복수의 물리적인 서버로 구성된 서버군 내에서 멀티미디어의 트랜스코딩 작업을 어떻게 각 서버에 배분할 지는 물론, 하나의 서버 내에서도 활용 가능한 하드웨어 자원(CPU, GPU 등)을 적절히 할당하여 가장 효과적으로 트랜스코딩 작업을 수행할 수 있는 방법의 필요성이 요구되고 있다.
하지만, 대한민국 등록특허공보 제10-0760617호 “실시간 트랜스코딩 장치 및 그의 운용 방법(에스케이 텔레콤 주식회사)”(문헌 1)와 같은 종래 기술에서는 다양한 캐시 운용 방식을 적용하여 트랜스코딩된 컨텐츠를 캐시에 저장하여 놓음으로써 동일한 컨텐츠를 반복하여 트랜스코딩함에 기인한 부하를 효율적으로 감소시키는 장치 및 방법 등 복수의 사용자 단말의 요청시 캐시에 저장된 데이터를 반복하여 활용하는 방안에 대해서만 개시하고 있을 뿐, 실제적으로 복수의 트랜스코딩 작업이 수행되는 경우 이를 효율적으로 할당하는 방안에 대해서는 전혀 개시되고 있지 않는 실정이다.
[문헌 1] 대한민국등록특허공보 제10-0870617호 실시간 트랜스코딩 장치 및 그의 운용 방법(에스케이 텔레콤주식회사) 2008.11.19
본 발명의 목적은 복수 개의 멀티미디어 트랜스코딩 작업이 요청되는 경우 각 하드웨어 자원에 가장 효율적으로 작업을 수행할 수 있도록 분배하는 트랜스코딩 작업 할당 장치, 방법 및 컴퓨터 판독 가능한 기록 매체를 제공함에 있다.
또한, 본 발명의 다른 목적은 복수 개의 멀티미디어에 대해 실시간으로 트랜스코딩을 수행하는 경우 GPU가 개입하여 트랜스코딩 작업을 효율적으로 분산시킬 수 있는 알고리즘을 이용한 트랜스코딩 작업 할당 장치, 방법 및 컴퓨터 판독 가능한 기록 매체를 제공함에 있다.
또한, 본 발명의 또 다른 목적은 소비 전력 및 수행 시간 등에 기초하여 스케쥴링 계수를 구하고, 요청되는 멀티미디어의 트랜스코딩 옵션 값을 고려한 가장 효율적인 하드웨어 자원에 트랜스코딩 작업을 할당하는 트랜스코딩 작업 할당 장치, 방법 및 컴퓨터 판독 가능한 기록 매체를 제공함에 있다.
상기한 바와 같은 본 발명의 목적을 달성하고, 후술하는 본 발명의 특유의 효과를 달성하기 위한, 본 발명의 특징적인 구성은 하기와 같다.
본 발명의 일 측면에 따르면, 트랜스코딩 작업 할당 장치는 사용자 단말로부터 수신된 컨텐츠 요청 정보를 순서대로 저장하는 작업 큐 및 상기 저장된 컨텐츠 요청 정보에 기초하여 트랜스코딩 포맷을 설정하고, 상기 설정된 트랜스코딩 포맷으로 얻어지는 성능 정보에 기초하여 상기 컨텐츠의 트랜스코딩 작업을 할당하는 스케쥴러를 포함한다.
바람직하게는, 상기 컨텐츠 요청 정보는 상기 사용자 단말의 단말 정보를 더 포함한다.
바람직하게는, 상기 장치는 각 사용자 단말 별로 설정된 트랜스코딩 포맷을 저장하고 있는 포맷 데이터베이스를 더 포함하고, 상기 스케쥴러는 상기 사용자 단말의 단말 정보에 매칭되는 트랜스코딩 포맷을 상기 포맷 데이터베이스로부터 추출하여 설정한다.
바람직하게는, 상기 장치는 트랜스코딩 작업을 수행하는 하나 이상의 CPU 및 GPU, 그리고 상기 포맷 데이터베이스에 저장된 각 트랜스코딩 포맷 별로 얻어지는 상기 CPU 및 GPU의 성능 정보를 저장하고 있는 성능 정보 데이터베이스를 더 포함하며, 상기 스케쥴러는 상기 설정된 트랜스코딩 포맷으로 얻어지는 상기 CPU 및 GPU의 성능 정보에 기초하여 산출된 스케쥴링 계수를 상기 성능 정보 데이터베이스로부터 추출하고, 미리 설정된 레벨 값과 대비하여 상기 컨텐츠의 트랜스코딩 작업을 상기 CPU 또는 GPU에 할당한다.
바람직하게는, 상기 성능 정보는 수행 시간 및 소비 전력을 포함한다.
바람직하게는, 상기 스케쥴러는 상기 CPU 및 GPU의 상태 정보를 더 수신하고, 상기 컨텐츠의 트랜스코딩 작업 할당시 상기 상태 정보를 더 고려한다.
바람직하게는, 상기 상태 정보는 상기 CPU 및 GPU 중 어느 것이 유휴 상태인지 또는 언제 유휴 상태가 되는지에 관한 정보를 포함하고, 상기 스케쥴러는 유휴 상태이거나 특정 시간 이후 유휴 상태가 되는 CPU 또는 GPU 중에서 상기 컨텐츠의 트랜스코딩 작업을 할당한다.
본 발명의 다른 측면에 따르면, 트랜스코딩 작업 할당 방법은, 트랜스코딩 서버에 의해 수행되는 각 단계가, 사용자 단말로부터 수신된 컨텐츠 요청 정보를 순서대로 작업 큐에 저장하는 단계, 상기 저장된 컨텐츠 요청 정보에 기초하여 트랜스코딩 포맷을 설정하는 단계 및 상기 설정된 트랜스코딩 포맷으로 얻어지는 성능 정보에 기초하여 상기 컨텐츠의 트랜스코딩 작업을 할당하는 단계를 포함한다.
한편, 트랜스코딩 작업 할당 방법을 실행하기 위한 프로그램은 컴퓨터로 읽을 수 있는 기록 매체에 저장될 수 있다. 이러한 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있도록 프로그램 및 데이터가 저장되는 모든 종류의 기록매체를 포함한다. 그 예로는, 롬(Read Only Memory), 램(Random Access Memory), CD(Compact Disk), DVD(Digital Video Disk)-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들면, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함된다. 또한, 이러한 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
상술한 바와 같이, 본 발명에 따르면 복수 개의 멀티미디어 트랜스코딩 작업이 요청되는 경우 각 하드웨어 자원에 가장 효율적으로 작업을 수행할 수 있도록 분배할 수 있다는 장점이 있다.
또한, 본 발명에 따르면 복수 개의 멀티미디어에 대해 실시간으로 트랜스코딩을 수행하는 경우 GPU가 개입하여 트랜스코딩 작업을 효율적으로 분산시킬 수 있는 알고리즘을 이용할 수 있다는 장점이 있다.
또한, 본 발명에 따르면 소비 전력 및 수행 시간 등에 기초하여 스케쥴링 계수를 구하고, 요청되는 멀티미디어의 트랜스코딩 옵션 값을 고려한 가장 효율적인 하드웨어 자원에 트랜스코딩 작업을 할당할 수 있다는 장점이 있다.
도 1은 본 발명에 따른 멀티미디어 컨텐츠의 트랜스코딩을 수행하고 제공하는 전체 시스템을 나타내는 도면이다.
도 2는 본 발명에 따른 트랜스코딩 서버의 세부 구조를 나타내는 블록도이다.
도 3은 본 발명에 따른 트랜스코딩 작업 할당을 보여주는 작업 처리도이다.
도 4는 본 발명에 따른 트랜스코딩 작업 할당 방법을 나타내는 흐름도이다.
도 5a 및 도 5b는 본 발명에 따른 포맷 데이터베이스 및 성능 정보 데이터베이스에 저장되는 예시적인 값들을 나타내는 도면이다.
도 6은 본 발명에 따른 예시적인 단말 정보를 도시한 도면이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예에 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는 적절하게 설명된다면 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
한편, 후술하는 설명에서의 사용자 단말은 일반적인 데스크톱 컴퓨터뿐만 아니라 스마트폰을 포함하는 개념으로서, 이동 통신 단말기, 데스크톱 컴퓨터, 노트북 컴퓨터, 워크스테이션, 팜톱(palmtop) 컴퓨터, 개인 휴대 정보 단말기(personal digital assistant: PDA), 웹 패드 등과 같이 메모리 수단을 구비하고 마이크로 프로세서를 탑재하여 연산 능력을 갖춘 디지털 기기라면 얼마든지 본 발명에 따른 사용자 단말로서 채택될 수 있다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 하기 위하여, 본 발명의 바람직한 실시예들에 관하여 첨부된 도면을 참조하여 상세히 설명하기로 한다.
먼저, 도 1 내지 도 3을 참조하여 본 발명의 실시예에 따른 시스템 및 장치의 구조를 설명하며, 다음으로 도 4를 참조하여 본 발명의 실시예에 따른 절차를 상세히 설명한다.
트랜스코딩 시스템
도 1은 본 발명에 따른 트랜스코딩 작업 할당 장치 및 사용자 단말을 포함하여 멀티미디어 컨텐츠의 트랜스코딩을 수행하고 제공하는 전체 시스템을 나타내는 도면이다. 도 1을 참조하면, 다수의 사용자 단말(100a, …, 100n) 들이 통신 네트워크(200)에 접속하여 트랜스코딩 서버(300)로 특정 멀티미디어 컨텐츠의 재생 요청과 함께 단말 정보를 제공하고, 트랜스코딩 서버(300)는 단말 정보에 기초하여 해당 사용자 단말에 가장 적합한 트랜스코딩이 이루어지도록 옵션값을 포함하는 트랜스코딩 포맷을 설정한다. 이 때, 트랜스코딩 서버(300)는 트랜스코딩 포맷에 기초하여 GPU가 개입할지 여부, 그리고 CPU 및 GPU 중 어느 하드웨어 자원에서 트랜스코딩을 수행할지에 대해 결정하고 결정된 하드웨어 자원에서 트랜스코딩을 수행한다. 한편, 트랜스코딩 서버(300)는 트랜스코딩되는 멀티미디어 컨텐츠를 트랜스코딩 도중에 완료된 부분이나, 또는 전체 트랜스코딩이 완료된 이후 해당 컨텐츠가 사용자 단말에서 실시간으로 재생할 수 있도록 스트리밍 방식으로 제공하는 기능을 더 수행할 수 있다.
먼저, 사용자 단말(100) 내에는 단말의 특성 및 성능을 포함하는 단말 정보가 존재할 수 있고, 사용자 단말의 백그라운드 작업으로, 트랜스코딩 서버(300)의 요청에 의해, 사용자의 선택에 의한 특정 컨텐츠의 재생 요청과 함께, 또는 사용자의 정보 전송에 의해 등 특정 상황의 발생시 단말 정보의 적어도 일부가 트랜스코딩 서버(300)로 전송될 수 있다. 상기 단말 정보는 본 발명에서 단말의 특성 및 성능에 관련된 정보로서 트랜스코딩의 포맷에 고려될 수 있는 모든 정보를 총칭하는 의미로 사용되며, 예컨대 중앙처리장치(Central Processing Unit: CPU)의 성능에 관련된 정보, 그래픽 처리 장치(Graphic Processing Unit: GPU)의 성능에 관련된 정보, 단말이 지원하는 코덱(Codec) 종류에 대한 정보, 단말의 메모리(RAM) 크기에 관련된 정보, 단말의 화면 해상도 정보 등을 포함할 수 있으나, 전술된 예에 한정되는 것은 아니다. 또는, 본 발명의 실시예에 따라서는 단말 정보는 사용자 단말(100)을 인식할 수 있는 모델명 또는 시리얼 넘버 등을 포함하고, 트랜스코딩 서버(300) 에서 상기 단말 정보에 기초하여 해당 단말을 인식하고 인식된 단말의 특성 및 성능에 관련된 상기 정보 등을 매칭하여 활용할 수도 있다. 본 발명의 다른 실시예에 따르면 단말 정보 대신, 사용자가 직접 트랜스코딩 포맷에 포함되는 각 옵션 값 중 적어도 일부를 선택하고, 선택된 정보가 단말 정보로서 트랜스코딩 서버(300)로 전송될 수도 있다.
상기 단말 정보를 추출하기 위해 사용자 단말(100) 내에 애플리케이션을 설치할 수 있으며, 상기 애플리케이션은 단말 내에 설치되어 상기 단말 정보를 수집 및 저장(전송을 위해 임시적으로 저장할 수도 있고 또는 비휘발성 저장 공간에 저장해 둘 수도 있다)하고 통신 네트워크(200)에 연결될 때에 백그라운드 작업으로의 실행에 의해, 사용자의 선택에 의한 실행에 의해, 사용자의 선택에 의한 특정 컨텐츠의 재생 요청시에, 또는 트랜스코딩 서버(300)의 요청에 의해 등 특정 상황이 발생하였을 때 상기 단말 정보를 상기 서버로 전송한다. 상기 전송되는 단말 정보는 전송 효율을 위해 압축되어 전송될 수도 있으며 보안을 위해 암호화되어 전송될 수도 있다. 상기 애플리케이션은 사용자 단말(100)에 탑재할 수 있는 다양한 애플리케이션을 판매하는 온라인상의 모바일 컨텐츠 장터인 앱스토어에서 선택하여 설치될 수도 있으며 또는 트랜스코딩 서버(300)로부터 상기 애플리케이션을 다운로드 받아 설치할 수도 있다.
이 밖에도, 도 1에는 도시되지 않았지만 사용자 단말(100)은 트랜스코딩 서버(300)와 단말 정보를 비롯한 각종 정보를 송수신하는 송수신부, 사용자로부터 트랜스코딩 포맷의 옵션값에 대한 선택을 포함하는 단말 정보를 입력받는 입력부, 단말 정보를 수집하고 계산하는 수집부, 및 트랜스코딩 서버(300)로부터 전송되는 트랜스코딩된 멀티미디어 컨텐츠를 재생하는 재생부 등을 더 포함할 수 있다.
다음으로, 트랜스코딩 서버(300)에는 사용자 단말(100)로부터 특정 멀티미디어 컨텐츠에 대한 재생 요청이 수신되었을 때 함께 전송된 단말 정보에 기초하여 자동으로 트랜스코딩 포맷 내의 각 옵션 값을 설정하고 이에 기초한 트랜스코딩을 가장 효율적인 하드웨어 자원에 할당하여 수행하며, 트랜스코딩된 멀티미디어 컨텐츠를 사용자 단말(100)로 제공한다. 한편, 트랜스코딩 서버(300)에는 복수 개의 트랜스코딩 포맷을 저장하는 포맷 데이터베이스(301), 그리고 각 트랜스코딩 포맷을 이용하여 각 하드웨어 자원에서 트랜스코딩을 수행할 경우의 처리 시간이나 전력 소비량 등의 성능 지표들을 저장하는 성능 정보 데이터베이스(302)가 더 포함될 수 있고, 이 경우 트랜스코딩 서버(300)는 사용자 단말(100)로부터 수신된 단말 정보에 기초하여 트랜스코딩할 포맷의 각 옵션 값을 포맷 데이터베이스(301)를 이용하여 결정하고, 상기 결정된 포맷을 이용하는 경우의 각 하드웨어 자원의 성능 지표들을 성능 정보 데이터베이스(302)로부터 참조하여 트랜스코딩 작업을 수행하는 하드웨어 자원을 결정할 수 있다. 이 밖에도, 도 1에는 도시되지는 않았지만 트랜스코딩 서버(300)에는 단말 정보 중 적어도 일부를 저장하는 데이터베이스가 더 포함될 수 있고, 이 경우 트랜스코딩 서버(300)는 상기 데이터베이스에 기초하여 각 사용자 단말에 최적인 트랜스코딩 포맷을 설정하고 포맷 데이터베이스(301)에 저장할 수 있다.
또한, 도 1에 도시되지는 않았지만 트랜스코딩 서버(300)는 사용자 단말(100)과 각종 정보를 송수신하는 송수신부, 복수 개의 트랜스코딩 요청을 저장하여 두는 작업 큐(queue), 작업 큐에 저장된 각 요청에 따른 트랜스코딩 작업을 최적으로 할당하기 위한 스케쥴러(scheduler), 그리고 스케쥴러에 의해 할당된 트랜스코딩을 수행하는 CPU나 GPU 등 각 하드웨어 자원 등을 더 포함할 수 있다.
통신 네트워크(200)는 유선 및 무선 등과 같은 그 통신 양태를 가리지 않고 구성될 수 있으며, 단거리 통신망(PAN; Personal Area Network), 근거리 통신망(LAN; Local Area Network), 도시권 통신망(MAN; Metropolitan Area Network), 광역 통신망(WAN; Wide Area Network) 등 다양한 통신망으로 구성될 수 있다. 또한, 상기 통신 네트워크(200)는 공지의 월드와이드웹(WWW; World Wide Web)일 수 있으며, 적외선(Infrared Data Association; IrDA) 또는 블루투스(Bluetooth)와 같이 단거리 통신에 이용되는 무선전송기술을 이용할 수도 있다.
본 발명에 따른 트랜스코딩 서버의 세부 구조
도 2는 본 발명에 따른 트랜스코딩 서버의 세부 구조를 나타내는 블록도이다. 본 발명에 따라 사용자 단말(100)로부터 특정 멀티미디어 컨텐츠에 대한 재생을 요청받는 경우, 트랜스코딩 서버(300)는 함께 전송된 단말 정보에 기초하여 최적의 트랜스코딩 포맷을 설정하고 이에 기초하여 트랜스코딩을 가장 효율적인 하드웨어 자원에 할당하여 할당된 하드웨어 자원에서 설정된 포맷에 맞춰 트랜스코딩을 진행하도록 한다. 이후, 트랜스코딩 서버(300)는 트랜스코딩된 멀티미디어 컨텐츠를 요청하였던 사용자 단말(100)로 전송한다.
먼저, 도 2를 참조하면 본 발명에 따른 트랜스코딩 서버(300)는 송수신부(310), 작업 큐(320), 스케쥴러(330), 하나 이상의 CPU(340) 및 하나 이상의 GPU(350)를 포함하여 구성될 수 있고, 또한 CPU(340) 및 GPU(350)에서 트랜스코딩을 수행하기 위한 포맷들을 저장하고 있는 포맷 데이터베이스(301) 및 상기 포맷들 중 어느 하나에 기초한 트랜스코딩 수행시 측정할 수 있는 성능 지표들을 저장하고 있는 성능 정보 데이터베이스(302)를 포함하거나 이에 연결될 수 있다.
포맷 데이터베이스
먼저 포맷 데이터베이스(301)는 도 5a에 예시된 바와 같이 트랜스코딩 작업시 사용될 수 있는 트랜스코딩 포맷의 각 옵션 값들의 조합이 설정되어 저장하고 있다. 보다 구체적으로 설명하면, 도 5a에 예시된 표에는 코덱(codec), 해상도, 프로파일(profile), 초당 프레임수(frames per second:fps), 비트레이트(bit rate) 등의 각 옵션 값이 설정된 각 트랜스코딩 포맷이 설정되어 있다. 예컨대 ID 값이 0인 트랜스코딩 포맷을 살펴보면, 코덱은 H.264를 이용하고, 해상도는 가로가 280픽셀인 프로그레시브 스캔(progressive scan) 방식이며, 프로파일은 베이스라인 프로파일(baseline profile)의 레벨 3.1로서 이에 기초하여 최대 디코딩 속도, 최대 프레임 사이즈, 최대 비디오 비트 레이트 등이 결정된다. 또한, 초당 프레임수는 30개이며 비트레이트는 300kbps임을 알 수 있다. 물론, 도 5a에 개시된 각 옵션 값은 예시적인 것에 불과하므로 그 밖에도 트랜스코딩 포맷에 포함될 수 있는 다양한 옵션 값들이 취사 선택될 수 있고, 각 옵션 값의 구체적인 수치 또한 도 5a에 기재된 값과 상이할 수 있다는 것은 본 발명이 속하는 분야에서 통상의 지식을 가진 자에게 있어 자명할 것이다. 한편, 도 5a에서 각 ID 값에 해당하는 트랜스코딩 포맷은 계속하여 출시되고 있는 다양한 특성과 성능을 갖는 사용자 단말에 최적화되도록 설정될 수 있으며 이 경우 도 5a에 기재된 표와 같이 트랜스코딩 포맷에 포함될 수 있는 옵션 값만이 아닌, 특정 트랜스코딩 포맷에 최적인 사용자 단말을 인식하기 위한 다른 정보(예컨대 모델명이나 시리얼 넘버 등)도 포맷 데이터베이스(301)에 부가될 수 있다.
포맷 데이터베이스(301)에서 저장하고 있는 각 트랜스코딩 포맷의 옵션 값들을 설정하기 위한 일 예로서, 도 2에는 도시되지 않았지만 트랜스코딩 서버(300)는 제어부를 더 포함할 수 있으며, 제어부는 사용자 단말(100)로부터 전송 받은 단말 정보에 기초하여 단말에 최적인 트랜스코딩 포맷을 설정하고 포맷 데이터베이스(301)에 저장하는 기능을 수행한다.
본 발명에서 트랜스코딩 포맷은 트랜스코딩시 지정할 수 있는 각종 옵션 값들을 모두 포함할 수 있는 광의의 의미로 해석되어야 한다. 트랜스코딩 포맷에 포함될 수 있는 옵션 값들은 전술한 도 5a에서도 예시되고 있으며, 보다 상세히 살펴보면 예컨대 비디오 코덱과 관련하여서는 비디오 코덱의 종류, 압축 방식, 프로파일, 비트 레이트(Bitrate), P 프레임 간격, 초당 프레임수(Frames Per Second: FPS) 등을 포함할 수 있고, 오디오 코덱과 관련하여서는 오디오 코덱의 종류, 음질(kHz), 샘플 레이트(sample rate) 및 채널수, 노멀라이저(Normalizer), 이퀄라이저(Equalizer) 등을 포함할 수 있으며, 그 밖에도 출력 해상도 등을 포함할 수 있으나, 전술한 예에 한정되는 것은 아니다.
상기 예시한 트랜스코딩 포맷의 옵션 값들에 기초하여 제어부의 기능을 상술하면, 전송 받은 단말 정보 또는 단말 정보와 매칭되는 트랜스코딩 서버(300) 내의 데이터베이스에 기초하여 특정 멀티미디어 컨텐츠의 재생을 요청한 단말의 단말 정보를 도 6과 같이 확인할 수 있다.
도 6과 같은 단말 정보를 이용하여, 제어부는 트랜스코딩 포맷의 각 옵션 값들을 설정한다. 코덱과 관련하여서는, 상기 단말 정보 중 하드웨어 가속 지원 코덱 리스트 및 소프트웨어 코덱 리스트에 기초하여 트랜스코딩할 코덱의 옵션 값을 선택할 수 있다. 일 예로서, 만일 하드웨어 가속을 지원하는 코덱이 있으면 우선하여 해당 코덱으로 설정할 수 있고, 만일 없다면 소프트웨어 코덱 리스트 중에서 선택하여야 하며, 이 중 GPU를 사용하는 코덱이 존재하는 경우 우선하여 설정할 수 있다. 만일 하드웨어 가속을 지원하는 코덱도 없고 GPU를 사용하는 코덱도 없는 경우 소프트웨어 코덱 리스트 중에서 가장 최신 코덱을 선택하거나 임의로 선택하는 등 별도의 우선 순위에 기초하여 트랜스코딩할 비디오 코덱의 종류에 대한 옵션 값을 선택할 수 있다.
또한, 압축 방식에 대해서는 단말 정보 중 화면 해상도, CPU 성능 정보 및/또는 CPU 연산 능력, GPU 성능 정보 및/또는 GPU 연산 능력, 단말 연산 능력 등에 기초하여 인코딩 횟수(1PASS 또는 2PASS 등) 및 비디오 품질 등을 선택할 수 있으며, 초당 프레임수의 경우 상기 압축 방식에 고려되는 단말 정보 및/또는 압축 방식 등에 기초하여 특정 기준을 넘는 경우 예컨대 30FPS로, 넘지 못하는 경우 예컨대 24FPS로 옵션값을 설정할 수도 있고 또는 다수의 기준을 두고 이에 따라 서로 다른 초당 프레임수를 옵션값으로 설정할 수도 있다. P 프레임 간격은 인코딩시 B 프레임(Bidirectional-coded frame)을 사용할 지 여부, 그리고 I 프레임(Intra-coded frame) 간에 P 프레임(Predictive-coded frame)을 몇 개 넣을지 여부 등에 관한 옵션 값으로 단말 정보, 압축 방식, 초당 프레임수 등에 기초하여 B 프레임의 사용 여부 및 P 프레임의 삽입 정도를 옵션값으로 설정한다. 또한, 비트 레이트는 초당 비트의 양을 의미하며 단말 정보, 압축 방식, 초당 프레임 수, P 프레임 간격 등에 기초하여 평균 비트레이트 및 피크(peak) 비트레이트 등의 옵션 값을 설정한다.
한편, 오디오 코덱과 관련하여서는 도 6에 예시되지는 않았지만 단말 정보 중 소프트웨어 코덱 리스트에 지원되는 오디오 코덱이 더 포함될 수 있으며 이에 기초하여 오디오 코덱의 종류가 옵션 값으로 설정될 수 있다. 한편, 음질, 샘플 레이트, 채널 수, 노멀라이저, 이퀄라이저 또한 단말 정보에 기초하여 설정될 수 있다. 출력 해상도는 기본적으로 단말 정보 중 화면 해상도 정보에 기초하여 설정될 수 있다.
트랜스코딩 포맷에 포함되는 옵션 값들의 설정에 있어서 어느 기준에 의해 어떤 값으로 설정될지 여부는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자들이 본 발명에서 상술한 내용에 기초하여 다양하게 조합하여 이용할 수 있다는 것은 자명할 것이다.
전술한 예시적 방식에 의해 특정 사용자 단말에 최적인 트랜스코딩 포맷이 설정되어 포맷 데이터베이스(301)에 도 5a와 같이 저장될 수 있으며, 설정된 트랜스코딩 포맷의 품질을 보장하기 위해 포맷에 기초한 예상 화질 및 비트 레이트를 미리 설정한 최소 화질 및 네트워크 속도와 비교하여 필요시 트랜스코딩 포맷 내의 일부 옵션 값들에 대한 추가적인 수정이 더 가해질 수 있다.
성능 정보 데이터베이스
다음으로, 성능 정보 데이터베이스(302)는 도 5b에 예시된 바와 같이 포맷 데이터베이스(301)에 저장된 각 트랜스코딩 포맷에 기초한 트랜스코딩 작업시 각 CPU(340) 및 GPU(350) 등 각 하드웨어 자원에서 얻을 수 있는 수행 시간이나 소비 전력 등의 성능 지표들의 값을 저장하고 있다. 도 5b에서는 중요한 성능 지표로서 수행 시간 및 소비 전력의 값이 도시되었지만 그 외에도 GPU 개입 여부 및 CPU와 GPU 등 각 하드웨어 자원에 대한 트랜스코딩의 최적의 할당을 위해 필요한 다양한 성능 지표가 존재할 수 있으므로 이러한 성능 지표 또한 얻어지고 저장될 수 있다. 구체적으로 살펴보면, 도 5a에서 ID 값이 0에 해당하는 트랜스코딩 포맷으로 트랜스코딩 서버(300) 내의 각 CPU(340) 및 GPU(350)에서 트랜스코딩을 수행한 결과, CPU(340)에서는 5초간의 수행 시간이 걸리고 이에 따른 소비 전력은 5w임을, 그리고 GPU(350)에서는 2.5초의 소요시간이 걸리는 한편 이에 따른 소비 전력은 10w임을 도 5b에서 확인할 수 있다. 도 5b에서의 성능 지표들의 값은 트랜스코딩 서버(300)에서 포맷 데이터베이스(301)에 저장된 각 트랜스코딩 포맷에 기초하여 시뮬레이션 또는 실제 트랜스코딩을 수행한 결과로서 측정되는 값일 수 있으며, 도 2에는 도시되지 않았지만 성능 지표들의 값을 구하기 위한 작업을 수행하는 별도의 구성요소가 트랜스코딩 서버(300)에 더 포함될 수 있다.
한편, 도 5b에서 스케쥴링 계수는 트랜스코딩이 특정 하드웨어 자원에서 수행될 때 다른 하드웨어 자원에서 수행될 때보다 더 효율적인지 여부를 확인할 수 있는 수치로서 각 성능 지표들의 값에 기초하여 산출될 수 있으며, 예시적인 계산식은 이하의 수학식 1과 같다.
Figure 112012090911614-pat00001
여기서 Tcpu 및 Tgpu는 각각 CPU 및 GPU로 트랜스코딩 수행시 소요되는 수행 시간을 의미하고, Wcpu 및 Wgpu는 각각 CPU 및 GPU로 트랜스코딩 수행시 소비되는 소비 전력을 의미한다.
상기 수학식 1에 도 5b의 각 성능 지표들을 이용하여 스케쥴링 계수를 계산해 보면, 예컨대 ID가 0인 경우 CPU의 시간 및 전력은 각각 5, 그리고 GPU의 시간은 2.5이고 전력은 10이므로 25/25 = 1이 스케쥴링 계수가 됨을 알 수 있다. 즉, 수학식 1에 의하면 스케쥴링 계수는 CPU의 트랜스코딩 성능이 GPU의 트랜스코딩 성능보다 좋을수록(즉, CPU의 수행 시간이 작거나 소비 전력이 낮을수록, 또는 GPU의 수행 시간이 크거나 소비 전력이 클수록) 낮아지고, CPU의 트랜스코딩 성능이 나쁠수록 커지므로 상기 도 5b를 참조하면 ID가 0인 경우 스케쥴링 계수가 1, ID가 1인 경우 스케쥴링 계수가 1.5이므로 ID가 0인 경우의 트랜스코딩 포맷보다 ID가 1인 경우의 트랜스코딩 포맷이 상대적으로 GPU에서 더 좋은 성능을 보여줌을 알 수 있다. 스케쥴링 계수를 이용하여 어떻게 트랜스코딩 작업을 할당할지에 대해서는 이하에서 상세히 설명하도록 한다.
다음으로, 송수신부(310)는 사용자 단말(100)로부터 특정 멀티미디어 컨텐츠의 재생을 요청 받는 경우, 상기 재생 요청을 작업 큐(320)에 전달하고, 해당 컨텐츠가 트랜스코딩된 후 요청한 사용자 단말(100)로 전송하는 기능을 수행한다. 그 밖에도, 사용자 단말(100)로부터 수신되는 단말 정보를 제어부 등으로 제공하는 기능을 더 수행할 수 있다.
한편, 작업 큐(320)는 다수의 사용자 단말(100)로부터 수신한 컨텐츠 재생 요청을 수신하고, 상기 요청을 순서대로 저장하여 두었다가 스케쥴러(330)의 요청에 의해 하나씩 제공하는 기능을 수행한다. 작업 큐(320)는 큐 내에 상기 요청을 전송한 사용자 단말(100)의 단말 정보 중 적어도 일부를 더 저장할 수 있다.
다음으로, 스케쥴러(330)는 작업 큐(320)에 데이터가 존재하는 경우 이를 모두 비울때까지 지속적으로 동작하면서 큐 내에 저장된 컨텐츠 재생 요청을 한 사용자 단말(100)의 단말 정보 및 해당 단말에 최적인 트랜스코딩 포맷에 기초하여 GPU의 개입 여부, 그리고 CPU 및 GPU 중 하드웨어 자원을 선택하여 재생 요청된 컨텐츠의 트랜스코딩 작업을 할당하는 역할을 수행한다. 보다 구체적으로 설명하면, 스케쥴러(330)는 작업 큐(320)에 데이터가 존재하는지를 확인하고, 만일 데이터가 존재하는 경우 이를 판독한다. 전술한 바와 같이 작업 큐(320)에 저장된 데이터는 특정 멀티미디어 컨텐츠에 대한 재생 요청이며, 요청을 전송한 사용자 단말(100)의 단말 정보 중 적어도 일부를 더 포함한다. 스케쥴러(330)는 상기 단말 정보에 기초하여 사용자 단말(100)의 특성을 인식하고 이에 최적인 트랜스코딩 포맷을 포맷 데이터베이스(301)로부터 선택한다. 또한, 스케쥴러(330)는 상기 포맷 데이터베이스(301)로부터 선택된 포맷과 동일한 ID 값을 갖는 데이터를 성능 정보 데이터베이스(302)로부터 추출하고 이 중 스케쥴링 계수가 특정 레벨 값 이상인 경우 GPU(350)에, 그렇지 않은 경우 CPU에 해당 트랜스코딩 작업을 할당할 수 있다. 여기서 특정 레벨 값은 다양한 성능 지표 중에 어느 성능 지표가 더 중요한지에 따라 달라질 수 있는 등 다양하게 설정될 수 있는 값이다. 예를 들어 특정 레벨 값을 1.2로 설정한다면 도 5a, 5b의 표에서 ID가 0에 해당하는 트랜스코딩 작업은 CPU(340)에, ID가 1에 해당하는 트랜스코딩 작업은 GPU(350)에 할당되는 것을 알 수 있다.
또한, 스케쥴러(330)는 각 하드웨어 자원들이 현재 유휴인지 여부를 더 판단하고, 이를 추가적으로 고려하여 작업을 할 수도 있다. 예컨대, CPU(340) 및 GPU(350)는 주기적으로 또는 스케쥴러(330)의 요청에 의해 현재 상태를 전송하게 되며 스케쥴러(330)는 이에 기초하여 다수의 하드웨어 자원들 중 유휴 상태인지, 또는 언제 유휴 상태가 되는지를 확인할 수 있다. 따라서 스케쥴러(330)는 유휴 상태인 하드웨어 자원들만을 대상으로 트랜스코딩을 작업 할당할 수 있고, 이 경우 할당하고자 하는 하드웨어 자원이 모두 유휴 상태가 아닌 경우(예컨대 스케쥴링 계수가 1이나 CPU가 모두 유휴가 아닌 경우) 최적화된 자원이 아닐지라도 유휴 상태인 다른 하드웨어 자원(예컨대 GPU)에 트랜스코딩 작업을 할당할 수도 있고, 또는 최적화된 자원들이 유휴 상태로 돌아가는데 걸리는 시간을 측정하고 그 시간에 기초하여 최적화된 자원에서 다음 작업으로 수행하도록 하거나 유휴 상태인 다른 하드웨어 자원에서 작업이 수행되도록 결정할 수 있는 등 다양하게 알고리즘을 설계할 수 있다.
도 3은 본 발명에 따른 트랜스코딩 작업 할당을 보여주는 작업 처리도로서, 도 3을 참조하면 작업 큐(320) 내에 컨텐츠 재생 요청에 대응하는 데이터가 2개 쌓여 있음을 알 수 있다. 스케쥴러(330)는 작업 큐(320)가 비어 있지 않음을 확인하고, 이 중 첫 번째 데이터(361)를 추출하고, 포맷 데이터베이스(301) 및 성능 정보 데이터베이스(302)를 이용하여 스케쥴링 계수를 확인한다. 또한, 스케쥴러(330)는 트랜스코딩을 처리할 수 있는 2개의 CPU(340a, 340b) 및 3개의 GPU(350a, 350b, 350c)로부터 상태 정보를 수신하고, 각 하드웨어 자원이 현재 유휴 상태인지 또는 언제 유휴 상태가 되는지를 확인한다. 스케쥴링 계수 및 상태 정보에 기초하여 스케쥴러(330)는 최종적으로 트랜스코딩 작업을 수행할 하드웨어 자원을 할당하는데 도 3에서는 CPU(340a)가 선택되었음을 알 수 있다. 아직 작업 큐(320)가 비어있지 않기 때문에 스케쥴러(330)는 다음 데이터(362)를 추출하고 전술한 방식과 같이 상태 정보 및 스케쥴링 계수에 기초하여 트랜스코딩 작업을 수행할 하드웨어 자원으로서 GPU(350a)를 할당하였음을 확인할 수 있다.
마지막으로 CPU(340) 및 GPU(350)는 각각 중앙 처리 장치 및 그래픽 처리 장치로서 멀티미디어 컨텐츠의 트랜스코딩 작업을 수행할 수 있는 기능을 가지며, 스케쥴러(330)로부터 트랜스코딩 작업 요청 및 트랜스코딩할 포맷 정보를 할당받아 트랜스코딩을 수행한다. 또한, CPU(340) 및 GPU(350)는 주기적으로 또는 스케쥴러(330)의 요청에 의해 현재 유휴 상태인지 등을 나타내는 현재 상태 정보를 제공할 수 있다. 본 발명에서는 하나의 물리적인 트랜스코딩 서버(300)가 복수 개의 물리적인 CPU(340) 및 GPU(350)를 구비할 수도 있고, 또는 CPU 및 GPU에서 트랜스코딩 작업을 병렬적으로 수행할 수 있는 독립적인 단위(예컨대 멀티코어에 해당하고 트랜스코딩 작업이 싱글코어 작업인 경우, 각 코어들)를 각각의 CPU(340) 및 GPU(350)로 볼 수도 있다.
한편, CPU(340) 또는 GPU(350)에서 트랜스코딩이 진행되는 중간에도, 트랜스코딩된 부분은 송수신부(310)를 이용하여 요청한 사용자 단말(100)로 제공되도록 할 수 있다.
트랜스코딩 작업 할당 방법
도 4는 본 발명에 따른 트랜스코딩 작업 할당 방법을 나타내는 흐름도이다. 도 4를 참조하면, 트랜스코딩 서버(300)는 사용자 단말(100)로부터 특정 멀티미디어 컨텐츠에 대한 재생 요청을 수신하는 경우(S401), 작업 큐(320)에 그 순서대로 저장(S402)한다. 여기서 작업 큐에 저장되는 데이터에는 상기 재생 요청을 전송한 사용자 단말(100)의 단말 정보 중 적어도 일부를 더 포함할 수 있는 것은 전술한 바와 같다.
한편, 트랜스코딩 서버(300)는 스케쥴러(330)를 통해 작업 큐(320)에 데이터가 존재하는지 여부를 확인(S403)하고 존재하는 경우 모두 비울때까지 지속적으로 동작하면서 이하의 동작을 반복한다.
먼저, 작업 큐(320) 내에 저장된 데이터를 추출(S404)하고, 상기 추출된 데이터에 기초하여 트랜스코딩할 포맷을 설정(S405)한다. 보다 구체적으로, 상기 추출된 데이터에 포함될 수 있는 사용자 단말(100)의 단말 정보 및 포맷 데이터베이스(301)를 이용하여 해당 사용자 단말(100)에 최적인 트랜스코딩 포맷을 선택한다.
다음으로, CPU(340) 및 GPU(350) 등 트랜스코딩을 수행할 수 있는 각 하드웨어 자원으로부터 현재의 상태 정보를 수신(S406)한다. 상태 정보에는 현재 해당 하드웨어 자원이 유휴 상태에 있는지, 또는 언제부터 유휴 상태로 될 수 있는지 등에 대한 정보를 포함할 수 있다.
마지막으로, 트랜스코딩 서버(300)는 선택된 트랜스코딩 포맷 및 수신한 상태 정보를 이용하여 재생 요청된 트랜스코딩 작업을 수행할 하드웨어 자원을 최종적으로 할당(S407)한다. 보다 구체적으로, 상기 선택된 포맷의 ID 값과 동일한 값을 갖는 데이터를 성능 정보 데이터베이스(302)로부터 추출하고 이 중 스케쥴링 계수와, 미리 설정된 레벨 값, 그리고 현재 유휴 상태이거나 조만간 유휴 상태가 될 하드웨어 자원들을 이용하여 작업을 수행할 하드웨어 자원을 할당할 수 있다.
한편, 도 4에는 도시되지 않았지만 트랜스코딩 서버는 트랜스코딩 중간에도 트랜스코딩된 부분을 사용자 단말로 전송할 수 있음은 이해될 수 있다.
여기에서 다양한 방법들에 관해 설명된 바와 같은 다양한 동작들 및 기능들은 특정 프로세싱 기능부 및/또는 그 안에 구현된 프로세싱 기능부, 및/또는 그 안의 다른 구성요소들과 같은 많은 유형의 기능부들 중 어느 것 내에서 수행될 수 있다. 예를 들면, 그러한 기능부들은 여기에 설명된 바와 같은 다양한 동작들 및 처리들, 또는 여기에 설명된 바와 같은 어느 다른 동작들 및 기능들, 등 또는 그 각 등가물들을 수행하는 것뿐만 아니라 여기에 설명된 바와 같은 그러한 정보들을 생성하고 그러한 동작들, 처리들 등을 수행할 수 있다.
일부 실시예들에서, 그러한 기능부들(동일한 장치 또는 구별된 장치들상에서 구현될 수 있는)은 본 발명의 다양한 측면들에 따른 그러한 처리 및 동작들, 등, 및/또는 여기에 개시된 바와 같은 어느 다른 동작들 및 기능들, 및 그 각 등가물들을 수행할 수 있다. 일부 실시예들에서, 그러한 처리는 제1 장치에서의 제1 기능부, 및 제2 장치 내의 제2 기능부에 의해 함께 수행된다. 다른 실시예들에서, 그러한 프로세싱, 동작들 등은 하나의 특정 장치 내에서 처리부들에 의해 전적으로 수행된다. 심지어 다른 실시예들에서는, 그러한 프로세싱, 동작들이 하나의 단일 디바이스내에서 적어도 제1 기능부 및 제2 기능부를 사용하여 수행된다.
또한 상술한 설명에서, 용어들 '시스템', '장치', '~부'는 단일 프로세싱 디바이스 또는 복수의 프로세싱 디바이스들일 수 있다. 그러한 프로세싱 디바이스는 마이크로 프로세서, 마이크로 컨트롤러, 디지털 신호 처리기, 마이크로 컴퓨터, 중앙 처리 유닛, 필드 프로그래머블 게이트 어레이, 프로그래머블 로직 디바이스, 스테이트 머신, 로직 회로, 아날로그 회로, 디지털 회로, 및/또는 상기 회로 및/또는 동작 지시들의 하드 코딩에 기반하여 신호들(아날로그 및/또는 디지털)을 조작하는 소정의 디바이스일 수 있다. 상기 프로세싱 모듈, 모듈, 프로세싱 회로, 및/또는 프로세싱 유닛은 단일 메모리 디바이스, 복수의 메모리 디바이스들, 및/또는 상기 프로세싱 모듈, 모듈, 프로세싱 회로, 및/또는 프로세싱 유닛의 내장된 회로일 수 있는 결합된 메모리 및/또는 집적된 메모리 엘리먼트를 가질 수 있다. 그러한, 메모리 디바이스는 읽기 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 휘발성 메모리, 비휘발성 메모리, 정적 메모리, 동적 메모리, 플래시 메모리, 캐시 메모리, 및/또는 디지털 정보를 저장하는 소정의 디바이스일 수 있다. 만약, 상기 프로세싱 모듈, 모듈, 프로세싱 회로, 및/또는 프로세싱 유닛이 하나 이상의 프로세싱 디바이스를 포함한다면, 상기 프로세싱 디바이스들은 집중적으로 위치될 수 있거나(즉, 유선 및/또는 무선 버스 구조를 통해 함께 직접적으로 연결된), 분산되어 위치될 수 있음(예컨대, 근거리 통신망 및/또는 광역 네트워크를 통한 간접적인 연결을 통한 클라우드 컴퓨팅)을 주목하여야 한다. 만약, 상기 프로세싱 모듈, 모듈, 프로세싱 회로, 및/또는 프로세싱 유닛이 정적 머신, 아날로그 회로, 디지털 회로, 및/또는 회로, 저장하는 메모리 및/또는 메모리 구성요소를 통해 하나 이상의 그 기능들을 구현한다면, 그 대응하는 동작 지시들은 상기 정적 머신, 아날로그 회로, 디지털 회로, 및/또는 논리 회로를 포함하는 회로의 내부에 내장되거나 외부에 있을 수 있음을 더 주목하여야 한다. 상기 메모리 엘리먼트는 저장할 수 있으며, 상기 프로세싱 모듈, 모듈, 프로세싱 회로, 및/또는 프로세싱 유닛은 상기 도면들 중 하나 이상에서 나타내는 단계들 및/또는 기능들 중 적어도 일부에 대응하는 하드 코딩된 및/또는 동작 지시들을 실행한다는 것을 여전히 더 주목하여야 한다. 그러한 메모리 디바이스 또는 메모리 엘리먼트는 제조의 부품 내에서 포함될 수 있다.
본 발명은 특정 기능들 및 그의 관계들의 성능을 나타내는 방법 단계들의 목적을 가지고 위에서 설명되었다. 이러한 기능적 구성 요소들 및 방법 단계들의 경계들 및 순서는 설명의 편의를 위해 여기에서 임의로 정의되었다. 상기 특정 기능들 및 관계들이 적절히 수행되는 한 대안적인 경계들 및 순서들이 정의될 수 있다. 임의의 그러한 대안적인 경계들 및 순서들은 그러므로 상기 청구된 발명의 범위 및 사상 내에 있다. 추가로, 이러한 기능적 구성 요소들의 경계들은 설명의 편의를 위해 임의로 정의되었다. 어떠한 중요한 기능들이 적절히 수행되는 한 대안적인 경계들이 정의될 수 있다. 마찬가지로, 흐름도 블록들은 또한 어떠한 중요한 기능성을 나타내기 위해 여기에서 임의로 정의되었을 수 있다. 확장된 사용을 위해, 상기 흐름도 블록 경계들 및 순서는 정의되었을 수 있으며 여전히 어떠한 중요한 기능을 수행한다. 기능적 구성 요소들 및 흐름도 블록들 및 순서들 둘 다의 대안적인 정의들은 그러므로 청구된 본 발명의 범위 및 사상 내에 있다. 당업자는 또한 여기에서의 상기 기능적 구성 요소들 및 다른 도시된 블록들, 모듈들, 및 구성요소들이 도시된 바와 같이 또는 분리된 구성요소들, 반도체 집적 회로(ASIC)들, 적절한 소프트웨어를 실행하는 프로세서들 및 그와 유사한 또는 임의의 조합에 의해 구현될 수 있음을 인지할 것이다.
본 발명은 또한 하나 이상의 실시예들의 용어로, 적어도 부분적으로 설명되었을 수 있다. 본 발명의 실시예는 본 발명, 그 측면, 그 특징, 그 개념, 및/또는 그 예를 나타내기 위해 여기에서 사용된다. 본 발명을 구현하는 장치, 제조의 물건, 머신, 및/또는 프로세스의 물리적인 실시예는 여기에 설명된 하나 이상의 실시예들을 참조하여 설명된 하나 이상의 측면들, 특징들, 개념들, 예들 등을 포함할 수 있다. 더구나, 전체 도면에서, 실시예들은 상기 동일한 또는 상이한 참조 번호들을 사용할 수 있는 상기 동일하게 또는 유사하게 명명된 기능들, 단계들, 모듈들 등을 통합할 수 있으며, 그와 같이, 상기 기능들, 단계들, 모듈들 등은 상기 동일한 또는 유사한 기능들, 단계들, 모듈들 등 또는 다른 것들일 수 있다.
한편, 용어 "~처리부"는 본 발명의 다양한 실시예들의 설명에서 사용된다. 모듈은 하나 이상의 출력 신호들을 생성하기 위해 하나 이상의 입력 신호들의 처리와 같은 하나 이상의 기능들을 수행하기 위해 하드웨어를 통해 구현되는 기능적 블록을 포함한다. 상기 기능적 블록을 구현하는 하드웨어는 소프트웨어 및/또는 펌웨어를 결합하여 직접 동작할 수 있다. 여기에서 사용된 바와 같이, 모듈은 자체적으로 모듈인 하나 이상의 서브-모듈들을 포함할 수 있다.
본 발명의 여러가지 기능들 및 특정들의 특별한 조합들이 여기에 분명히 설명된 반면, 이러한 특징들 및 기능들의 다른 조합들이 마찬가지로 가능하다. 본 발명은 여기에 개시된 특정한 예들에 제한되지 않으며, 이러한 다른 조합들을 명백히 통합한다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
100, 100a, 100n : 사용자 단말 200 : 통신 네트워크
300 : 트랜스코딩 서버 301 : 포맷 데이터베이스
302 : 성능정보 데이터베이스 310 : 송수신부
320 : 작업큐 330 : 스케쥴러
340 : CPU 350 : GPU

Claims (15)

  1. 트랜스코딩 작업을 수행하는 하나 이상의 CPU와 하나 이상의 GPU;
    사용자 단말로부터 수신된 컨텐츠 요청 정보를 저장하는 작업 큐; 및
    상기 저장된 컨텐츠 요청 정보에 기초하여 트랜스코딩 포맷을 설정하고, 상기 설정된 트랜스코딩 포맷에 따라 컨텐츠가 상기 하나 이상의 CPU에 의해 트랜스코딩되는 경우의 성능 정보와, 상기 설정된 트랜스코딩 포맷에 따라 상기 컨텐츠가 상기 하나 이상의 GPU에 의해 트랜스코딩되는 경우의 성능 정보에 기초하여, 상기 컨텐츠의 트랜스코딩 작업을 상기 하나 이상의 CPU 또는 상기 하나 이상의 GPU에게 할당하는 스케쥴러를 포함하는, 트랜스코딩 작업 할당 장치.
  2. 청구항 1에 있어서,
    상기 컨텐츠 요청 정보는 상기 사용자 단말의 단말 정보를 더 포함하는, 트랜스코딩 작업 할당 장치.
  3. 청구항 2에 있어서,
    상기 트랜스코딩 작업 할당 장치는,
    각 사용자 단말 별로 설정된 트랜스코딩 포맷을 저장하고 있는 포맷 데이터베이스를 더 포함하고,
    상기 스케쥴러는, 상기 사용자 단말의 단말 정보에 매칭되는 트랜스코딩 포맷을 상기 포맷 데이터베이스로부터 추출하여 설정하는, 트랜스코딩 작업 할당 장치.
  4. 청구항 3에 있어서,
    상기 트랜스코딩 작업 할당 장치는,
    상기 포맷 데이터베이스에 저장된 각 트랜스코딩 포맷 별로 얻어지는 상기 하나 이상의 CPU 및 하나 이상의 GPU의 성능 정보를 저장하고 있는 성능 정보 데이터베이스를 더 포함하며,
    상기 스케쥴러는, 상기 설정된 트랜스코딩 포맷으로 얻어지는 상기 하나 이상의 CPU 및 하나 이상의 GPU의 성능 정보에 기초하여 산출된 스케쥴링 계수를 상기 성능 정보 데이터베이스로부터 추출하고, 미리 설정된 레벨 값과 대비하여 상기 컨텐츠의 트랜스코딩 작업을 상기 하나 이상의 CPU 또는 하나 이상의 GPU에 할당하는, 트랜스코딩 작업 할당 장치.
  5. 청구항 4에 있어서,
    상기 성능 정보는,
    수행 시간 및 소비 전력을 포함하는, 트랜스코딩 작업 할당 장치.
  6. 청구항 4에 있어서,
    상기 스케쥴러는,
    상기 하나 이상의 CPU 및 하나 이상의 GPU의 상태 정보를 더 수신하고, 상기 컨텐츠의 트랜스코딩 작업 할당시 상기 상태 정보를 더 고려하는, 트랜스코딩 작업 할당 장치.
  7. 청구항 6에 있어서,
    상기 상태 정보는,
    상기 하나 이상의 CPU 및 하나 이상의 GPU 중 어느 것이 유휴 상태인지 또는 언제 유휴 상태가 되는지에 관한 정보를 포함하고,
    상기 스케쥴러는,
    유휴 상태이거나 특정 시간 이후 유휴 상태가 되는 하나 이상의 CPU 또는 하나 이상의 GPU 중에서 상기 컨텐츠의 트랜스코딩 작업을 할당하는, 트랜스코딩 작업 할당 장치.
  8. 트랜스코딩 작업 할당 방법은, 트랜스코딩 서버에 의해 수행되는 각 단계가,
    사용자 단말로부터 수신된 컨텐츠 요청 정보를 작업 큐에 저장하는 단계;
    상기 저장된 컨텐츠 요청 정보에 기초하여 트랜스코딩 포맷을 설정하는 단계; 및
    상기 설정된 트랜스코딩 포맷에 따라 컨텐츠가 하나 이상의 CPU에 의해 트랜스코딩되는 경우의 성능 정보와, 상기 설정된 트랜스코딩 포맷에 따라 상기 컨텐츠가 하나 이상의 GPU에 의해 트랜스코딩되는 경우의 성능 정보에 기초하여, 상기 컨텐츠의 트랜스코딩 작업을 상기 하나 이상의 CPU 또는 상기 하나 이상의 GPU에게 할당하는 단계를 포함하는, 트랜스코딩 작업 할당 방법.
  9. 청구항 8에 있어서,
    상기 컨텐츠 요청 정보는,
    상기 사용자 단말의 단말 정보를 더 포함하는, 트랜스코딩 작업 할당 방법.
  10. 청구항 9에 있어서,
    상기 트랜스코딩 포맷 설정 단계는,
    상기 사용자 단말의 단말 정보에 매칭되는 트랜스코딩 포맷을 포맷 데이터베이스로부터 추출하여 설정하는 단계를 포함하고,
    상기 포맷 데이터베이스는, 각 사용자 단말 별로 설정된 트랜스코딩 포맷을 저장하고 있는, 트랜스코딩 작업 할당 방법.
  11. 청구항 10에 있어서,
    상기 트랜스코딩 작업 할당 단계는,
    상기 설정된 트랜스코딩 포맷으로 얻어지는 하나 이상의 CPU 및 하나 이상의 GPU의 성능 정보에 기초하여 산출된 스케쥴링 계수를 성능 정보 데이터베이스로부터 추출하는 단계; 및
    상기 추출된 스케쥴링 계수를 미리 설정된 레벨 값과 대비하여 상기 컨텐츠의 트랜스코딩 작업을 상기 하나 이상의 CPU 또는 하나 이상의 GPU에 할당하는 단계를 포함하며,
    상기 성능 정보 데이터베이스는 상기 포맷 데이터베이스에 저장된 각 트랜스코딩 포맷별로 얻어지는 상기 하나 이상의 CPU 및 하나 이상의 GPU의 성능 정보를 저장하고 있는, 트랜스코딩 작업 할당 방법.
  12. 청구항 11에 있어서,
    상기 성능 정보는,
    수행 시간 및 소비 전력을 포함하는, 트랜스코딩 작업 할당 방법.
  13. 청구항 11에 있어서,
    상기 트랜스코딩 작업 할당 방법은,
    상기 컨텐츠의 트랜스코딩 작업을 상기 하나 이상의 CPU 또는 하나 이상의 GPU에 할당하기 전에, 상기 하나 이상의 CPU 및 하나 이상의 GPU의 상태 정보를 수신하는 단계를 더 포함하고,
    상기 트랜스코딩 작업을 상기 하나 이상의 CPU 또는 하나 이상의 GPU에 할당하는 단계는,
    상기 상태 정보를 더 고려하여 상기 컨텐츠의 트랜스코딩 작업을 상기 하나 이상의 CPU 또는 하나 이상의 GPU에 할당하는 단계인, 트랜스코딩 작업 할당 방법.
  14. 청구항 13에 있어서,
    상기 상태 정보는,
    상기 하나 이상의 CPU 및 하나 이상의 GPU 중 어느 것이 유휴 상태인지 또는 언제 유휴 상태가 되는지에 관한 정보를 포함하고,
    상기 트랜스코딩 작업을 상기 하나 이상의 CPU 또는 하나 이상의 GPU에 할당하는 단계는,
    유휴 상태이거나 특정 시간 이후 유휴 상태가 되는 하나 이상의 CPU 또는 하나 이상의 GPU 중에서 상기 컨텐츠의 트랜스코딩 작업을 할당하는 단계인, 트랜스코딩 작업 할당 방법.
  15. 청구항 8 내지 청구항 14 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터 판독 가능한 기록 매체.
KR1020120124680A 2012-11-06 2012-11-06 트랜스코딩 작업 할당 장치, 방법 및 컴퓨터 판독 가능한 기록 매체 KR101569502B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120124680A KR101569502B1 (ko) 2012-11-06 2012-11-06 트랜스코딩 작업 할당 장치, 방법 및 컴퓨터 판독 가능한 기록 매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120124680A KR101569502B1 (ko) 2012-11-06 2012-11-06 트랜스코딩 작업 할당 장치, 방법 및 컴퓨터 판독 가능한 기록 매체

Publications (2)

Publication Number Publication Date
KR20140058091A KR20140058091A (ko) 2014-05-14
KR101569502B1 true KR101569502B1 (ko) 2015-11-17

Family

ID=50888571

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120124680A KR101569502B1 (ko) 2012-11-06 2012-11-06 트랜스코딩 작업 할당 장치, 방법 및 컴퓨터 판독 가능한 기록 매체

Country Status (1)

Country Link
KR (1) KR101569502B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10764396B2 (en) 2017-12-18 2020-09-01 The Directv Group, Inc. Media transcoding based on priority of media
KR20230076325A (ko) 2021-11-24 2023-05-31 인하대학교 산학협력단 엣지 컴퓨팅 환경에서 라이브 비디오 스트리밍 품질을 고려한 비용 최적화를 위한 트랜스코딩 작업 할당 방법 및 시스템

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102011402B1 (ko) * 2018-08-21 2019-08-16 한밭대학교 산학협력단 쿠다를 사용하여 gpu 리소스를 분배하는 지능형 얼굴 인식과 트래킹 시스템
KR102128611B1 (ko) * 2018-12-07 2020-07-01 동국대학교 산학협력단 분산 트랜스코딩을 위한 장치 및 방법
KR102289670B1 (ko) * 2020-04-07 2021-08-13 인하대학교 산학협력단 이기종 프로세서를 사용한 트랜스코딩 서버의 비디오 품질 최대화를 위한 태스크 할당 및 스케쥴링 기법
CN114501067A (zh) * 2022-01-10 2022-05-13 成都易达数安科技有限公司 一种多gpu并发的媒资转码任务自动调度方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090016430A1 (en) 2007-05-11 2009-01-15 Advance Micro Devices, Inc. Software Video Encoder with GPU Acceleration

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090016430A1 (en) 2007-05-11 2009-01-15 Advance Micro Devices, Inc. Software Video Encoder with GPU Acceleration

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10764396B2 (en) 2017-12-18 2020-09-01 The Directv Group, Inc. Media transcoding based on priority of media
US11349954B2 (en) 2017-12-18 2022-05-31 Directv, Llc Media transcoding based on priority of media
US11750722B2 (en) 2017-12-18 2023-09-05 Directv, Llc Media transcoding based on priority of media
KR20230076325A (ko) 2021-11-24 2023-05-31 인하대학교 산학협력단 엣지 컴퓨팅 환경에서 라이브 비디오 스트리밍 품질을 고려한 비용 최적화를 위한 트랜스코딩 작업 할당 방법 및 시스템

Also Published As

Publication number Publication date
KR20140058091A (ko) 2014-05-14

Similar Documents

Publication Publication Date Title
KR101569502B1 (ko) 트랜스코딩 작업 할당 장치, 방법 및 컴퓨터 판독 가능한 기록 매체
US9106521B2 (en) Method and system for visualizing an adaptive screen according to a terminal
CN104871132B (zh) 介质硬件资源分配
CN108965884B (zh) 一种转码任务的分配方法及调度设备、转码设备
CN109213593A (zh) 用于全景视频转码的资源分配方法、装置和设备
US9513942B2 (en) Apparatus and method for providing contents service with virtual machine
CA3057894C (en) Video compression using down-sampling patterns in two phases
JP2011176828A (ja) レートシェーピング方法及びレートシェーピング装置
CN111836092A (zh) 一种虚拟桌面的数据处理方法、装置及相关组件
JP2015510355A (ja) コンピュータにより実行される方法及び記憶媒体
JP2014192566A (ja) 映像処理装置、映像処理方法およびコンピュータプログラム
JP2017022529A (ja) 通信システム、通信装置、通信方法、及び、プログラム
KR101882889B1 (ko) 비디오 트랜스코딩 방법 및 시스템
KR101540217B1 (ko) 자동으로 최적의 트랜스코딩을 수행하는 장치, 시스템, 방법 및 컴퓨터 판독 가능한 기록 매체
TW200408227A (en) Digital item adaptation system via URL
KR101819193B1 (ko) 실시간 파일 포맷 변환 스트리밍 서비스 방법
US20190260817A1 (en) Providing apparatus, data providing method, and storage medium
KR101654898B1 (ko) 적응형 스트리밍 서비스를 수신하는 방법
US20230421513A1 (en) Storage devices, methods of operating storage devices, and streaming systems including storage devices
KR101836220B1 (ko) 미디어 공유 장치 및 그 방법
KR20220118332A (ko) 실시간 스트리밍을 위한 svc 처리 장치 및 방법
US20150215658A1 (en) Bypassing apparatus and method for providing content
Kent et al. On-demand hd video using jini based grid
WO2018184223A1 (zh) 一种视频压缩处理方法及装置
JP2016031552A (ja) 画像供給装置、画像表示装置、画像表示システム及び画像供給プログラム

Legal Events

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

Payment date: 20181105

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20191001

Year of fee payment: 5