Claims
- 1. A method of managing memory buffer in a video server, wherein a plurality of clients are served from video streams provided from disks, comprising the steps of:
- determining buffer requirements of a plurality of the video streams, the buffer requirements being a number of frames separating each video stream from an immediately previous video stream carrying the same video;
- creating a list of streams being served from each of the disks, ordered by the buffer requirement of each of the streams;
- determining when to balance a load across the disks;
- allocating the buffer to the streams on a most heavily loaded one of the disks so as to serve the streams from the buffer, starting from a stream with a smallest buffer requirement and proceeding to streams with larger buffer requirements until the buffer requirement of a stream can not be satisfied; and
- retaining blocks of the immediately preceding stream in the buffer allocated to its following stream and discarding the blocks from the buffer as they are read by a client viewing the following stream.
- 2. A method of managing memory buffer in a video server, wherein a plurality of clients are served from video streams provided from disks, comprising the step of:
- determining buffer requirements of a plurality of the video streams, the buffer requirements being a number of frames separating each video stream from an immediately previous video stream carrying the same video;
- creating a list of streams being served from each of the disks, ordered by the buffer requirement of each of the streams;
- selecting a buffering mode from one of (a) balancing a load across the disks and (b) maximizing streams that can be served from the buffer;
- when the mode is balancing the load across the disks, allocating the buffer to the streams on a most heavily loaded one of the disks so as to serve the streams from the buffer, starting from a stream with a smallest buffer requirement and proceeding to streams with larger buffer requirements until the buffer requirement of a stream can not be satisfied; and
- when the mode is maximizing the streams that can be served from the buffer: examining the buffer requirements and as a function thereof, allocating the buffer so as to maximize a number of streams that can be provided therefrom regardless of the load distribution across the disks.
- 3. A system for managing memory buffer in a video server, wherein a plurality of clients are served from video streams provided from disks, comprising:
- means for determining buffer requirements of a plurality of the video streams, the buffer requirements being a number of frames separating each video stream from an immediately previous video stream carrying the same video;
- means for creating a list of streams being served from each of the disks, ordered by the buffer requirement of each of the streams;
- means for determining when to balance the load across the disks;
- means for allocating the buffer to the streams on a most heavily loaded one of the disks so as to serve the streams from the buffer, starting from a stream with a smallest buffer requirement and proceeding to streams with larger buffer requirements until the buffer requirement of a stream can not be satisfied; and
- means for retaining blocks of the immediately preceding stream in the buffer allocated to its following stream and discarding the blocks from the buffer as they are read by a client viewing the following stream.
- 4. A method of managing memory buffer in a video server, wherein a plurality of clients are served from video streams provided by video storage elements, comprising the steps of:
- determining buffer requirements of a plurality of the video streams, the buffer requirements being a number of frames separating each video stream from an immediately previous video stream carrying the same video;
- creating a list of streams being served from each of the storage elements, ordered by the buffer requirement of each of the streams;
- identifying a most heavily loaded one of the storage elements;
- allocating the buffer to the streams on the most heavily loaded one of the storage elements so as to serve the streams from the buffer, starting from a stream with a smallest buffer requirement and proceeding to streams with larger buffer requirements until the buffer requirement of a stream can not be satisfied; and
- retaining blocks of the immediately preceding stream in the buffer allocated to its following stream and discarding the blocks from the buffer as they are read by a client viewing the following stream.
- 5. A method of managing memory buffer in a server system, wherein a plurality of clients are served from data streams provided from storage elements, comprising the steps of:
- determining buffer requirements of a plurality of the data streams, the buffer requirements being a number of data blocks separating each data stream from a previous data stream carrying the same information;
- creating a list of the data streams being served from each of the storage elements, ordered by the buffer requirement of each of the data streams;
- identifying a most heavily loaded one of the storage elements;
- allocating the buffer to the streams on the most heavily loaded one of the storage elements so as to serve the data streams from the buffer, starting from a data stream with a smallest buffer requirement and proceeding to data streams with larger buffer requirements until the buffer requirement of a data stream can not be satisfied; and
- retaining blocks of the previous data stream in the buffer allocated to its following data stream and discarding the blocks from the buffer as they are read by a client consuming the following stream.
- 6. The method of claim 5 comprising the further step of updating the list when any of starting, stopping, pausing and resuming of a data stream; and responsive to the updating, identifying the most heavily loaded one of the storage elements and reallocating the buffer to the data streams being served from the most heavily loaded storage element.
I. CROSS REFERENCE TO RELATED APPLICATIONS
This application is a continuation of U.S. Ser. No. 08/280,419, filed Jul. 6 1994, a combination of U.S. Pat. No. 5,544,327, issued Aug. 6, 1996, by Dan et al., entitled "Load Balancing in Servers by Allocating Buffer to Streams with Successively Larger Buffer Requirements Until the Buffer Requirements of a Stream Can Not Be Satisified", which is a continuation-in-part of Ser. No. 08/204,038, filed Mar. 11, 1994, U.S. Pat. No. 5,572,643, issued Nov. 5, 1996, by Dan et al., entitled "Buffer Management Policy For An On-Demand Video Server". The aforementioned U.S. Patents are commonly owned with this application.
US Referenced Citations (11)
Continuations (1)
|
Number |
Date |
Country |
Parent |
280419 |
Jul 1994 |
|
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
204038 |
Mar 1994 |
|