DE60005205T2 - Vorrichtung und verfahren zur zusammensetzung eines mediaspeichersystems - Google Patents

Vorrichtung und verfahren zur zusammensetzung eines mediaspeichersystems Download PDF

Info

Publication number
DE60005205T2
DE60005205T2 DE60005205T DE60005205T DE60005205T2 DE 60005205 T2 DE60005205 T2 DE 60005205T2 DE 60005205 T DE60005205 T DE 60005205T DE 60005205 T DE60005205 T DE 60005205T DE 60005205 T2 DE60005205 T2 DE 60005205T2
Authority
DE
Germany
Prior art keywords
rate
buffer
guaranteed
maximum
stream
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Lifetime
Application number
DE60005205T
Other languages
English (en)
Other versions
DE60005205D1 (de
Inventor
A. Michael DEMONEY
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE60005205D1 publication Critical patent/DE60005205D1/de
Application granted granted Critical
Publication of DE60005205T2 publication Critical patent/DE60005205T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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/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
    • H04N21/2312Data placement on disk arrays
    • 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/232Content retrieval operation locally within server, e.g. reading video streams from disk arrays
    • H04N21/2326Scheduling disk or memory reading operations

Description

  • 1. Bereich der Erfindung
  • Diese Erfindung bezieht sich auf Computer-Datenspeicher und Serversysteme und genauer gesagt auf digitale Video/Audio-Speicher- und -Wiedergabe-Systeme, die mehrere kontinuierliche Medienströme unterstützen.
  • 2. Beschreibung der relevanten Technik
  • Multimedia- oder Video-Serversysteme werden in einer Vielzahl von Anwendungen zur Speicherung und Wiedergabe von Video-, Audio- oder anderen Multimedia-Datenströmen verwendet. Zum Beispiel können Multimedia-Server für Rundfunk-, Kabel-, Satelliten- oder Telekommunikations-Lösungen verwendet werden, um Multimedia-Information an Kunden oder Konsumenten zu verteilen. Professionelle Rundfunkanstalten und zugehörige Dienstanbieter wie Netzwerke und Tochtergesellschaften oder Kabelanbieter können digitale Video-Server einsetzen, um Multimedia-Rundfunk-Anwendungen mit hoher Bandbreite einschließlich Mehrkanal-Programm-Aussendung, Werbeeinblendungen und digitales Content-Management zu unterstützen. Andere Anwendungen für Multimedia-Serversysteme können computergestützte Ausbildung umfassen, bei der Multimedia-Ausbildungsmaterialien oder -Vorlesungen auf dem Serversystem gespeichert werden können, auf die von Studenten über ein Netzwerk oder das Internet zugegriffen werden kann.
  • Video-Archivierung, Überfliegen bzw. Durchblättern und Zurückholen ist eine weitere Anwendung für Multimedia-Server. Verschiedene Filme können von dem Server gespeichert und auf Anforderung an Benutzer verteilt werden. Video-on-Demand- oder Videoauslieferungssysteme können eine Mehrzahl von Benutzern oder Sehern in die Lage versetzen, selektiv Filme oder andere Audio-/Video-Sequenzen anzusehen, die auf einem oder mehreren Video-Servern oder Media-Servern gespeichert sind. Die Video-Server können durch Datenübertragungskanäle wie Kabelverteilsysteme, Satellitenverteilsysteme oder das Internet mit einer Mehrzahl von Benutzern oder Teilnehmern verbunden sein. Die Video-Server können eine Mehrzahl von Filmen oder anderen Audio-/Video-Sequenzen speichern, und jeder Benutzer kann einen oder mehrere Filme aus den Video-Servern zum Ansehen auswählen. Jeder Benutzer kann sowohl ein Fernsehgerät oder eine andere Einrichtung zum Betrachten als auch zugeordnete Dekodierlogik zur Auswahl und zum Betrachten der gewünschten Filme umfassen. Wenn ein Benutzer einen Film auswählt, kann der ausgewählte Film auf einem der Datenübertragungskanäle an die Einrichtung zum Betrachten des betreffenden Benutzers übertragen werden. Multimedia-Server kommen auch in Webcasting-Anwendungen vor, bei denen Unterhaltung im Internet an verschiedene Teilnehmer verteilt werden kann. Multimedia-Server kommen auch in zahlreichen anderen Anwendungen vor.
  • Um die Anforderungen von vielen verschiedenen Anwendungen und Benutzern zu erfüllen, ist es wünschenswert, daß ein Multimedia-Serversystem Flexibilität und Erweiterbarkeit bereitstellt. Zwei wichtige Anforderungen an ein Multimedia-Serversystem sind Speicherplatz und Bandbreite des Dateisystems. Multimedia-Daten wie digitales Bewegtbild-Video erfordern eine große Menge von Speicher und Datenübertragungsbandbreite. Daher verwenden Multimedia-Systeme verschiedene Typen von Videokompressionsalgorithmen, um die Menge des benötigten Speichers und der Datenübertragungsbandbreite zu verringern. Im allgemeinen gibt es verschiedene Videokompressionsverfahren für grafische Standbilder und für Bewegtbild-Video. Videokompressionsverfahren für grafische Standbilder oder einzelne Videoframes können Intraframe-Kompressionsverfahren sein, und Kompressionsverfahren für Bewegtbild-Video können Interframe-Kompressionsverfahren sein.
  • Beispiele von Vieodatenkompression für grafische Standbilder sind RLE (Run-Length Encoding) und JPEG (Joint Photographic Experts Group) Kompression. Obwohl die JPEG-Kompression ursprünglich eher für die Kompression von stehenden Bildern als für Video konzipiert wurde, wird die JPEG-Kompression in einigen Bewegtbild-Video-Anwendungen verwendet. Die meisten Videokompressionsalgorithmen sind dafür konzipiert, Bewegtbild-Video zu komprimieren. Beispiele von Videokompressionstechniken sind unter anderen MPEG (Moving Pictures Experts Group), MPEG-2, DVI (Digital Video Interactive) und Indeo.
  • Auch bei der Verwendung von Kompressionstechniken erfordern Multimedia-Anwendungen immer noch extrem große Mengen von Speicher. Zum Beispiel benötigen zwei Stunden an Video, das mit 1 Mb pro Sekunde kodiert ist, ungefähr ein Gigabyte (1 GB) Speicher. Ein System, das zahlreiche verschiedene Inhalte unterstützt, kann bis zu mehreren Terabytes (TB) Speicher benötigen. Das Serversystem muß auch in der Lage sein, genügend Bandbreite für die verschiedenen Benutzer zum Zugriff auf den ausgewählten Multimedia-Inhalt bereitzustellen, ohne das Speichersystem zu überlasten. Um zum Beispiel 100 gleichzeitige Teilnehmer zu unterstützen, die mit 1 Mb pro Sekunde kodierten Multimedia-Inhalt betrachten, muß ein Senner möglicherweise eine Bandbreite von über 100 Mb pro Sekunde unterstützen, wenn Overhead berücksichtigt wird. Wenn nicht genügend Bandbreite zur Verfügung steht, dann müssen einige Anfragen möglicherweise abgewiesen werden oder die Wiedergabequalität leidet (Video läuft zu langsam oder kann "ruckartig" erscheinen). Um solche Speicher- und Bandbreitenanforderungen zu erfüllen, kann ein Multimedia-Server ein oder mehrere RAID-Speichersysteme verwenden. In einem RAID-System können für eine gegebene Multimedia-Datei Blöcke von Multimedia-Daten über verschiedene Festplatteneinheiten hinweg gespeichert werden. Die Blöcke können an das Kommunikationsnetzwerk ausgelesen oder übertragen und an den Benutzer oder Benutzer übermittelt oder durch Rundsenden übertragen werden. Am empfangenden Ende können die Blöcke dekodiert werden, damit der Benutzer sie auf einer Anzeigeeinrichtung ansehen kann.
  • Die Verwendung von Festplattenlaufwerken zum magnetischen Speichern von Information ist wohlbekannt. Ein einzelnes Festplattenlaufwerk enthält typischerweise mehrere rotierende Platten oder Scheiben, auf deren Oberflächen Information von einem Schreib-/Lesekopf geschrieben oder gelesen werden kann. Innerhalb eines Festplattenlaufwerks rotieren die Platten gemeinsam und alle Schreib-/Leseköpfe werden typischerweise gleichzeitig bewegt, um auf verschiedene Plattenpositionen zuzugreifen. Eine Platte ist typischerweise in konzentrische Spuren bzw. Tracks formatiert, die zusammen, Platte für Platte, eine Familie von konzentrischen Zylindern definieren, und in Sektoren, die einen Teil einer Spur darstellen. Eine mit der Festplatteneinheit verbundene Steuerung legt fest, auf welchen Zylinder, Schreib-/Lesekopf und Sektor zum Lesen oder Schreiben zugegriffen wird.
  • Die Platten können auch als in Zonen eingeteilt betrachtet werden. Da sie physikalisch größer sind, enthalten Spuren in Zonen am äußeren Plattenrand mehr Sektoren als Spuren nahe der Rotationsachse der Platte. Daher ist unter der Annahme, daß die Platten mit einer konstanten Geschwindigkeit rotieren, die von den äußersten Zonen verfügbare Datenbandbreite größer als die Datenbandbreite von den innersten Zonen. Auch bei modernen Festplattenlaufwerken kann es aufgrund der Sektor/Spur-Schwankung zwischen äußeren und inneren Zonen eine 2-1 Schwankung bei der Bandbreite der Plattenübertragung zwischen dem schlechtesten Fall und dem Durchschnitt geben.
  • Viele Multimedia-Anwendungen erfordern kontinuierliche Medienströme, bei denen Datenströme mit einer festgelegten und möglicherweise über die Zeit schwankende Datenrate und mit einer festgelegten Gleichmäßigkeit dieser Lieferrate übergeben werden müssen. Um kontinuierliche Medienströme zu unterstützen, haben sich frühere Video-Streaming-Systeme auf einen) Speicher-Steuerprogramm bzw. -Scheduler mit konstantem Zeitintervall und variabler Datenrate abgestützt. Scheduler mit konstantem Zeitintervall und variabler Datenrate liefern einen Strom mit einer bestimmten Bitrate, indem sie auf die Platte mit einer Frequenz zugreifen, die allen Strömen gemeinsam ist, und indem sie die Menge von Daten variieren, die in jeder Periode geholt wird, um der geforderten Datenrate des Stromes zu entsprechen. Das Problem der Zugangssteuerung für Scheduler mit konstantem Zeitintervall und variabler Datenrate ist ziemlich einfach. Ein neuer Strom kann zugelassen werden, wenn die Platte die erforderliche zusammengefaßte Datenrate über die feste bzw. festgelegte Zugriffsperiode aufrechterhalten kann. 1 stellt einen von einer variablen Datenrate abhängigen Mechanismus mit konstantem Zeitintervall und zum Einbringen bzw. Anordnen von Daten und zeitlichen Steuern dar. Der Einfachheit halber sind nur zwei Ströme dargestellt. Auf die Datenblöcke 100 wird mit einer allen Strömen gemeinsamen, festen Periode zugegriffen. Die Größe der Datenblöcke 100 wird zwischen verschiedenen Strömen abhängig von der für einen bestimmten Strom erforderlichen Rate variiert. Wie in 1 gezeigt hat der Strom eins eine größere Blockgröße und somit eine höhere Datenrate als Strom zwei. Wenn die Ströme unter Verwendung eines Steuerungsmechanismus' mit konstantem Zeitintervall und variabler Datenrate auf die Platte aufgezeichnet werden, ist die Anordnung der Daten auf der Platte von der Rate abhängig.
  • Steuerungsprogramme mit konstantem Zeitintervall können jedoch einige Unzulänglichkeiten aufweisen. Diese Unzulänglichkeiten können eine erhebliche interne Fragmentierung des Speichers umfassen. Interne Fragmente treten auf, weil der Speicher in Vielfachen einer festen Blockgröße zugeordnet bzw. belegt wird. Eine minimale Blockgröße ist die Größe eines Gerätesektors, aber die Blöcke können typischerweise größer sein, um die Größe der Liste von freien Blöcken zu minimie ren. Interne Fragmentierung kann in jeder Blockdatei auftreten. Zum Beispiel könnte fünfzig Prozent des Speichers an interne Fragmentierung verloren gehen, wenn die gewünschte Bitrate gerade übersteigt, was von einer bestimmten Blockgröße pro Periode lieferbar war.
  • Steuerungsprogramme mit konstantem Zeitintervall können auch unter einem Verlust von Bandbreitenfähigkeit aufgrund interner Fragmentierung leiden. Interne Fragmentierung führt zu einem Verlust der Speicherbandbreite, weil das System unbenutzte Bytes holen muß.
  • Steuerungsprogramme mit konstantem Zeitintervall können auch unter erheblicher externer Fragmentierung des Speichers leiden. Weil Speicher in variablen Blöcken belegt und freigegeben wird, kann Speicher für die Verwendung durch Dateien für hohe Bitraten wegen externer Fragmentierung verloren gehen. Einige Systeme mit konstantem Zeitintervall vermeiden dieses Problem, indem sie ihre variablen Daten aus mehreren, nicht zusammenhängenden Speicherblöcken zusammensetzen. Jedoch verlieren sie dadurch Speicherdurchsatz, indem sie zusätzliche Suchvorgänge benötigen.
  • Eine weitere Unzulänglichkeit von Steuerungsprogrammen mit konstantem Zeitintervall ist die, daß sie ein komplizierteres Dateisystem erforderlich machen können, um variable Blockgrößen aufzunehmen. Das Durchsuchen erfordert Entscheidungsmechanismen, um zwischen am besten passenden und als erstes passenden Blöcken und zwischen Blöcken in einer inneren oder äußeren Zone der Platte zu wählen, um nur zwei komplizierende Faktoren zu erwähnen. Andere komplizierende Faktoren entstehen, wenn Speicherpuffer belegt werden, um die Datenblöcke mit variabler Größe aufzunehmen.
  • Steuerungsprogramme mit konstantem Zeitintervall führen zu Bitraten-abhängigem Belegen von Blöcken im Speicher. Bitraten-Abhängigkeit ist für Steuerungsprogramme mit konstantem Zeitintervall inhärent, weil die Blockgröße auf Basis der gewünschten Bitrate des Stromes gewählt wird. Somit muß eine gewünschte Streaming-Rate einer Datei bekannt sein, bevor der Strom in den Speicher geschrieben wird.
  • Steuerungsprogrammen mit konstantem Zeitintervall mangelt es typischerweise auch an Unterstützung für ein Pull-Modell und Streaming mit variabler Bitrate. Weil die Blockgröße und die Anordnung auf einer gegebenen, erwarteten Stromrate beruhen, ist das Aufnehmen bzw. Unterbringen von variablen Bitströmen und das Implementieren eines Pull-Modells im allgemeinen nicht praktikabel.
  • Während die meisten der obigen Punkte Implementierungs- oder Effizienzprobleme sind, ist das Fehlen einer Unterstützung für ein Pull-Modell ein funktionales Problem mit erheblichen Auswirkungen. Es macht eine Migration von Video-Dateien in Nicht-Echtzeit schwierig. Es verkompliziert auch Lösungen in Fällen, in denen andere Einrichtungen nicht in der Lage sind, sich an den Takt eines Servers anzubinden bzw. sich dem Takt eines Servers unterzuordnen, oder gezwungen sind, sich an eine andere Taktquelle anzubinden, wie in Fällen, in denen Kodieren und Dekodieren in einer Rundsende- bzw. Rundfunk-Umgebung an einen "Studiotakt" angebunden sind. Nicht-Echtzeit-Migration und das Bereitstellen von Eingabe und Ausgabe an externe, getaktete Einrichtungen sind wichtige Anforderungen für die Rundsende-Umgebung.
  • Daher ist es wünschenswert, einen Multimedia-Server und ein Speichersystem zu haben, das Leistung bzw. Durchsatz mit beliebig gemischten, kontinuierlichen Multimedia-Strömen garantiert einschließlich des Lesens, Schreibens, Variierens von Bitraten, einzelner Dateien und mehrerer Dateien. Eine Technik für die Zugangssteuerung von Strömen ist wünschenswert, um sicherzustellen, daß aktuelle Stromraten garantiert werden können. Eine effiziente, hohe Ausnutzung von Plattenbandbreite ist ebenso wünschenswert.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Eine Multimedia-Speicherverwaltung kann wirksam sein, indem ein Ring von Datenpuffern zwischen dem Anforderer der kontinuierlichen Medien und dem Platten-Subsystem angeordnet wird. Die Anzahl von Puffern in dem Ring kann eine Funktion einer vereinbarten bzw. zusammengezogenen, garantierten Rate des zugeordneten Medienstroms, konfigurierbarer Parameter des Plattenzeitsteuerungssystems und der Dienstcharakteristik des Plattensystems sein.
  • Dieser Ring von N Puffern kann verwendet werden, um die nächsten N Blöcke des kontinuierlichen Medienstromes bereitzuhalten, damit von dem Anforderer auf sie zugegriffen werden kann. Sobald die Daten eines Puffers in dem Ring von dem Anforderer konsumiert sind, wird der nun leere Puffer zusammen mit einem Zeitlimit bei dem Plattenzeitsteuerungsprogramm in eine Warteschlange eingereiht. Das Zeitlimit gibt den spätesten Zeitpunkt an, zu dem der Puffer gefüllt werden kann und dabei die garantierte Ratenanforderung des Stromes erfüllt. Er wird einfach als currentTime + (N – 1) * bufTime berechnet, wobei bufTime die minimale Zeit ist, in der der Anforderer einen Puffer konsumieren kann, ohne die vereinbarte Ratengarantie zu überschreiten.
  • Gleichzeitig mit dem Einreihen der Anforderungen mit garantierten Raten in eine Warteschlange bei dem Plattenzeitsteuerungsprogramm werden auch priorisierte, jedoch mit nichtgarantierten Raten versehene Anforderungen in die Warteschlange eingereiht. Anforderungen mit nicht-garantierten Raten führen keine Zeitlimits mit sich, jedoch führen sie Prioritäten mit sich.
  • Nach einer bevorzugten Ausführungsform gibt das Plattenzeitsteuerungsprogramm die Anforderungen in der Warteschlange an die Platte in einer Reihenfolge aus, die die mit den Anforderungen verbundenen Zeitlimits einhält, einen hohen Anteil der Bandbreite des Plattensystems erhält und die restliche Plattenbandbreite nach den garantierten Anforderungen an nicht-garantierte Anforderungen in einer Weise zuweist, die mit ihren zugewiesenen Prioritäten konsistent ist.
  • Die Speicherverwaltung stellt Anforderungen von Anforderern von kontinuierlichen Medien in eine nach frühesten Zeitlimits bzw. Terminen geordnete Warteschlange (die "Termin-Warteschlange"), und sie stellt priorisierte Anforderungen mit nicht-garantierten Raten in eine separate, nach höchster Priorität geordnete Warteschlange (die "Prioritätswarteschlange").
  • Das Plattenzeitsteuerungsprogramm kann auch eine dritte Liste von Plattenanforderungen vorhalten. Diese Liste enthält Anforderungen, die nach der Position des angeforderten Datenblocks auf der Platteneinrichtung geordnet sind. Auf diese Liste wird später als die "Such-Neuordnungs-Warteschlange" bzw. "Seek Reorder Queue" Bezug genommen. Die Such-Neuordnungs-Warteschlange kann eine feste maximale Größe haben, die einen konfigurierbaren Parameter des Systems darstellt. Anforderungen aus den beiden oben beschriebenen Warteschlangen werden in diese Liste übergeben.
  • Anforderungen werden aus den Termin- und Prioritätswarteschlangen in einem "Zyklus" in die Such-Neuordnungs-Warteschlange übergeben. Ein Zyklus ist eine feste Anzahl von Anforderungen, und innerhalb eines Zyklus' sind "Zeitfenster" bzw. "Slots" entweder zu der Termin-Warteschlange oder zu der Prioritätswarteschlange in einem Verhältnis zugewiesen, das gleich der gewünschten Zuordnung von Plattenbandbreite zwischen garantiertem und nicht-garantiertem Zugriff ist. Die der jeweiligen Verwendung zugeordneten Slots sind gleichmäßig über den Zyklus verteilt.
  • Anforderungen aus den Termin- und Prioritätswarteschlangen werden immer dann in die Such-Neuordnungs-Warteschlange übergeben, wenn die Such-Neuordnungs-Warteschlange nicht bis zu ihrer maximalen Größe gefüllt ist. Jede Übergabe wird aus der Warteschlange vorgenommen, die durch den aktuellen Slot des Zyklus' angegeben wird, und danach rückt der Zyklus zum nächsten Slot vor. Wenn die von dem Slot angegebene Warteschlange leer ist, dann wird ein Eintrag von der alternativen Warteschlange gewählt, wenn sie nicht leer ist. Der übergebene Eintrag wird in der Such-Neuordnungs-Warteschlange so eingeordnet, daß alle Anforderungen auf ihrer Seite auf Datenblöcke mit Plattenadressen größer oder gleich ihrer Adresse verweisen und alle Blöcke auf der anderen Seite in der Liste Datenblöcke mit Plattenadressen kleiner oder gleich ihrer Adresse haben.
  • Die Such-Neuordnungs-Warteschlange wird gleichzeitig von einem Thread bzw. Strang durchquert, der sich beständig in eine Richtung (d.h. zu ansteigenden oder abfallenden Plattenadressen) bewegt, bis keine weiteren Einträge in der Liste vorhanden sind, und daraufhin die Richtung umkehrt und fortfährt. Dieser Strang gibt bei jedem Schritt die Plattenanforderung an das Platten-Subsystem aus und schreitet zur nächsten Anforderung fort, wenn die zuvor ausgegebene Anforderung von dem Plattensystem beendet wurde.
  • Nach einer bevorzugten Ausführungsform stellt die Speicherverwaltung sicher, daß die Bandbreite wie gewünscht zwischen den garantierten und nicht-garantierten Ratenanforderern zugeordnet wird, ermöglicht priorisierten, nicht-garantierten Zugriff und reduziert die durchschnittliche Suchentfernung, wenn die Plattenlast zunimmt.
  • Das System behandelt auch die Zugangssteuerung (d.h. das Festlegen, ob ein zusätzlicher Anforderer mit garantierter Rate aufgenommen werden kann, ohne den Dienst an vorhandene Anforderer mit garantierter Rate zu beeinträchtigen) und die Festlegung der passenden Anzahl von Puffern in einem Ring für eine gewünschte garantierte Stromzugriffsrate.
  • Die Zugangssteuerung kann durch das Charakterisieren des Durchsatzes bzw. der Leistungsfähigkeit des Plattensystems mit einer synthetischen Last behandelt werden, die die Eigenschaften einer typischen Last widerspiegelt. Der Aufbau einer repräsentativen Last kann vereinfacht werden, indem das Dateisystem darauf eingeschränkt wird, aufeinander folgende Blöcke in einer "zufällig gezonten" Weise zu belegen: Der Adreßbereich der Plattenblöcke wird in zwei Hälften geteilt, aufeinander folgende Dateiblock-Belegungen werden aus zufälligen Positionen innerhalb einer Zone gewählt und dann wird zwischen den beiden Zonen hin- und hergewechselt. Nach einer be vorzugten Ausführungsform geht man nach diesem Prozeß vor, weil Plattensysteme Durchsatzschwankungen bezogen auf die Blockadresse aufweisen. Das Belegen aus abwechselnden "Zonen" stellt sicher, daß der Plattendurchsatz sowohl über verschiedene Dateien als auch über Positionen innerhalb einer einzelnen Datei ungefähr gleich ist. Die synthetische Last ist nun eine einzelne Sequenz von gezonten Belegungen, die hinreichend repräsentativ für die wahre Last (und die Zusammensetzung von mehreren gezonten Belegungen) ist. Der Plattendurchsatz kann mit dieser Last charakterisiert und herabgesetzt werden, um einen Spielraum bereitzustellen. Der Wert der herabgesetzten Bandbreite kann dann mit dem Bruchteil der gesamten Bandbreite multipliziert werden, der in dem "Zyklus"-Prozeß Anforderern mit garantierter Rate zugeordnet wird. Dies führt zu der maximalen Zugangs- bzw. Zutrittsbandbreite. Anforderer mit garantierter Rate können nun zugelassen werden, bis sie die gesamte Zugangsbandbreite verbraucht haben.
  • Die Festlegung der passenden Anzahl von Puffern in dem Pufferring kann empirisch vorgenommen werden. Dies kann vorgenommen werden, indem man eine Sammlung von Strömen garantierter Rate ablaufen läßt, für die alle dieselbe Rate vereinbart ist. Die Rate wird so gewählt, daß die Sammlung von Strömen genau die gesamte Zugangsbandbreite verbraucht. Alle Ströme werden gleichzeitig gegen das Zeitplanungsprogramm eingeleitet. Die Größe der Ringpuffer wird dann festgelegt, um sicherzustellen, daß alle spätesten Abgabezeitpunkte mit einem festgelegten Spielraum eingehalten werden. Der Spielraum kann ein konfigurierbarer Parameter sein.
  • Allgemein gesprochen enthält eine Ausführungsform ein System zur Zeitplanung von Speicherzugriffen mehrerer kontinuierlicher Medienströme. Das System kann eine Mehrzahl von Medienstrom-Clients beinhalten. Mit jedem Medienstrom-Client ist eine von einer Mehrzahl von Medienstrom-Verwaltungen verbunden. Jede Medienstrom-Verwaltung unterhält einen Ring von Puffern, die eingerichtet sind, um die Medienstrom-Daten zwischen ihren zugeordneten Medienstrom-Clients und einem oder mehreren Speichersystemen zu puffern. Eine unterschiedliche Termin-Warteschlange kann jedem der Speichersysteme zugeordnet sein. Jede Termin-Warteschlange kann darauf eingerichtet sein, Pufferanforderungen von den Medienstrom-Vennraltungen in die Warteschlange einzureihen. Jede Pufferanforderung kann einen Termin enthalten, zu der die Pufferanforderung von dem zugehörigen Speichersystem erfüllt bzw. ausgeführt worden sein muß. Jede Medienstrom-Verwaltung kann so eingerichtet werden, daß die Medienstrom-Verwaltung eine Pufferanforderung und einen Termin für diesen Puffer an die passende Termin-Warteschlange schickt, sobald einer ihrer Puffer durch den zugeordneten Medienstrom-Client verbraucht wurde. Pufferanforderungen können in jeder Termin-Warteschlange von dem frühesten zum spätesten Termin geordnet sein. Jede Medienstrom-Verwaltung kann darauf eingerichtet sein, eine garantierte maximale Medienstrom-Rate ihrem zugeordneten Medienstrom-Client zur Verfügung zu stellen. Dieses System kann auch eine Zugangssteuerung beinhalten, die dafür eingerichtet ist, eine maximale Medienstrom-Rate mit jedem Medienstrom-Client auszuhandeln. Die Zugangssteuerung kann zusätzliche Medienstrom-Clients nur zulassen, wenn ausgehandelte maximale Medienstrom-Raten für alle aktuellen Medienstrom-Clients beibehalten werden können.
  • Bei jedem Ring von Puffern wird jeder Puffer von seinem zugeordneten Medienstrom-Client einer nach dem anderen in einer umlaufenden Reihenfolge verbraucht. Jeder Puffer kann gleich groß sein, um einen Block von Daten aufzunehmen, wobei auf die Daten in den Speichersystemen entsprechend einem Block zugegriffen wird. Jeder Ring von Puffern kann eine Anzahl von Puffern enthalten, wobei die Anzahl von Puffern gemäß einer maximalen Stromrate gewählt wird, die von dem zugeordneten Medienstrom-Client angefordert wird. Die Anzahl wird gewählt, um gerade genug Puffer zur Verfügung zu stellen, um ein Leerlaufen bei der maximalen Stromrate zu vermeiden. Das System kann auch einen Bandbreitenzuordner umfassen, der dafür eingerichtet ist, einen eingestellten Anteil der Bandbreite des Speichersystems einer Anforderung aus der Termin-Warteschlange für ein Speichersystem und die verbleibende Bandbreite des Speichersystems Anforderungen mit nichtgarantierter Rate zuzuordnen.
  • Eine Ausführungsform kann ein Verfahren zur Zeitplanung von Speicherzugriffen mehrerer kontinuierlicher Medienströme beinhalten. Das Verfahren kann das Aufstellen einer garantierten maximalen Stromrate für jeden der Mehrzahl von Multimedia-Strömen umfassen. Das Verfahren kann darüber hinaus das Einrichten eines Rings von Puffern für jeden Multimedia-Strom umfassen, wobei jeder Multimedia-Strom Anforderungen von Multimedia-Daten aus seinem zugeordneten Ring von Puffern erfüllt. Wenn jeder Puffer in einem der Ringe von Puffern verbraucht wird, umfasst das Verfahren das Einfügen einer Anforderung für diesen Puffer in eine Termin-Warteschlange, die mit dem Speichersystem verbunden ist, aus dem die Anforderung befriedigt wird. Für jede Termin-Warteschlange beinhaltet das Verfahren das Ausgeben von Anforderungen aus der Termin-Warteschlange an das zugeordnete Speichersystem. Die Anforderung mit dem frühesten Termin wird zuerst ausgegeben. Das Einfügen einer Anforderung in die Warteschlange kann das Berechnen eines Termin-Zeitpunktes umfassen, der den spätesten Zeitpunkt angibt, zu dem die Pufferanforderung erfüllt werden kann und dabei immer noch die zugehörige garantierte maximale Stromrate einhalten kann.
  • Eine Ausführungsform kann ein Verfahren zum Verwalten eines Multimedia-Datenstroms beinhalten. Das Verfahren kann das Empfangen einer Anforderung von einem Stromanforderer beinhalten, einen Multimedia-Datenstrom einzurichten, um auf eine in einem Speichersystem gespeicherte Multimedia-Datei zuzugreifen. Das Verfahren kann das Verknüpfen mit der bzw. an die Multimedia-Datei und das Erzeugen eines Rings von Puffern umfassen. Das Verfahren kann ferner das erstmalige Füllen des Rings von Puffern mit Multimedia-Daten für den Strom und das anschließende Streaming bzw. Strömen von Multimedia-Daten zwischen der Multimedia-Datei in dem Speichersystem und dem Anforderer des Multimedia-Stromes umfassen. Das Streaming von Multimedia-Daten kann das Verbrauchen eines der Puffer in dem Ring von Puffern und das anschließende Erzeugen einer Anforderung und eines Termins für den gerade verbrauchten Puffer umfassen. Der Termin kann den spätesten Zeitpunkt angeben, zu dem die Anforderung erfüllt werden muß, um ein Leerlaufen des Puffers zu vermeiden. Das Streaming beinhaltet dann das Ausgeben der Anforderung und des Termins für den gerade verbrauchten Puffer an eine Termin-Warteschlange. Die An forderung kann in der Termin-Warteschlange gemäß dem Termin geordnet werden. Der nächste Puffer in dem Ring von Puffern kann dann verbraucht und der Prozeß wiederholt werden.
  • Ein System zum Verwalten von Speicherzugriffen für kontinuierliche Multimedia-Datenströme mit garantierter Rate und nicht-garantierten Speicheranforderungen kann eine Mehrzahl von Anforderern von Multimedia-Datenströmen mit garantierter Rate und einen oder mehrere Anforderer mit nicht garantierten Raten umfassen. Ein Plattenzeitsteuerungsprogramm kann ebenso enthalten sein. Das Plattenzeitsteuerungsprogramm kann eine Warteschlange für garantierte Raten zum Einreihen von Speicheranforderungen von den Anforderern garantierter Raten und eine nicht-Raten-garantierte Warteschlange zum Einreihen von Anforderungen von Anforderern mit nicht garantierten Raten aufweisen. Das Plattenzeitsteuerungsprogramm kann auch einen Bandbreiten-Zuordner beinhalten, der mit der Warteschlange für garantierte Raten und der nicht-Raten-garantierten Warteschlange verbunden ist und der ferner mit dem Speichersystem verbunden ist. Der Bandbreiten-Zuordner kann darauf eingerichtet, Bandbreite des Speichersystems zwischen der Warteschlange für garantierte Raten und der nicht-Raten-garantierten Warteschlange in einem zuvor festgelegten Verhältnis zuzuordnen. Die Raten-garantierten Anforderer können eingeschränkt werden, so daß eine Zusammenfassung der maximalen Stromraten, die für jeden Ratengarantierten Anforderer garantiert sind, nicht den Anteil der Bandbreite übersteigt, die für die Warteschlange für garantierte Raten reserviert ist.
  • Anforderungen können in der Warteschlange für garantierte Raten gemäß einem Termin geordnet sein, wobei der Termin für jede Anforderung einen spätesten Zeitpunkt angibt, zu dem die Anforderung erfüllt sein muß, um die garantierte maximale Stromrate für den zugehörigen Multimedia-Datenstrom einzuhalten. Anforderungen können in der nicht-Raten-garantierten Warteschlange gemäß einer Priorität geordnet werden, wobei der Bandbreiten-Zuordner so eingerichtet ist, daß er die Anforderung mit der höchsten Priorität aus der nicht-Raten-garantierten Warteschlange übergibt. Das System kann auch einen Pufferring für jeden Multimedia-Datenstrom von einem der Ratengarantierten Anforderer enthalten. Der Pufferring kann Daten eines Multimedia-Stroms zwischen einem zugeordneten, Raten-garantierten Anforderer und dem Plattenzeitsteuerungsprogramm puffern. Der Pufferring kann eine Anzahl von Puffern enthalten, die so gewählt ist, daß ein Pufferleerlaufen bei der garantierten maximalen Stromrate verhindert wird. Die Puffer jedes Pufferrings können von dem zugeordneten, Raten-garantierten Anforderer einer nach dem anderen in einer umlaufenden Reihenfolge verbraucht werden. Bei jedem Puffer, der verbraucht wird, kann eine Anforderung und ein Termin für den gerade verbrauchten Puffer an die Warteschlange für garantierte Raten ausgegeben werden.
  • Ein Verfahren zum Verwalten von Speicherzugriffen für kontinuierliche Multimedia-Datenströme mit garantierter Rate und für nicht-Raten-garantierte Speicheranforderungen kann das Zuordnen eines Anteils der Bandbreite des Speichersystems zu Stromanforderungen von Ratengarantierten Anforderern und das Zuordnen des verbleibenden Anteils der Bandbreite des Speichersystems zu Anforderungen von nicht-Raten-garantierten Anforderern beinhalten. Speicheranforderungen von Raten-garantierten Anforderern können in einer Warteschlange für garantierte Raten eingereiht werden und Speicheranforderungen von nicht-Raten-garantierten Anforderern können in einer nicht-Raten-garantierten Warteschlange eingereiht werden. Das Verfahren umfasst ferner das Auswählen entweder der Warteschlange für garantierte Raten oder der nicht-Raten-garantierten Warteschlange entsprechend der Bandbreitenzuordnung, um eine der Anforderungen in das Speichersystem zu übergeben. Jeder Raten-garantierte Anforderer kann einen Zugriff auf einem Multimedia-Strom mit einer maximalen garantierten Rate anfordern. Das Verfahren umfasst das Beschränken der Anzahl von Multimedia-Strömen, so daß die Zusammenfassung der maximalen garantierten Raten für jeden Strom nicht die Bandbreite übersteigt, die für Stromanforderungen von Raten-garantierten Anforderern zugeordnet bzw. reserviert ist. Nicht benutzte Bandbreite für Anforderungen mit garantierter Rate kann dynamisch nicht-Raten-garantierten Anforderungen neu zugeordnet werden und umgekehrt.
  • Ein System und ein Verfahren kann zum Konfigurieren oder zeitlichen Abstimmen eines Medienspeichersystems zur Verfügung gestellt werden. Das Verfahren kann das Charakterisieren eines maximalen, nachhaltigen Durchsatzes für das Medienspeichersystem beinhalten. Der maximale, nachhaltige Durchsatz kann um einen primären bzw. elementaren Herabsetzungsparameter vermindert werden, um einen primären bzw. elementaren Durchsatz zu erhalten. Das Verfahren kann ferner das Festlegen der Größen für Puffereinheiten bei verschiedenen Medienstromraten umfassen, wobei jede Puffereinheit während des Betriebs zum Puffern eines Mediendatenstroms zwischen einem Anforderer eines Medienstroms und dem Speichersystem verwendet wird. Die Größen der Puffereinheiten können festgelegt werden, indem Stromsimulatoren erzeugt werden, die ausreichen, um den primären Durchsatz zu verbrauchen, und indem dann die Puffergrößen optimiert werden, um ein Leerlaufen für die Stromsimulatoren zu verhindern. Dies kann bei unterschiedlichen Stromraten wiederholt werden, um eine Tabelle von Puffergrößen gegen Stromraten zu bestimmen. Das Verfahren kann auch das Vermindern des primären Durchsatzes beinhalten, um eine maximale Systembandbreite zu erhalten, die während des Betriebs des Systems eine obere Schranke für die Zulassung von Strömen setzt. Die Menge, um die der primäre Durchsatz zu diesem Zweck vermindert wird, kann durch einen konfigurierbaren, sekundären Herabsetzungsparameter bestimmt werden.
  • Wenn Puffergrößen festgelegt werden, kann ein Parameter "Vorfülltoleranz" gesetzt werden, mit welchem Anforderungs-Termine eingehalten werden müssen. Ebenso kann ein Parameter "verfügbare Rate" auf ein Verhältnis der verfügbaren Bandbreite zwischen Raten-garantierten Strömen und nicht-Raten-garantierten Anforderungen gesetzt werden. Die Quote, die Raten-garantierten Anforderungen zugeordnet ist, kann verwendet werden, um Puffergrößen festzulegen, die in der Lage sind, die konfigurierte Vorfülltoleranz einzuhalten. Ein weiterer Parameter kann konfiguriert werden, um die Länge der Such-Neuordnungs-Warteschlange zu setzen, die Anforderungen an das Speichersystem gemäß ihrer physikalischen Speicheradresse ordnet. Dieser Parameter ermöglicht einen Kompromiss bzw. Trade-Off zwischen Sucheffizienz und Schwankungen in der Bedienzeit. Höhere Schwankungen in der Bedienzeit können größerer Pufferringe erfordern. Ebenso kann die Blockgröße, mit der auf Daten in dem Speichersystem zugegriffen wird, konfiguriert werden.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Andere Ziele und Vorteile der Erfindung werden beim Lesen der folgenden detaillierten Beschreibung und unter Bezug auf die beigefügten Zeichnungen offensichtlich, von denen:
  • 1 einen von einer variablen Datenrate abhängigen Mechanismus mit konstantem Zeitintervall, zum Plazieren von Daten und zur Zeitplanung darstellt;
  • 2 eine Darstellung eines Video-Server- und Speichersystem ist;
  • 3 eine Darstellung eines verteilten Multimedia-Dateisystems ist, das eine Anzahl von Video-Servern und Dateisystemen verwendet:
  • 4 ein detailliertes Diagramm einer Videospeicherverwaltung ist;
  • 5 ein Beispiel eines Raten-unabhängigen Mechanismus mit variablem Zeitintervall und konstanter Datenrate zum Plazieren der Videospeicherverwaltung für zwei gleichzeitigen, kontinuierliche Medienströme darstellt;
  • 6 ein Flußdiagramm ist, das einen Zugriffsmechanismus mit konstanter Datenrate und variablem Zeitintervall darstellt, der Pufferringe und Termin-Warteschlangen verwendet;
  • 7 ein System darstellt, das sowohl Ströme mit garantierten Raten als auch nicht-Ratengarantierte Zugriffe je nach verfügbarer Rate vorsieht;
  • 8 ein Beispiel eines Zyklus' darstellt, durch das Anforderungen aus der Termin- und der Prioritätswarteschlange in das Speichersystem übergeben werden;
  • 9 ist ein Flußdiagramm, das ein Verfahren darstellt, um einen Speicherzugriff für mehrere kontinuierliche Medienströme mit einer Ratengarantie und einen Speicherzugriff für nicht-Ratengarantierte Anforderungen zur Verfügung zu stellen;
  • 10 stellt eine Videospeicherverwaltung dar, welche die in 4 und 7 dargestellten Mechanismen kombiniert;
  • 11 ist ein Flußdiagramm, das den Betrieb der in 10 gezeigten Such-Neuordnung darstellt;
  • 12 ist ein Flußdiagramm, das die Speichercharakterisierung für die Zugangssteuerung darstellt; und
  • 13 ist ein Flußdiagramm, das die Festlegung der optimalen Anzahl von Puffern für einen Pufferring für eine Vielzahl von Stromraten darstellt.
  • Während die Erfindung für verschiedene Änderungen und alternative Formen empfänglich ist, werden spezifische Ausführungsformen davon als Beispiel in den Zeichnungen gezeigt und hier genauer beschrieben. Es sollte sich jedoch verstehen, daß die Zeichnungen und detaillierten Beschreibungen hierzu nicht dazu gedacht sind, die Erfindung auf die spezielle, offengelegte Form zu beschränken, sondern im Gegenteil die Absicht besteht, alle Änderungen, Äquivalente und Alternativen abzudecken, die in den Geist und den Schutzbereich der vorliegenden Erfindung fallen, wie durch die beigefügten Patentansprüche definiert.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • In 2 ist ein Video-Server- und Speichersystem 200 dargestellt. Das System 200 umfasst den Server 202 und die Speichersysteme 204. Die Speichersysteme 204 können mit dem Server 202 durch einen oder mehrere Busse 205 verbunden sein. Der Server kann einen oder mehrere Prozessoren (nicht abgebildet) enthalten, die mit den Speichersystemen 204 über einen Peripheriebus wie einen oder mehrere PCI-Busse und eine oder mehrere SCSI-Schnittstellen kommunizieren können. Der Server 202 kann auch eine Anzahl von Codecs zum Kodieren und Dekodieren von Multimedia-Datenströmen beinhalten. Die Codecs können auch an einen oder mehrere PCI-Busse angeschlossen sein. Jedes Speichersystem 204 kann wie abgebildet ein oder mehrere RAID-Systeme enthalten.
  • Um mehrere kontinuierliche Medienströme zu unterstützen, bei denen Datenströme mit einer spezifischen und möglicherweise über die Zeit veränderlichen Datenrate geliefert werden, enthält der Server 202 eine Videospeicherverwaltung 206. Die Videospeicherverwaltung steuert die Speicherung und den Zugriff von Multimedia-Strömen in den Speichersystemen 204. Nach einer bevorzugten Ausführungsform werden Multimedia-Dateien über die Videospeicherverwaltung 206 im MPEG-2-Format hoher Qualität gespeichert, obwohl auch andere geeignete Kompressionsformate verwendet werden können. Clients oder Anforderer eines Multimedia-Stroms vereinbaren mit der Videospeicherverwaltung 206 einen Zugriff zu einer Datei mit einer gewünschten Bitrate. Die Videospeicherverwaltung 206 bewertet die verfügbare Speicherbandbreite und den verfügbaren Pufferspeicher, um festzustellen, ob die Anforderung erfüllt werden kann oder nicht. Sobald die Videospeicherverwaltung festgelegt hat, daß die Anforderung entgegengenommen werden kann, wird dem Client Zugriff auf die Datei mit jeder Bitrate bis zu der vereinbarten Rate gegeben. Wenn die Anforderung die verfügbare Speicherbandbreite übersteigt und/oder der Pufferspeicher aufgebraucht ist, muß die Videospeicherverwaltung die Anforderung zurückweisen und dem Client ist es freigestellt, die Anforderung anzupassen und/oder zu einem späteren Zeitpunkt erneut zu übergeben. Durch das Bereitstellen einer garantierten Stromrate unterstützt die Videospeicherverwaltung in vollem Umfang Zugriffe mit variabler Bitrate zusätzlich zu Zugriffen mit konstanter Bitrate. Ein Client kann die Rate des Zugriffs auf eine Datei beliebig von Null Bits pro Sekunde bis zu jedem Punkt bis zur vereinbarten Rate variieren. Diese Flexibilität unterstützt eine Reihe von Eigenschaften bzw. Möglichkeiten einschließlich Frame-genauer Initiierung und Jog/Shuttle-Funktionalität.
  • Mehrere verschiedene Clients können verschiedene Ströme mit unterschiedlichen Bitraten von der Videospeicherverwaltung anfordern. Diese Ströme können eine beliebige Mischung von Lese- und Schreibvorgängen, Stromraten und zugegriffenen Dateien sein. Jeder Strom kann eine unterschiedliche, vereinbarte Rate haben, und ein individueller Strom kann beliebig mit der Rate bis zur vereinbarten Rate schwanken, wobei die gesamte Zusammenfassung für alle Stromraten nicht die gesamte zusammengefasste Streamingkapazität des Serversystems übersteigt. Es gibt keinen Bedarf, daß alle Ströme dieselbe Bitrate haben müssen oder daß die Bitrate eines Stromes aus einer Menge von diskreten, zulässigen Raten gewählt werden soll. Die Videospeicherverwaltung läßt es auch zu, daß Clients auf dieselben Dateien, auf verschiedene Dateien oder auf jede Kombination dazwischen zugreifen. Wie weiter unten beschrieben wird, stellt die Videospeicherverwaltung diese Flexibilität zur Verfügung, ohne die zusammengefasste Serverbandbreite zu beeinträchtigen.
  • In 3 ist ein verteiltes Multimedia-Dateisystem 300 dargestellt, das eine Reihe von Video-Servern 202 und Dateisystemen 204 verwendet. Nach dieser Ausführungsform kommunizieren die Dateisysteme 204 mit den Video-Servern 202 über einen (Glas-) Faserkanal. Jedes Speichersystem 204 kann eine Reihe von RAID-Systemen beinhalten, die an eine (Glas-) Faserkanal Arbitrated Loop (FC-AL) angeschlossen sind. Jeder Video-Server 202 kann zum Beispiel auch mit seinem eigenen, lokalen Dateisystem oder seiner eigenen Bandbibliothek verbunden sein. Darüber hinaus können andere Speichersysteme wie eine Bandbibliothek für das System auf dem (Glas-) Faserkanal zugänglich sein. Clients können anfordern, daß Multimedia-Ströme auf dem Übertragungsnetzwerk 208 gesendet werden. Das Übertragungsnetzwerk 208 kann ein Computer-Netzwerk, das Internet, ein Verteil- bzw. Rundsende-System oder jedes andere geeignete Übertragungsmedium für Multimedia-Ströme sein. Eine Videospeicherverwaltung, die auf einem oder mehreren Video-Servern ausgeführt wird, steuert die Einleitung und das Hinzufügen von Multimedia-Strömen zum Zugriff auf Dateien in den Speichersystemen 204. Die Videospeicherverwaltung verwaltet mehrere kontinuierliche Medienströme, die über eine breite Auswahl von Hardwareschnittstellen wie MPEG-Kodierer und -Dekodierer, DVB-Multiplexer, ATM. SONET und Ethernet an das Übertragungsnetzwerk 208 zu liefern sind.
  • Die Videospeicherverwaltung, die in Systemen wie in den 2 und 3 dargestellt eingesetzt wird, befasst sich damit. wie Platten- oder Speicherzugriffe für mehrere kontinuierliche, sequentielle Medienströme in einer Weise zeitlich zu steuern sind, die Daten für alte kontinuierlichen Medienströme garantiert und einen präzisen Mechanismus bereitstellt, um festzustellen, ob eine neue Anforderung eines Zugriffs mit garantierter Rate entgegengenommen werden kann.
  • In 4 wird ein detailliertes Diagramm einer Videospeicherverwaltung 206 gezeigt. Die Videospeicherverwaltung 206 beinhaltet einen Anforderungsprozessor 402, der eine Schnittstelle für Clientanforderungen zu den Stromverwaltungen 404 darstellt. Jede Stromverwaltung 404 unterhält einen Pufferring 405. Jedem kontinuierlichen Multimedia-Strom entspricht eine separate Stromverwaltung 404. Ein Dateisystem 406 ist zur Abbildung der Stromzugriffe auf die Speichersysteme 204 vorgesehen. Plattenzeitsteuerungsprogramme 408 sind für jedes Speichersystem 204 vorgesehen, um den Fluß von Speicherzugriffen auf jedes Speichersystem zu verwalten. Jedes Plattenzeitsteuerungsprogramm kann eine Termin-Warteschlange 410 beinhalten, wie weiter unten näher beschrieben.
  • Die Videospeicherverwaltung, das Dateisystem und das Plattenzeitsteuerungsprogramm plazieren Stromdaten auf den Speichersystemen in einer Weise, die komplett unabhängig von der diesem Material innewohnenden Bitrate ist. Diese Eigenschaft sorgt für zusätzliche Flexibilität, dadurch daß Clients Inhalt zu und aus dem Dateisystem der Videospeicherverwaltung bei einem Dienst mit garantierter Rate zu Datenraten übertragen können, die vielfach höher (oder niedriger) als die innewohnende Rate der Stromdaten sind. Die Videospeicherverwaltung, das Dateisystem und der Mechanismus zum Plazieren der Daten ist ein Mechanismus mit fester Blockgröße. Zum Bei spiel werden Daten zu oder aus den Speichersystemen in einer konstanten Blockgröße übertragen. Nach einer bevorzugten Ausführungsform kann eine Blockgröße von 256 Kilobytes ausgewählt werden. Die Videostromverwaltung kann für die Konfigurierung der Blockgröße während der Systeminitiierung und -konfigurierung sorgen. Der Mechanismus mit fester Blockgröße stellt sicher, daß keine externe Fragmentierung des Speichers auftritt und daß die interne Fragmentierung nur bei dem letzten Block der Datei auftritt (da eine Datei wahrscheinlich nicht genau an einer Blockgrenze endet). Anders als Mechanismen mit Raten-abhängiger, variabler Blockgröße, die sowohl unter externer Fragmentierung als auch unter variierenden Graden von interner Fragmentierung pro Block leiden, die zu großen Schwankungen und einem großen Speicherbedarf für eine bestimmte Datei abhängig von der Stromrate und den aktuellen Inhalten des Dateisystems führen, stellt der Mechanismus der Videospeicherverwaltung mit Raten-unabhängiger, fester Blockgröße einen vorhersagbaren Speicherbedarf für jede Datei unabhängig von der Rate oder von den aktuellen Inhalten des Dateisystems sicher.
  • Wenden wir uns kurz 5 zu, in der ein Beispiel des Raten-unabhängigen Plazierungsmechanismus' mit konstanter Datenrate und variablem Zeitintervall der Videospeicherverwaltung für zwei gleichzeitige kontinuierliche Medienströme dargestellt ist. Wie gezeigt ist die Datenblockgröße für alle Medienströme fest, aber der Zeitpunkt, an dem auf einen Datenblock zugegriffen wird, ändert sich für jeden Strom entsprechend der gewünschten Bitrate.
  • Ein Problem, das von einem Zeitplanungsmechanismus für Zugriffe mit konstanter Datenrate (feste Blockgröße) und variablem Zeitintervall herrührt, ist, daß mehrere Ströme, jeder mit seiner eigenen Frequenz und Phase der Speicherzugriffe, Anforderungen an das Speichersystem stellen und die Interaktion dieser Zugriffsmuster zu Spitzen und Flauten bei der Speicheraktivität führt. Die unterschiedliche Frequenz und Phasen der Speicherzugriffe durch die verschiedenen Ströme führt zu Zeiten, in denen möglicherweise mehrere Zugriffe auf einmal gleichzeitig anstehen, und anderen Zeiten, in denen möglicherweise sehr wenige Zugriffe anstehen. Eine Lösung für dieses Problem ist, einfach zu fordern, daß das Speichersystem die Spitzenrate der Aktivität unterstützt, jedoch ist diese Lösung klarerweise nicht kosteneffizient.
  • Gemäß 4 berücksichtigt die virtuelle Speicherverwaltung der vorliegenden Erfindung das oben erwähnte Problem, indem sie die Speicheraktivität durch Einführen eines Rings von Puffern zwischen jedem Client und dem Dateisystem nivelliert. Jedem Medienstrom ist ein unterschiedlicher Pufferring 405 zugeordnet, der von der Stromverwaltung 404 verwaltet wird. Daher weist die Stromverwaltung 404 einen Ring von Datenpuffern zwischen dem Anforderer der kontinuierlichen Medien und den Platten-Subsystemen zu. Die Anzahl von Puffern in einem Ring ist entsprechend der vereinbarten. garantierten Rate des zugeordneten Medienstroms und den Eigenschaften des Speichersystems festgelegt, so daß die garantierte Rate immer eingehalten wird. Die Pufferringe 405 nutzen die Tatsache aus, daß Video-Streaming inhärent sequentiell ist und läßt das Dateisystem Speicheranforderungen vorab in eine Warteschlange stellen. Dieser Ansatz erlaubt es, daß zukünftige Anforderungen während der Flauten befriedigt werden, wodurch die Last von Spitzen in Täler verschoben und die Speicheraktivität über die Zeit ausgeglichen wird.
  • Jeder Ring 405 von N Puffern wird verwendet, um die nächsten N Blöcke des kontinuierlichen Medienstroms aufzunehmen, auf die von dem Anforderer zugegriffen wird. Sobald ein Puffer in dem Ring seine Daten von dem Anforderer verbrauchen läßt, wird ein Zugriff zum Füllen des nun leeren Blocks für das passende Plattenzeitsteuerungsprogramm 408 in eine Warteschlange eingereiht, um den leeren Puffer mit dem nächsten Block für den Medienstrom zu füllen. Anforderungen zum Füllen (oder Leeren) von Puffern der Pufferringe 405 werden von dem Dateisystem 406 auf das passende Plattenzeitsteuerungsprogramm 408 abgebildet. Das Dateisystem 406 bildet logische Blöcke auf physikalische Blöcke in den Speichersystemen 204 ab. Das Dateisystem 406 kann eine Abbildung von logischen auf physikalische Blockpositionen (z.B. einen Inode) auf dem Laufenden halten. Weil Anforderungen für mehrere Ströme in jedem Plattenzeitsteuerungsprogramm 408 in Warteschlangen stehen können, muß das System sicherstellen, daß eine zukünftige Anforderung von einem Strom nicht vor dringenderen Anforderungen von einem anderen Strom erfüllt wird, so daß die garantierte Rate für jeden Strom beibehalten wird. Um dieses Ziel zu erreichen, sind mit jeder an das Speichersystem übergebenen Anforderung Termine verbunden. Das System berechnet den Termin so, daß er mit dem Zeitpunkt zusammenfällt, zu dem ein Puffer gebraucht wird, indem die Blockgröße der Stromrate und die Anzahl von vorhandenen, nicht verbrauchten Puffern berücksichtigt wird. Wenn eine Anforderung für einen leeren Puffer in die Warteschlange gestellt wird, wird ein Termin mit der Anforderung in die entsprechende Termin-Warteschlange 410 in dem Plattenzeitsteuerungsprogramm 408 eingereiht. Der Termin gibt den spätesten Zeitpunkt an, zu dem der Puffer gefüllt werden kann und immer noch die garantierte Ratenanforderung des speziellen Stroms einhält. Der Termin wird berechnet als: current_time + (N-1) * buff_time, wobei N die Anzahl von Puffern in dem Pufferring 405 ist und buff-time die minimale Zeit ist, in der ein Anforderer einen Puffer ohne Überschreiten der vereinbarten Ratengarantie verbrauchen kann. Das Plattenzeitsteuerungsprogramm 408 muß nun die Warteschlangenanforderung an das betreffende Speichersystem 204 in einer Reihenfolge ausgeben, die die mit den Anforderungen verbundenen Termine einhält. Das Plattenzeitsteuerungsprogramm plaziert die Anforderungen von Anforderern kontinuierlicher Medien in jede Termin-Warteschlange 410 und hält eine Reihenfolge von frühesten zu spätesten ein, so daß Anforderungen mit der frühesten Termin zuerst erfüllt werden.
  • Damit das System den Termin eines Stroms einhält, muß es einen ausreichend großen Pufferring einrichten, um sicherzustellen, daß jede Anforderung lange vor ihrem Termin bei dem Speichersystem in eine Warteschlange gestellt werden kann, so daß die schlechtest mögliche Bedienzeit für die Anforderung den Termin nicht überschreitet. Da die Bedienzeit des schlechtesten Falls eine Funktion der zusammengefassten Last auf dem System ist und die zusammengefasste Last eine direkte Folge der zusammengefassten Stromrate ist (unabhängig von der tatsächlichen Stromratenmischung), ist die Größe des Pufferrings für einen bestimmten Strom auf einem gegebenen Speichersystem eine Funktion der Rate dieses bestimmten Stroms und ist unabhängig von den Stromraten anderer Ströme in der Mischung. Angesichts dieser Unabhängigkeit kann die geeignete Ringgröße für verschiedene Stromraten zum Zeitpunkt der Speichercharakterisierung wie weiter unten näher erläutert erzeugt werden.
  • In 6 ist ein Flußdiagramm bereitgestellt, das den Zugriffsmechanismus mit konstanter Datenrate und variablem Zeitintervall darstellt, der die Pufferringe 405 und die Termin-Warteschlangen 410 verwendet. Wenn ein neuer Strom eingeleitet wird, erstellt die Stromverwaltung für den neuen Strom die garantierte Stromrate und die Blockgröße für den Strom fest, wie bei 602 angegeben. Der Strom wird mit der angeforderten Datei über das Dateisystem 406 verknüpft, und die Stromverwaltung 404 erzeugt den Pufferring 405 für den neuen Strom. Anforderungen für Blöcke aus der zugeordneten Datei werden dann an das passende Speichersystem ausgegeben, um den Pufferring zu füllen. Jeder Puffer kann von der Größe her für einen Block ausgelegt werden. Nachdem der Pufferring gefüllt ist (606), kann das Streaming beginnen, wie bei 608 angegeben.
  • Während jeder Puffer durch den Anforderer des Stroms verbraucht wird, wird eine Blockanforderung zusammen mit einem Termin-Zeitpunkt ausgegeben, um den nun verbrauchten Puffer zu füllen, wie bei 610 angegeben. Die Blockanforderung und der Termin-Zeitpunkt werden in die Termin-Warteschlange 410 für das passende Speichersystem eingereiht abhängig davon, wo sich der angeforderte Block befindet. Die Anforderungen sind in der Termin-Warteschlange von frühesten zu spätesten Terminen geordnet. Die Anforderungen werden aus der Termin-Warteschlange entsprechend dem frühesten Termin ausgegeben, wie bei 612 angegeben. Während des Streaming wird auf die Puffer des Pufferrings einen nach dem anderen umlaufend zugegriffen. Der Termin-Zeitpunkt stellt sicher, daß jeder Puffer gefüllt wird, bevor er von dem Anforderer des Strom entsprechend der garantierten Rate benötigt wird. Der Pufferring und die zugeordneten Termin-Zeitpunkte ziehen Vorteil aus der innewohnend sequentiellen Natur von Multimedia-Streaming, um Speicheranforderungen vorab in eine Wartschlange zu stellen. Dies ermöglicht es, daß zukünftige Anforderungen während der Flauten der Speicheraktivität erfüllt werden, wodurch die Last von Spitzen zu Tälern verschoben wird und die Speicheraktivität über die Zeit ausgeglichen wird. Auch wenn 6 in Bezug auf Stromleseanforderungen beschrieben wurde, ist zu beachten, daß derselbe Mechanismus für Stromschreibanforderungen verwendet werden kann. Während jeder Puffer mit einem Block von Stromdaten gefüllt wird, kann eine Anforderung und ein Termin in eine Termin-Warteschlange eingereiht werden, um den Block in das Speichersystem zu schreiben.
  • Die Videospeicherverwaltung 206 unterstützt eine Mehrzahl von verschiedenen Medienstrom-Clients mit unterschiedlichen Ratengarantien. Eine unterschiedliche Medienstromverwaltung 404 und ein unterschiedlicher Ringpuffer 405 können für jeden Strom bereitgestellt werden. Ein separates Plattenzeitsteuerungsprogramm 408 und eine separate Termin-Warteschlange 410 werden für jedes Speichersystem 204 bereitgestellt. Daher kann jede Termin-Warteschlange 410 Anforderungen enthalten, die mehreren unterschiedlichen Medienströmen entsprechen. Die Termine für jede Anforderung in den Termin-Warteschlangen 410 werden alle relativ zu einem gemeinsamen aktuellen Zeitpunkt berechnet, so daß der früheste Termin von irgendeinem Anforderer, der in einer bestimmten Termin-Warteschlange gespeichert ist, zuerst ausgegeben wird. Die Zeit zwischen Anforderungen, die für irgendeinen bestimmten Strom erfüllt werden, variiert abhängig von der Anzahl von anderen anstehenden Anforderungen, jedoch stellt der zugeordnete Termin sicher, daß die Ratengarantie eingehalten wird.
  • Über das Bereitstellen von kontinuierlichen Medienströmen mit garantierten Raten hinaus kann es wünschenswert sein, daß ein Multimedia-Server Zugriff auf in den Speichersystemen gespeicherte Daten in einer priorisierten, aber als nicht verspätet garantierten Weise zur Verfügung stellt. Solche Zugriffe sollten die Garantien, die für kontinuierliche, Raten-garantierte Medienströme gegeben wurden, nicht beeinträchtigen. Zum Beispiel kann ein NFS- oder FTP-Anforderer auf eine Datei zuzugreifen wünschen. Typischerweise erfolgen solche Zugriffe nicht in Echtzeit und es wird keine Ratengarantie benötigt. Solche Zugriffe können erfüllt werden, indem die restliche Plattenbandbreite verwendet wird, die verfügbar ist, nachdem alle Zugriffe mit garantierter Rate erfüllt werden. Jegliche Speicherbandbreite, die übrigbleibt, nachdem alle Anforderungen mit garantierter Rate eingehalten werden, wird einem allgemeinen Vorrat bzw. Pool zugeordnet. Clients verfügbarer Bandbreite können auf diese Bandbreite in einer Wer-zuerst-kommt-mahlt-zuerst-Weise zugreifen. Die Videospeicherverwaltung stellt dynamisch die Menge an verfügbarer Bandbreite fest. Jegliche Bandbreite einer unbenutzten Vereinbarung mit garantierter Rate kann Teil des Vorrates von verfügbarer Bandbreite werden.
  • In 7 ist ein System dargestellt, das sowohl Ströme mit garantierter Rate als auch nicht-Raten-garantierte Zugriffe mit verfügbarer Rate zur Verfügung stellt. Wie in 7 gezeigt, kann die Videospeicherverwaltung 206 Anforderungen sowohl von Clients mit garantierter Rate als auch von Clients mit verfügbarer Rate entgegennehmen. Ein Strompuffer 712 kann jedem Client mit garantierter Rate zugeordnet sein. Nach einer bevorzugten Ausführungsform ist jeder Strompuffer 712 ein Pufferring wie in Bezug auf die 4 und 6 beschrieben. Anforderungen mit garantierter Rate werden vom Dateisystem 406 auf ein passendes Plattenzeitsteuerungsprogramm 408 abgebildet und in einer Warteschlange für garantierte Raten 706 gespeichert. Nach einer bevorzugten Ausführungsform ist die Warteschlange für garantierte Raten eine Termin-Warteschlange wie in Bezug auf die 4 und 6 beschrieben. Anforderungen mit verfügbaren Raten, die nicht Raten-garantiert sind, werden auch von dem Dateisystem 406 auf ein passendes Plattenzeitsteuerungsprogramm für das Speichersystem abgebildet, in dem sich die angeforderten Daten befinden. Eine Datenvorrat bzw. -pool 704 kann als ein gemeinsam genutzter Puffer für die Anforderungen verfügbarer Raten vorgesehen werden. Anforderungen verfügbarer Raten werden in eine Prioritätswarteschlange 708 eingefügt, die mit jedem Speichersystem verbunden ist. Eine weitere Quelle von Dateianforderungen kann das Dateisystem 406 selbst sein. Diese Anforderungen können Anforderungen von Metadaten umfassen, die benötigt werden, um die verschiedenen Datenströme zu unterstützen (z.B. Blöcke, die Listen von Blöcken enthalten, die zu einem Strom gehören, wie indirekte Blöcke). Diese Art von Metadatenanforderungen kann zeitkritisch sein, insofern als das Streaming angehalten wird, wenn ein Block mit Stromzeigern (indirekter Block) nicht verfügbar ist, der auf den nächsten, zu dem Strom gehörigen Datenblock zeigt. Daher trägt eine Anforderung zeitkritischer Metadaten auch Termine und kann direkt zusammen mit Anforderungen von Streaming-Daten in der Warteschlange für garantierte Raten oder der Termin-Warteschlange 706 eingereiht werden. Das Dateisystem überwacht dauernd seinen Fortschritt mittels des aktuellen indirekten Blocks. Bei einem geeigneten Schwellwert berechnet es den Termin und plant das Holen des nächsten indirekten Blocks aus dem Speichersystem zeitlich ein. Andere Anforderungen von Metadaten sind möglicherweise nicht kritisch wie andere Arten von Dateiverwaltungs- und Lese- und Schreib-Operationen, die nicht in Zusammenhang mit Streaming stehen (z.B. das Auflisten von Dateien im Dateisystem). Diese nicht zeitkritischen Anforderungen von Metadaten werden in die Prioritätswarteschlangen 708 eingereiht. Ein Metadatenvorrat 702 kann dem Dateisystem 406 zugeordnet sein, aus dem die Anforderungen von Metadaten ausgegeben werden.
  • Obwohl andere Anforderungen von Metadaten und Anforderungen verfügbarer Bandbreite keine strengen Anforderungen hinsichtlich der Bedienzeit haben, können sie eine Prioritätsbeziehung haben. Zum Beispiel können Schreibvorgänge von Metadaten als von höchster Priorität betrachtet werden, weil ihre Beendigung für das Abschließen einer bestimmten Stromsendefolge bzw. eines bestimmten Stromablaufs wesentlich sein kann. Lesevorgänge von Metadaten können als nächstes in der Priorität liegen, um die zeitgerechte bzw. pünktliche Verarbeitung von Dateilisten, das zeitgerechte Anlegen von Dateien, etc. sicherzustellen. Anforderungen verfügbarer I/O können die niedrigste Priorität haben und können gefüllt werden, wenn Ressourcen verfügbar sind. Anforderungen in den Prioritätswarteschlangen sind von der höchsten zur niedrigsten Priorität geordnet.
  • Der Mechanismus zur Plattenzeitsteuerung gibt die Anforderungen in der Warteschlange an das Speichersystem in einer Reihenfolge aus, die die mit den Anforderungen verbundenen Termine einhält, und ordnet auch die restliche Bandbreite nach den garantierten Anforderungen den nichtgarantierten Anforderungen in einer Weise zu, die mit den ihnen zugeordneten Prioritäten konsistent ist. Ein Bandbreiten-Zuordnen 710 kann eingesetzt werden, um einen bestimmten Anteil der Speicherbandbreite den Anforderungen mit garantierten Raten und den verbleibenden Bandbreitenanteil den nicht-garantierten Prioritätsanforderungen zuzuordnen. Zum Zeitpunkt der Speichercharakterisierung wird ein konfigurierbarer Prozentsatz der Bandbreite des Speichersystems zum Gewähren von nicht-garantierten Prioritätsanforderungen reserviert. Zum Beispiel können 90 Prozent der Bandbreite für Anforderungen mit garantierter Rate aus der Warteschlange für garantierte Raten 706 reserviert werden und die restlichen 10 Prozent können den nicht-Raten-garantierten Anforderungen aus der Prioritätswarteschlange 708 zugeordnet werden. Basierend auf den für garantierte und nicht-garantierte Anforderungen reservierten Prozentsätzen wählt das Plattenzeitsteuerungsprogramm eine Anforderung aus der einen oder der anderen Warteschlange, um sie an das Betriebssystem zu übergeben, um von dem Speichersystem erfüllt zu werden. Wenn die gewählte Anforderungswarteschlange leer ist, versucht das Zeitsteuerungsprogramm, eine Anforderung aus der anderen Warteschlange zu holen, wodurch es sowohl den nicht-garantierten als auch den garantierten Anforderungen ermöglicht wird, unbenutzte Speicherbandbreite zu absorbieren.
  • Nach einer bevorzugten Ausführungsform werden Anforderungen aus den Termin- und Prioritätswarteschlangen in das Speichersystem gemäß einem Zyklus übergeben. Ein Beispiel eines Zyklus' ist in 8 abgebildet. Ein Zyklus besteht aus eines festen Anzahl von Zeitfenstern bzw. Slots, wobei jeder Slot entweder der Termin-Warteschlange oder der Prioritätswarteschlange in dem Verhältnis zugewiesen ist, das gleich der gewünschten Zuordnung von Plattenbandbreite zwischen garantierten und nicht-garantierten Zugriffen ist. In 8 zeigen mit D markierte Slots auf die Ter min-Warteschlange und mit P markierte Slots auf die Prioritätswarteschlange. Der Zyklus wird wiederholt durchlaufen, und eine Anforderung wird aus einer der Warteschlangen gemäß dem aktuellen Slot ausgewählt. In dem Beispiel von 8 ist die Bandbreite so im Verhältnis aufgeteilt, daß das Plattenzeitsteuerungsprogramm bei 13 von allen 16 Speicherzugriffen zuerst auf die Termin-Warteschlange schaut und bei den verbleibenden drei von allen 16 Zugriffen zuerst auf die Prioritätswarteschlange schaut. Diese Zuordnung ist lediglich ein Beispiel und nach einer bevorzugten Ausführungsform kann die Zuordnung so sein, daß neun von zehn Slots auf die Termin-Warteschlange zeigen und einer von allen zehn Slots auf die Prioritätswarteschlange zeigt. Nach einer bevorzugten Ausführungsform sind die Slots, die jeder Verwendung zugeordnet sind, über den Zyklus so gleichmäßig verteilt wie möglich.
  • Nach einer bevorzugten Ausführungsform werden Anforderungen aus den Termin- und Prioritätswarteschlangen in das Speichersystem gemäß den aktuellen Slots übergeben, und der Zyklus rückt dann zum nächsten Slot vor. Wenn die durch den aktuellen Slot angegebene Warteschlange leer ist, dann wird ein Eintrag von der anderen Warteschlange gewählt, wenn sie nicht leer ist. Daher können nicht-Raten-garantierte Anforderungen tatsächlich mehr als ihre zugeordnete Bandbreite erhalten, wenn durch die Termin-Warteschlange nicht die gesamte Raten-garantierte Bandbreite verwendet wird.
  • In 9 befindet sich ein Flußdiagramm, das ein Verfahren zum Bereitstellen eines Speicherzugriffs für mehrere kontinuierliche Medienströme mit einer Ratengarantie und eines Speicherzugriffs für nicht-Raten-garantierte Anforderungen darstellt. Ein Anteil der Speicherbandbreite ist den Raten-garantierten Anforderungen zugeordnet und die restliche Bandbreite ist den nicht-Ratengarantierten Anforderungen zugeordnet, wie bei 902 angegeben. Raten-garantierte Anforderungen werden in eine Warteschlange für garantierte Raten eingereiht und nicht-Raten-garantierte Anforderungen werden in eine Prioritätswarteschlange eingereiht, wie bei 904 angegeben. Die Ratengarantierten Anforderungen werden in die Warteschlange für garantierte Raten in einer Weise eingegeben und aus ihr ausgegeben, daß sichergestellt ist, daß sie in einer zeitgerechten Art und Weise erfüllt werden, um die spezifische, für jeden Strom garantierte Rate einzuhalten. Die nicht-Ratengarantierten Anforderungen können in der Prioritätswarteschlange geordnet sein, so daß Anforderungen höherer Priorität vor Anforderungen niedrigerer Priorität erfüllt werden. Das System wählt dann eine Warteschlange aus, um eine Anforderung an das Speichersystem gemäß einem aktuellen Slot aus einem Zyklus auszugeben, der die Speicherbandbreite gemäß der Bandbreitenzuordnung in dem Verhältnis aufteilt, wie bei 906 angegeben. Wenn die ausgewählte Warteschlange einen Eintrag enthält, dann wird diese Anforderung aus der ausgewählten Warteschlange ausgegeben, wie bei 908, 910 und 912 angegeben. Wenn die ausgewählte Warteschlange leer ist, dann schaut das System in der anderen Warteschlange nach einer Anforderung zum Ausgeben, wie bei 908 und 914 angegeben. Wenn die andere Warteschlange nicht leer ist, dann wird ein Eintrag entfernt und ausgegeben, wie bei 916 und 912 angegeben. Das System durchläuft danach den Zyklus zum nächsten Slot, wie bei 918 angegeben, und wiederholt den Auswahlprozeß der Warteschlange. Wenn die andere Warteschlange bei Schritt 914 leer ist, dann wird der Prozeß wiederholt, bis eine Warte schlange gefunden wird, die einen Eintrag enthält. Nach einer Ausführungsform wird der Slot nicht vorgerückt, wenn beide Warteschlangen leer sind. Alternativ kann der Slot vorgerückt werden, wenn beide Warteschlangen leer sind.
  • In 10 ist eine Videospeicherverwaltung dargestellt, die die in Bezug auf die 4 und 7 beschriebenen Mechanismen kombiniert. Die Speicherverwaltung von 10 unterstützt mehrere kontinuierliche Medienströme, bei denen Clients einen Zugriff auf eine Datei mit einer garantierten Bitrate vereinbaren. Jeder Client eines Stroms darf die Rate seines Zugriffs auf seine Datei von jeder Rate an bis zur garantierten Rate variieren. Darüber hinaus unterstützt die Speicherverwaltung von 10 Clients für verfügbare Bandbreite. Ein bestimmter Anteil der Speicherbandbreite ist der verfügbaren Bandbreite oder nicht-Raten-garantierten Clients wie dem Client für verfügbare Bandbreite 752 zugeordnet. Darüber hinaus kann jede Bandbreite, die von den Clients mit garantierter Rate nicht verwendet wird, für die Clients mit verfügbarer Bandbreite verfügbar sein. Daher kann die Videospeicherverwaltung von 10 eine Mischung aus Clients mit garantierter Rate unterstützen, während sie dieselbe zusammengefasste Bandbreite liefert, und ebenso Clients für verfügbare Bandbreite mit einer nicht-garantierten Rate unterstützen.
  • Wie in Bezug auf 4 diskutiert kommuniziert jeder Client mit garantierter Rate mit einer zugeordneten Stromverwaltung 404, die einen Pufferring 405 für den speziellen Strom unterhält. Der Pufferring wird verwendet, um die nächsten N Blöcke des kontinuierlichen Medienstroms aufzunehmen, auf die durch den Anforderer zuzugreifen ist, wobei N eine Anzahl von Puffern in dem Pufferring ist. Jeder Puffer kann von seiner Größe her gleichermaßen für einen Block von Daten pro Puffer ausgelegt sein. Sobald ein Puffer in dem Ring seine Daten von dem Anforderer konsumieren läßt, wird eine Anforderung für den nun leeren Puffer zusammen mit einem Termin bei dem passenden Plattenzeitsteuerungsprogramm 408 wie durch das Dateisystem 406 festgelegt in eine Warteschlange gestellt. Der Termin gibt den spätesten Zeitpunkt an, zu dem die Pufferanforderung erfüllt werden kann und immer noch die garantierte Ratenanforderung des Stromes eingehalten werden kann. Der Terminzeitpunkt kann berechnet werden als: Termin_time = current_time + (N – 1) * buff_timewobei N die Anzahl von Puffern in dem Ring ist und buff time die minimale Zeit ist, in der der Anforderer eine Puffer konsumieren kann, ohne die vereinbarte Ratengarantie zu überschreiten. Gleichzeitig mit dem In-die-Warteschlange-Stellen der Anforderung mit garantierter Rate beim entsprechenden Plattenzeitsteuerungsprogramm 408, werden auch priorisierte Anforderungen, jedoch mit nicht-garantierter Rate, in die Warteschlange gestellt. Anforderungen mit nicht-garantierter Rate tragen keine Termine aber sie tragen Prioritäten. Die Plattenzeitsteuerungsprogramme geben die Anforderungen in den Warteschlangen an das Speichersystem in einer Reihenfolge aus, welche die den Anforderungen zugeordneten Termine einhält, während sie gleichzeitig einen hohen Anteil der Bandbreite des Plattensystems erhält und die restliche Plattenbandbreite nach den garantierten Anforderungen nicht-garantierten Anforderungen in einer Weise zuordnet, die mit ihren Prioritäten konsistent ist.
  • Garantierte Anforderungen von Anforderern kontinuierlicher Ströme werden in eine nach frühesten Termine geordnete Warteschlange 410 in dem passenden Plattenzeitsteuerungsprogramm gestellt. Anforderungen mit nicht-garantierter Rate werden in eine separate, nach höchster Priorität geordnete Warteschlange 708 gestellt. Zusätzlich zu Anforderungen von Clients für verfügbare Raten 752 und von Clients für garantierte Raten 754 können Anforderungen auch vom Dateisystem selbst kommen. Einige Anforderungen vom Dateisystem können zeitkritisch sein wie eine Anforderung von Blöcken, die Zeiger auf zukünftige Blöcke eines Stroms enthalten. Termine werden diesen Anforderungen zugeordnet, und sie werden in die passende Termin-Warteschlange 410 eingefügt. Anderen Anforderungen wie nicht zeitkritischen Dateiverwaltungsanforderungen wird eine Prorität zugeordnet, und sie werden in die passende Prioritätswarteschlange 708 eingefügt. Die Anforderungen des Dateisystems können in einem Metavorrat bzw. Metapool 702 bepuffert werden. Eine Anforderung eines Client für verfügbare Rate kann in einem Datenvorrat bzw. Datenpool 704 gepuffert werden.
  • Anforderungen werden aus den Termin- und Prioritätswarteschlangen von einem Bandbreiten-Zuordner 710 entsprechend einem Zyklus übergeben, der Bandbreite gemäß einer konfigurierbaren Zuordnung zuordnet. Zum Beispiel können 90 Prozent der Bandbreite eines bestimmten Speichersystems der Termin-Warteschlange und somit den Clients von Strömen mit garantierter Rate zugewiesen werden, und 10 Prozent können der Prioritätswarteschlange für Clients für verfügbare Rate zugewiesen werden. Der Bandbreiten-Zuordner 710 kann Anforderungen aus den Termin- und Prioritätswarteschlangen in eine Such-Neuordnungs-Warteschlange 750 übergeben. Eine Anforderung kann in der Such-Neuordnungs-Warteschlange gemäß der Position des angeforderten Datenblocks in der Speichereinrichtung neu geordnet werden. Die Such-Neuordnungs-Warteschlange kann eine konfigurierbare maximale Größe haben. Anforderungen aus den Termin- und Prioritätswarteschlangen werden in die Such-Neuordnungs-Warteschlange entsprechend dem aktuellen Zyklusslot immer dann übergeben, wenn die Such-Neuordnungs-Warteschlange nicht bis zu ihrer maximalen Größe gefüllt ist. Jede Übergabe erfolgt aus der Warteschlange, die von dem aktuellen Slot des Zyklus' angegeben wird, und danach rückt der Zyklus zum nächsten Slot vor. Wenn die von dem Slot angegebene Warteschlange leer ist, dann wird ein Eintrag von der alternativen Warteschlange gewählt, wenn sie nicht leer ist. Der übergebene Eintrag wird in der Such-Neuordnungs-Warteschlange so neu geordnet, daß sich alle Anforderungen auf der einen Seite des Eintrags auf Datenblöcke mit Speicheradressen größer oder gleich seiner Adresse beziehen, und alle Einträge auf der anderen Seite der Warteschlange Datenblöcke mit Plattenadresse kleiner oder gleich seiner Adresse anfordern.
  • Jede Such-Neuordnungs-Warteschlange 750 wird gleichzeitig beständig in eine Richtung durchlaufen (d.h. zu ansteigenden oder abfallenden Plattenadressen), bis keine weiteren Einträge in der Warteschlange in dieser Richtung vorliegen, und sie kehrt dann die Richtung um und beginnt erneut. Somit gibt das Plattenzeitsteuerungsprogramm Anforderungen aus der Such-Neuordnungs- Warteschlange an das Speichersystem in der Reihenfolge von Plattenadressen aus und rückt zu der nächsten Anforderung vor, wenn die zuvor ausgegebene Anforderung von dem Plattensystem beendet wurde.
  • Weil die Termin- und Prioritätswarteschlangen Anforderungen von vielen unterschiedlichen Strömen und Clients enthalten, ist die Reihenfolge von Blöcken, die aus diesen Warteschlange resultiert, im Wesentlichen zufällig. Wenn diese Anforderungen gemäß ihrer Reihenfolge in den Termin- und Prioritätswarteschlangen bedient würden, würde ein übermäßiger Overhead bei der Plattensuche aus dem zufälligen Muster der Anforderungen resultieren. Die Such-Neuordnungs-Warteschlange 750 verbessert die Suchzeit, indem sie Anforderungen aus den Termin- und Prioritätswarteschlangen entsprechend ihren Plattenpositionen neu ordnet.
  • In 11 befindet sich ein Flußdiagramm, das den Betrieb der Such-Neuordnungs-Warteschlange 750 darstellt. Wie bei 1102 angegeben, wird eine Anforderung entweder aus der Termin- oder der Prioritätswarteschlange gemäß dem aktuellen Slot des Zyklus' übergeben, wenn die Such-Neuordnungs-Warteschlange nicht voll ist. Wenn die angegebene Warteschlange leer ist, wird die Anforderung aus der anderen Warteschlange genommen, wenn diese Warteschlange nicht leer ist, wie bei 1104 angegeben. Die übergebene Anforderung wird in die Such-Neuordnungs-Warteschlange entsprechend der Plattenadresse des angeforderten Blocks eingefügt, so daß Anforderungen in der Such-Neuordnungs-Warteschlange nach ansteigenden oder fallenden Plattenadressen geordnet sind. Gleichzeitig wird die Such-Neuordnungs-Warteschlange in einer Richtung durchlaufen, und die nächste Anforderung wird an das Plattensystem ausgegeben, wie bei 1108 angegeben. Wenn das Ende der Such-Neuordnungs-Warteschlange erreicht wurde, dann wird die Richtung des Warteschlangendurchlaufs umgekehrt, wie bei 1110 und 1114 angegeben. Wenn das Ende der Such-Neuordnungs-Warteschlange nicht erreicht wurde, dann wird die aktuelle Durchlaufrichtung beibehalten, wie bei 1110 und 1112 angegeben. Sobald die aktuelle Anforderung von dem Plattensystem erfüllt wurde, wird die nächste Anforderung in der Such-Neuordnungs-Warteschlange an das Plattensystem ausgegeben, wie bei 1116 und 1108 angegeben.
  • Wie zuvor angemerkt, sind Blockanforderungen, wie sie von dem Speichersystem gesehen werden, ihrer Natur nach zufällig, da das Speichersystem mit Anforderungen von vielen Strömen konfrontiert wird. Angesichts dieser Zufälligkeit wäre es ineffizient, sequentiell Blöcke für eine bestimmte Datei zuzuordnen bzw. zu belegen. Weil I/O-Zylinder einer Platte häufig unterschiedliche Übertragungsraten haben, springt die Blockbelegung innerhalb einer bestimmten Datei zwischen I/O-Zonen der Platten vor und zurück bzw. hin und her. Daher werden für jede spezifische Stromdatei Anforderungen von Speicherblöcken Plattenadressen zugewiesen, so daß sich die Blöcke in abwechselnden I/O-Zonen der Platten befinden. Dies stellt sicher, daß alle Dateien einen durchschnittlichen Speicherdurchsatz erfahren und daß keine Datei, die in einem Strom übertragen wird, schließlich als Ganzes aus einer Zone der Platte mit niedrigem Durchsatz kommt.
  • Wie oben erwähnt muß die Videospeicherverwaltung den Zugang neuer kontinuierlicher Ströme steuern, um sicherzustellen, daß die Zusammenfassung der garantierten Stromraten die zusammengefasste Speicherbandbreite, die kontinuierlichen Ströme zugeordnet ist, nicht über schreitet. Bevor irgendein Streaming begonnen wird, werden die Speichersysteme charakterisiert, um ihren Durchsatz oder ihre Bandbreite zu bestimmen. Sobald die Bandbreite eines Speichersystems bestimmt wurde, dann wird beim Anfordern eines jeden neuen Stroms die Videospeicherverwaltung, wenn das Streaming anfängt, feststellen, ob die angeforderte Bitrate die restliche, verbleibende Bandbreite, die kontinuierlichen Strömen zugeordnet ist, überschreiten würde oder nicht. Wenn dies der Fall ist, wird die Anforderung abgelehnt und dem Anforderer ist es freigestellt, die Anforderung zu einem späteren Zeitpunkt oder mit der Anforderung einer niedrigeren Bitrate erneut zu übergeben. Wenn genügend Bandbreite vorhanden ist, wird der Anforderung stattgegeben, und eine Stromverwaltung erzeugt einen zugehörigen Pufferring, wie oben diskutiert.
  • Weil eine Abfolge von Anforderungen, die dem Speichersystem während des Streaming übergeben werden, im wesentlichen zufälliger Natur ist, kann das Modellieren der Stromlast zum Charakterisieren der Speicherbandbreite vereinfacht werden. Diese Leistungsfähigkeit bzw. dieser Durchsatz kann mittels einer synthetischen Last charakterisiert werden, die die Eigenschaften einer typischen Last widerspiegelt. Die synthetische Last kann von einer rein zufälligen Sequenz von Blöcken abweichen, um die Tatsache zu berücksichtigen, daß Blöcke für jede gegebene Datei in abwechselnden I/O-Zonen der Platte liegen, schwanken. Somit kann eine repräsentative Last konstruiert werden, indem dem Dateisystem aufgegeben wird, sequentielle Blöcke in einer zufälligen, zonenorientierten Weise zu belegen bzw. zuzuordnen. Der Adreßbereich der Plattenblöcke kann in zwei Hälften aufgeteilt werden, und Zuordnungen bzw. Belegung für sequentielle Dateiblöcke können aus zufälligen Positionen innerhalb einer zwischen den beiden Zonen hin- und herwechselnden Zone ausgewählt werden. Die Leistungsfähigkeit der Platte bzw. der Plattendurchsatz kann unter Verwendung dieser synthetischen Last charakterisiert und danach abgestuft werden, um einen Abstand bzw. einen Randbereich vorzusehen. Der Umfang bzw. das Ausmaß der Abstufung kann als der primäre Abstufungsparameter bezeichnet werden. Die Wert der abgestuften Bandbreite wird dann mit dem Bruchteil der gesamten Bandbreite multipliziert, der in dem Zyklusprozeß Anforderern mit garantierter Rate zugeordnet ist. Die resultierende Bandbreite für garantierte Raten kann noch einmal durch einen sekundären Abstufungsparameter abgestuft werden, um eine zusätzliche Sicherheitsspanne für Termine zu ermöglichen. Das Ergebnis ist die maximale Zugangsbandbreite für die Zusammenfassung aller Anforderungen mit garantierter Rate. Anforderer garantierter Raten können dann zugelassen werden, bis sie die gesamte Zugangsbandbreite für garantierte Raten verbraucht haben.
  • Die Speichercharakterisierung für die Zugangsteuerung ist in 12 zusammengefasst. Eine synthetische Last wird durch Zuordnen von Blöcken in einer zonenorientierten, zufälligen Weise erzeugt, so daß Zuordnungen für sequentielle Dateiblöcke aus zufälligen Positionen innerhalb einer Zone, die zwischen einer I/O-Plattenzone hin- und herwechselt, ausgewählt werden, wie bei 1202 angegeben. Die Bandbreite des Speichersystems wird unter Verwendung dieser synthetischen Last bestimmt, wie bei 1204 angegeben. Die ermittelte Bandbreite wird durch einen primäre Abstufungsparameter abgestuft, um für einen gewissen Randabstand zu sorgen, wie bei 1206 angegeben. Die abgestufte Bandbreite wird entsprechend dem Anteil der Bandbreite, die Anforderungen mit garantierter Rate zugeordnet ist, reduziert, wie bei 1208 angegeben. Die im Verhältnis aufgeteilte Bandbreite kann dann noch einmal durch einen sekundären Abstufungsparameter abgestuft werden, um einen zusätzlichen Termin-Randabstand vorzusehen, wie bei 1210 angegeben. Die resultierende Bandbreite kann dann als eine maximale, zusammengefasste Zugangsbandbreite für Ströme mit garantierten Raten verwendet werden, wie bei 1212 angegeben.
  • Der Charakterisierungsprozeß kann auch das Bestimmen geeigneter Pufferringgrößen für verschiedene Stromraten über den gewünschten Betriebsbereich des Speichersystems hinweg umfassen. Die optimale Anzahl von Puffern für einen Pufferring kann für eine Vielzahl von Stromraten folgendermaßen bestimmt werden. Unter Bezug auf 13 erzeugt der Charakterisierungsvorgang für jede spezifische Stromrate genügend Stromsimulatoren, um den gesamten zusammengefassten Durchsatz des Speichersystems zu verbrauchen, wie bei 1302 angegeben. Für jeden Stromsimulator wird ein Ringpuffer modelliert, wie bei 1304 angegeben. Jeder Stromsimulator erzeugt daraufhin Blockanforderungen, die zwischen zufälligen Blöcken zwischen Zonen abwechseln, wie bei 1306 angegeben. Die simulierten Ströme lässt man dann bis zum Ende der Testzeit ablaufen, oder bis irgendeiner der Ströme ein Leerlaufen erleidet. Ein Leerlaufen tritt auf, wenn eine Pufferanforderung nicht vor der Termin der Anforderung abgeschlossen ist. Nach einer bevorzugten Ausführungsform kann ein Vorabfüllzeitspannenparameter gesetzt werden, so daß ein Leerlaufen auftritt, wenn eine Pufferanforderung nicht innerhalb der Vorabfüllzeitspanne vor dem Termin der Anforderung abgeschlossen ist. Die Anzahl von Ringpuffern in dem Modell kann angepaßt und die Simulation, wie bei 1308 und 1310 angegeben, wiederholt werden, bis die richtige Ringpuffergröße erhalten wird. Die gesamte Simulation kann daraufhin für verschiedene Stromraten wiederholt werden, wie bei 1312 angegeben. Somit kann eine Tabelle der geeigneten Ringpuffergrößen während der Charakterisierung für eine Vielzahl von Stromraten bis zu den maximalen von dem System unterstützten Stromraten angelegt werden. Während des Betriebs kann ein Ringpuffer passender Größe für den neuen Strom durch Zugriff auf diese Tabelle immer dann erzeugt werden, wenn ein neuer Strom zugelassen wird.
  • Die Leistungsfähigkeit bzw. der Durchsatz der Videospeicherverwaltung kann durch Abstimmen einer Reihe von Parametern wie oben diskutiert abgestimmt werden. Diese Parameter sind in der folgenden Tabelle zusammengefasst.
  • Tabelle 1 Parameter zur Systemcharakterisierung
    Figure 00240001
  • Figure 00240002
  • Diese Parameter können verwendet werden, um die Leistungsfähigkeit bzw. den Durchsatz eines Medienspeichersystems wie des oben beschriebenen Systems anzupassen. Der maximale nachhaltige Durchsatz des Speichersystems kann wie oben beschrieben mittels Verwenden einer synthetischen Last charakterisiert werden. Um das Niveau der Betriebslast des Speichersystems relativ zu dem maximalen Durchsatz anzupassen, kann der charakterisierte maximale, nachhaltige Durchsatz durch den primären Abstufungsparameter abgestuft werden. Der primäre Abstufungsparameter ist konfigurierbar und kann während des Konfigurierens des Systems gesetzt werden. Warteschlangen wie die oben beschriebenen Termin-Warteschlangen können von ihrer Größe her basierend auf dem abgestuften maximalen Durchsatz wie durch den primären Abstufungsfaktor abgestuft ausgelegt werden. Der resultierende Durchsatz kann der primäre Durchsatz genannt werden. Dieser primäre Durchsatz kann zur Festlegung der Größe des Pufferrings wie oben beschreiben verwendet werden. Der primäre Abstufungsparameter sorgt für eine Sicherheitsspanne für das Niveau der Betriebslast des Speichersystems auf Kosten der Absenkung des verfügbaren maximalen Durchsatzes. Indem der primäre Abstufungsparameter während des Konfigurierens des Systems gesetzt wird, kann der Benutzer diesen Kompromiß nach Bedarf für jede spezielle Anwendung des Speichersystems anpassen.
  • Der Parameter "verfügbare I/O-Rate" gibt die Speicherbandbreite an, die für nicht-Ratengarantierte Anforderungen reserviert ist, wie oben mit Bezug auf den Bandbreiten-Zuordnen diskutiert. Die Menge an Bandbreite, die für Anforderungen mit nicht-garantierten Raten gegenüber Anforderungen mit garantierten Raten reserviert ist, kann unter Verwendung dieses Parameter konfiguriert werden. Abhängig von dem Bedarf eines Systems kann der Benutzer das Verhältnis der Aufteilung zwischen Anforderungen mit nicht-garantierten Raten und garantierten Raten anpassen, indem er diesen Parameter "verfügbare Rate" anpaßt.
  • Der sekundäre Abstufungsparameter reduziert die für Raten-garantierte Ströme verfügbare Bandbreite. Der primäre Durchsatz wird gemäß dem Parameter "verfügbare Rate" dem Verhältnis nach aufgeteilt und der Anteil, der Raten-garantierten Strömen zugeordnet ist, wird um den sekundären Abstufungsparameter weiter reduziert, um eine zusätzliche Termin-Sicherheitsspanne vorzu sehen. Während des Betriebs können zusätzliche Ströme bis zu dem Punkt zugelassen werden, an dem die Zusammenfassung aller Stromraten den Anteil des primären Durchsatzes vollständig verbraucht, der Strömen mit garantierten Raten zugeordnet ist, wie durch den sekundären Abstufungsparameter abgestuft.
  • Der Parameter "Vorabfüllspanne" gibt eine Termin-Sicherheitsspanne an, die während der Berechnung der Pufferringgrößen verwendet wird. Während der Konfigurierung des Systems können Pufferringgrößen für verschiedene Stromraten berechnet werden, wie unter Bezug auf 13 beschrieben. Der Parameter "Vorabfüllspanne" gibt eine Spanne an, um die die Termine während des Berechnungsvorgangs dieser Pufferringgröße eingehalten werden muß, z.B. sorgt die Vorabfüllspanne für eine Spanne, um die Puffer-Leerlaufen vermieden werden muß, wenn die Pufferringgrößen festgelegt werden. Es ist zu beachten, daß der Parameter "Vorabfüllspanne" zusätzlichen Leerlaufen-Schutz auf Kosten zusätzlichen Speichers erreicht, der für größere Ringpuffer verwendet wird. Eine größere Vorabfüllspanne führt zu größeren Ringpuffergrößen, da für bestimmte Stromraten zusätzliche Puffer in dem Pufferring benötigt werden, um zu vermeiden, daß Termine von Anforderungen um die angegebene Vorabfüllspanne versäumt werden. Im Gegensatz dazu erreicht der sekundäre Abstufungsparameter zusätzlichen Leerlaufen-Schutz auf Kosten der potentiellen Bandbreite für Raten-garantierte Ströme. Somit stellen der sekundäre Abstufungsparameter und der Parameter "Vorabfüllspanne" dem Benutzer des Speichersystems die Möglichkeit zur Verfügung, die Systemleistung bzw. den Systemdurchsatz anzupassen, indem einige unterschiedliche Kompromisse getroffen werden, wie es für eine bestimmte Anwendung optimal ist. Wenn zum Beispiel sehr viel Speicher verfügbar ist, jedoch zusätzliche Bandbreite benötigt wird, dann kann die sekundäre Abstufung herabgesetzt und die Vorabfüllspanne erhöht werden. Wenn jedoch Speicher kostbar ist, kann die Vorabfüllspanne herabgesetzt und die sekundäre Abstufung erhöht werden.
  • Der Parameter "I/O-Overlap" (auch als der Parameter "Such-Neuordnungspuffer-Länge" bezeichnet) gibt die Anzahl von Speicheranforderungen an, die beim Betriebssystem für eine Speichereinheit in der Warteschlange stehen. Zum Beispiel wird in dem oben beschriebenen System eine Such-Neuordnungs-Warteschlange verwendet, um Anforderungen an die Speichereinheiten in einer Reihenfolge entsprechend den physikalischen Plattenadressen der Speicheranforderungen aufzunehmen. Die Länge einer solchen Warteschlange kann durch den Parameter "I/O-Overlap" konfiguriert werden. Dieser Parameter stellt einen Kompromiß zwischen der Sucheffizienz und der Schwankung der Bedienzeit her. Je größer zum Beispiel die Such-Neuordnungs-Warteschlange gemacht wird, desto mehr Anforderungen können der Speichereinheit in einer linearen Reihenfolge übergeben werden, wodurch die Sucheffizienz des Laufwerks erhöht wird. Da jedoch die Anforderungen aus ihrer Reihenfolge nach Termin und Priorität neu geordnet werden, erhöht eine größere Länge der Such-Neuordnungs-Warteschlange die Schwankung beim Einhalten der Termine der Anforderungen. Dieser Parameter kann in Betracht gezogen werden, wenn die Größen der Pufferringe ermittelt werden, so daß längere Such-Neuordnungs-Warteschlangen zu größeren Pufferringgrößen führen, um der Schwankung beim Erfüllen der Termine der Anforderungen Rechnung zu tragen. Daher kann es der Parameter "I/O-Overlap" dem Benutzer ermöglichen, einen Kompromiß zwischen dem Speicher, der für die Puffer verfügbar gemacht werden muß, und einer höheren Sucheffizienz des Laufwerks zu finden.
  • Nach einer Ausführungsform kann die Blockgröße, mit der auf Mediendaten auf den Speichereinheiten zugegriffen werden kann, gemäß einem Parameter "Blockgröße" konfiguriert werden. Das Konfigurieren der Blockgröße kann es ermöglichen, einen Kompromiß zwischen der Suchamortisation und der Pufferfragmentierung bei niedrigeren Stromraten zu finden. Eine größere Blockgröße kann eine größere Sucheffizienz ermöglichen, jedoch kann eine größere Blockgröße auch zu mehr Fragmentierung und weniger effizientem Gebrauch von Speicherkapazität für bestimmte Dateigrößen führen.
  • Gemäß einer Ausführungsform der Erfindung wird ein Verfahren zum Anpassen der Leistungsfähigkeit bzw. des Durchsatzes eines Speichersystem zur Verfügung gestellt, das dafür eingerichtet ist, eine Mehrzahl von Datenströmen zu bedienen, wobei das Speichersystem einen Pufferring für jeden Datenstrom beinhaltet, wobei der Pufferring Daten zwischen einem Anforderer des Stroms und einem oder mehreren Speichereinheiten puffert, wobei das Verfahren aufweist: die Angabe eines primären Abstufungsparameters; das Festlegen von Pufferringgrößen für eine Mehrzahl von verschiedenen Stromraten, wobei dieses Festlegen das Anpassen der Pufferringgrößen aufweist, um ein Puffer-Leerlaufen zu vermeiden, wenn auf Daten in dem Speichersystem bei einem maximalen Durchsatz des Speichersystems, reduziert um den primären Abstufungsparameter, zugegriffen wird; und die Angabe eines Parameter "verfügbare Rate" zum Zuordnen eines Teils des maximalen Durchsatzes des Speichersystems, reduziert um den primären Abstufungsparameter, zu Raten-garantierten Strömen und eines verbleibenden Teils zu nicht-Raten-garantierten Strömen, wodurch eine garantierte Bandbreite für jeden Raten-garantierten Strom bereitgestellt werden kann; und wobei das Speichersystem dafür eingerichtet ist, Raten-garantierte Ströme nur zu akzeptieren, wenn die Summe der angeforderten garantierten Bandbreite für jeden Raten-garantierten Strom den Anteil des maximalen Durchsatzes des Speichersystems, reduziert um den primären Abstufungsparameter, nicht übersteigt, der Raten-garantierten Strömen zugeordnet ist, und wobei nicht-Ratengarantierten Ströme aus dem verbleibenden Anteil der zugeordneten Bandbreite befriedigt bzw. erfüllt werden.
  • Ein solches Verfahren kann ferner die Angabe eines sekundären Abstufungsparameters aufweisen, wobei der Anteil des Systemdurchsatzes, der von dem Parameter "verfügbare Rate" angegeben wird, weiter um diesen sekundären Abstufungsparameter reduziert wird, um eine maximale zusammengefasste Bandbreite für alle Raten-garantierten Ströme zu erhalten, so daß das Speichersystem Raten-garantierte Ströme nur entgegennimmt, wenn die Summe der angeforderten garantierten Bandbreite für jeden Raten-garantierten Strom die maximale zusammengefasste Bandbreite nicht übersteigt.
  • Ein solches Verfahren kann ferner die Angabe eines Parameters "Vorabfüllspanne" aufweisen, wobei das Festlegen von Pufferringgrößen gemäß dieser Vorabfüllspanne durchgeführt wird, wobei die Vorabfüllspanne eine Spanne angibt, um die ein Puffer-Leerlaufen während des Festlegens von Pufferringgrößen vermieden werden muß.
  • Ein solches Verfahren kann ferner die Angabe der Länge einer Such-Neuordnungs-Warteschlange aufweisen, wobei während des Betriebs alle Speicheranforderungen aus den Pufferringen in dieser Such-Neuordnungs-Warteschlange in der Reihenfolge der angeforderten physikalischen Adressen geordnet werden. Es ist zu beachten, daß das Festlegen von Pufferringgrößen unter Verwendung der angegebenen Länge der Such-Neuordnungs-Warteschlange durchgeführt werden kann.
  • Ein solches Verfahren kann ferner die Angabe einer Blockgröße aufweisen, wobei auf Daten in den Speichereinheiten mit dieser Blockgröße zugegriffen wird und wobei jeder Puffer in jedem Pufferring eine entsprechende Größe hat, um einen Block von Daten aufzunehmen. In diesem Fall kann das Festlegen von Pufferringgrößen unter Verwendung dieser Blockgröße durchgeführt werden.
  • Verschiedene Abwandlungen und Änderungen können vorgenommen werden, wie sie Fachleuten auf diesem Gebiet unter Zuhilfenahme dieser Offenbarung offensichtlich würden. Die folgenden Ansprüche sollen so interpretiert werden, daß sie alle solche Abwandlungen und Änderungen einschließen bzw. umfassen und dementsprechend die Spezifikationen und Zeichnungen eher in einem veranschaulichenden als in einem einschränkenden Sinn zu betrachten sind.

Claims (29)

  1. Verfahren zum Konfigurieren eines Multimedia-Speichersystems, welches Puffereinheiten zum Puffern von Multimedia-Datenströmen zwischen Einrichtungen, die einen Multimedia-Datenstrom anfordern, und dem Speichersystem verwendet, wobei das Verfahren aufweist: Kennzeichnen einer maximalen, nachhaltigen Durchsatzrate, mit welcher auf Daten in dem Multimedia-Speichersystem zugegriffen werden kann, Einstellen einer primären Durchsatzrate gleich der gekennzeichneten maximalen, nachhaltigen Durchsatzrate, vermindert durch einen primären Herabsetzungsparameter, und Einstellen einer maximalen Systembandbreite gleich einem Teil der primären Durchsatzrate, wobei während des Betriebes eine zusätzliche Anforderung für einen Multimediendatenstrom nur dann angenommen wird, wenn seine angeforderte maximale Stromrate nicht bewirkt, daß die Summe der maximalen Stromraten für alle Multimedia-Datenströme die maximale Systembandbreite übersteigt, und Bestimmen einer Puffereinheitsgröße für jede aus einer Vielzahl unterschiedlicher Datenstromraten, so daß die Puffereinheitsgröße ausreichend ist, um ein Entleeren der Puffereinheit zu verhindern, wenn eine Anzahl von Datenströmen jeweils auf Daten im Speichersystem mit der bestimmten Stromrate zugreift, wobei die Anzahl von Datenströmen ausreichend ist, um die primäre Durchsatzrate des Multimedia-Speichersystems zu beanspruchen bzw. zu verbrauchen.
  2. Verfahren nach Anspruch 1, wobei das Kennzeichnen einer maximalen, nachhaltigen Durchsatzrate aufweist: Erzeugen einer synthetischen Last von Datenblöcken in dem Speichersystem, wobei das Erzeugen einer synthetischen Last das zufällige Zuordnen von Blöcken zu inneren und äußeren Speicherplattenbereichen aufweist, wobei das Zuordnen von Blöcken zufällig zwischen den inneren und äußeren Bereichen wechselt, und Bestimmen der maximalen, nachhaltigen Durchsatzrate unter Verwendung der synthetischen Last.
  3. Verfahren nach Anspruch 1 oder 2, wobei während des Betriebes die Puffereinheit für jede angenommene Stromanforderung entsprechend der Puffereinheitsgröße bemessen wird, die beim Bestimmen der Datenstromrate für die akzeptierte Stromanforderung bestimmt wurde.
  4. Verfahren nach Anspruch 3, wobei während des Betriebes der Lese- oder Schreibanforderungen von jedem der Einrichtungen zur Anforderung von Strömen (Stromanforderern) Zeit limits zugeordnet und von ihren jeweiligen Puffereinheiten an eine oder mehrere Zeitlimitschlangen ausgegeben werden, wobei die Anforderungen von den Zeitlimitschlangen entsprechend einem frühesten Zeitlimit erfüllt werden, wobei die Zeitlimits für jede Anforderung berechnet werden, um ein Entleeren ihrer jeweiligen Puffereinheiten zu vermeiden.
  5. Verfahren nach einem der vorstehenden Ansprüche, wobei das Bestimmen der Puffereinheitsgrößen aufweist: Erzeugen einer Anzahl von Stromsimulatoren, jeweils mit derselben Stromrate, welche ausreichend sind, um die gesamte primäre Durchsatzrate zu beanspruchen, wobei jeder Stromsimulator Stromanforderungen von einer Modellpuffereinheit erzeugt, Einstellen der Größe jeder der Modellpuffereinheiten nach oben oder unten, je nachdem, ob ein Unterschreitungszustand auftritt, und Wiederholen des Erzeugens von Stromanforderungen und des Einstellens, bis eine optimale Puffereinheitsgröße gefunden wurde, die soeben einen Entleerungszustand vermeidet.
  6. Verfahren nach Anspruch 5, wobei das Bestimmen von Puffereinheitsgrößen weiterhin das Erzeugen einer Tabelle von Puffereinheitsgrößen für unterschiedliche Stromraten aufweist, indem das Erzeugen einer Anzahl von Stromsimulatoren, das Erzeugen von Stromanforderungen, das Einstellen und das Wiederholen des Erzeugens von Stromanforderungen wiederholt wird, bis eine optimale Puffereinheitsgröße für jede der Mehrzahl von Stromraten gefunden wurde.
  7. Verfahren nach Anspruch 5 oder 6, wobei die Modellpuffereinheit einen Ring aus Puffern aufweist, der einer nach dem anderen in umlaufender Reihenfolge durch eine zugeordnete Anforderungseinrichtung für einen Multimediastrom verbraucht wird, wobei die Puffereinheitsgröße die Anzahl von Puffern in dem Ring aus Puffern aufweist.
  8. Verfahren nach Anspruch 7, wobei jeder Puffer in jedem Ring aus Puffern gleich bemessen ist, um eine Datenblockgröße zu halten, wobei auf die Daten in dem Speichersystem entsprechend der Blockgröße zugegriffen wird, und wobei die Blockgröße konfigurierbar ist.
  9. Verfahren nach einem der Ansprüche 5 bis 8, wobei der Entleerungszustand auftritt, wenn eine der Stromanforderungen nicht innerhalb eines Vorfüll-Zeitlimits für ihre Modellpuffereinheit abgeschlossen ist, wobei das Vorfüll-Zeitlimit von der Puffereinheitsgröße und der Stromrate abhängt.
  10. Verfahren nach Anspruch 9, wobei das Zeitlimit für das Vorfällen eine Vorfüll-Spanne und ein Pufferzeitlimit aufweist, wobei die Vorfüll-Spanne konfigurierbar ist.
  11. Verfahren nach Anspruch 10, wobei jede Modellpuffereinheit einen Ring von N-Puffern aufweist, wobei das Puffer-Zeitlimit berechnet wird als: current_time + (N – 1) × buf_time [aktuelle Zeit + (N – 1) × Pufferzeit]wobei current time ein Bezugszeitpunkt für das System ist und buf time die Minimalzeit ist, in welcher ein Multimediastrom-Anforderer einen der N Puffer aufbrauchen bzw. entleeren kann, ohne die Stromrate zu überschreiten
  12. Verfahren nach einem der vorstehenden Ansprüche, welches weiterhin das Konfigurieren einer Blockgröße aufweist, wobei auf Multimediadaten in dem Speichersystem entsprechend der konfigurierten Blockgröße zugegriffen wird.
  13. Verfahren nach Anspruch 12, wobei das Bestimmen der Puffereinheitsgrößen entsprechend der konfigurierten Blockgröße ausgeführt wird, wobei jede Puffereinheit einen Ring aus Puffern aufweist, auf welche in umlaufender Reihenfolge zugegriffen wird, wobei jeder Puffer so ausgestaltet ist, daß er die Größe eines Blockes von Daten speichert.
  14. Verfahren nach einem der vorstehenden Ansprüche, wobei das Bestimmen der Puffereinheitsgrößen entsprechend einer Vorfüll-Spanne (Vorfüllungsgrenze) ausgeführt wird, wobei die Vorfüll-Spanne einstellbar ist und eine Sockelbetrag bzw. einen Spielraum definiert, um ein Leerlaufen der Puffereinheit zu vermeiden.
  15. Verfahren nach einem der vorstehenden Ansprüche, wobei ein Teil der primären Durchsatzrate in ihrer Rate garantierten Speicherzugriffen zugeordnet wird und der verbleibende Bereich nicht in ihrer Rate garantierten Quellen zugeordnet wird.
  16. Verfahren nach Anspruch 15, wobei die maximale Systembreite entsprechend der primären Durchsatzrate vermindert um einen konfigurierbaren, verfügbaren Ratenparameter eingestellt wird, welcher einen Prozentsatz des Durchsatzes kennzeichnet, der den in ihrer Rate garantierten Speicherzugriffen zugewiesen ist.
  17. Verfahren nach Anspruch 16, wobei die maximale Systembreite entsprechend der primären Durchsatzrate vermindert um konfigurierbare, verfügbare Ratenparameter eingestellt wird, welche einen Prozentsatz des Durchsatzes angeben, der dem in ihrer Rate garantierten Speicherzugriff zugewiesen ist, und welche weiterhin durch sekundäre Abwertungsparameter herabgesetzt wird.
  18. Verfahren nach einem der Ansprüche 1 bis 15, wobei die maximale Systembreite entsprechend der primären Durchsatzrate vermindert um einen sekundären Abwertungsparameter eingestellt wird.
  19. Verfahren nach einem der vorstehenden Ansprüche, welches weiterhin das Spezifizieren der Länge einer Schlange für das Aufsuchen bzw. Herstellen einer Neuordnung aufweist, wobei während des Betriebes alle Speicheranforderungen von den Puffereinheiten in der Schlange für das Aufsuchen einer Neuordnung in der Reihenfolge der angeforderten physikalischen Adresse geordnet sind.
  20. Verfahren nach Anspruch 19, wobei das Bestimmen der Größen für Puffereinheiten unter Verwendung der spezifizierten Länge der Schlange für das Aufsuchen der Neuordnung ausgeführt wird.
  21. Speichersysteme mit: einer Mehrzahl von Datenstromklienten, wobei eine maximale Stromrate für jeden aus der Mehrzahl von Datenstromklienten eingestellt wird, einer Mehrzahl von Pufferringen, wobei jeder Pufferring einem anderen der Datenstromklienten zugeordnet ist und Daten zwischen seinen zugeordneten Datenstromklienten und einer oder mehrerer Speichereinheiten puffert, wobei jeder Pufferring entsprechend einem vorbestimmten Satz von Pufferringgrößen für eine Mehrzahl unterschiedlicher maximaler Stromraten bemessen ist, einem Bandbreitenzuordner, der so ausgestaltet ist, daß er einen Teil einer Speichersystembandbreite in ihrer Rate garantierten Strömen aus der Mehrzahl von Datenstromanforderern zuordnet und den verbleibenden Teil in ihrer Rate nicht garantierten Anforderungen zuordnet, wobei der Anteil durch einen konfigurierbaren, verfügbaren Ratenparameter bestimmt wird, und wobei das Speichersystem so ausgestaltet ist, daß es Datenstromanforderer bis zu einer maximalen Gesamtstromrate akzeptiert, so daß die Summe der maximalen Stromraten, die für jeden der Datenstromklienten eingestellt ist, nicht die maximale Gesamtstromrate übersteigt, um die maximale Stromrate zu garantieren, die für jeden der Datenstromklienten eingestellt ist.
  22. System nach Anspruch 21, wobei jede Pufferringgröße in dem vorbestimmten Satz von Pufferringgrößen so berechnet ist, daß sie ein Pufferentleeren bei einer der Mehrzahl unterschiedlicher maximaler Stromraten vermeidet, die unter einer Datenzugriffslast bei einer maximalen Speichersystembandbreite arbeiten, welche durch einen konfigurierbaren primären Abwertungsparameter reduziert ist.
  23. System nach Anspruch 21 oder 22, wobei die maximale Gesamtstromrate entsprechend konfigurierbaren Parametern eingestellt ist, welche aufweisen: einen konfigurierbaren primären Abwertungsfaktor zum Reduzieren einer maximalen Speichersystembandbreite und dem verfügbaren Ratenparameter, wobei die maximale Gesamtstromrate der maximalen Speichersystembandbreite, vermindert um den primären Abwertungsparameter und angepaßt bzw. aufgeteilt durch den verfügbaren Ratenparameter, entspricht.
  24. System nach einem der Ansprüche 21 bis 23, wobei die maximale Gesamtstromrate als eine maximale Speichersystembandbreite, vermindert um einen konfigurierbaren primären Abwertungsparameter und aufgeteilt entsprechend dem verfügbaren Ratenparameter, und weiterhin vermindert um einen konfigurierbaren sekundären Abwertungsparameter eingestellt wird.
  25. System nach Anspruch 24, wobei das System so ausgestaltet ist, daß es die maximale Speichersystembandbreite bestimmt durch: Erzeugen einer synthetischen Last von Datenblöcken in der einen oder mehreren Speichereinheiten, wobei das Erzeugen einer synthetischen Last das Zuordnen von Blöcken zufällig in inneren und äußeren Bereichen einer Speicherplatte aufweist, wobei das Zuordnen der Blöcke zufällig zwischen den inneren und äußeren Zonen wechselt, und Bestimmen der maximalen Speicherbandbreite unter Verwendung der synthetischen Last.
  26. System nach einem der Ansprüche 21 bis 25, wobei jede Pufferringgröße in dem vorbestimmten Satz von Pufferringgrößen so berechnet wird, daß eine Pufferentleerung durch eine konfigurierbare Vorfüll-Spanne bzw. -Grenze bei einer aus der Mehrzahl verschiedener maximaler Stromraten verhindert wird.
  27. System nach einem der Ansprüche 21 bis 26, wobei auf Daten in dem Speichersystem entsprechend einer konfigurierbaren Blockgröße zugegriffen wird.
  28. System nach einem der Ansprüche 21 bis 27, wobei jede Pufferringgröße in dem vorbestimmten Satz von Pufferringgrößen so berechnet wird, daß ein PufferEntleeren bei einer aus der Mehrzahl von unterschiedlichen maximalen Stromraten vermieden wird, wobei die Daten zwischen den Pufferringen und der einen oder den mehreren Speichereinheiten entsprechend einer konfigurierbaren Blockgröße übertragen werden.
  29. System nach einem der Ansprüche 21 bis 28, welches weiterhin eine Schlange für das Nachsuchen um eine Neuordnung für jede der einen oder mehreren Speichereinheiten auf weist, wobei die Schlange für das Aufsuchen bzw. Herstellen einer Neuordnung so ausgestaltet ist, daß sie Datenanforderungen für eine der Speichereinheiten in der Reihenfolge der physikalischen Adresse der Anforderung in der Speichereinheit in einer Schlange anordnet, wobei die Länge der Schlange zum Aufsuchen der Neuordnung durch einen konfigurierbaren Längenparameter der Schlange für das Aufsuchen um eine Neuordnung bestimmt wird.
DE60005205T 1999-10-06 2000-10-02 Vorrichtung und verfahren zur zusammensetzung eines mediaspeichersystems Expired - Lifetime DE60005205T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/413,039 US6385673B1 (en) 1999-10-06 1999-10-06 System and method for adjusting performance of a media storage by decreasing a maximum throughput by a primary derate parameter to specify available & guaranteed rate parameters and determining ring buffer sizes for streams
US413039 1999-10-06
PCT/US2000/027180 WO2001026362A1 (en) 1999-10-06 2000-10-02 System and method for configuring a media storage system

Publications (2)

Publication Number Publication Date
DE60005205D1 DE60005205D1 (de) 2003-10-16
DE60005205T2 true DE60005205T2 (de) 2004-07-01

Family

ID=23635557

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60005205T Expired - Lifetime DE60005205T2 (de) 1999-10-06 2000-10-02 Vorrichtung und verfahren zur zusammensetzung eines mediaspeichersystems

Country Status (6)

Country Link
US (1) US6385673B1 (de)
EP (1) EP1222813B1 (de)
AT (1) ATE249707T1 (de)
AU (1) AU7990800A (de)
DE (1) DE60005205T2 (de)
WO (1) WO2001026362A1 (de)

Families Citing this family (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6418478B1 (en) * 1997-10-30 2002-07-09 Commvault Systems, Inc. Pipelined high speed data transfer mechanism
US7581077B2 (en) 1997-10-30 2009-08-25 Commvault Systems, Inc. Method and system for transferring data in a storage operation
US7200168B1 (en) 1997-11-13 2007-04-03 Surf Communication Solutions Ltd. Stable operation of media gateway
US6742019B1 (en) * 1999-07-23 2004-05-25 International Business Machines Corporation Sieved caching for increasing data rate capacity of a heterogeneous striping group
US6721789B1 (en) * 1999-10-06 2004-04-13 Sun Microsystems, Inc. Scheduling storage accesses for rate-guaranteed and non-rate-guaranteed requests
US6978311B1 (en) * 2000-02-09 2005-12-20 Surf Communications Solutions, Ltd. Scheduling in a remote-access server
US6625708B1 (en) * 1999-11-23 2003-09-23 Intel Corporation Method and apparatus for dynamically defining line buffer configurations
US20030014484A1 (en) * 2000-11-09 2003-01-16 Arnon Netzer Scheduling in a remote-access server
US6654831B1 (en) * 2000-03-07 2003-11-25 International Business Machine Corporation Using multiple controllers together to create data spans
US6795870B1 (en) * 2000-04-13 2004-09-21 International Business Machines Corporation Method and system for network processor scheduler
EP1146678B1 (de) * 2000-04-14 2006-12-20 Alcatel Selbstanpassender Zitterspufferspeicher
US6763439B1 (en) * 2000-05-01 2004-07-13 Microsoft Corporation Disk throttling and priority queuing for streaming I/O
US6904596B1 (en) * 2000-05-24 2005-06-07 Lucent Technologies Inc. Method and apparatus for shared flow control of data
US6766376B2 (en) 2000-09-12 2004-07-20 Sn Acquisition, L.L.C Streaming media buffering system
US20020108016A1 (en) * 2000-12-13 2002-08-08 Seagate Technology Llc System for characterizing performance of data handling systems under particular stimuli
US20020087519A1 (en) * 2000-12-15 2002-07-04 International Business Machines Corporation Data distribution method and system
GB0031157D0 (en) * 2000-12-20 2001-01-31 Ncr Int Inc Streaming of data
US6601009B2 (en) * 2001-07-12 2003-07-29 Yahoo Inc Method and system of automatic bandwidth detection
US7904931B2 (en) * 2001-09-12 2011-03-08 Cox Communications, Inc. Efficient software bitstream rate generator for video server
JP3939198B2 (ja) * 2002-05-20 2007-07-04 三洋電機株式会社 データ出力装置
US6898664B2 (en) * 2002-08-28 2005-05-24 Hewlett-Packard Development Company, L.P. Optimizing performance for a storage device within a computer system
KR20040020639A (ko) * 2002-08-31 2004-03-09 삼성전자주식회사 실시간 멀티미디어 데이터 생성율의 동적 제어방법 및 그장치
AU2003270482A1 (en) 2002-09-09 2004-03-29 Commvault Systems, Inc. Dynamic storage device pooling in a computer system
CA2499073C (en) 2002-09-16 2013-07-23 Commvault Systems, Inc. Combined stream auxiliary copy system and method
US7421502B2 (en) * 2002-12-06 2008-09-02 International Business Machines Corporation Method and system for storage-aware flow resource management
WO2004053676A2 (en) * 2002-12-11 2004-06-24 Koninklijke Philips Electronics N.V. Methods and apparatus for improving teh breathing of disk scheduling alogorithms
US20040122983A1 (en) * 2002-12-18 2004-06-24 Speed Robin C.B. Deadline scheduling with buffering
US7983239B1 (en) 2003-01-07 2011-07-19 Raytheon Bbn Technologies Corp. Systems and methods for constructing a virtual model of a multi-hop, multi-access network
US7174433B2 (en) * 2003-04-03 2007-02-06 Commvault Systems, Inc. System and method for dynamically sharing media in a computer network
US20040225743A1 (en) * 2003-05-05 2004-11-11 Huggins Guy Dwayne Streaming media creation tool
US20040249965A1 (en) * 2003-05-05 2004-12-09 Huggins Guy Dwayne Node caching system for streaming media applications
US7881229B2 (en) * 2003-08-08 2011-02-01 Raytheon Bbn Technologies Corp. Systems and methods for forming an adjacency graph for exchanging network routing data
US7606927B2 (en) 2003-08-27 2009-10-20 Bbn Technologies Corp Systems and methods for forwarding data units in a communications network
US8166204B2 (en) * 2003-08-29 2012-04-24 Raytheon Bbn Technologies Corp. Systems and methods for automatically placing nodes in an ad hoc network
US7668083B1 (en) 2003-10-28 2010-02-23 Bbn Technologies Corp. Systems and methods for forwarding data in a communications network
US7315923B2 (en) 2003-11-13 2008-01-01 Commvault Systems, Inc. System and method for combining data streams in pipelined storage operations in a storage network
US8423643B2 (en) * 2003-11-19 2013-04-16 International Business Machines Corporation Autonomic assignment of communication buffers by aggregating system profiles
US7039785B2 (en) 2004-02-24 2006-05-02 Hitachi, Ltd. Method and apparatus for increasing an amount of memory on demand when monitoring remote mirroring performance
US7424003B2 (en) * 2004-03-08 2008-09-09 Surf Communication Solutions Multi-parameter scheduling in communication systems
US8412763B2 (en) 2006-06-21 2013-04-02 Apple Inc. Podcast organization and usage at a computing device
US8516035B2 (en) * 2006-06-21 2013-08-20 Apple Inc. Browsing and searching of podcasts
US7783798B1 (en) * 2004-06-25 2010-08-24 Emc Corporation System and method for managing use of available bandwidth for a link used for movement of data being copied in a data storage environment
WO2006053084A2 (en) * 2004-11-05 2006-05-18 Commvault Systems, Inc. Method and system of pooling storage devices
US7536291B1 (en) * 2004-11-08 2009-05-19 Commvault Systems, Inc. System and method to support simulated storage operations
JP4175547B2 (ja) * 2005-03-30 2008-11-05 富士通株式会社 プログラム、帳票出力方法及び装置
JP4597038B2 (ja) * 2005-11-07 2010-12-15 株式会社日立製作所 計算機システム、帯域制御方法及びプログラム
US8285784B2 (en) * 2005-11-08 2012-10-09 Alcatel Lucent Service creation via presence messaging
US7634617B2 (en) * 2006-01-03 2009-12-15 Emc Corporation Methods, systems, and computer program products for optimized copying of logical units (LUNs) in a redundant array of inexpensive disks (RAID) environment using buffers that are larger than LUN delta map chunks
US7634618B2 (en) 2006-01-03 2009-12-15 Emc Corporation Methods, systems, and computer program products for optimized copying of logical units (LUNs) in a redundant array of inexpensive disks (RAID) environment using buffers that are smaller than LUN delta map chunks
US7966362B2 (en) * 2006-06-21 2011-06-21 Apple Inc. Management of podcasts
US8773494B2 (en) 2006-08-29 2014-07-08 Microsoft Corporation Techniques for managing visual compositions for a multimedia conference call
US20080101410A1 (en) * 2006-10-25 2008-05-01 Microsoft Corporation Techniques for managing output bandwidth for a conferencing server
WO2008065665A2 (en) * 2006-11-30 2008-06-05 Speedbit Ltd. Accelerated multimedia file download and playback
US8312323B2 (en) 2006-12-22 2012-11-13 Commvault Systems, Inc. Systems and methods for remote monitoring in a computer network and reporting a failed migration operation without accessing the data being moved
CA2673778C (en) * 2006-12-28 2015-07-28 Research In Motion Limited Methods and apparatus for increasing data throughput by grouping data packets into maximum transmissible units
US8069260B2 (en) * 2007-01-12 2011-11-29 Microsoft Corporation Dynamic buffer settings for media playback
US8566695B2 (en) * 2007-03-30 2013-10-22 Sandisk Technologies Inc. Controlling access to digital content
US8151005B2 (en) * 2007-08-04 2012-04-03 Broadcom Corporation System and method for adjusting a level of compression for computing clients
US7929553B2 (en) * 2007-08-10 2011-04-19 Broadcom Corporation System and method for adjusting compression for computing clients based on a latency level
CN101729272B (zh) * 2008-10-27 2013-01-23 华为技术有限公司 内容分发方法、系统、设备及媒体服务器
US8139504B2 (en) * 2009-04-07 2012-03-20 Raytheon Bbn Technologies Corp. System, device, and method for unifying differently-routed networks using virtual topology representations
EP2556439A4 (de) * 2010-04-08 2015-03-04 Vasona Networks Verwalten einer streaming-bandbreite für mehrere clients
US9137278B2 (en) 2010-04-08 2015-09-15 Vasona Networks Inc. Managing streaming bandwidth for multiple clients
US20110296047A1 (en) * 2010-06-01 2011-12-01 Sony Corporation Method and apparatus for seamless playback of media
US8477618B2 (en) 2010-07-16 2013-07-02 Research In Motion Limited Methods and apparatus for use in communicating data packets within a data packet window having a size that is set based on quality of service (QoS) parameters
US9374404B2 (en) 2010-08-26 2016-06-21 Vasona Networks Inc. Streaming media flows management
US9143838B2 (en) 2010-09-06 2015-09-22 Vasona Networks Inc. Device and method for quality assessment of encrypted streaming media flows
US8589583B2 (en) * 2010-09-08 2013-11-19 Hulu, Inc. Method and apparatus for adaptive bit rate switching
US9872185B1 (en) 2010-09-16 2018-01-16 Vasona Networks Ltd. Policy enforcer in a network that has a network address translator
US8976655B2 (en) 2010-09-16 2015-03-10 Vasona Networks Inc. Evaluating a capacity of a cell of a radio access network
US8902753B2 (en) 2010-09-16 2014-12-02 Vasona Networks Inc. Method, system and computer readable medium for affecting bit rate
US9832671B2 (en) 2010-09-16 2017-11-28 Vassona Networks Modeling radio access networks
US8817614B1 (en) 2010-09-16 2014-08-26 Vasona Networks Inc. Policy enforcer having load balancing capabilities
KR101419021B1 (ko) * 2010-11-12 2014-07-11 한국전자통신연구원 방송 프로그램 전송 요청 방법 및 이에 대한 방송 프로그램 전송 방법
US8812662B2 (en) 2011-06-29 2014-08-19 Sonic Ip, Inc. Systems and methods for estimating available bandwidth and performing initial stream selection when streaming content
US8832297B2 (en) 2011-06-29 2014-09-09 Sonic Ip, Inc. Systems and methods for performing multiphase adaptive bitrate streaming
US8665858B2 (en) 2011-09-15 2014-03-04 Vasona Networks Inc. Method and computer readable medium for gathering user equipment location information
US9442847B2 (en) 2012-01-31 2016-09-13 International Business Machines Corporation Increased destaging efficiency by smoothing destaging between current and desired number of destage tasks
US9727272B2 (en) * 2012-01-31 2017-08-08 International Business Machines Corporation Increased destaging efficiency for smoothing of destage tasks based on speed of disk drives
US9936267B2 (en) 2012-08-31 2018-04-03 Divx Cf Holdings Llc System and method for decreasing an initial buffering period of an adaptive streaming system
US10379988B2 (en) 2012-12-21 2019-08-13 Commvault Systems, Inc. Systems and methods for performance monitoring
US9110695B1 (en) * 2012-12-28 2015-08-18 Emc Corporation Request queues for interactive clients in a shared file system of a parallel computing system
US9621616B2 (en) * 2013-09-16 2017-04-11 Sony Corporation Method of smooth transition between advertisement stream and main stream
US9450879B2 (en) 2014-05-09 2016-09-20 Nexgen Storage, Inc. Adaptive bandwidth throttling
US9898213B2 (en) 2015-01-23 2018-02-20 Commvault Systems, Inc. Scalable auxiliary copy processing using media agent resources
US9904481B2 (en) 2015-01-23 2018-02-27 Commvault Systems, Inc. Scalable auxiliary copy processing in a storage management system using media agent resources
US10956299B2 (en) 2015-02-27 2021-03-23 Commvault Systems, Inc. Diagnosing errors in data storage and archiving in a cloud or networking environment
US11455097B2 (en) * 2016-01-28 2022-09-27 Weka.IO Ltd. Resource monitoring in a distributed storage system
US11886922B2 (en) 2016-09-07 2024-01-30 Pure Storage, Inc. Scheduling input/output operations for a storage system
US11032350B2 (en) 2017-03-15 2021-06-08 Commvault Systems, Inc. Remote commands framework to control clients
US11010261B2 (en) 2017-03-31 2021-05-18 Commvault Systems, Inc. Dynamically allocating streams during restoration of data
US11144420B2 (en) * 2019-08-30 2021-10-12 Hewlett Packard Enterprise Development Lp Dynamic resource allocation in a wireless access point to support event capture
US11593223B1 (en) 2021-09-02 2023-02-28 Commvault Systems, Inc. Using resource pool administrative entities in a data storage management system to provide shared infrastructure to tenants

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5644786A (en) 1990-11-08 1997-07-01 At&T Global Information Solutions Company Method for scheduling the execution of disk I/O operations
US5303347A (en) * 1991-12-27 1994-04-12 Digital Equipment Corporation Attribute based multiple data structures in host for network received traffic
EP0625858B1 (de) 1993-05-19 1998-06-24 Alcatel Verfahren zur Speicherverwaltung eines Videoservers
KR960015601B1 (ko) * 1994-02-08 1996-11-18 조백제 버퍼를 갖는 링 통신망 노드 장치 및 그 제어 방법
US5802394A (en) 1994-06-06 1998-09-01 Starlight Networks, Inc. Method for accessing one or more streams in a video storage system using multiple queues and maintaining continuity thereof
CA2153445C (en) 1994-09-08 2002-05-21 Ashok Raj Saxena Video optimized media streamer user interface
US5530557A (en) 1994-09-12 1996-06-25 International Business Machines Corporation Online placement of video files determined by a function of the bandwidth to space ratio of each of the storage devices in a server environment
US5708796A (en) 1994-11-18 1998-01-13 Lucent Technologies Inc. Method of retrieving continuous and non-continuous media data from a file system
EP0716370A3 (de) 1994-12-06 2005-02-16 International Business Machines Corporation Ein Plattenzugangsverfahren, um Multimedia- und Videoinformation auf Wunsch über Grossraumnetze zu liefern
US5721956A (en) 1995-05-15 1998-02-24 Lucent Technologies Inc. Method and apparatus for selective buffering of pages to provide continuous media data to multiple users
US5758076A (en) * 1995-07-19 1998-05-26 International Business Machines Corporation Multimedia server system having rate adjustable data retrieval based on buffer capacity
US5787482A (en) 1995-07-31 1998-07-28 Hewlett-Packard Company Deadline driven disk scheduler method and apparatus with thresholded most urgent request queue scan window
US5721823A (en) 1995-09-29 1998-02-24 Hewlett-Packard Co. Digital layout method suitable for near video on demand system
US5933603A (en) 1995-10-27 1999-08-03 Emc Corporation Video file server maintaining sliding windows of a video data set in random access memories of stream server computers for immediate video-on-demand service beginning at any specified location
TW332284B (en) 1995-10-30 1998-05-21 Sony Co Ltd Method and apparatus for controlling access to a recording disk
US6317775B1 (en) * 1995-11-03 2001-11-13 Cisco Technology, Inc. System for distributing load over multiple servers at an internet site
US5928327A (en) 1996-08-08 1999-07-27 Wang; Pong-Sheng System and process for delivering digital data on demand
US5881245A (en) * 1996-09-10 1999-03-09 Digital Video Systems, Inc. Method and apparatus for transmitting MPEG data at an adaptive data rate
US5926649A (en) 1996-10-23 1999-07-20 Industrial Technology Research Institute Media server for storage and retrieval of voluminous multimedia data
JP2000505983A (ja) * 1996-12-23 2000-05-16 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データ流を供給するための方法および系
US6292834B1 (en) * 1997-03-14 2001-09-18 Microsoft Corporation Dynamic bandwidth selection for efficient transmission of multimedia streams in a computer network
AU9377298A (en) 1997-09-24 1999-04-12 Sony Pictures Entertainment Inc. Optimizing scheduler for read/write operations in a disk file system
US6240094B1 (en) * 1997-12-22 2001-05-29 Bell Atlantic Network Services, Inc. Statistical time division multiplexer for a wireless asymmetric local loop communication system
US6192029B1 (en) * 1998-01-29 2001-02-20 Motorola, Inc. Method and apparatus for performing flow control in a wireless communications system
US6243761B1 (en) * 1998-03-26 2001-06-05 Digital Equipment Corporation Method for dynamically adjusting multimedia content of a web page by a server in accordance to network path characteristics between client and server
US6067107A (en) * 1998-04-30 2000-05-23 Wink Communications, Inc. Response capacity management in interactive broadcast systems by periodic reconfiguration of response priorities
US6304297B1 (en) * 1998-07-21 2001-10-16 Ati Technologies, Inc. Method and apparatus for manipulating display of update rate

Also Published As

Publication number Publication date
US6385673B1 (en) 2002-05-07
EP1222813A1 (de) 2002-07-17
EP1222813B1 (de) 2003-09-10
AU7990800A (en) 2001-05-10
DE60005205D1 (de) 2003-10-16
ATE249707T1 (de) 2003-09-15
WO2001026362A1 (en) 2001-04-12

Similar Documents

Publication Publication Date Title
DE60005205T2 (de) Vorrichtung und verfahren zur zusammensetzung eines mediaspeichersystems
DE60016784T2 (de) Planung von speicherzugriffen für raten-garantierte und nicht-raten-garantierte anforderungen
DE60123396T2 (de) Diskzuordnungssystem mit umordnung einer begrenzten anzahl von anforderungen
EP1222812B1 (de) Planung von speicherzugriffen für eine mehrzahl von kontinuierlichen mediaströmen
DE60316141T2 (de) Echtzeit-speicherbereichsnetzwerk
DE69627134T2 (de) Verfahren und anordnung zur steuerung des zugriffs auf eine aufzeichnungsplatte
DE69733622T2 (de) System und Verfahren zum zeitnahen Liefern von digitalen Informationen unter Verwendung einer Fragmentierung und Sequenzierung, um die mittlere Bandbreite unddie Spitzenbandbreite zu verringern
DE60209123T2 (de) Verfahren zur annahmesteuerung von verbindungen und schnelle bestimmung der lieferung von multimedia-inhalten in netzen
DE69534861T2 (de) Netzwerkvideoanbietersystem
Vin et al. A statistical admission control algorithm for multimedia servers
DE69930127T2 (de) Kostengünstiger, skalierbarer medienserver mit offener architektur
US5935206A (en) Automatic replication of digital video as needed for video-on-demand
DE10062063B4 (de) Verfahren, System, Computerprogramm-Produkt und Speichervorrichtung zur Steuerung einer Warteschlange von Anforderungen unterschiedlicher Priorität
Ghandeharizadeh et al. Design and implementation of scalable continuous media servers
DE69632513T2 (de) Multimediadienstesystem
DE112010004931T5 (de) Mehrphasige Wiederherstellung von Dateisystemen mit SelektiverBedarfsweiser Verfügbarkeit von Daten(
DE60117810T2 (de) Video-asset-einplanung für mehrfachinhaltslieferanten
Ghose et al. Scheduling video streams in video-on-demand systems: A survey
DE112015002650T5 (de) Systeme und Verfahren zur prädiktiven Auslieferung von Inhalten mit hohen Bitraten zur Wiedergabe
DE69917721T2 (de) Aufzeichnung/wiedergabe und /oder editierung von echtzeitinformationen auf einen/von einem plattenförmigen aufzeichnungsträger
EP1737237A1 (de) Verfahren und Anordnung zum Wiedergeben von Medieninhalten
DE102012201530A1 (de) Cachevorrichtung zum zwischenspeichern
DE69918201T2 (de) Videodatenspeicherung und -übertragung sowie Verfahren dafür
Rangan Architectures and algorithms for digital multimedia on-demand servers
DE102020210993A1 (de) Fahrzeug-multimediasystem und speicherverwaltungsverfahren für dieses

Legal Events

Date Code Title Description
8364 No opposition during term of opposition