Prefetching to service multiple video streams from an integrated cached disk array
First Claim
1. A method of operating a cached disk storage subsystem to supply a video data stream at a substantially constant data rate to a client of a data network, said method comprising the steps of:
- a) scheduling issuance of periodic fetch commands to said cached disk storage subsystem for fetching segments of said video data stream so that said segments of said video data stream are fetched from said cached disk storage subsystem in time for said video data stream so long as said segments of said video data stream are in cache of said cached disk storage subsystem when said periodic fetch commands are issued to said cached disk storage subsystem; and
b) scheduling issuance of periodic prefetch commands to said cached disk storage subsystem for prefetching said segments of said video data stream sufficiently in advance of said periodic fetch commands to insure that said segments of said video data stream are in said cache of said cached disk storage subsystem when said periodic fetch commands are issued to said cached disk storage subsystem, wherein the scheduling of the issuance of the periodic prefetch commands to said cached disk storage subsystem checks availability of resources in the cached disk storage subsystem, and selects an amount of advance of the prefetch commands before the fetch commands in dependence on the availability of resources in the cached disk storage subsystem in order to conserve the resources in the cached disk storage subsystem.
1 Assignment
0 Petitions
Accused Products
Abstract
A video file server includes an integrated cached disk array storage subsystem and a plurality of stream server computers linking the cached disk storage subsystem to the data network for the transfer of video data streams. The video file server further includes a controller server for applying an admission control policy to client requests and assigning stream servers to service the client requests. The stream servers include a real-time scheduler for scheduling isochronous tasks, and supports at least one industry standard network file access protocol and one file access protocol for continuous media file access. The cached disk storage subsystem is responsive to video prefetch commands, and the data specified for a prefetch command for a process are retained in an allocated portion of the cache memory from the time that the cached disk storage subsystem has responded to the prefetch command to the time that the cached disk storage subsystem responds to a fetch command specifying the data for the process. The time between prefetching and fetching is selected based on available disk and cache resources. The video file server provides video-on-demand service by maintaining and dynamically allocating sliding windows of video data in the random access memories of the stream server computers.
-
Citations
35 Claims
-
1. A method of operating a cached disk storage subsystem to supply a video data stream at a substantially constant data rate to a client of a data network, said method comprising the steps of:
-
a) scheduling issuance of periodic fetch commands to said cached disk storage subsystem for fetching segments of said video data stream so that said segments of said video data stream are fetched from said cached disk storage subsystem in time for said video data stream so long as said segments of said video data stream are in cache of said cached disk storage subsystem when said periodic fetch commands are issued to said cached disk storage subsystem; and b) scheduling issuance of periodic prefetch commands to said cached disk storage subsystem for prefetching said segments of said video data stream sufficiently in advance of said periodic fetch commands to insure that said segments of said video data stream are in said cache of said cached disk storage subsystem when said periodic fetch commands are issued to said cached disk storage subsystem, wherein the scheduling of the issuance of the periodic prefetch commands to said cached disk storage subsystem checks availability of resources in the cached disk storage subsystem, and selects an amount of advance of the prefetch commands before the fetch commands in dependence on the availability of resources in the cached disk storage subsystem in order to conserve the resources in the cached disk storage subsystem. - View Dependent Claims (2, 3, 4, 5, 8)
-
-
6. A method of operating a video file server having a cached disk storage subsystem, said cached disk storage subsystem having disk storage and a random access cache memory and responding to prefetch commands for staging data specified by respective processes from the disk storage to an allocated portion of the cache memory when the specified data are absent from the cache memory, said cached disk storage subsystem responding to fetch commands from the respective processes for fetching the specified data from the cache memory, wherein a plurality of the processes share access to data in the allocated portion of the cache memory, said method comprising the steps of:
-
(a) receiving information with each prefetch command from each process for preventing deallocation of the allocated portion of the cache memory whenever a process has prefetched but not yet fetched data stored in the allocated portion of the cache memory; (b) retaining the specified data in the allocated portion of the cache memory from the time that the cached disk storage subsystem responds to each prefetch command from said each process to the time that the cached disk storage subsystem responds to each fetch command from said each process; and (c) after the cached disk storage subsystem responds to each fetch command, and when no information received with the prefetch commands indicates that another process has prefetched but not yet fetched data stored in the allocated portion of the cache memory, freeing the allocated portion of the cache memory so that the allocated portion of the cache memory becomes free to be allocated to receive different data. - View Dependent Claims (7, 9, 10)
-
-
11. A method of operating a cached disk storage subsystem to supply a video data stream at a substantially constant data rate, the cached disk storage subsystem having disk storage and a random-access cache memory, said method comprising the steps of:
-
a) scheduling issuance of periodic fetch commands to said cached disk storage subsystem for fetching segments of said video data stream so that said segments of said video data stream are fetched from said cached disk storage subsystem just in time for said video data stream so long as said segments of said video data stream are in the cache memory when said periodic fetch commands are issued to said cached disk; and b) scheduling issuance of periodic prefetch commands to said cached disk storage subsystem for prefetching said segments of said video data stream just sufficiently in advance of said periodic fetch commands to insure that said segments of said video data stream are in the cache memory when said periodic fetch commands are issued to said cached disk storage subsystem; wherein the cached disk storage subsystem receives prefetch commands from a plurality of processes to prefetch data stored in a shared allocated portion of the cache memory, receives information with each prefetch command from each process for preventing deallocation of the shared allocated portion of cache memory whenever a process has prefetched but not yet fetched data stored in the shared allocated portion of the cache memory, retains the data segment in the shared allocated portion of the cache memory until none of the plurality of processes have prefetched but not yet fetched data stored in the shared allocated portion of the cache memory, and frees the shared allocated portion of the cache memory when none of the plurality of processes have prefetched but not yet fetched data from the shared allocated portion of the cache memory. - View Dependent Claims (12, 13, 14)
-
-
15. A method of operating a cached disk storage subsystem to supply a video data stream at a substantially constant data rate to a client of a data network, said method comprising the steps of:
-
a) scheduling issuance of periodic fetch commands to said cached disk storage subsystem for fetching segments of said video data stream so that said segments of said video data stream are fetched from said cached disk storage subsystem in time for said video data stream so long as said segments of said video data stream are in cache of said cached disk storage subsystem when said periodic fetch commands are issued to said cached disk storage subsystem; and b) scheduling issuance of periodic prefetch commands to said cached disk storage subsystem for prefetching said segments of said video data stream sufficiently in advance of said periodic fetch commands to insure that said segments of said video data stream are in said cache of said cached disk storage subsystem when said periodic fetch commands are issued to said cached disk storage subsystem, wherein the scheduling of the issuance of the periodic prefetch commands to said cache disk storage subsystem selects an amount of advance of the prefetch commands before the fetch commands in order to increase the amount of advance when other clients of said data network will be fetching video data included in said video data stream; wherein the cached disk storage subsystem receives prefetch commands from a plurality of processes to prefetch data stored in a shared allocated portion of the cache memory, receives information with each prefetch command from each process for preventing deallocation of the shared allocated portion of the cache memory when another process has prefetched but not yet fetched data stored in the shared allocated portion of the cache memory, retains the data segment in the shared allocated portion of the cache memory until none of the plurality of processes have prefetched but not yet fetched data stored in the shared allocated portion of the cache memory, and frees the shared allocated portion of the cache memory when none of the plurality of processes have prefetched but not yet fetched data from the shared allocated portion of the cache memory. - View Dependent Claims (16, 17, 18)
-
-
19. A cached disk storage subsystem responsive to a respective sequence of a prefetch command and a fetch command issued by each of a plurality of processes, said cached disk storage subsystem comprising:
-
disk storage; a random access cache memory linked to the disk storage for staging data from the disk storage to an allocated portion of the cache memory in response to each prefetch command from each process when data specified by said each prefetch command from said each process are absent from the cache memory, the plurality of the processes having shared access to the data in the allocated portion of the cache memory, and a cache controller responsive to each fetch command from said each process for fetching the specified data from the cache memory, and responsive to said each prefetch command from said each process for (a) receiving information with said each prefetch command from said each process for preventing deallocation of the allocated portion of the cache memory whenever a process has prefetched but not yet fetched data stored in the allocated portion of the cache memory; (b) retaining the specified data in the allocated portion of the cache memory from the time that the cached disk storage subsystem responds to said each prefetch command from said each process to the time that the cached disk storage subsystem responds to said each fetch command from said each process; and (b) after responding to said each fetch command from said each process, when no information received with the prefetch commands indicates that another process has issued a prefetch command for the specified data and has not yet fetched the specified data, freeing the allocated portion of cache memory holding the specified data so that the allocated portion of cache memory becomes free to be allocated to receive different data. - View Dependent Claims (20, 21)
-
-
22. A video file server comprising, in combination:
-
a controller server responsive to requests from network clients for video data sets for initiating execution of a process for satisfying each request by issuing a sequence of prefetch and fetch commands for prefetching and fetching specified data segments of each video data set; and a cached disk storage subsystem coupled to the controller server for responding to the prefetch and fetch commands issued by each process, said cached disk storage subsystem including; disk storage; a random access cache memory linked to the disk storage for staging each specified data segment from the disk storage to an allocated portion of the cache memory in response to each prefetch command when said each specified data segment is absent from the cache memory, and a cache controller responsive to each fetch command for fetching said each specified data segment from the cache memory, and for (a) receiving prefetch commands from a plurality of processes to prefetch data stored in a shared allocated portion of the cache memory, (b) receiving information with each prefetch command from each process for preventing deallocation of the shared allocated portion of the cache memory whenever a process has prefetched but not yet fetched data stored in the shared allocated portion of the cache memory, (c) retaining the data segment in the shared allocated portion of the cache memory until none of the plurality of processes have prefetched but not yet fetched data stored in the shared allocated portion of the cache memory, and (d) freeing the shared allocated portion of the cache memory when none of the plurality of processes have prefetched but not yet fetched data from the shared allocated portion of the cache memory. - View Dependent Claims (23)
-
-
24. A video file server comprising, in combination:
-
a controller server responsive to requests from network clients for video data sets and initiating execution of a process for satisfying each request, each process issuing a sequence of prefetch and fetch commands for prefetching and fetching specified data segments of each video data set; and a cached disk storage subsystem coupled to the stream server for responding to the prefetch and fetch commands issued by each process; wherein said video file server includes a scheduler for scheduling the prefetch commands and the fetch commands issued by each process so that said segments of said each video data set are fetched from said cached disk storage subsystem in time for delivery to each network client at a substantially constant data rate so long as said segments of said each video data set are in cache of said cached disk storage subsystem when said each process issues said periodic fetch commands to said cached disk storage subsystem, and so that said segments of said each video data set are prefetched for said each process sufficiently in advance of said periodic fetch commands for said each process to insure that said segments of said each video data set are in said cache of said cached disk storage subsystem when said periodic fetch commands are issued by said each process to said cached disk storage subsystem; and wherein the cached disk storage subsystem includes a cache controller for receiving prefetch commands from a plurality of processes to prefetch data stored in a shared allocated portion of the cache memory, for receiving information with each prefetch command from each process for preventing deallocation of the shared allocated portion of the cache memory whenever a process has prefetched but not yet fetched data stored in the shared allocated portion of the cache memory, for retaining data in the shared allocated portion of the cache memory until none of the plurality of processes have prefetched but not yet fetched data stored in the shared allocated portion of the cache memory, and for freeing the shared allocated portion of the cache memory when none of the plurality of processes have prefetched but not yet fetched data from the shared allocated portion of the cache memory. - View Dependent Claims (25, 26, 27, 28, 29, 30, 31)
-
-
32. A method of operating a cached disk storage subsystem, said cached disk storage subsystem having disk storage and a random access cache memory and responding to prefetch commands for staging data specified by respective processes from the disk storage to respective allocated portions of the cache memory when the specified data are absent from the cache memory, said cached disk storage subsystem responding to fetch commands from the respective processes for fetching the specified data from the cache memory, wherein a plurality of the processes share access to data in at least one of the allocated portions of the cache memory, said method comprising the steps of:
-
(a) responding to each prefetch command for staging data specified by each process by placing said each process on a wait list for the allocated portion of the cache memory storing the data specified by said each process; and (b) responding to each fetch command from said each process for said data specified by said each process by removing said each process from said wait list for said allocated portion of the cache memory storing said data specified by said each process, and when the wait list becomes empty, freeing said allocated portion of the cache memory storing said data specified by said each process so that said each allocated portion of the cache memory storing said data specified by said each process becomes free to be allocated to receive different data. - View Dependent Claims (33)
-
-
34. A cached disk storage subsystem, said cached disk storage subsystem comprising, in combination:
-
disk storage; random access cache memory; a cache controller for responding to prefetch commands for staging data specified by respective processes from the disk storage to respective allocated portions of the cache memory when the specified data are absent from the cache memory, said cached disk storage subsystem responding to fetch commands from the respective processes for fetching the specified data from the cache memory, wherein a plurality of the processes share access to data in at least one of the allocated portions of the cache memory, said cache controller being programmed for; (a) responding to each prefetch command for staging data specified by each process by placing said each process on a wait list for the allocated portion of the cache memory storing the data specified by said each process; and (b) responding to each fetch command from said each process for said data specified by said each process by removing said each process from said wait list for said allocated portion of the cache memory storing said data specified by said each process, and when the wait list becomes empty, freeing said allocated portion of the cache memory storing said data specified by said each process so that said allocated portion of the cache memory storing said data specified by said each process becomes free to be allocated to receive different data. - View Dependent Claims (35)
-
Specification