KR100313432B1 - 초기 대기시간을 감소시키는 비디오 저장서버 및 그의 운용방법 - Google Patents

초기 대기시간을 감소시키는 비디오 저장서버 및 그의 운용방법 Download PDF

Info

Publication number
KR100313432B1
KR100313432B1 KR1019990039598A KR19990039598A KR100313432B1 KR 100313432 B1 KR100313432 B1 KR 100313432B1 KR 1019990039598 A KR1019990039598 A KR 1019990039598A KR 19990039598 A KR19990039598 A KR 19990039598A KR 100313432 B1 KR100313432 B1 KR 100313432B1
Authority
KR
South Korea
Prior art keywords
video
time
disk
disk read
clients
Prior art date
Application number
KR1019990039598A
Other languages
English (en)
Other versions
KR20010027716A (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 KR1019990039598A priority Critical patent/KR100313432B1/ko
Publication of KR20010027716A publication Critical patent/KR20010027716A/ko
Application granted granted Critical
Publication of KR100313432B1 publication Critical patent/KR100313432B1/ko

Links

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
    • H04N21/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4334Recording operations
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • 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/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Television Signal Processing For Recording (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

본 발명은 비디오 데이터를 저장하고 있다가 요청이 있을 때 클라이언트 시스템들에게 전송하는 비디오 저장서버 및 그의 운용방법에 관한 것이다.
이러한 비디오 저장서버는, 읽기단위 분량별로 분할된 비디오가 2개의 디스크군들에게 순차적으로 교번되게 저장되며, 하나의 읽기단위 분량의 비디오 데이터는 상기 디스크군을 구성하는 다수의 디스크들에게 분할되어 저장되는 데이터 저장수단과; 지원 가능한 최대 클라이언트의 수(N)를 기준으로 초기 디스크 읽기요구를 허용할 지의 여부를 판단하는 허용 제어수단; 상기 허용 제어수단에서 허용된 초기 디스크 읽기요구는 허용 대기시간내에 처리되고, 기존의 처리중이던 디스크 읽기요구들은 해당 라운드내에 적어도 한 번은 처리될 수 있도록 스케쥴링하여, 상기 스케쥴링된 순서에 따라 상기 데이터 저장수단으로부터 읽기단위 분량의 비디오 데이터를 읽어오는 요구 처리수단; 및 네크워크로부터 수신한 클라이언트의 메시지를 허용 제어수단에게 전달하고, 상기 허용 제어수단으로부터 초기 디스크 읽기요구가 허용되면 상기 요구 처리수단으로부터 제공되는 읽기단위 분량의 비디오 데이터를 네트워크를 통해 해당 클라이언트에게 전송하는 전송 처리수단을 포함한다.

Description

초기 대기시간을 감소시키는 비디오 저장서버 및 그의 운용방법 {Apparatus and method for reducing initial latency of video storager server}
본 발명은 비디오 저장서버에 관한 것으로서, 보다 상세하게 설명하면 비디오 데이터를 저장하고 있다가 요청이 있을 때 클라이언트 시스템들에게 전송하는 초기 대기시간을 감소시키는 비디오 저장서버 및 그의 운용방법에 관한 것이다.
도 1은 일반적인 비디오 저장서버(100)의 개략적인 구성도이다. 이는 중앙처리장치(CPU)(101)와, 메모리(103), 네트워크 카드(105), 스카씨 카드(SCSI card)(107), 및 디스크(109)를 구비한다. 이 비디오 저장서버(100)는, 일정 주기마다 디스크(109)에 저장되어 있는 비디오 데이터를 일정량만큼씩 읽어서 네트워크를 통하여 클라이언트 시스템(111)에 송신하는 시스템이다.
종래에는 메모리를 적게 사용하면서 디스크를 효과적으로 제어하여 보다 많은 클라이언트 시스템들에게 비디오 데이터를 송신하기 위한 연구가 주를 이루었었다. 이러한 종래의 비디오 저장서버는 시스템 설계시에 일정한 주기(period)를 설정하고, 설정된 주기별로 여러 클라이언트 시스템들의 데이터 읽기요구들을 동시에 처리하는 방식을 채택하였다.
따라서, 이러한 기존의 방법들로는 동시에 지원 가능한 클라이언트 시스템 수는 증가하지만, 클라이언트 시스템이 디스크를 읽기요구하였을 때 해당 비디오 데이터가 처음으로 읽혀지는 초기 대기시간이 수 십초대로 길어지는 문제점이 있었다.
이같이 긴 초기 대기시간은 주문형 비디오시스템(video on demand system)과 같은 영화를 재생할 때에는 별 문제가 되지 않았다. 그러나, 비교적 짧은 시간동안 재생되는 단편 비디오나 사용자의 인터랙션(interaction)이 빈번한 비디오의 경우에는 동시 지원가능한 사용자의 수를 많이 하는 것보다 초기 대기시간을 짧게 하는 것이 더 중요하다.
이 초기 대기시간을 감소하기 위한 방법으로서, 설정된 주기별로 여러 클라이언트 시스템들의 디스크 읽기요구들을 동시에 처리하는 방식과, 클라이언트 시스템들의 디스크 읽기요구들을 개별적으로 처리하는 방식이 있다. 그러나, 이와 같이 초기 대기시간을 감소하려면 비디오 저장서버가 동시에 지원할 수 있는 클라이언트 시스템의 수가 현저하게 감소하여 비디오 저장서버의 경제성이 악화되는 문제점이 있다.
따라서, 본 발명은 상기와 같은 종래기술의 문제점을 해결하기 위하여 안출된 것으로서, 그 목적은 초기 대기시간은 짧고, 동시에 지원 가능한 사용자의 수는 최대가 되는 초기 대기시간을 감소시키는 비디오 저장서버 및 그의 운용방법을 제공하는 데 있다.
도 1은 일반적인 비디오 저장서버의 하드웨어 구성도,
도 2는 본 발명의 한 실시예에 따른 비디오 저장서버의 설계방법을 도시한 흐름도,
도 3은 본 발명의 한 실시예에 따른 초기 대기시간 감소를 위한 비디오 저장서버의 구성도,
도 4는 도 3에 도시된 허용 제어기(Admission Control Manager)의 처리 흐름도,
도 5와 도 6은 도 3에 도시된 요구 처리기(Request Handler)의 처리 흐름도,
도 7은 도 3에 도시된 전송 처리기(Delivery Manager)의 처리 흐름도이다.
※ 도면의 주요부분에 대한 부호의 설명 ※
301 : 허용 제어기 303 : 디스크 요구 큐
304 : 결과 메시지 큐 305 : 요구 처리기
307 : 요구 메시지 큐 309 : 기록 메시지 큐
311 : 데이터 버퍼 313 : 전송 처리기
315 : 미디어 파일 서브시스템 317 : 디스크
321 : 세션정보
상기한 목적을 달성하기 위한 본 발명에 따른 비디오 저장서버는, 다수의 클라이언트들로부터의 디스크 읽기요구들에 대응되는 비디오를 검색하여 해당 클라이언트에게 제공하는 비디오 저장서버에 있어서, 읽기단위 분량별로 분할된 비디오가 2개의 디스크군들에게 순차적으로 교번되게 저장되며, 하나의 읽기단위 분량의 비디오 데이터는 상기 디스크군을 구성하는 다수의 디스크들에게 분할되어 저장되는 데이터 저장수단과; 지원 가능한 최대 클라이언트의 수(N)를 기준으로 초기 디스크 읽기요구를 허용할 지의 여부를 판단하는 허용 제어수단; 상기 허용 제어수단에서 허용된 초기 디스크 읽기요구는 허용 대기시간내에 처리되고, 기존의 처리중이던 디스크 읽기요구들은 해당 라운드내에 적어도 한 번은 처리될 수 있도록 스케쥴링하여, 상기 스케쥴링된 순서에 따라 상기 데이터 저장수단으로부터 읽기단위 분량의 비디오 데이터를 읽어오는 요구 처리수단; 및 네크워크로부터 수신한 클라이언트의 메시지를 허용 제어수단에게 전달하고, 상기 허용 제어수단으로부터 초기 디스크 읽기요구가 허용되면 상기 요구 처리수단으로부터 제공되는 읽기단위 분량의 비디오 데이터를 네트워크를 통해 해당 클라이언트에게 전송하는 전송 처리수단을 포함한 것을 특징으로 한다.
양호하게는, 상기 요구 처리수단으로부터 제공되는 읽기단위 분량의 비디오 데이터를 저장하기 위한 데이터버퍼와; 상기 허용 제어수단과 전송 처리수단 사이에서 메시지를 임시 저장하기 위한 요구 메시지 큐 및 기록 메시지 큐와; 상기 허용 제어수단과 요구 처리수단 사이에서 메시지를 임시 저장하기 위한 디스크 요구 큐 및 결과 메시지 큐를 더 포함한다.
또한 본 발명에 따르면, 다수의 클라이언트들로부터의 디스크 읽기요구들에 대응되는 비디오를 검색하여 해당 클라이언트에게 제공하는 비디오 저장서버를 설계하는 방법이 제공된다.
이러한 비디오 저장서버의 설계방법은, 비디오 데이터를 저장하는 디스크들의 개수(d)와, 디스크의 트랙 크기(trackSize), 디스크의 탐색시간(seekTime), 디스크의 회전시간(rotateTime), 디스크의 동작개시시간(startupTime), 허용 초기 대기시간(latencyTime), 및 클라이언트 시스템에서의 비디오 재생속도(playRate)가 결정된 상태에서; 디스크 읽기주기인 라운드 시간(roundTime)과, 지원 가능한 최대 클라이언트 수(N), 라운드를 분할한 구간의 개수(G), 허용된 초기 대기시간(latencyTime), 및 읽기단위 분량의 비디오 데이터를 읽기 위해 필요한 디스크 총 회전수(k) 사이의 관계식을 도출하는 제1단계와; 실제로 데이터를 읽는 시간과, 데이터를 읽기 위해 시작부분으로 이동하는 회전 대기시간을 합하여 상기 라운드 시간을 결정하는 제2단계; 읽기단위 분량의 비디오 데이터가 재생되는 시간이 상기 라운드 시간보다 크도록 상기 읽기단위의 크기를 계산하는 제3단계; 하나의 구간이 수행되는 시간의 2배보다 상기 허용 초기 대기시간이 작도록 상기 구간의 개수를 결정하는 제4단계; 상기 라운드 시간과, 하나의 라운드에서의 총 디스크 탐색시간, 디스크 동작개시시간, 및 읽기단위 분량의 비디오데이터를 읽기 위해 필요한 시간 등을 이용하여 지원 가능한 총 클라이언트 수를 계산하는 제5단계; 및 상기 디스크 읽기단위의 크기와 총 클라이언트 수를 곱하여 필요한 총 메모리의 크기를 구하는 제6단계를 포함한 것을 특징으로 한다.
또한, 본 발명에 따르면 위에서 언급하였던 비디오 저장서버을 설계하는 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체가 제공된다.
또한, 본 발명에 따르면 다수의 클라이언트들로부터의 디스크 읽기요구들에 대응되는 비디오를 검색하여 해당 클라이언트에게 제공하는 비디오 저장서버의 운용방법이 제공된다.
이러한 비디오 저장서버의 운용방법은, 하나의 비디오를 읽기단위 분량별로 분할하여 2개의 디스크군들에게 순차적으로 교번되게 저장하는 제 1 단계와; 클라이언트 시스템으로부터 초기 디스크 읽기요구가 입력되면 지원 가능한 최대 클라이언트 수(N)를 기준으로 상기 초기 디스크 읽기요구를 허용할 지의 여부를 판단하는 제 2 단계; 상기 제 2 단계에서 허용된 초기 디스크 읽기요구는 허용 대기시간내에 처리되고, 처리 중인 디스크 읽기요구들은 라운드마다 한 번은 처리될 수 있도록 스케쥴링하여, 상기 스케쥴링된 순서에 따라 읽기단위 분량의 비디오 데이터를 읽어오는 제 3 단계; 및 상기 제 3 단계에서 읽어온 읽기단위 분량의 비디오 데이터를 해당 클라이언트에게 전송하는 제 4 단계를 포함한 것을 특징으로 한다.
양호하게는, 상기 제 2 단계는, 기존에 진행 중이던 디스크 읽기요구가 종료되었는 지를 판단하는 제 1 서브단계와, 제 1 서브단계에서 디스크 읽기요구의 종료가 있으면 현재 클라이언트 수(noUsers)에서 1을 감하여 상기 현재 클라이언트 수를 갱신하는 제 2 서브단계, 임의의 클라이언트 시스템으로부터 새로운 디스크 읽기요구가 입력되었는 지를 판단하는 제 3 서브단계, 제 3 서브단계에서 새로운 디스크 읽기요구가 입력되면 현재 클라이언트 수가 지원 가능한 최대 클라이언트 수보다 작은 지를 판단하는 제 4 서브단계, 및 상기 현재 클라이언트 수가 지원 가능한 최대 클라이언트 수보다 작으면 해당 클라이언트 시스템에게 '비디오 재생' 메시지를 전송하고, 작지 않으면 해당 클라이언트 시스템에게 '요구거절' 메시지를 전송하는 제 5 서브단계를 포함한다.
양호하게는, 상기 제 3 단계는, 상기 제 2 단계에서 허용된 초기 디스크 읽기요구에 높은 우선순위를 부여하고 기존의 처리중이던 다른 디스크 읽기요구들과 함께 정렬하는 제 1 서브단계와, 하나의 구간에서 처리할 수 있는 디스크 읽기요구들을 우선순위에 따라 순차적으로 처리하여 해당 비디오 데이터를 읽어오는 제 2 서브단계, 상기 제 2 서브단계에서 처리된 초기 디스크 읽기요구들의 우선순위를 낮추는 제 3 서브단계, 및 하나의 라운드를 구성하는 모든 구간들에 대해 상기 제 1 서브단계 내지 제 2 서브단계를 반복 수행하는 제 4 서브단계를 포함한다.
보다 양호하게는, 2개의 비디오군들에 중복 저장된 인기비디오에 대한 초기 디스크 읽기요구가 입력되면, 상기 두 비디오군들의 부하들을 상호 비교하여 적은 부하의 디스크군으로부터 해당 인기비디오를 읽어오도록 한다.
또한, 본 발명에 따르면 위에서 언급하였던 비디오 저장서버를 운용하는 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체가 제공된다.
이하, 첨부된 도면을 참조하면서 본 발명의 한 실시예에 따른 '비디오 저장서버 및 그의 운용방법'을 보다 상세하게 설명하면 다음과 같다.
본 발명에서는 비디오 저장서버가 클라이언트 시스템들에게 비디오 데이터를 보내주는 주기(period)인 라운드(round)를 여러 개의 구간(slot)들로 나누어, 하나의 구간(slot)에서 다수의 디스크 읽기요구가 순차읽기(SCAN) 방식으로 처리되도록 한다.
라운드와 구간 개념을 사용한 기존의 방법에서는 각 구간(slot)을 일정한 크기로 나누고 각 구간(slot)에 디스크 읽기요구를 균등하게 분배하는 방식으로 스케쥴링하여 메모리를 절약하려고 하였다. 그러나, 본 발명에서는 임의의 클라이언트 시스템의 초기 디스크 읽기요구가 일정한 시간 내에 수행될 수 있도록 우선권을 부여하는 방식으로 스케쥴링함으로써, 초기 대기시간이 감소되고 읽어온 데이터를 미리 전송하여 네트워크의 혼잡 가능성에 대비하도록 하였다.
즉, 본 발명은 클라이언트 시스템의 초기 디스크 읽기요구를 먼저 수행하기 위해서 기존에 수행 중이던 디스크 읽기요구들이 다음 구간(slot)에 처리되도록 한다. 그러나 기존에 수행 중이던 디스크 읽기요구들도 하나의 라운드 내에 반드시 한번씩은 수행되도록 설계한다. 이와 같이 함으로써, 초기 대기시간은 감소되면서도 모든 디스크 읽기요구가 각 라운드마다 일정한 분량의 비디오 데이터를 읽을 수 있게 된다.
영화나 뮤직 비디오를 대상으로 하는 주문형 비디오 시스템(VOD)에는 일주일에 수 백번씩 선택되는 인기 비디오(hot movie)는 물론이고, 일주일에 한 두번 이하가 선택되는 비인기 비디오(cold movie)도 저장되어 있다. 본 발명에서는 이러한 인기도 편차가 존재함을 활용하여 비디오 저장서버에 저장되는 비디오들 중 선택 빈도가 높으리라고 예상되는 상위 10% 정도의 비디오들을 인기 비디오로 분류하여 중복 저장한다.
예를 들어, 8개의 디스크들로 구성된 비디오 저장서버에 인기 비디오 X와 비인기 비디오 Y를 저장하는 경우, 8개의 디스크들에 인기 비디오 X와, 복사본 X', 및 비인기 비디오 Y를 분할하여 저장한다. 또한, 8개의 디스크들을 4개씩 분할하여 각각 좌측 디스크군과 우측 디스크군으로 명명한다. 한 라운드마다 계속되는 디스크 읽기요구에 대응하는 읽기단위(read unit) 분량의 비디오 데이터는 하나의 디스크군을 구성하는 4개의 디스크들에 분할하여 저장한다. 따라서, 클라이언트 시스템이 하나의 비디오를 선택하면 각 라운드마다 좌측 디스크군과 우측 디스크군을 교번하여 선택하면서 읽기단위 분량의 비디오 데이터를 읽어서 해당 비디오가 끊김없이 재생되도록 한다.
여기서, 인기 비디오 X의 시작 위치와 복사본 X'의 시작 위치가 다르도록 중복 저장한다. 즉, 인기 비디오 X의 시작 위치가 좌측 디스크군에 위치하면, 복사본 X'의 시작 위치는 우측 디스크군에 위치하도록 저장한다. 이때, 하나의 디스크 내에서 X, X', Y의 상대적 위치에 대한 제한은 없으나, 단지 각각의 디스크마다 비디오 데이터를 연속적인(contiguous) 공간에 저장한다. 인기 비디오가 시간이 지남에 따라 비인기 비디오로 분류되면 중복 저장된 2개의 파일 중 하나를 삭제한다.
사용자가 인기 비디오 X를 선택하면, 첫 번째 라운드에서 좌측, 우측 디스크군의 부하에 따라 X 또는 X'의 시작 부분을 읽어온다. 그러나, 사용자가 비인기 비디오 Y를 선택한 경우에는 각 디스크군의 부하(load)에 관계없이 시작 부분이 저장된 디스크군에서부터 순차적으로 비디오 데이터를 읽어온다.
이와 같은 방식으로 비디오 데이터를 읽으면, 좌측 디스크군을 액세스하는 사용자 수와 우측 디스크군을 액세스하는 사용자 수가 크게 다른 경우가 발생할 수 있다. 이와 같은 부하 편중(hot spot)문제가 발생하면 비디오 저장서버 전체에서 지원 가능한 사용자 수가 작아지게 되므로, 좌측 디스크군과 우측 디스크군을 액세스하는 사용자 수가 균형이 되도록 하여야 한다.
이를 위해 인기 비디오에 대한 새로운 디스크 읽기요구가 발생하면, 좌측 디스크군과 우측 디스크군을 액세스하는 사용자 수를 비교하여 사용자 수가 적은 디스크군에서 시작되도록 스케쥴링한다.
이와 같은 본 발명의 비디오 저장서버를 구현하기 위해서는 여러 가지 변수들을 설정하여야 한다. 즉, 라운드 시간(roundTime), 라운드 내의 구간(slot)의 개수(G), 디스크 읽기단위의 크기(readUnitSize), 비디오 저장서버의 메모리 크기(B), 비디오 저장서버에서 최대 지원 가능한 사용자 수(N) 등의 변수들을 적절하게 결정하여야 한다.
도 2는 본 발명의 한 실시예에 따른 비디오 저장서버에서 상기한 변수들을 결정하는 설계 과정을 도시한 흐름도이다.
초기 설정단계(S201)에서는 비디오 저장 서버의 디스크 특성을 조사하여 여러 가지 상수들(d, trackSize, seekTime, rotateTime, startupTime)의 값을 결정한다. 여기서, 상수 d는 비디오 저장서버의 디스크의 수이고, 상수 trackSize는 디스크 트랙의 크기, 상수 seekTime은 디스크의 최대 탐색시간, 상수 rotateTime은 디스크의 회전시간, 상수 startupTime은 디스크의 동작개시시간이다. 또한, 초기 설정단계(S201)에서 허용 가능한 초기 대기시간(latencyTime)과, 비디오의 재생속도(playRate)를 설정한다.
여기서, 비디오 저장서버의 디스크의 수(d)는 주변기기용 버스(PCI bus), 스카씨 카드(SCSI card), 디스크의 하드웨어 특성과 데이터 전송율(data rate)를 고려하여 적절한 수를 설정한다.
최근에 생산되는 디스크는 안쪽 트랙과 바깥쪽 트랙의 크기가 차이가 나므로, 디스크 트랙의 크기(trackSize)는 크기가 가장 작은 안쪽 트랙의 크기를 기준으로 설정한다. 다른 상수값들(seekTime, rotateTime, startupTime)은 최대값(maximum value)으로 설정하여 비디오 저장서버가 최악의 상황(worst case)에서도 안정적으로 운용되도록 한다.
상기와 같은 초기 설정단계가 완료되면, 단계 S203에서는 위에서 언급하였던 상수들과 변수들(roundTime, N, G, k) 사이에 어떠한 관계를 갖는 지를 계산한다. 이때, 한 라운드에서 읽어야 할 디스크 읽기단위(read unit)를 최대한 크게 설정한다.
비디오 읽기 주기인 라운드 시간(roundTime)이 허용 가능한 초기 대기시간(latencyTime)보다 훨씬 클 수 있으므로 각 라운드를 G개의 구간(slot)으로 분할하는데, 이 구간(slot)을 결정하는 과정은 후술하기로 한다. 이러한 경우 각 라운드마다 G번의 디스크 탐색(seek)이 발생한다. 또한, 총 지원 가능한 사용자의 수(N)에 대해, 각각의 디스크군에서는 각각 최대 N/2 개의 디스크 읽기요구가 처리될 수 있다.
먼저, 각 디스크군으로부터 읽기단위(read unit) 분량의 비디오 데이터를 읽어오는 데 소요되는 시간을 계산한다. 이를 설명하기 위해, 읽기단위 분량(readUnitSize)의 비디오 데이터가 하나의 디스크에만 저장되었다고 가정한 상태에서 이를 읽기 위해 필요한 디스크 회전수를 나타내는 가상의 변수 k를 도입하여 설명하기로 한다. 변수 k는 readUnitSize(읽기단위 분량)/trackSize(트랙 크기)이고, 정수값일 필요는 없다.
이 k값은 읽기단위 분량의 비디오 데이터가 하나의 디스크에 저장되었다고 가정한 상태에서의 디스크 회전수이다. 그러나, 본 발명에서는 읽기단위 분량의 비디오 데이터를 d/2개의 디스크들에 분할하여 저장하기 때문에, 이를 적용하면 각각의 디스크는 k/(d/2)의 회전을 해야 하며, 이는 실제로 데이터를 읽는 시간이다.
디스크군에서 읽기단위 분량의 비디오 데이터를 읽기 위해서는 실제로 데이터를 읽는 시간(data transfer time) 이외에도 디스크 헤드가 비디오 데이터의 시작 부분에 도달할 때까지 기다리는 회전 대기시간(rotational latency)이 필요하다. 하나의 읽기단위 분량의 비디오 데이터를 읽기 위해서 각 디스크는 최악의 경우 k/(d/2)+1 회전을 하게 된다. 상기와 같은 사항을 고려하면 라운드 시간(roundTime)은 수학식 1과 같이 표현할 수 있다.
임의의 비디오가 중단없이 연속적으로 재생되기 위해서는 디스크 읽기단위 분량의 비디오 데이터가 재생되는 시간(readUnitSize/playRate)이 라운드 시간(roundTime)보다 커야 한다. 여기서는 디스크 읽기단위 분량의 비디오 데이터를 d/2개의 디스크들에 저장하기 때문에 디스크 읽기단위(readUnitSize)는 'playRate * roundTime'보다 크거나 같으면서 d/2의 배수이어야 한다. 이때, 디스크 읽기단위가 필요 이상으로 크면 메모리가 낭비되므로 수학식 2와 같이 정한다.
최대 초기 대기시간은 구간(slot)이 수행되는 시간(roundTime/G)의 2배이며, 이는 사용자가 허용하는 초기 대기시간(latencyTime)보다 작아야 하므로 수학식 3을 도출할 수 있다.
상기와 같이 라운드 시간을 분할한 구간의 수(G)를 결정한 후, 다음 단계(S205 ~ S219)에서는 최대 지원 가능한 사용자 수(N)와 비디오 저장서버의 메모리 크기(B)를 계산하여 가장 경제성이 있는 메모리 크기와 라운드 시간을 결정한다. 이러한 과정에서 구간(slot)의 수는 항상 정수이므로 구간(slot)의 수가 1인 경우(205)부터 순차적으로 계산하면 몇 차례의 반복적인 계산으로 각 변수의 가장 적절한 값을 계산할 수 있다.
먼저 수학식 3으로부터 최대 크기의 라운드 시간(roundTime)을 수학식 4를 유도하여 계산한다(S207).
상기한 수학식 4를 수학식 2에 대입하여 디스크 읽기단위의 회전수(k)를 구하는 식을 도출하면 수학식 5와 같다(S209).
수학식 1로부터 지원 가능한 사용자 수(N)를 도출하면 수학식 6과 같다(S211).
여기서, 라운드 시간(roundTime)과 디스크 읽기단위의 회전수(k)는 수학식 4와 수학식 5를 사용하여 구하고, N은 사용자의 수이기 때문에 수학식 6의 계산값에서 소수점 이하를 절삭한 정수값으로 정한다.
비디오 저장서버에서는 디스크 읽기단위 분량의 비디오 데이터를 읽어오는 과정과 이를 네트워크를 통해 클라이언트 시스템에게 전송하는 과정이 동시에 수행된다. 따라서, 각 클라이언트 시스템 별로 디스크 읽기단위 분량의 비디오 데이터를 저장하는 버퍼(buffer)가 2개씩 필요하게 된다. 즉, 비디오 저장서버 전체적으로 필요한 버퍼의 수는 '2 * 디스크 읽기단위의 크기 * 사용자의 수'가 된다. 이때, 구간의 수(G)가 1인 경우에의, 사용자의 수(N)와 회전수(k)는 정해져 있으므로 전체 비디오 서버장치의 메모리의 크기(B)는 수학식 7과 같이 구한다(S213).
단계 S215에서는 위의 단계에서 계산한 전체 사용자의 수(N)와 비디오 저장서버의 메모리의 크기(B)를 바탕으로, B 크기의 메모리를 사용하여 N 명의 사용자를 지원하는 비디오 저장서버가 경제적인 지를 판단한다.
더 많은 메모리를 사용하여 더 많은 사용자를 지원하는 시스템을 개발하고 싶으면 G를 1 증가시키고(S217), 단계 S207 내지 단계 S217를 반복 수행한다. 비디오 저장서버의 하드웨어 용량(capacity)이 이미 정해진 경우에는 메모리를 최대로 활용할 수 있을 때까지 반복 수행한다. 이때, 메모리의 크기(B)가 일정하게 증가함에 따라 사용자의 수(N)는 로가리즘(logarithm) 곡선 형태로 증가한다.
비디오 저장서버의 하드웨어의 용량이 정해져 있지 않은 경우에는 몇 차례의 반복적인 계산으로 가장 경제적인 규모의 메모리를 B 만큼 사용하여 얻을 수 있는 최대의 사용자 수(N)를 계산한다. 이렇게 해서, B 크기의 메모리를 사용하여 N 명의 사용자를 지원하는 비디오 저장서버가 경제적이라고 판정되면, 단계 S219로 진행하는데, 이 단계에서는 변수들(roundTime, G, readUnitSize, B, N)의 값과 초기 설정단계(S201)에서 설정된 상수들(d, trackSize, seekTime, rotateTime, startupTime, latencyTime, PlayRate)의 값을 저장한다.
도 3은 본 발명의 한 실시예에 따른 비디오 저장서버의 구성도로서, 이는 크게 허용 제어기(Admission Control Manager)(301), 요구 처리기(Request Handler)(305), 전송 처리기(Delivery Manager)(313), 미디어 파일 서브시스템(Media File Subsystem)(315), 디스크(317)를 구비한다.
허용 제어기(301)와 요구 처리기(303)는 디스크 요구 큐(disk request queue)(303)와 결과 메시지 큐(result message queue)(304)를 통해 통신하고, 허용 제어기(301)와 전송 처리기(313)는 요구 메시지 큐(request message queue)(307)와 기록 메시지 큐(write message queue)(309)를 통해 통신한다.
요구 처리기(303)가 미디어 파일 서브시스템(315)을 통해 읽어온 비디오 데이터를 데이터 버퍼(data buffer)(311)에 저장하면, 전송 처리기(313)는 이 비디오 데이터를 클라이언트 시스템에게 전송한다. 세션정보(session information)(321)는 각 디스크 읽기요구의 상태(status), 우선순위(priority), 읽고자 하는 파일명, 파일 포인터, 클라이언트 시스템의 주소 등을 나타내는 전역 변수로서, 허용 제어기(301)와, 요구 처리기(305), 및 전송 처리기(313)에서 액세스한다. 각 디스크 읽기요구는 'toBeRead', 'read', 'exit', 'done'의 4가지 상태(status)를 가진다.
도 4는 허용 제어기(Admission Control Manager)(301)의 디스크 읽기요구에 대한 처리과정을 도시한 흐름도이다. 비디오 저장서버는 처리할 수 있는 최대 클라이언트 시스템의 수, 즉 지원 가능 사용자의 수가 N으로 설계되었으므로, 허용 제어기(Admission Control Manager)(301)는 N을 기준으로 하여 새로운 디스크 읽기요구를 허용할지 여부를 판단하는 기능을 한다.
허용 제어기(301)는 현재 비디오 저장서버에서 지원되고 있는 사용자 수를 나타내는 변수(noUsers)를 0으로 초기화하고(S401), 결과 메시지 큐(304)에 새로운 메시지가 도착하였는 지를 검사한다(S403). 이 결과 메시지 큐(304)에는 디스크 읽기요구의 4상태들 중 'exit'나 'done' 메시지가 입력되므로 단계 S415로 진행하여, 변수(noUsers)를 1 감소한 후 클라이언트 시스템에게 해당되는 메시지를 보낸다(S417).
변수(noUsers)가 최대 사용자의 수(N)보다 작으면 단계 S403로 다시 진행하여, 결과 메시지 큐(304)에 새로운 메시지가 도착하였는 지를 검사한다.
한편, 결과 메시지 큐(304)에 새로운 메시지가 도착하지 않은 경우에는 요구 메시지 큐(307)에 새로운 메시지가 도착하였는 지를 검사한다(S405). 이때 새로운 메시지는 'play' 메시지이므로 새로운 메시지가 도착하면 단계 S407로 진행하여 변수(noUsers)가 최대 클라이언트 시스템의 수(N)보다 작은 지를 판단한다.
변수(noUsers)가 N보다 작으면, 변수(noUsers)의 값을 1 증가시키고(S409), 세션정보를 생성하여 디스크 읽기요구의 상태를 'toBeRead'로 설정한(S411) 후 디스크 요구 큐(303)에 'play' 메시지를 입력한다(S413).
한편, 현재 비디오 저장서버에서 지원되는 사용자의 수(noUsers)가 최대 지원 가능한 사용자의 수(N)와 같으면 새로운 디스크 읽기요구를 처리할 수 없으므로 기록 메시지 큐(309)에 'reject' 메시지를 입력한다(S419).
허용 제어기(301)는 상기와 같은 과정(S403 ∼ S419)을 계속 반복 수행하면서 새로운 디스크 읽기요구의 허용 여부를 결정한다.
도 5와 도 6은 요구 처리기(Request Handler)(303)에서의 처리과정을 도시한 흐름도이다. 요구 처리기(303)는 도 2의 비디오 저장서버의 설계과정(S201 ~ S219)에서 계산된 변수들의 값을 사용하여 라운드 주기를 유지하면서, 모든 디스크 읽기요구가 주기적으로 중단없이 수행될 수 있도록 스케쥴링한다. 또한, 새로운비디오의 디스크 읽기요구가 설정 대기시간(latencyTime) 이내에 처리되도록 한다.
요구 처리기(Request Handler)(305)는 초기화단계(S501)에서 변수(noToBeRead)와 각 디스크 별 사용자 수를 0으로 설정한 후, 디스크 요구 큐(303)에 새로운 메시지가 있는 지를 검사한다(S503). 새로운 메시지가 없으면 한 구간이 수행되는 시간(roundTime/G)동안 대기한(S505) 후, 단계 S503으로 진행하여 다시 새로운 메시지가 도착하였는 지를 검사하는 과정을 반복한다.
단계 S503에서 새로운 메시지가 도착하거나 기존에 처리 중인 디스크 읽기요구가 있으면, 변수(roundStartTime)에 현재 시각을 할당하고(S507) 새로운 라운드를 시작한다. 이때, 부하 균형(Load Balancing)을 고려한다(S509). 즉, 2개 이상 중복 저장된 인기 비디오의 경우, 초기 디스크 읽기요구가 수행될 때에는 좌측과 우측의 디스크군들의 부하를 비교하여 어느 디스크군에 저장된 비디오 데이터를 읽을 것인 지를 결정한다(S509).
각 라운드가 G개의 구간(slot)으로 이루어지므로 변수(g)를 1로 설정한 후 1씩 증가시켜서, 변수(g)가 한 라운드를 이루는 구간의 수(G)와 동일해질 때까지 J1 내지 J2의 서브루틴을 반복 수행한다.
변수(g)가 1이면 첫 번째 구간(slot)에 대한 디스크 읽기요구 처리과정인데, 이를 도 6을 참조하여 설명하면 다음과 같다.
구간(slot)의 시작에서는 디스크를 읽기 위해 디스크 요구 큐(303)에 새로운 메시지가 있는 지를 다시 검사한다(S511). 새로운 메시지가 있으면 이 새로운 메시지를 모두(m개) 읽어오고, 디스크 요구 큐(303)는 초기화한다(S513). 다음, 읽어온 새 메시지들의 우선순위(priority)를 '1'로 설정하고, 변수(noToBeRead)를 읽어온 메시지의 수(m)만큼 증가시킨다(S515).
그 다음에는 상태가 'toBeRead'인 디스크 읽기요구들을 우선순위(priority)의 내림차순으로 정렬(sort)한다(S517). 이때 초기 디스크 읽기요구들은 우선순위가 '1'이고, 기존의 처리중이던 디스크 읽기요구들은 우선순위가 '0'이기 때문에 기존의 처리중이던 디스크 읽기요구들보다 초기 디스크 읽기요구들이 먼저 처리될 수 있다. 다음, k개의 디스크 읽기요구들을 미디어 파일 서브시스템(Media File Subsystem)(315)을 통하여 각 디스크들(317)에게 보낸다. 여기서, k는 한 구간에서 처리 가능한 최대 디스크 읽기요구의 수로서, 최대 클라이언트 수(N)/구간의 수(G)의 수식을 통해 구할 수 있다. 미디어 파일 서브시스템(315)에서 해당 디스크 읽기요구에 부합하는 비디오 데이터를 읽어오면 이를 데이터 버퍼(311)에 넣어둔다(S519).
k개의 디스크 읽기요구를 처리하였으므로 변수(noToBeRead)에서 k를 감하고(S521), 처리된 디스크 읽기요구들 중에서 파일의 끝까지 모두 읽어온 것이 있는 지를 검사한다(S523). 파일의 끝(End Of File)까지 모두 읽어온 디스크 읽기요구는 그 상태를 'done'으로 변경하고(S525), 파일의 끝(EOF)이 아닌 디스크 읽기요구들은 우선순위(priority)를 0으로 변경하고 상태를 'read'로 변경한다(S527).
새로운 구간(slot)이 새로운 디스크 읽기요구가 없는 상태에서 시작한 경우에는 단계 S511에서 단계 S529로 분기하여 변수(noToBeRead)의 값을 검사한다. 변수(noToBeRead)가 0보다 큰 경우에는 처리 중인 기존의 디스크 읽기요구가 존재하는 경우이므로 단계 S517로 분기한다. 변수(noToBeRead)가 0인 경우에는 처리할 디스크 읽기요구가 존재하지 않으므로 한 구간(slot)을 수행하는 시간, 즉 roundTime/G 초 동안 대기하고(S531), 다음 구간(slot)을 시작한다.
상기와 같이 하나의 구간(slot)에 대한 디스크 읽기요구가 처리되면, 변수(g)를 1 증가시키고(S533), 변수 g와 최대 사용자의 수(G)를 비교한다(S535). 변수(g)가 G보다 작거나 같으면, 아직 수행하여야 할 구간(slot)이 남아 있는 상태이므로 단계 S511로 분기하여 다음 구간에 대한 디스크 읽기요구를 처리하고, 변수(g)가 G보다 크면 상태가 'done'인 디스크 읽기요구가 있는 지를 검사한다(S537). 상태가 'done'인 디스크 읽기요구가 있으면, 결과 메시지 큐(304)에 해당 메시지를 넣어둔다(S539).
G 개의 구간들로 이루어진 한 라운드 동안 디스크 읽기요구를 처리하고도 아직 종료되지 않은 디스크 읽기요구의 상태는 'read'이므로, 상태가 'read'인 디스크 읽기요구의 상태를 'toBeRead'로 모두 변경하고 변수(noToBeRead)를 변경한 수 만큼으로 재설정한다(S541).
변수(noToBeRead)를 검사하여(S543), 0이면 단계(S503)으로 분기하고, 0보다 크면 각 디스크 별 사용자 수를 갱신(update)한(S545) 후 다음 라운드가 시작될 때 까지 대기한다. 즉, 데이터 버퍼가 초과(overflow)되는 것을 방지하기 위하여 다음 라운드가 시작될 때까지의 시간인 'roundStartTime + roundTime - 현재시각' 초 동안 대기한(S547) 후, 단계 S507로 분기한다.
도 7은 전송 처리기(Delivery Manager)(313)에서의 처리과정을 나타내는 흐름도이다. 전송 처리기(313)는 네트워크로부터 수신한 클라이언트 시스템의 메시지를 허용 제어기(Admission Control Manager)(301)에게 전달하고, 허용 제어기(Admission Control Manager)(301)의 결과와 비디오 데이터를 네트워크를 통하여 클라이언트 시스템에 전송하는 기능을 한다.
이러한 기능을 수행하기 위해 먼저 클라이언트 시스템으로부터 새로운 메시지가 도착하였는 지를 검사하고(S601), 새 메시지가 있으면 그 종류를 검사한다. 만약 'exit' 메시지이면(S603) 해당 디스크 읽기요구의 상태를 'exit' 로 변경하고(S605), 그렇지 않은 경우에는 'play' 상태의 메시지가 도착한 경우이므로 요구 메시지 큐(307)에 'play' 메시지를 넣어둔다(S607).
이어서 기록 메시지 큐(309)에 새로운 메시지가 있는 지를 검사하여(S609), 새로운 메시지가 있으면 그 종류를 검사한다. 만약 'done' 메시지가 있으면(S611), 데이터 버퍼(311)에 있는 비디오 데이터를 클라이언트 시스템에게 송신하고(S613), 'done' 메시지를 보낸다(S615). 이 경우에는 모든 작업을 마쳤으므로 해당 세션정보(session information)를 삭제하고(S617), 새로운 메시지의 검사를 계속한다(S609).
새로운 메시지가 'exit' 메시지이면(S619), 클라이언트 시스템이 종료를 요청한 경우이므로 해당 세션정보(session information)를 삭제하고(S617) 새로운 메시지의 검사를 계속한다(S609).
그 외의 경우에는 허용 제어기(Admission Control Manager)(301)에서 새로운 디스크 읽기요구를 거절한 경우이므로 클라이언트 시스템에게 'reject' 메시지를송신하고(S621), 데이터 버퍼(311)에 송신할 비디오 데이터가 있는 지를 검사한다(S623). 보낼 데이터가 있으면 이를 송신하고(S625), 단계 S601 내지 단계 S625를 반복 수행한다.
위에서 양호한 실시예에 근거하여 이 발명을 설명하였지만, 이러한 실시예는 이 발명을 제한하려는 것이 아니라 예시하려는 것이다. 이 발명이 속하는 분야의 숙련자에게는 이 발명의 기술사상을 벗어남이 없이 위 실시예에 대한 다양한 변화나 변경 또는 조절이 가능함이 자명할 것이다. 그러므로, 이 발명의 보호범위는 첨부된 청구범위에 의해서만 한정될 것이며, 위와 같은 변화예나 변경예 또는 조절예를 모두 포함하는 것으로 해석되어야 할 것이다.
이상과 같이 본 발명에 의하면, 본 발명에서는 여러 가지의 결정하여야 할 변수들이 복잡하게 관련되어 있는 비디오 저장서버의 설계를 초기 대기시간의 개념을 도입하여 순서적으로 처리하는 방법을 제시하였으며, 사용자의 초기 대기시간이 일정한 시간을 넘지 않으면서도 최대의 사용자를 지원하는 방법을 제시하고 있다. 따라서, 대규모의 사용자들을 지원하면서도 사용자가 비디오를 선택한 후 비디오가 상영될 때까지의 초기 대기시간이 설계 시에 설정한 일정한 시간을 넘지 않으므로 본 발명의 방법은 상업적인 비디오 저장서버에 활용될 수 있는 효과가 있다.
또한, 본 발명에서는 여러 개의 디스크에 비디오 데이터를 스트라이핑하여 저장하되 각 라운드마다 스트라이핑된 디스크의 절반에서만 데이터를 읽어오기 때문에 각 디스크에서 읽어오는 단위가 2배가 되어 회전 대기시간의 비율을 작게 하고, 결과적으로 디스크를 효율적으로 활용하게 하여 사용자의 수를 증대시킬 수 있다. 이러한 방법은 동일한 디스크를 사용한 기존의 스트라이핑 방법보다 1.5배 정도의 사용자들을 지원할 수 있다.
또한, 본 발명의 디스크 스케쥴링방법은 하나의 구간(slot)이 종료되면 다음 구간(slot)이 바로 시작되도록 하여 네트워크의 지연에 대비하는 효과가 있다. 이와 같은 특성으로 본 발명에 의한 비디오 저장서버는 네트워크의 전송율(transfer rate)이 제한되어 있는 현재의 환경에서 전송 지연에 의한 비디오의 끊김(jitter) 발생을 예방하고 초기 대기시간을 감소시킴과 동시에 사용자 수를 최대화하여 시스템의 효율성과 경제성을 높이는 효과가 있다. 아울러, 본 발명의 디스크 스케쥴링방법은 라운드와 디스크 읽기단위 분량이 정해져 있어서 시스템 자원의 사용이 예측 가능하므로, 클라이언트 시스템의 메모리가 제한된 경우나 다양한 종류의 네트워크의 경우에도 쉽게 변형하여 사용할 수 있는 효과가 있다.

Claims (11)

  1. 다수의 클라이언트들로부터의 디스크 읽기요구들에 대응되는 비디오를 검색하여 해당 클라이언트에게 제공하는 비디오 저장서버에 있어서,
    읽기단위 분량별로 분할된 비디오가 2개의 디스크군들에게 순차적으로 교번되게 저장되며, 하나의 읽기단위 분량의 비디오 데이터는 상기 디스크군을 구성하는 다수의 디스크들에게 분할되어 저장되는 데이터 저장수단과;
    지원 가능한 최대 클라이언트의 수(N)를 기준으로 초기 디스크 읽기요구를 허용할 지의 여부를 판단하는 허용 제어수단;
    상기 허용 제어수단에서 허용된 초기 디스크 읽기요구는 허용 대기시간내에 처리되고, 기존의 처리중이던 디스크 읽기요구들은 해당 라운드내에 적어도 한 번은 처리될 수 있도록 스케쥴링하여, 상기 스케쥴링된 순서에 따라 상기 데이터 저장수단으로부터 읽기단위 분량의 비디오 데이터를 읽어오는 요구 처리수단; 및
    네크워크로부터 수신한 클라이언트의 메시지를 허용 제어수단에게 전달하고, 상기 허용 제어수단으로부터 초기 디스크 읽기요구가 허용되면 상기 요구 처리수단으로부터 제공되는 읽기단위 분량의 비디오 데이터를 네트워크를 통해 해당 클라이언트에게 전송하는 전송 처리수단을 포함한 것을 특징으로 하는 비디오 저장서버.
  2. 제 1 항에 있어서, 상기 요구 처리수단으로부터 제공되는 읽기단위 분량의비디오 데이터를 저장하기 위한 데이터버퍼를 더 포함한 것을 특징으로 하는 비디오 저장서버.
  3. 제 1 항에 있어서, 상기 허용 제어수단과 전송 처리수단 사이에서 메시지를 임시 저장하기 위한 요구 메시지 큐 및 기록 메시지 큐를 더 포함한 것을 특징으로 하는 비디오 저장서버.
  4. 제 1 항에 있어서, 상기 허용 제어수단과 요구 처리수단 사이에서 메시지를 임시 저장하기 위한 디스크 요구 큐 및 결과 메시지 큐를 더 포함한 것을 특징으로 하는 비디오 저장서버.
  5. 다수의 클라이언트들로부터의 디스크 읽기요구들에 대응되는 비디오를 검색하여 해당 클라이언트에게 제공하는 비디오 저장서버를 설계하는 방법에 있어서,
    비디오 데이터를 저장하는 디스크들의 개수(d)와, 디스크의 트랙 크기(trackSize), 디스크의 탐색시간(seekTime), 디스크의 회전시간(rotateTime), 디스크의 동작개시시간(startupTime), 허용 초기 대기시간(latencyTime), 및 클라이언트 시스템에서의 비디오 재생속도(playRate)가 결정된 상태에서,
    디스크 읽기주기인 라운드 시간(roundTime)과, 지원 가능한 최대 클라이언트 수(N), 라운드를 분할한 구간의 개수(G), 허용된 초기 대기시간(latencyTime), 및 읽기단위 분량의 비디오 데이터를 읽기 위해 필요한 디스크 총 회전수(k) 사이의 관계식을 도출하는 제1단계와;
    실제로 데이터를 읽는 시간과, 데이터를 읽기 위해 시작부분으로 이동하는 회전 대기시간을 합하여 상기 라운드 시간을 결정하는 제2단계;
    읽기단위 분량의 비디오 데이터가 재생되는 시간이 상기 라운드 시간보다 크도록 상기 읽기단위의 크기를 계산하는 제3단계;
    하나의 구간이 수행되는 시간의 2배보다 상기 허용 초기 대기시간이 작도록 상기 구간의 개수를 결정하는 제4단계;
    상기 라운드 시간과, 하나의 라운드에서의 총 디스크 탐색시간, 디스크 동작개시시간, 및 읽기단위 분량의 비디오데이터를 읽기 위해 필요한 시간 등을 이용하여 지원 가능한 총 클라이언트 수를 계산하는 제5단계; 및
    상기 디스크 읽기단위의 크기와 총 클라이언트 수를 곱하여 필요한 총 메모리의 크기를 구하는 제6단계를 포함한 것을 특징으로 하는 비디오저장서버의 설계방법.
  6. 다수의 클라이언트들로부터의 디스크 읽기요구들에 대응되는 비디오를 검색하여 해당 클라이언트에게 제공하는 비디오 저장서버를 설계하는 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체에 있어서,
    비디오 데이터를 저장하는 디스크들의 개수(d)와, 상기 디스크 트랙의 크기(trackSize), 디스크의 탐색시간(seekTime), 디스크의 회전시간(rotateTime), 디스크의 동작개시시간(startupTime), 허용 초기 대기시간(latencyTime), 및 클라이언트 시스템에서의 비디오 재생속도(playRate)가 입력되면;
    디스크 읽기주기인 라운드 시간(roundTime)과, 지원 가능한 최대 클라이언트 수(N), 라운드를 분할한 구간의 개수(G), 허용된 초기 대기시간(latencyTime), 및 읽기단위 분량의 비디오 데이터를 읽기 위해 필요한 디스크 총 회전수(k) 사이의 관계식을 도출하는 제1단계와;
    실제로 데이터를 읽는 시간과, 데이터를 읽기 위해 시작부분으로 이동하는 회전 대기시간을 합하여 상기 라운드 시간을 결정하는 제2단계;
    읽기단위 분량의 비디오 데이터가 재생되는 시간이 상기 라운드 시간보다 크도록 상기 읽기단위의 크기를 계산하는 제3단계;
    하나의 구간이 수행되는 시간의 2배보다 상기 허용 초기 대기시간이 작도록 상기 구간의 개수를 결정하는 제4단계;
    상기 라운드 시간과, 하나의 라운드에서의 총 디스크 탐색시간, 디스크 동작개시시간, 및 읽기단위 분량의 비디오데이터를 읽기 위해 필요한 시간 등을 이용하여 지원 가능한 총 클라이언트 수를 계산하는 제5단계; 및
    상기 디스크 읽기단위의 크기와 총 클라이언트 수를 곱하여 필요한 총 메모리의 크기를 구하는 제6단계를 포함하는 비디오 저장서버의 설계방법을 수행하는프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  7. 다수의 클라이언트들로부터의 디스크 읽기요구들에 대응되는 비디오를 검색하여 해당 클라이언트에게 제공하는 비디오 저장서버의 운용방법에 있어서,
    하나의 비디오를 읽기단위 분량별로 분할하여 2개의 디스크군들에게 순차적으로 교번되게 저장하는 제 1 단계와;
    클라이언트 시스템으로부터 초기 디스크 읽기요구가 입력되면 지원 가능한 최대 클라이언트 수(N)를 기준으로 상기 초기 디스크 읽기요구를 허용할 지의 여부를 판단하는 제 2 단계;
    상기 제 2 단계에서 허용된 초기 디스크 읽기요구는 허용 대기시간내에 처리되고, 처리 중인 디스크 읽기요구들은 라운드마다 한 번은 처리될 수 있도록 스케쥴링하여, 상기 스케쥴링된 순서에 따라 읽기단위 분량의 비디오 데이터를 읽어오는 제 3 단계; 및
    상기 제 3 단계에서 읽어온 읽기단위 분량의 비디오 데이터를 해당 클라이언트에게 전송하는 제 4 단계를 포함한 것을 특징으로 하는 비디오 저장서버의 운용방법.
  8. 제 7 항에 있어서, 상기 제 2 단계는,
    기존에 진행 중이던 디스크 읽기요구가 종료되었는 지를 판단하는 제 1 서브단계와,
    제 1 서브단계에서 디스크 읽기요구의 종료가 있으면 현재 클라이언트 수(noUsers)에서 1을 감하여 상기 현재 클라이언트 수를 갱신하는 제 2 서브단계,
    임의의 클라이언트 시스템으로부터 새로운 디스크 읽기요구가 입력되었는 지를 판단하는 제 3 서브단계,
    제 3 서브단계에서 새로운 디스크 읽기요구가 입력되면 현재 클라이언트 수가 지원 가능한 최대 클라이언트 수보다 작은 지를 판단하는 제 4 서브단계, 및
    상기 현재 클라이언트 수가 지원 가능한 최대 클라이언트 수보다 작으면 해당 클라이언트 시스템에게 '비디오 재생' 메시지를 전송하고, 작지 않으면 해당 클라이언트 시스템에게 '요구거절' 메시지를 전송하는 제 5 서브단계를 포함한 것을 특징으로 하는 비디오 저장서버의 운용방법.
  9. 제 7 항에 있어서, 상기 제 3 단계는,
    상기 제 2 단계에서 허용된 초기 디스크 읽기요구에 높은 우선순위를 부여하고 기존의 처리중이던 다른 디스크 읽기요구들과 함께 정렬하는 제 1 서브단계와,
    하나의 구간에서 처리할 수 있는 디스크 읽기요구들을 우선순위에 따라 순차적으로 처리하여 해당 비디오 데이터를 읽어오는 제 2 서브단계,
    상기 제 2 서브단계에서 처리된 초기 디스크 읽기요구들의 우선순위를 낮추는 제 3 서브단계, 및
    하나의 라운드를 구성하는 모든 구간들에 대해 상기 제 1 서브단계 내지 제 2 서브단계를 반복 수행하는 제 4 서브단계를 포함한 것을 특징으로 하는 비디오 저장서버의 운용방법.
  10. 제 9 항에 있어서, 2개의 비디오군들에 중복 저장된 인기비디오에 대한 초기 디스크 읽기요구가 입력되면, 상기 두 비디오군들의 부하들을 상호 비교하여 적은 부하의 디스크군으로부터 해당 인기비디오를 읽어오는 것을 특징으로 하는 비디오 저장서버의 운용방법.
  11. 다수의 클라이언트들로부터의 디스크 읽기요구들에 대응되는 비디오를 검색하여 해당 클라이언트에게 제공하는 비디오 저장서버를 운용하는 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체에 있어서,
    하나의 비디오를 읽기단위 분량별로 분할하여 2개의 디스크군들에게 순차적으로 교번되게 저장하는 제 1 단계와;
    클라이언트 시스템으로부터 초기 디스크 읽기요구가 입력되면 지원 가능한 최대 클라이언트 수(N)를 기준으로 하여 상기 초기 디스크 읽기요구를 허용할 지의 여부를 판단하는 제 2 단계;
    상기 제 2 단계에서 허용된 초기 디스크 읽기요구는 허용 대기시간내에 처리되고, 처리 중인 디스크 읽기요구들은 라운드마다 한 번은 처리될 수 있도록 스케쥴링하여, 상기 스케쥴링된 순서에 따라 읽기단위 분량의 비디오 데이터를 읽어오는 제 3 단계; 및
    상기 제 3 단계에서 읽어온 읽기단위 분량의 비디오 데이터를 해당 클라이언트에게 전송하는 제 4 단계를 포함하는 비디오 저장서버의 운용방법을 수행하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1019990039598A 1999-09-15 1999-09-15 초기 대기시간을 감소시키는 비디오 저장서버 및 그의 운용방법 KR100313432B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019990039598A KR100313432B1 (ko) 1999-09-15 1999-09-15 초기 대기시간을 감소시키는 비디오 저장서버 및 그의 운용방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990039598A KR100313432B1 (ko) 1999-09-15 1999-09-15 초기 대기시간을 감소시키는 비디오 저장서버 및 그의 운용방법

Publications (2)

Publication Number Publication Date
KR20010027716A KR20010027716A (ko) 2001-04-06
KR100313432B1 true KR100313432B1 (ko) 2001-11-07

Family

ID=19611669

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990039598A KR100313432B1 (ko) 1999-09-15 1999-09-15 초기 대기시간을 감소시키는 비디오 저장서버 및 그의 운용방법

Country Status (1)

Country Link
KR (1) KR100313432B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101280962B1 (ko) * 2011-06-15 2013-07-02 인하대학교 산학협력단 비디오 서버 및 그 운영 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113568570B (zh) * 2021-06-22 2024-04-12 阿里巴巴创新公司 数据处理方法及装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07107425A (ja) * 1993-09-30 1995-04-21 Matsushita Electric Ind Co Ltd ビデオサーバ
JPH07231321A (ja) * 1994-02-21 1995-08-29 Matsushita Electric Ind Co Ltd ビデオサーバおよびビデオ情報蓄積保持方法
JPH088907A (ja) * 1994-06-24 1996-01-12 Matsushita Electric Ind Co Ltd ビデオ・オン・デマンド・サーバ
JPH0879685A (ja) * 1994-08-31 1996-03-22 Sony Corp ニア・ビデオ・オン・デマンドシステムにおけるプログラム再生装置
JPH09205634A (ja) * 1996-01-25 1997-08-05 Matsushita Electric Ind Co Ltd 映像データ記憶方法および映像サーバ
JPH09261617A (ja) * 1996-01-19 1997-10-03 Matsushita Electric Ind Co Ltd オンデマンド通信システム
JPH1169311A (ja) * 1997-08-08 1999-03-09 Toshiba Corp ビデオサーバ装置及び同装置におけるビデオ送信サービスのスケジューリング方法
KR20000014931U (ko) * 1998-12-31 2000-07-25 서평원 응답시간 단축 주문형 비디오 서버장치

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07107425A (ja) * 1993-09-30 1995-04-21 Matsushita Electric Ind Co Ltd ビデオサーバ
JPH07231321A (ja) * 1994-02-21 1995-08-29 Matsushita Electric Ind Co Ltd ビデオサーバおよびビデオ情報蓄積保持方法
JPH088907A (ja) * 1994-06-24 1996-01-12 Matsushita Electric Ind Co Ltd ビデオ・オン・デマンド・サーバ
JPH0879685A (ja) * 1994-08-31 1996-03-22 Sony Corp ニア・ビデオ・オン・デマンドシステムにおけるプログラム再生装置
JPH09261617A (ja) * 1996-01-19 1997-10-03 Matsushita Electric Ind Co Ltd オンデマンド通信システム
JPH09205634A (ja) * 1996-01-25 1997-08-05 Matsushita Electric Ind Co Ltd 映像データ記憶方法および映像サーバ
JPH1169311A (ja) * 1997-08-08 1999-03-09 Toshiba Corp ビデオサーバ装置及び同装置におけるビデオ送信サービスのスケジューリング方法
KR20000014931U (ko) * 1998-12-31 2000-07-25 서평원 응답시간 단축 주문형 비디오 서버장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101280962B1 (ko) * 2011-06-15 2013-07-02 인하대학교 산학협력단 비디오 서버 및 그 운영 방법

Also Published As

Publication number Publication date
KR20010027716A (ko) 2001-04-06

Similar Documents

Publication Publication Date Title
US9792344B2 (en) Asynchronous namespace maintenance
JP3563541B2 (ja) データ格納装置及びデータ格納方法
JPH0981497A (ja) 実時間ストリームサーバ並びに実時間ストリームデータの格納方法および転送方法
CN103186350B (zh) 混合存储系统及热点数据块的迁移方法
EP0634034B1 (en) Method of operating a disk storage system
EP2069942B1 (en) Cache disk storage upgrade
US6480930B1 (en) Mailbox for controlling storage subsystem reconfigurations
JP4429780B2 (ja) 記憶制御装置、制御方法、および制御プログラム。
US20150356125A1 (en) Method for data placement based on a file level operation
CN101566927B (zh) 存储系统和存储控制器以及数据缓存方法
JP2003501746A (ja) ホスト・システムとホスト・アダプタとの間でi/oブロックを自動的に転送するための方法および装置
CN101013387A (zh) 基于对象存储设备的负载平衡方法
Ozden et al. A framework for the storage and retrieval of continuous media data
JPH07191899A (ja) ファイル転送方法、データアクセス方法およびデータ書き込み方法
CN115454994A (zh) 一种基于分布式键值数据库的元数据存储方法及装置
KR20180046078A (ko) 데이터베이스 리밸런싱 방법
KR100313432B1 (ko) 초기 대기시간을 감소시키는 비디오 저장서버 및 그의 운용방법
JP3543661B2 (ja) 交換機ファイルシステムにおけるバッファキャッシュ方法および装置
CN104375782A (zh) 千万级小文件数据的一种读写解决方法
US5909693A (en) System and method for striping data across multiple disks for continuous data streaming and increased bus utilization
KR101593012B1 (ko) 계층형 스토리지 제어 장치 및 방법
CN107491565A (zh) 一种数据同步方法
US6704907B1 (en) Digital contents editing method and apparatus thereof
CN109582233A (zh) 一种数据的缓存方法和装置
CN111124302A (zh) 一种san共享文件存储和归档方法和系统

Legal Events

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

Payment date: 20101001

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee