-
TECHNISCHES GEBIET
-
Die vorliegende Erfindung betrifft allgemein Computer und insbesondere ein Verfahren, ein System und ein Computerprogrammprodukt für intelligente Schreibcacheoperationen für sequenzielle Datenspuren in einer Datenspeicherumgebung.
-
HINTERGRUND DER ERFINDUNG
-
In gewerblichen Datenverarbeitungsanlagen wie sie beispielsweise in einem Unternehmen, einer Regierungsbehörde oder einer anderen Einrichtung eingesetzt werden können, werden Daten oft auf Servern gespeichert und durch Benutzer zum Beispiel über ein Netzwerk abgerufen. Die Daten können jede beliebige Art von Informationen von Programmen und/oder Daten aufweisen, die verarbeitet werden sollen. Benutzer, die eigene Personal Computer, Arbeitsstationen oder Ähnliches (allgemein „Computer”) verwenden, können mittels ihrer Computer auf zu verarbeitende Daten zugreifen und Daten außerdem zum Beispiel auf fernen Servern speichern.
-
Server speichern Daten im Allgemeinen in Massenspeicher-Untersystemen, die üblicherweise eine Anzahl Plattenspeichereinheiten beinhalten. Die Daten werden in Einheiten gespeichert, beispielsweise in Dateien. In einem Server kann eine Datei auf einer Plattenspeichereinheit gespeichert werden, oder alternativ können Teile einer Datei auf mehreren Plattenspeichereinheiten gespeichert werden. Ein Server kann gleichzeitig Zugriffsanforderungen von einer Anzahl von Benutzern abwickeln, und es ist einsichtig, dass gleichzeitig abgewickelte Zugriffsoperationen in Zusammenhang mit Daten stehen, die so auf mehrere Plattenspeichereinheiten verteilt sind, dass sie gleichzeitig abgewickelt werden können. Mit anderen Worten, es ist allgemein wünschenswert, Daten in Plattenspeichereinheiten so zu speichern, dass nicht eine Plattenspeichereinheit stark ausgelastet ist oder mit der Abwicklung von Zugriffsoperationen beschäftigt wird, während andere nur gering ausgelastet sind oder inaktiv bleiben. Zur Gewährleistung von Redundanz und zur Leistungssteigerung können viele Speichereinheiten in einer Topologie einer redundanten Anordnung unabhängiger Platten (RAID) konfiguriert werden, in der Speicherdatenträger in RAID-Ebenen geordnet sind.
-
Ein gewerbliches Computernetz kann mehrere Speichernetze aufweisen, die weit voneinander und fern von einem gewerblichen Benutzer angeordnet sind. Die Speichernetze können auch auf unterschiedlichen Typen von Systemen betrieben werden. Um seine Arbeit ordnungsgemäß auszuführen, kann der gewerbliche Benutzer auf einem schnellen und zuverlässigen Zugriff auf die in allen dieser Speichernetze enthaltenen Daten bestehen. Da der Zugriff auf diese Daten in Echtzeit erfolgt, ist es wünschenswert, dass Speicheroperationen (wie beispielsweise Schreib- oder Leseoperationen) so schnell wie möglich erfolgen.
-
KURZDARSTELLUNG
-
Um Daten zu verschieben, lagern Massenspeicher-Untersysteme Daten zum Beispiel von Permanentspeichereinheiten (NVS) zu RAID-Einheiten aus. Durch die laufende Verwaltung eines Schreibcaches, wie sie in Massenspeicher-Untersystemen in Verbindung mit RAID- und NVS-Einheiten üblich ist, können wie im Folgenden beschrieben lang andauernde Auslagerungstransaktionen verursacht werden, wenn sequenzielle Datenspuren (Teile von sequenziell angeordneten Daten) betroffen sind. Es besteht ein Bedarf an einem Mechanismus zur effizienteren Verwaltung von Schreibcacheoperationen unter Beteiligung sequenzieller Datenspuren.
-
Angesichts des oben Gesagten werden verschiedene Ausführungsformen eines Verfahrens, eines Systems und eines Computerprogrammprodukts zum Durchführen von Cacheschreiboperationen für sequenzielle Datenspuren durch eine Prozessoreinheit in einer Computerspeicherumgebung zum Auslagern von Daten von einem Permanentspeicher (NVS) zu einer Speichereinheit bereitgestellt. Gemäß einer beispielhaften Ausführungsform wird, wenn erkannt wurde, dass eine erste Datenspur sequenziell und auch eine frühere Datenspur sequenziell ist, ein der früheren Datenspur zugehöriges temporäres Bit gelöscht, um das Auslagern von Daten der früheren Datenspur zu ermöglichen. Wenn festgestellt wurde, dass ein temporäres Bit für eine aus einer Vielzahl weiterer Datenspuren in einem aus einer Vielzahl von Abschnitten in einem geänderten Cachespeicher nicht gesetzt ist, wird für eine Auslagerungsoperation ein Abschnitt ausgewählt, der einer aus der Vielzahl zusätzlicher Datenspuren zugehörig ist. Wenn der NVS einen vorgegebenen Speicherschwellenwert überschreitet, wird aus der Vielzahl von Abschnitten ein vorgegebener Abschnitt für die Auslagerungsoperation ausgewählt.
-
Ferner werden auch Ausführungsformen eines zugehörigen Systems und Computerprogrammprodukts offenbart und zusätzliche Vorteile dargelegt.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Im Folgenden werden lediglich anhand eines Beispiels Ausführungsform(en) unter Bezugnahme auf die entsprechenden Zeichnungen beschrieben, wobei:
-
1 ein Blockschaubild eines verteilten Computersystems ist, das Speicher-Server und Speicherverwaltungs-Server beinhaltet, in dem Aspekte der folgenden Beschreibung und des beanspruchten Gegenstands umgesetzt werden können;
-
2 ein Blockschaubild eines der Speicher-Server von 1 ist;
-
3 ein Ablaufplan eines beispielhaften Verfahrens für Schreibcacheoperationen für sequenzielle Datenspuren gemäß verschiedenen Aspekten der vorliegenden Erfindung nach einer Hostschreiboperation ist; und
-
4 ein Ablaufplan eines beispielhaften Verfahrens für Schreibcacheoperationen für sequenzielle Datenspuren gemäß verschiedenen Aspekten der vorliegenden Erfindung nach einer Auslagerungssuchlaufoperation ist.
-
DETAILLIERTE BESCHREIBUNG
-
Die im Folgenden veranschaulichten Ausführungsformen beschreiben effiziente und bestens skalierbare Mechanismen für intelligente Schreibcacheoperationen für sequenzielle Datenspuren (zum Auslagern vom NVS zu einer oder mehreren Speichereinheiten), um die Auswirkungen auf die gesamte Speicherleistung zu mindern. Diese Mechanismen sorgen für ein aggressiveres Auslagern sequenzieller Datenspuren in den Schreibcache, lagern den letzten Abschnitt in den sequenziellen Datenströmen nicht aus, der gerade geschrieben wird, und erhalten aktive Gruppen von Datenspuren (Datenspuren, die häufig aktualisiert werden) in dem Schreibcache für längere Zeiträume aufrecht. Dadurch wird erreicht, dass die veranschaulichten Ausführungsformen einen höheren Durchsatz des Schreibcaches ermöglichen, da sequenzielle Datenspuren aggressiver ausgelagert, Auslagerungen von pseudosequenziellen vielbeschäftigten Gruppen von Datenspuren verlangsamt und Auslagerungskonflikte auf ein Mindestmaß beschränkt werden, da keine Datenspuren ausgelagert werden, die gerade geschrieben werden.
-
Im Folgenden zeigt 1 ein Beispiel eines Teils einer gespiegelten Architektur eines Datenspeichersystems, in dem die Mechanismen anschaulicher Ausführungsformen realisiert werden können. Es sollte jedoch anerkannt werden, dass 1 lediglich ein Beispiel darstellt und keine Beschränkung auf die einzelnen Architekturen bedeuten oder nahelegen soll, in denen die beispielhaften Aspekte der anschaulichen Ausführungsformen realisiert werden können. Es können viele Änderungen an der in 1 dargestellten Architektur vorgenommen werden, ohne vom Schutzumfang und vom Wesensgehalt der folgenden Beschreibung und des beanspruchten Gegenstands abzuweichen.
-
1 veranschaulicht ein beispielhaftes verteiltes Computersystem mit der allgemeinen Bezugsnummer 10, das die vorliegende Erfindung beinhaltet. Das System 10 weist mehrere ähnliche Speicher-Server/Steuereinheiten 14a, b, c mit mehreren CPUs 40a, b, c pro Cluster (CPU-Organisation in jedem Cluster siehe die folgende 2), Cachespeicher 44a, b, c, Permanentspeicher („NVS”) 46a, b, c, Betriebssysteme 48a, b, c, E/A-Einheiten 50a, b, c und TCP/IP-Adapterkarten 52a, b, c auf. Jeder der Speicher-Server 14a, b, c verwaltet die Speicherzuordnung und den Zugriff auf mehrere Speichereinheiten (beispielsweise Platten) 30a1–an, 30b1–bn, bzw. 30c1–cn durch Clients 40, 41 und 42.
-
Die CPUs 40, 41 und 42 weisen Adapterkarten 50, 51 und 52 auf, beispielsweise Faserkanal-Adapterkarten zum Verbinden über einen Datenübertragungspfad 53a, b, c wie beispielsweise einen Faserkanal mit einem Switch 55. Der Switch 55 kann über Hostbusse 54a, b, c, mit den Speicher-Servern 14a, b, c verbunden werden und entsprechend der Konfiguration auf dem Client eine Anforderung von einem der Clients 40, 41 oder 42 an einen der Speicher-Server 14a, b, c weiterleiten. Ein Administrator hat jedem der Clients 40, 41 und 42 eine Anzahl „Speicherdatenträger” zugeordnet. Jeder „Datenträger” befindet sich auf einer Speicheranordnung. Eine „Speicheranordnung” kann eine oder mehrere Speichereinheiten aufweisen und in einer Vielfalt von RAID-Ebenen konfiguriert werden, beispielsweise als RAID 5, RAID 10 oder als „Just a Bunch of Disks” (üblicherweise als JBOD bezeichnet).
-
Gemäß einer in 2 veranschaulichten beispielhaften Ausführungsform beinhaltet die Speichersteuereinheit 14a (und gleichermaßen die Speichersteuereinheiten 14b und c) zwei identische Cluster 61a und 71a aus CPUs 68a und 78a, Cachespeichern 66a und 76a, NVS 69a und 79a und eine beliebige Anzahl von Paaren von Einheitenadaptern (62a–(N)a und 72a–(N)a pro Cluster). Für jeden Cluster 61a und 71a gibt es einen gemeinsam genutzten (Halbleiter-)Cachespeicher 66a bzw. 76a. Die Cachespeicher 66a und 76a enthalten jeweils ein Verzeichnis von auf jedem einzelnen Cachespeicher gespeicherten Datenspuren. Das Verzeichnis enthält eine beliebige Anzahl von Verzeichniseinträgen, die jeder der Datenspuren zugehörig sind.
-
Jeder Cluster enthält auch batteriegepufferte Speicher 69a und 79a (auch als „NVS” bezeichnet). In 2 stellt „D” eine Datenspeicherplatte, „P” eine Paritätsspeicherplatte zum Speichern von Paritätsbits für die Daten in den Datenspeicherplatten und „S” eine Reservespeicherplatte für den Ausfall einer Datenspeicherplatte oder Paritätsspeicherplatte dar. Jeder Cluster verwaltet eine Zuordnungstabelle für die Speicherzuordnung zu jedem Client, die jeden Speicherdatenträger entsprechenden physischen Speicherplätzen auf den Speicheranordnungen zuordnet.
-
Die NVS 69a und 79a sind über Datenübertragungsleitungen 60a und 70a mit Speicherplatten 65a bzw. 75a verbunden. Gemäß bestimmten Ausführungsformen wird für die Datenübertragungsleitungen 60a und 70a eine serielle Verbindung wie beispielsweise RS-232 oder RS-422, eine Ethernetverbindung, eine SCSI-Verbindung, eine Faserkanalverbindung, eine ESCON-Verbindung, eine FICON-Verbindung, ein lokales Netz (LAN), ein privates Weitverkehrsnetz (WAN), ein öffentliches Weitverkehrsnetz, ein Speicherbereichsnetz (SAN), ein Protokoll für die Übertragungskontrolle/Internetprotokoll (TCP/IP), das Internet oder Kombinationen derselben ausgewählt.
-
Gemäß bestimmten Ausführungsformen weisen die Speicherplatten 65a und 75a ein oder mehrere optische Speichermedien, ein oder mehrere magnetische Speichermedien, ein oder mehrere elektronische Speichermedien oder Kombinationen derselben auf. Gemäß bestimmten Ausführungsformen befinden sich die Speicherplatten 65a und 75a außerhalb der Cluster 61a und 71a. Gemäß bestimmten Ausführungsformen befinden sich die Speicherplatten 65a und 75a innerhalb der Cluster 61a und 71a.
-
Wenn der Client den Zugriff auf einen Speicher anfordert, d. h. Daten von einem der dem Client zugeordneten Datenträger lesen oder in diesen schreiben will, verarbeitet der Speichercluster, der diesen Datenträger verwaltet, die Anforderung, d. h. er speichert vorübergehend Aktualisierungen des Clients in dem Cachespeicher und dem NVS (wenn es sich um eine Schreiboperation handelt) auf dem paarweisen Cluster. Für Aktualisierungsanforderungen wird nach der NVS-Speicherung eine E/A-Fertigstellungsnachricht an den Client gesendet. Nach dem Erreichen eines internen Schwellenwertes für ausstehende Schreiboperationen ordnet der Cluster die Clientanforderung physischen Speicherplätzen zu und leitet dann die zugeordnete Anforderung von dem Cachespeicher an die entsprechende Speicheranordnung weiter. Für Leseanforderungen werden die Daten entweder vom Cachespeicher abgerufen oder es ist (wegen eines „Cachefehlers”) ein Speicherplattenzugriff erforderlich. Bei Cachefehlern für Leseanforderungen muss der Cluster die Clientanforderung physischen Speicherplätzen auf der Speicheranordnung zuordnen und die Daten von dem physischen Speicherplatz auf den Speicheranordnungen an den Cachespeicher übertragen, wo er die E/A-Anforderung des Clients bedient.
-
Ferner zeigt 2, dass der Server 14a für jeden Cluster ein Betriebssystem 67a bzw. 77a beinhaltet. Dem Fachmann ist einsichtig, dass die Betriebssysteme 67a und 77a physisch oder virtuell an einer Vielfalt von Orten angeordnet sein können. Zur Veranschaulichung sind die Betriebssysteme 67a und 77a in jeden Cluster einbezogen dargestellt. Gemäß einer Ausführungsform können die CPUs 68a und 78a Teile der Betriebssysteme 67a und 77a ausführen. Jedes Betriebssystem 67a und 77a beinhaltet die gezeigten Auslagerungsmodule 95a, 97a. Gemäß einer Ausführungsform können die Auslagerungsmodule 95a und 97a verschiedene Aspekte der vorliegenden Erfindung in Verbindung mit den Betriebssystemen 67a und 77a, den dargestellten CPUs, dem Cachespeicher, dem NVS usw. umsetzen, beispielsweise wie unten beschrieben Auslagerungssuchläufe und Auslagerungsoperationen ausführen. Obwohl die Auslagerungsmodule 95a und 97a in die Betriebssysteme 67a und 77a einbezogen dargestellt sind, ist dem Fachmann einsichtig, dass die Auslagerungsmodule 95a und 97a physisch oder logisch anderenorts angeordnet werden und gleichzeitig in Verbindung mit den dargestellten CPUs, Cachespeichern, NVS, usw. bleiben können. Im Folgenden wird die Funktionalität der Auslagerungsmodule 95a und 97a ausführlicher beschrieben.
-
Die folgenden Begriffe können für das Verständnis der folgenden Erörterung verschiedener Funktionalitäten der veranschaulichten Ausführungsformen hilfreich sein. Zunächst kann ein „Abschnitt” eine Gruppe von Datenspuren bezeichnen, für die eine RAID-Anordnung eine Parität berechnet. Wenn ein kompletter Abschnitt ausgelagert wird, kann die RAID-Anordnung aus dem kompletten Abschnitt eine neue Parität berechnen. Wenn nur ein Teil eines Abschnitts ausgelagert wird, benötigt die RAID-Anordnung alte Daten und eine alte Parität, um die neue Parität zu berechnen. Demgemäß erfordert die Auslagerung kompletter Abschnitte weniger Operationen als die Auslagerung von Teilen eines Abschnitts. Die für die Auslagerung von Teilen eines Abschnitts zusätzlich erforderlichen Operationen werden als „Auslagerungssanktion” bezeichnet. Und schließlich kann ein Hostrechner versuchen, auf eine Datenspur zu schreiben, die gerade ausgelagert wird. Die Schreiboperation des Hostrechners muss warten, bis die Auslagerung abgeschlossen ist. Dies wird als „Auslagerungskonflikt” bezeichnet.
-
Angesichts der obigen Begriffe können die in 1 und 2 zuvor dargestellte verteilte Datenverarbeitungsumgebung und der Speicher-Server in einer der veranschaulichten Ausführungsformen der vorliegenden Erfindung verschiedene Mechanismen zum Verwalten des Cachespeichers und des NVS verwenden und beispielsweise Auslagerungssuchläufe und Auslagerungsoperationen ausführen. Ein Mechanismus setzt Datenspuren auf der Grundlage einer LRU-Verfahrensweise (least recently used, letzte Verwendung) zurück und behält für jede Datenspur ein temporäres Bit bei. Das temporäre Bit wird gesetzt, wenn ein Hostrechner Datenspuren schreibt. Das temporäre Bit wird zurückgesetzt, wenn bei einem Auslagerungssuchlauf eine Datenspur geprüft wird, für die ein temporäres Bit gesetzt wurde. Wenn beim Auslagerungssuchlauf Abschnitte gefunden werden, für die kein temporäres Bit gesetzt wurde, können diese Datenspuren zum Auslagern ausgewählt werden. Ein weiterer Mechanismus setzt Datenspuren auf der Grundlage deren räumlicher Lage zurück. Unter Verwendung eines symmetrischen Verzeichnisbaums wird eine geordnete Liste von Datenspuren verwaltet. Auslagerungssuchläufe auf der Suche nach auszulagernden Datenspuren können den symmetrischen Verzeichnisbaum zum Beispiel in der Reihenfolge der Lage der Datenspuren von ganz unten nach ganz oben durchsuchen.
-
Für sequenzielle Datenspuren ignoriert einer der oben erwähnten Mechanismen das temporäre Bit und lagert sequenzielle Datenspuren aus, wenn der Auslagerungssuchlauf solche sequenziellen Datenspuren antrifft. Dadurch wird der Datendurchsatz erhöht, da sich bei sequenziellen Datenspuren im Allgemeinen der gesamte Abschnitt im Cachespeicher befindet. Folglich können komplette Abschnitte ausgelagert werden, was schneller abläuft als die Auslagerung von Teilabschnitten. Dieses Szenario führt dazu, dass der Speicherplatz im Schreibcache schneller freigegeben wird. Außerdem wird der Datendurchsatz erhöht, da sequenzielle Datenspuren nicht durchgängig neu geschrieben werden.
-
Während derzeitige Mechanismen den Gesamtdurchsatz verbessern, können einige Transaktionszeiten verlängert werden, da das Auswählen sequenzieller Datenspuren mit einem gesetzten temporären Bit zu Auslagerungskonflikten führen kann. Ein solches Ergebnis kann die Folge des folgenden beispielhaften Szenarios sein. Eine Schreiboperation auf eine bestimmte Datenspur muss warten, bis eine Auslagerung abgeschlossen ist. Bei Datenspuren, die mehrere Datensätze enthalten, müssen möglicherweise mehrere Aktualisierungen durchgeführt werden, da einige Anwendungen, die Datenspuren sequenziell beschreiben, zu jedem Zeitpunkt nur einen Datensatz schreiben können und zugehörige sequenzielle Datenspuren ihr eigenes gesetztes temporäres Bit aufweisen. Da derzeitige Mechanismen das temporäre Bit für sequenzielle Datenspuren im Allgemeinen ignorieren, kann eine bestimmte Datenspur ausgelagert werden, die einen Datensatz nach dem anderen aktualisiert wurde.
-
Es kommt möglicherweise nicht nur zu längeren Transaktionszeiten, sondern es werden auch einige vielbeschäftigte Gruppen von Datenspuren (z. B. Datenspuren von Vorausschreibdatensätzen (WADS) im IP Multimedia Subsystem (IMS)) sequenziell erkannt, jedoch möglicherweise nicht rein sequenziell geschrieben. Zum Beispiel sei eine vielbeschäftigte Gruppe von Datenspuren 1 bis 8 betrachtet, die in der Reihenfolge 4, 3, 2, 1, 8, 7, 6, 5 geschrieben werden. Diese Datenspuren können als ureigen sequenziell erkannt werden. Vielbeschäftigte Gruppen von Datenspuren werden wie oben erwähnt oft aktualisiert und dementsprechend mit einer höheren Frequenz geschrieben. Derzeitige Mechanismen lagern diese vielbeschäftigten Gruppen aus, wenn diese als sequenziell erkannt werden.
-
Angesichts des oben Gesagten und wie oben erwähnt besteht ein Bedarf an einem Mechanismus zur Verringerung der Transaktionszeiten in Szenarien, an denen solche sequenziellen Datenspuren beteiligt sind. Wie oben erwähnt dienen die Mechanismen der veranschaulichten Ausführungsformen wiederum dazu, diesen Bedarf durch Bereitstellen einer aggressiveren Auslagerung sequenzieller Datenspuren in den Schreibcache zu befriedigen, auf das Auslagern des letzten Abschnitts in den gerade geschriebenen sequenziellen Datenströmen zu verzichten und vielbeschäftigte Gruppen von Datenspuren (oft aktualisierte Datenspuren) für längere Zeit in dem Schreibcache zu behalten. Demgemäß sorgen die veranschaulichten Ausführungsformen für einen besseren Datendurchsatz des Schreibcaches, da sequenzielle Datenspuren aggressiver ausgelagert werden, Auslagerungen von pseudosequenziellen vielbeschäftigten Gruppen verlangsamt werden und die Anzahl der Auslagerungskonflikte möglichst gering gehalten wird, da Datenspuren während des Schreibens nicht ausgelagert werden.
-
In 3 wird nunmehr ein beispielhaftes Verfahren 100 zum Ausführen einer Hostschreiboperation dargestellt, die verschiedene Aspekte der vorliegenden Erfindung und den folgenden beanspruchten Gegenstand in sich vereint. Das Verfahren 100 beginnt (Schritt 102) mit dem Prüfen einer Datenspur (Schritt 104), um zu ermitteln, ob diese ihrem Wesen nach sequenziell ist (Schritt 106). Wenn dies der Fall ist, wird die Datenspur ausfindig gemacht, deren Nummer um X kleiner als die Nummer der vorliegenden Datenspur ist (N – X) (Schritt 108). Mit anderen Worten, es wird eine frühere Datenspur in dem Abschnitt auf der Grundlage einer vorgegebenen Formel ausfindig gemacht. Gemäß einer Ausführungsform ist X standardmäßig gleich 28, obwohl dem Fachmann einsichtig ist, dass der Wert X entsprechend einer bestimmten Ausführungsart variieren kann.
-
Wenn in Schritt 110 ermittelt worden ist, dass die Datenspur (N – X) sequenziell ist und geändert wurde, wird nun deren zugehöriges temporäres Bit gelöscht (Schritt 112), um das Auslagern der früheren Datenspur zu ermöglichen. Dann endet das Verfahren 100 (Schritt 114). Wenn in Schritt 106 hingegen ermittelt wurde, dass die Datenspur nicht sequenziell ist, und wenn in Schritt 110 ermittelt wurde, dass die Datenspur (N – X) zudem nicht sequenziell ist und geändert wurde, endet das Verfahren 100 (wiederum in Schritt 114).
-
4 veranschaulicht nunmehr ein beispielhaftes Verfahren 120 zum Ausführen von Auslagerungssuchläufen, das wiederum verschiedene Aspekte der vorliegenden Erfindung und des folgenden beanspruchten Gegenstands in sich vereint. Das Verfahren 120 wird für jeden Abschnitt des geänderten Cachespeichers durchgeführt und beginnt (Schritt 122) mit einem Versuch, eine Sperrung auf der veränderten Liste zu erreichen (Schritt 124). Wenn die Sperrung nicht erreicht werden kann (Schritt 126), wird der Thread, der den Auslagerungssuchlauf ausführt, erneut zugeteilt (Schritt 128), und das Verfahren 120 geht zurück zu Schritt 124, um einen weiteren Suchlauf durchzuführen.
-
Wenn eine Sperrung erreicht wird (wiederum in Schritt 126), werden Datenspuren in dem Abschnitt geprüft (Schritt 130), um zu ermitteln, ob für eine oder mehrere Datenspuren das temporäre Bit gesetzt ist (Schritt 132). Wenn für keine der Datenspuren in dem Abschnitt das temporäre Bit gesetzt ist (z. B. wenn alle Datenspuren in dem Abschnitt geprüft worden sind), wird der derzeitige Abschnitt zum Ausführen der Auslagerungsoperation ausgewählt und der Auslagerungssuchlauf verlassen (Schritt 136, wobei mit Schritt 138 gemäß der folgenden Beschreibung fortgesetzt wird). Wird hingegen in Schritt 132 eine Datenspur mit einem gesetzten temporären Bit gefunden, geht das Verfahren 120 weiter zu Schritt 134, wo das temporäre Bit für alle Datenspuren in dem Abschnitt zurückgesetzt wird. Nach den wie oben beschriebenen Schritten 134 und 136 geht das Verfahren weiter zu Schritt 138, wo abgefragt wird, ob eine vorgegebene Anzahl von Datenspuren durchsucht worden ist. Wiederum gemäß einer Ausführungsform kann die vorgegebene Anzahl gleich 4 sein, jedoch ist dem Fachmann einsichtig, dass die vorgegebene Anzahl entsprechend einer bestimmten Ausführungsart variieren kann. Wenn dies nicht der Fall ist, geht das Verfahren zurück zu Schritt 124, um weitere Suchläufe durchzuführen.
-
Wenn die vorgegebene Anzahl von Abschnitten tatsächlich durchsucht worden ist, wird der Speicherbelegungsgrad des NVS geprüft. Wenn der Belegungsgrad des NVS einen vorgegebenen Prozentwert oder die Ebene den vorgegebenen Prozentwert des zulässigen NVS-Speichervolumens überschreitet (Schritt 140), wird der erste aller bis dahin durchsuchten Abschnitte für die Auslagerungsoperation ausgewählt (Schritt 142). Auch in diesem Fall kann der vorgegebene Prozentwert entsprechend einer bestimmten Ausführungsart variieren und gemäß einer Ausführungsform gleich 90% sein (z. B. der NVS ist zu mehr als 90% belegt oder die Ebene nimmt mehr als 90% des zulässigen NVS-Speichervolumens in Anspruch). Wenn das Ergebnis in Schritt 140 hingegen NEIN lautet, wird der Thread, der den Auslagerungssuchlauf ausführt, erneut zugeteilt (Schritt 144). Wenn noch nicht alle Abschnitte in dem veränderten Cachespeicher durchsucht worden sind (Schritt 146), geht das Verfahren 120 zurück zu Schritt 124, um wie dargestellt weitere Suchläufe auszuführen. Wenn alle Abschnitte durchsucht worden sind, endet das Verfahren 120 (Schritt 148).
-
Dem Fachmann ist klar, dass Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt umgesetzt werden können. Demgemäß können Aspekte der vorliegenden Erfindung die Form einer kompletten Hardwareausführungsform, einer kompletten Softwareausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Softwareaspekte und Hardwareaspekte in sich vereint, die hierin sämtlich allgemein als „Schaltung”, „Modul” oder „System” bezeichnet werden können. Darüber hinaus können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien mit einem darauf gespeicherten computerlesbaren Programmcode gespeichert ist.
-
Es kann jede Kombination von einem oder mehreren computerlesbaren Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich zum Beispiel, ohne darauf beschränkt zu sein, um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine entsprechende Vorrichtung oder Einheit oder eine beliebige geeignete Kombination derselben handeln. Speziellere Beispiele (eine nicht erschöpfende Aufzählung) des computerlesbaren Mediums kann Folgendes beinhalten: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flash-Speicher), einen Lichtwellenleiter, einen tragbaren Compact Disc-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination derselben. In Verbindung mit diesem Dokument kann es sich bei einem computerlesbaren Medium um ein beliebiges materielles Medium handeln, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen enthalten oder speichern kann.
-
Der auf einem computerlesbaren Medium verkörperte Programmcode kann unter Verwendung eines beliebigen geeigneten Medium übertragen werden, darunter, ohne darauf beschränkt zu sein, drahtlos, leitungsgebunden, Lichtwellenleiter, HF usw. oder eine beliebige geeignete Kombination derselben. Der Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben werden, darunter eine objektorientierte Programmiersprache wie beispielsweise Java, Smalltalk, C++ oder ähnliche und herkömmliche prozedurale Programmiersprachen wie beispielsweise die Programmiersprache „C” oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Computer eines Benutzers, teilweise auf dem Computer eines Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer eines Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. Im letzteren Szenario kann der ferne Computer über ein beliebiges Netz mit dem Computer des Benutzers verbunden werden, darunter ein lokales Netz (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstleisters).
-
Aspekte der vorliegenden Erfindung sind oben unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben worden. Es ist klar, dass jeder Block der Ablaufpläne und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch Anweisungen eines Computerprogramms umgesetzt werden können. Diese Anweisungen des Computerprogramms können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zugeführt werden, um eine Maschine derart zu erzeugen, dass die durch den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zum Umsetzen der in dem Block oder den Blöcken der Ablaufpläne und/oder Blockschaubilder angegebenen Funktionen/Aktionen erzeugen.
-
Diese Anweisungen des Computerprogramms können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten veranlassen kann, auf eine bestimmte Weise derart zu funktionieren, dass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsartikel erzeugen, der Anweisungen enthält, die die in dem Block oder in den Blöcken der Ablaufpläne und/oder Blockschaubilder angegebenen Funktionen/Aktionen umsetzen. Die Anweisungen des Computerprogramms können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Reihe auf dem Computer, der anderen programmierbaren Vorrichtung oder anderen Einheiten auszuführender Arbeitsschritte zu veranlassen, um eine computergestützten Prozess derart zu erzeugen, dass die auf dem Computer oder der anderen programmierbaren Vorrichtung ausgeführten Anweisungen Prozesse zum Umsetzen der in dem Block oder in den Blöcken der Ablaufpläne und/oder Blockschaubilder angegebenen Funktionen/Aktionen bereitstellen.
-
Der Ablaufplan und die Blockschaubilder in den obigen Figuren veranschaulichen die Architektur, die Funktionalität und die Arbeitsweise möglicher Ausführungsarten von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. Demgemäß kann jeder Block in dem Ablaufplan oder den Blockschaubildern ein Modul, ein Segment oder einen Abschnitt eines Codes darstellen, der eine oder mehrere ausführbare Anweisungen zum Umsetzen der angegebenen logischen Funktion(en) aufweist. Es wird auch darauf hingewiesen, dass bei einigen alternativen Ausführungsarten die in dem Block angegebenen Funktionen in einer von den Figuren abweichenden Reihenfolge vorkommen können. Zum Beispiel können zwei aufeinanderfolgende Blöcke je nach beabsichtigter Funktionalität in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können mitunter in der umgekehrten Reihenfolge ausgeführt werden. Ferner wird darauf hingewiesen, dass jeder Block der Blockschaubilder und/oder des Ablaufplans und Kombinationen von Blöcken in den Blockschaubildern und/oder dem Ablaufplan durch spezielle Hardwaresysteme, die die angegebenen Funktionen oder Aktionen ausführen, oder durch Kombinationen von spezieller Hardware und Computeranweisungen umgesetzt werden.
-
Obwohl eine oder mehrere Ausführungsformen der vorliegenden Erfindung ausführlich veranschaulicht worden sind, ist dem Fachmann einsichtig, dass Änderungen und Anpassungen an diesen Ausführungsformen vorgenommen werden können, ohne vom Schutzumfang der vorliegenden Erfindung abzuweichen, der in den folgenden Ansprüchen dargelegt wird.