Scheduling storage accesses for multiple continuous media streams
First Claim
1. A system for scheduling storage accesses of multiple continuous media streams, comprising:
- a plurality of media stream clients;
a plurality of media stream managers, wherein each media stream manager is associated with a different one of said media stream clients and maintains a ring of buffers configured to buffer media stream data between its associated media stream client and one or more storage systems, wherein each media stream manager is configured to provide a guaranteed maximum media stream rate to its associated media stream client;
a different deadline queue associated with each one of said one or more storage systems;
wherein each deadline queue is configured to queue buffer requests from said media stream managers, wherein each buffer request includes a deadline by which the buffer request must be fulfilled by the corresponding storage system to meet the corresponding guaranteed maximum media stream rate, wherein each deadline is calculated as;
current_time+(N−
1)*buf_time, wherein current_time is a time reference for the system, N is the number of buffers in the ring of buffers, and buf_time is the minimum time in which the media stream client can consume one of the buffers without exceeding the guaranteed maximum media stream rate;
wherein each media stream manager is configured so that once one of its buffers is consumed by the associated media stream client, the media stream manager submits a buffer request and deadline for that buffer to the appropriate deadline queue; and
wherein buffer requests are ordered in each deadline queue from earliest to latest deadline.
2 Assignments
0 Petitions
Accused Products
Abstract
A system for scheduling storage accesses of multiple continuous media streams may include a plurality of media stream clients. Associated with each media stream client is one of a plurality of media stream managers. Each media stream manager maintains a ring of buffers configured to buffer media stream data between its associated media stream client and one or more storage systems. A different deadline queue may be associated with each one of the storage systems. Each deadline queue may be configured to queue buffer requests from the media stream managers. Each buffer request may include a deadline by which the buffer request must be fulfilled by the corresponding storage system. Each media stream manager may be configured so that once one of its buffers is consumed by the associated media stream client, the media stream manager submits a buffer request and deadline for that buffer to the appropriate deadline queue. Buffer requests may be ordered in each deadline queue from earliest to latest deadline. Each media stream manager may be configured to provide a guaranteed maximum media stream rate to its associated media stream client. The system may also include an admission controller configure to negotiate a maximum media stream rate with each media stream client. The admission controller may allow additional media stream clients only if negotiated maximum media stream rates can be maintained for all current media stream clients. The system may also include a bandwidth allocator that allocates bandwidth between guaranteed rate requests and non-rate-guaranteed requests.
157 Citations
34 Claims
-
1. A system for scheduling storage accesses of multiple continuous media streams, comprising:
-
a plurality of media stream clients;
a plurality of media stream managers, wherein each media stream manager is associated with a different one of said media stream clients and maintains a ring of buffers configured to buffer media stream data between its associated media stream client and one or more storage systems, wherein each media stream manager is configured to provide a guaranteed maximum media stream rate to its associated media stream client;
a different deadline queue associated with each one of said one or more storage systems;
wherein each deadline queue is configured to queue buffer requests from said media stream managers, wherein each buffer request includes a deadline by which the buffer request must be fulfilled by the corresponding storage system to meet the corresponding guaranteed maximum media stream rate, wherein each deadline is calculated as;
current_time+(N−
1)*buf_time, wherein current_time is a time reference for the system, N is the number of buffers in the ring of buffers, and buf_time is the minimum time in which the media stream client can consume one of the buffers without exceeding the guaranteed maximum media stream rate;
wherein each media stream manager is configured so that once one of its buffers is consumed by the associated media stream client, the media stream manager submits a buffer request and deadline for that buffer to the appropriate deadline queue; and
wherein buffer requests are ordered in each deadline queue from earliest to latest deadline. - View Dependent Claims (2, 5, 6, 7)
-
-
3. A system for scheduling storage accesses of multiple continuous media streams, comprising:
-
a plurality of media stream clients;
a plurality of media stream managers, wherein each media stream manager is associated with a different one of said media stream clients and maintains a ring of buffers configured to buffer media stream data between its associated media stream client and one or more storage systems;
a different deadline queue associated with each one of said one or more storage systems;
wherein each deadline queue is configured to queue buffer requests from said media stream managers, wherein each buffer request includes a deadline by which the buffer request must be fulfilled by the corresponding storage system;
wherein each media stream manager is configured so that once one of its buffers is consumed by the associated media stream client, the media stream manager submits a buffer request and deadline for that buffer to the appropriate deadline queue;
wherein buffer requests are ordered in each deadline queue from earliest to latest deadline; and
an admission controller configured to negotiate a maximum media stream rate with each media stream client, wherein the admission controller is further configured to allow additional media stream clients only if negotiated maximum media stream rates can be maintained for all current media stream clients. - View Dependent Claims (4)
-
-
8. A system for scheduling storage accesses of multiple continuous media streams, comprising:
-
a plurality of media stream clients;
a plurality of media stream managers, wherein each media stream manager is associated with a different one of said media stream clients and maintains a ring of buffers configured to buffer media stream data between its associated media stream client and one or more storage systems;
a different deadline queue associated with each one of said one or more storage systems;
wherein each deadline queue is configured to queue buffer requests from said media stream managers, wherein each buffer request includes a deadline by which the buffer request must be fulfilled by the corresponding storage system;
wherein each media stream manager is configured so that once one of its buffers is consumed by the associated media stream client, the media stream manager submits a buffer request and deadline for that buffer to the appropriate deadline queue;
wherein buffer requests are ordered in each deadline queue from earliest to latest deadline; and
wherein each ring of buffers contains a number of buffers wherein the number is chosen according to a maximum stream rate requested by the associated media stream client, wherein the number is chosen to provide just enough buffers to avoid underrun at the maximum stream rate.
-
-
9. A system for scheduling storage accesses of multiple continuous media streams, comprising:
-
a plurality of media stream clients;
a plurality of media stream managers, wherein each media stream manager is associated with a different one of said media stream clients and maintains a ring of buffers configured to buffer media stream data between its associated media stream client and one or more storage systems;
a different deadline queue associated with each one of said one or more storage systems;
wherein each deadline queue is configured to queue buffer requests from said media stream managers, wherein each buffer request includes a deadline by which the buffer request must be fulfilled by the corresponding storage system;
wherein each media stream manager is configured so that once one of its buffers is consumed by the associated media stream client, the media stream manager submits a buffer request and deadline for that buffer to the appropriate deadline queue;
wherein buffer requests are ordered in each deadline queue from earliest to latest deadline; and
an admission controller configured to negotiate a maximum media stream rate with each media stream client, wherein the admission controller is further configured to allow an additional media stream client only if sufficient memory is available for a ring of buffers to be established for the additional media stream client having a number of buffers just sufficient to prevent underrun at the negotiated maximum media stream rate.
-
-
10. A system for scheduling storage accesses of multiple continuous media streams, comprising:
-
a plurality of media stream clients;
a plurality of media stream managers, wherein each media stream manager is associated with a different one of said media stream clients and maintains a ring of buffers configured to buffer media stream data between its associated media stream client and one or more storage systems;
a different deadline queue associated with each one of said one or more storage systems;
wherein each deadline queue is configured to queue buffer requests from said media stream managers, wherein each buffer request includes a deadline by which the buffer request must be fulfilled by the corresponding storage system;
wherein each media stream manager is configured so that once one of its buffers is consumed by the associated media stream client, the media stream manager submits a buffer request and deadline for that buffer to the appropriate deadline queue;
wherein buffer requests are ordered in each deadline queue from earliest to latest deadline;
one or more non-rate-guaranteed clients; and
a bandwidth allocator configured to receive rate guaranteed requests from said deadline queues and non-rate-guaranteed requests from said non-rate-guaranteed clients, wherein said bandwidth allocator is configured to allocate a set portion of storage system bandwidth to said rate guaranteed requests and remaining bandwidth to said non-rate-guaranteed requests. - View Dependent Claims (11, 12, 13)
-
-
14. A method for scheduling storage accesses of multiple continuous media streams, comprising:
-
establishing a guaranteed maximum stream rate for each of a plurality of multimedia streams;
establishing a ring of buffers for each multimedia stream;
each multimedia stream fulfilling multimedia data requests from its associated ring of buffers;
as each buffer in one of said rings of buffers is consumed, queuing a request for that buffer in a deadline queue associated with the storage system from which the request is to be satisfied, wherein said queuing a request comprises;
calculating a deadline time indicating the latest time by which the buffer request can be fulfilled and still meet the corresponding guaranteed maximum stream rate, wherein the deadline time is calculated as current_time+(N−
1)*buf_time, wherein current_time is a time reference for the system, N is the number of buffers in the associated ring of buffers, and buf_time is the minimum time in which a media stream client can consume one of the buffers without exceeding the guaranteed maximum media stream rate;
queuing the deadline time with the request in the deadline queue; and
ordering requests in the deadline queue from earliest to latest deadline; and
for each deadline queue, issuing requests from the deadline queue to the associated storage system, wherein the request with the earliest deadline is issued first. - View Dependent Claims (15, 16)
-
-
17. A method for scheduling storage accesses of multiple continuous media streams, comprising:
-
establishing a guaranteed maximum stream rate for each of a plurality of multimedia streams;
establishing a ring of buffers for each multimedia stream;
each multimedia stream fulfilling multimedia data requests from its associated ring of buffers;
as each buffer in one of said rings of buffers is consumed, queuing a request for that buffer in a deadline queue associated with the storage system from which the request is to be satisfied;
for each deadline queue, issuing requests from the deadline queue to the associated storage system, wherein the request with the earliest deadline is issued first;
receiving a request from a media stream client to access a media file at a stream rate up to a requested maximum stream rate; and
admitting the media stream client only if the requested maximum stream rate can be met in addition to all existing guaranteed maximum stream rates.
-
-
18. A method for scheduling storage accesses of multiple continuous media streams, comprising:
-
establishing a guaranteed maximum stream rate for each of a plurality of multimedia streams;
establishing a ring of buffers for each multimedia stream;
each multimedia stream fulfilling multimedia data requests from its associated ring of buffers;
as each buffer in one of said rings of buffers is consumed, queuing a request for that buffer in a deadline queue associated with the storage system from which the request is to be satisfied;
for each deadline queue, issuing requests from the deadline queue to the associated storage system, wherein the request with the earliest deadline is issued first; and
allocating a portion of storage system bandwidth to rate guaranteed media streams and the remaining bandwidth portion to non-rate-guaranteed requests. - View Dependent Claims (19, 20, 21, 22)
migrating rate guaranteed requests from said deadline queue and non-rate-guaranteed requests from said priority queue to a seek reorder queue;
ordering all requests in said seek reorder queue by the physical storage address of the location; and
issuing requests from the seek reorder queue to the storage system in one direction of the seek reorder queue until the end of the seek reorder queue is reached and then reversing the direction for issuing requests.
-
-
23. A method for scheduling storage accesses of multiple continuous media streams, comprising:
-
establishing a guaranteed maximum stream rate for each of a plurality of multimedia streams;
establishing a ring of buffers for each, multimedia stream, wherein said establishing a ring of buffers comprises allocating memory for a number of buffers, wherein the number of buffers is chosen according to the guaranteed maximum stream rate for the associated multimedia stream so that just enough buffers are allocated to avoid underrun at the guaranteed maximum stream rate;
each multimedia stream fulfilling multimedia data requests from its associated ring of buffers;
as each buffer in one of said rings of buffers is consumed, queuing a request for that buffer in a deadline queue associated with the storage system from which the request is to be satisfied; and
for each deadline queue, issuing requests from the deadline queue to the associated storage system, wherein the request with the earliest deadline is issued first.
-
-
24. A method for scheduling storage accesses of multiple continuous media streams, comprising:
-
creating a table of buffer numbers for a plurality of stream rates, wherein said creating a table comprises;
generating a number of stream simulators sufficient to consume an entire bandwidth allocated for rate guaranteed streams;
each stream simulator generating stream requests from a model buffer ring having a number of buffers;
adjusting the number of buffers in each model buffer ring up or down depending on whether or not an underrun condition occurred;
repeating said generating stream requests and said adjusting until an optimum number of buffers for each buffer ring is found that just avoids an underrun condition; and
creating said table by repeating said generating a number of stream simulators, said generating stream requests, said adjusting, and said repeating said generating stream requests, until an optimum buffer number is found for each of a plurality of stream rates;
establishing a guaranteed maximum stream rate for each of a plurality of multimedia streams;
establishing a ring of buffers for each multimedia stream;
each multimedia stream fulfilling multimedia data requests from its associated ring of buffers;
as each buffer in one of said rings of buffers is consumed, queuing a request for that buffer in a deadline queue associated with the storage system from which the request is to be satisfied; and
for each deadline queue, issuing requests from the deadline queue to the associated storage system, wherein the request with the earliest deadline is issued first. - View Dependent Claims (25)
-
-
26. A method for scheduling storage accesses of multiple continuous media streams, comprising:
-
establishing a guaranteed maximum stream rate for each of a plurality of multimedia streams;
establishing a ring of buffers for each multimedia stream;
each multimedia stream fulfilling multimedia data requests from its associated ring of buffers;
as each buffer in one of said rings of buffers is consumed, queuing a request for that buffer in a deadline queue associated with the storage system from which the request is to be satisfied; and
for each deadline queue, issuing requests from the deadline queue to the associated storage system, wherein the request with the earliest deadline is issued first, wherein requests issued to the associated storage system access a storage disk, wherein each request for a particular stream alternates between an inner disk zone and an outer disk zone.
-
-
27. A method for scheduling storage accesses of multiple continuous media streams, comprising:
-
establishing a guaranteed maximum stream rate for each of a plurality of multimedia streams;
establishing a ring of buffers for each multimedia stream;
each multimedia stream fulfilling multimedia data requests from its associated ring of buffers;
as each buffer in one of said rings of buffers is consumed, queuing a request for that buffer in a deadline queue associated with the storage system from which the request is to be satisfied;
for each deadline queue, issuing requests from the deadline queue to the associated storage system, wherein the request with the earliest deadline is issued first; and
determining a maximum storage system bandwidth, wherein said determining comprises;
creating a synthetic load of data blocks in the storage system, wherein said creating a synthetic load comprises allocating blocks randomly in inner and outer storage disk zones, wherein said allocating blocks randomly alternates between the inner and outer zones; and
determining a maximum storage bandwidth using said synthetic load. - View Dependent Claims (28)
-
-
29. A method for managing a multimedia data stream, comprising:
-
receiving a request from a stream requester to establish a multimedia data stream to access a multimedia file stored on a storage system at a guaranteed max stream rate;
linking to the multimedia file;
creating a ring of buffers, wherein said creating a ring of buffers comprises establishing a number of buffers, wherein the number of buffers established is just enough to prevent buffer underrun at the guaranteed maximum stream rate;
initially filling said ring of buffers with multimedia data for said stream; and
after said initially filling said ring of buffers, streaming multimedia data between the multimedia file on the storage system and the multimedia stream requester. - View Dependent Claims (30, 31)
-
-
32. A method for managing a multimedia data stream, comprising:
-
receiving a request from a stream requester to establish a multimedia data stream to access a multimedia file stored on a storage system at a guaranteed max stream rate;
linking to the multimedia file;
creating a ring of buffers, wherein said creating a ring of buffers comprises establishing a number of buffers, wherein the number is selected from a predetermined table of optimum buffer ring sizes according to maximum stream rates to prevent buffer underrun at the guaranteed max steam rate;
initially filling said ring of buffers with multimedia data for said stream; and
after said initially filling said ring of buffers, streaming multimedia data between the multimedia file on the storage system and the multimedia stream requester.
-
-
33. A method for managing a multimedia data stream, comprising:
-
receiving a request from a stream requester to establish a multimedia data stream to access a multimedia file stored on a storage;
linking to the multimedia file;
creating a ring of buffers;
initially filling said ring of buffers with multimedia data for said stream;
after said initially filling said ring of buffers, streaming multimedia data between the multimedia file on the storage system and the multimedia stream requester, wherein said streaming multimedia data comprises;
consuming one of the buffers in said ring of buffers;
generating a request and a deadline for the just consumed buffer, wherein said deadline indicates the latest time the request must be fulfilled in order to prevent buffer underrun;
issuing the request and deadline for the just consumed buffer to a deadline queue, wherein the request is ordered in said deadline queue according to said deadline; and
consuming a next buffer in the ring of buffers and repeating said generating and said issuing for said next buffer, wherein said buffers are consumed in a circular order. - View Dependent Claims (34)
current_time+(N−
1)*buf_time;
wherein current_time is a time reference, N is the number of buffers in the ring of buffers, and buf_time is the minimum time in which the multimedia stream requester can consume one of the buffers without exceeding a guaranteed maximum stream rate.
-
Specification