1. A method for processing metadata associated with multimedia content, wherein said multimedia content is located on a first storage medium, said method comprising the steps of:
extracting said metadata from a descriptor stream, wherein said descriptor stream is located on a second storage medium and comprises at least one of: a descriptor pair related to said multimedia content and a reference pair related to said multimedia content; and
enabling an operation using said metadata, wherein said operation comprises at least one of: amending said descriptor stream, storing said descriptor stream, searching said multimedia content via a metadata query, playing said multimedia content, forming an electronic program guide using said metadata.
2. The method of claim 1, wherein said descriptor stream is are generated from multiplexed metadata extracted from within said multimedia content.
3. The method of claim 1, wherein said amending of said descriptor stream uses external source metadata.
4. The method of claim 1, wherein said metadata is supplied by user input.
5. The method of claim 1, wherein said descriptor pair are transcoded from a first encoding into a second encoding.
6. The method of claim 5, wherein said descriptors are generated by an offline process or from out-of-band data.
7. The method of claim 1, wherein said enablement step is activated via a use of a user interface.
8. The method of claim 1, wherein said references comprise position references to the stored multimedia content.
9. A device for processing metadata associated with multimedia content, wherein said multimedia content is located on a first storage medium, said device comprising:
means for extracting said metadata from a descriptor stream, wherein said descriptor stream is located on a second storage medium and comprises pairs of descriptors and references, said descriptors and said references being related to said multimedia content; and
means for enabling an operation using said metadata, wherein said operation comprises at least one of: amending said descriptor stream, storing said descriptor stream, searching said multimedia content via a metadata query, playing said multimedia content, and forming an electronic program guide using said metadata.
10. The device of claim 9, further comprising a user interface suited for supplying metadata andor for activating said means for enabling an operation.
11. The device of claim 9, further comprising means for transcoding said descriptors from a first encoding into a second encoding.
12. The device of claim 9, wherein said references comprise position references to the stored multimedia content.
The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.
1. A method for allocating cycles of a CPU (central processing unit) of a storage system, comprising:
receiving a plurality of requests to be processed by the CPU;
associating each request to one of a plurality of tasks, a first task of the plurality of tasks being for processing inputoutput (IO) requests of the storage system, the first task including a plurality of flows and each flow being associated with a queue and a flow counter value, each queue being configured to hold requests;
selecting one of the plurality of tasks for processing by the CPU based on an examination of a number of cycles processed by the CPU for each task of the plurality of tasks that requires processing;
when the selected task is the first task, selecting one of the plurality of flows having a lowest flow counter value among the flow counter values of flows that require processing by the CPU; and
processing by the CPU a request from the queue of the selected flow, the flow counter of the selected flow being increased based on a data consumption of the processed request.
2. The method of claim 1, wherein the flow counter value of the selected flow is increased based on a weight assigned to the flow and the data consumption for the processed task.
3. The method of claim 2, wherein the weight assigned to each of the plurality of flows is directly proportional to an inputoutputs per second (IOPS) delivered for each of the plurality of flows.
4. The method of claim 1, wherein the requests to be processed are scheduled for processing based on a dual currency that includes (a) a number of CPU cycles used by each task and (b) the flow counter values of the plurality of flows
5. The method of claim 1, wherein the data consumption of the processed request is based on a size of a read or write request of the processed request.
6. The method of claim 1, wherein each request is one of an TO request or a work request for a background task.
7. The method of claim 1, further including:
detecting an activated flow that requires CPU processing, the activated flow having been idle for a period of time greater than a threshold period; and
adjusting the flow counter value of the activated flow to be equal to a maximum between a current value of the flow counter value of the activated flow and a minimum flow counter of all active flows.
8. The method of claim 1, wherein each of the plurality of tasks is assigned a task weight that that is used to increase a task counter value, wherein selecting one of the plurality of tasks further includes:
selecting the task with a lowest task counter value among the task counter values of tasks that require processing by the CPU.
9. The method of claim 8, wherein the task counter value of the selected task is increased based on an amount of CPU cycles consumed by a processed task associated with the selected task and based on the assigned task weight for the selected task.
10. The method of claim 1, wherein each flow of the plurality of flows is associated with a respective volume, each volume configured for the storage system, wherein the storage system manages data storage consisting of disk storage and flash cache.
11. The method of claim 10,
wherein each volume is configured from one or more storage arrays; and
wherein two or more storage arrays are defined as part of a clustered storage array
12. The method of claim 10,
wherein each volume is configured from one or more storage arrays; and
wherein a pool is configured for each volume, each volume defined from the storage system defined by one or more storage arrays.
13. The method of claim 1, wherein a performance metric defined by inputoutputs per second (IOPS) is assigned to each of the flows, each flow corresponding to a volume, wherein a weight assigned to each of the flows is directly proportional to the respective IOPS of the flow.
14. The method of claim 13, wherein the performance metric assigned to each volume is a portion of available performance assignable for processing IO requests to the plurality of flows.
15. The method of claim 13, wherein each flow of the plurality of flows is associated with a volume to be serviced by the storage system, wherein based on anticipated storage demands by volume the performance metric assigned to the volumes is configurable.
16. The method of claim 15, wherein performance metrics assigned to specific volumes define a guaranteed amount of reserved IOPS.
17. A storage system comprising:
a central processing unit (CPU);
a non-volatile memory (NVRAM) for storing incoming write requests;
a solid state memory (SSD) configured as a read cache memory; and
a hard drive (HDD) for permanent data storage, wherein the CPU:
associates requests requiring processing by the CPU to one of a plurality of tasks, a first task of the plurality of tasks being for processing inputoutput (TO) requests of the storage system, the first task including a plurality of flows and each flow being associated with a queue and a flow counter value, each queue being configured to hold requests;
selects one of the plurality of tasks for processing by the CPU based on an examination of a number of cycles processed by the CPU for each task of the plurality of tasks that requires processing;
when the selected task is the first task, selects one of the plurality of flows having a lowest flow counter value among the flow counter values of flows that require processing by the CPU; and
processes a request from the queue of the selected flow, the flow counter of the selected flow being increased based on a data consumption of the processed request.
18. The storage system of claim 17, wherein the CPU includes a plurality of cores, wherein the request to be processed is assigned to a thread executing in one of the plurality of cores.
19. The storage system of claim 17, wherein the flow counter value of the selected flow is increased based on a weight assigned to the flow and the data consumption for the processed request.
20. The storage system of claim 19, wherein the weight assigned to each of the plurality of flows is directly proportional to an inputoutputs per second (IOPS) delivered for each of the plurality of flows.
21. A non-transitory computer-readable storage medium storing a computer program for allocating cycles of a CPU (central processing unit) of a storage system, the computer-readable storage medium comprising:
program instructions for receiving a plurality of tasks to be processed by the CPU;
program instructions for associating each request to one of a plurality of tasks, a first task of the plurality of tasks being for processing inputoutput (TO) requests of the storage system, the first task including a plurality of flows and each flow being associated with a queue and a flow counter value, each queue being configured to hold requests;
program instructions for selecting one of the plurality of tasks for processing by the CPU based on an examination of a number of cycles processed by the CPU for each task of the plurality of tasks that requires processing;
program instructions for, when the selected task is the first task, selecting one of the plurality of flows having a lowest flow counter value among the flow counter values of flows that require processing by the CPU; and
program instructions for processing by the CPU a request from the queue of the selected flow, the flow counter of the selected flow being increased based on a data consumption of the processed request.
22. The storage medium of claim 21, further including:
program instructions for detecting an activated flow that requires CPU processing, the activated flow having been idle for a period of time greater than a threshold period; and
program instructions for adjusting the flow counter value of the activated flow to be equal to a maximum between a current value of the flow counter value of the activated flow and a minimum flow counter of all active flows.
23. The storage medium of claim 21, wherein each of the plurality of tasks is assigned a task weight that is used to increase a task counter value, wherein selecting one of the plurality of tasks further includes:
program instructions for selecting the task with a lowest task counter value among the task counter values of tasks that require processing by the CPU.
24. The storage medium of claim 23, wherein the task counter value of the selected task is increased based on an amount of CPU cycles consumed by a processed request associated with the selected task and based on the assigned task weight for the selected task.