DE102020122182A1 - Virtuelle-maschine-replikation und -migration - Google Patents

Virtuelle-maschine-replikation und -migration Download PDF

Info

Publication number
DE102020122182A1
DE102020122182A1 DE102020122182.7A DE102020122182A DE102020122182A1 DE 102020122182 A1 DE102020122182 A1 DE 102020122182A1 DE 102020122182 A DE102020122182 A DE 102020122182A DE 102020122182 A1 DE102020122182 A1 DE 102020122182A1
Authority
DE
Germany
Prior art keywords
level
memory
tracker
checkpoint
checkpoint data
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.)
Pending
Application number
DE102020122182.7A
Other languages
English (en)
Inventor
Zhe Wang
Andrew V. Anderson
Alaa Alameldeen
Andrew M. Rudoff
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE102020122182A1 publication Critical patent/DE102020122182A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Retry When Errors Occur (AREA)

Abstract

Die hier aufgeführten Beispiele betreffen die Prüfpunktreplikation und das Kopieren von aktualisierten Prüfpunktdaten. Beispielsweise kann eine mit einem Speicher gekoppelte Speichersteuerung eine einer Adresse zugeordnete Schreib-Anforderung empfangen, um Prüfpunktdaten zu schreiben und zu aktualisieren und Aktualisierungen für Prüfpunktdaten basierend auf zumindest zwei Ebenen von Speicherregionsgrößen nachzuverfolgen. Eine erste Ebene ist einer größeren Speicherregionsgröße zugeordnet als eine Speicherregionsgröße, die der zweiten Ebene zugeordnet ist. Bei einigen Beispielen ist die erste Ebene eine Cache-Zeilen-Speicherregionsgröße und die zweite Ebene ist eine Seiten-Speicherregionsgröße. Aktualisierungen für die Prüfpunktdaten können auf der zweiten Ebene nachverfolgt werden, sofern eine Aktualisierung nicht vorher auf der ersten Ebene nachverfolgt wurde. Reduzierte Mengen von aktualisierten Prüfpunktdaten können während einer Prüfpunktreplikation durch Verwendung mehrerer Regionsgrößen-Tracker übertragen werden.

Description

  • TECHNISCHES GEBIET
  • Verschiedene hierin beschriebene Beispiele betreffen die Virtuelle-Maschine-Migration.
  • HINTERGRUND
  • Virtuelle-Maschine-Manager (VMMs; virtual maschine managers) propagieren Änderungen, die an Gast-Virtuelle-Maschinen (VMs; virtual machines) vorgenommen werden, um den Zustand des Gastes zu replizieren und Merkmale wie beispielsweise hohe Verfügbarkeit, Live-Migration und Fehlertoleranz zu unterstützen. Bei solchen Nutzungsmodellen ist es erforderlich, dass jede Modifikation an dem Speicher einer Gast-VM durch den VMM identifiziert und angemessen verarbeitet wird. In vielen Fällen erfordert dies, dass der VMM die Änderung über ein Netzwerk an einen kooperativen VMM mit einer Replikat-VM kommuniziert. Die Granularität einer Änderungsdetektion kann sich direkt auf den Betrag des erforderlichen Netzwerkverkehrs auswirken. Zum Beispiel, falls eine Gast-VM eine einzelne 64-Byte-Cache-Leitung ändert und die Granularität der Änderungsdetektion eine 4-Kilobyte-Seite ist, dann kann diese kleine 64-Byte-Änderung dazu führen, dass 4 Kilobyte von Daten an einen Speicher übertragen werden, der von jeder Replikat-VM verwendet wird. In Fällen, in denen eine Granularität der Änderungsdetektion noch größer ist, kann die Menge von Datenkopieren zunehmen und kann zu einer ineffizienten Nutzung von Speicher- und Netzwerkressourcen führen.
  • Bei Intel-Architektur- (IA-) Systemen werden Speichermodifikationen typischerweise durch Accessed- und Dirty Bit-Unterstützung, die von der Speichermanagementeinheit (MMU; memory management unit) bereitgestellt wird, oder durch Markierung schreibgeschützter Seiten und Aufzeichnung der Modifikation beim ersten Schreiben auf jede Seite nachverfolgt. Unterstützte MMU-Seitengrößen umfassen 4kB, 2MB und 1GB. Mit Unterseitenberechtigungen können VMMs 128-Byte-Regionen schreibgeschützt werden. Für die meisten Speicher-Tracking-Anwendungen werden 4kB-Seiten bevorzugt. Wenn 2MB- oder 1GB-Seiten verwendet werden, ist es häufig erforderlich, dass ungeheuerliche Mengen nicht modifizierter Daten übertragen werden. Während Unterseitenberechtigungen eine 128-Byte-Granularität erlauben, sind die Kosten für Fehler und Protokollierung hoch genug, dass dies für viele Nutzungsmodelle unerwünscht ist.
  • Figurenliste
    • 1 stellt eine Umgebung dar.
    • 2 zeigt ein System gemäß einigen Ausführungsbeispielen.
    • 3A zeigt ein System für ein Nachverfolgen von Änderungen an Prüfpunktdaten. Insbesondere sind Formate von Einträgen für schwach besetzte (feinkörnige) und dichte (Grobe-Ebene) Tracker gezeigt.
    • 3B zeigt ein System für ein Nachverfolgen von Änderungen an Prüfpunktdaten, das zwei oder mehrere Ebenen verwendet.
    • 4A-4C stellen einen beispielhaften Prozess zumindest für ein Nachverfolgen von Änderungen an Prüfpunktdaten in feinkörnigen und/oder Grobe-Ebene-Granularitäten dar.
    • 5 stellt ein System dar, das mehrere Speichersteuerungen verwendet.
    • 6 stellt ein System dar, das mehrere Speichersteuerungen verwendet.
    • 7 stellt ein System dar.
  • DETAILLIERTE BESCHREIBUNG
  • Prüfpunktreplikation wird verwendet, um die Virtuelle-Maschine-Verfügbarkeit im Fall eines Systemabsturzes oder Stromausfalls sicherzustellen und auch für eine schnelle Migration von Live- und aktiven VMs. Während einer Prüfpunktreplikationsprozedur werden die Prüfpunktdaten aus einer Host-VM gelesen und über ein Netzwerk oder eine Struktur (engl. fabric) (oder ein anderes Kommunikationsmedium) an eine Backup-Rechenplattformmaschine gesendet. Wenn ein System ausfällt, kann ein Prüfpunkt verwendet werden, um eine VM oder Anwendung an ihrem Prüfpunkt zu starten, um ein Starten von der VM oder Anwendung ab ihrem Beginn zu vermeiden und infolgedessen eine entstehende Latenz zu vermeiden. Die Aufrechterhaltung von Backup-VMs kann den durch den Ausfall einer Primär-VM verursachten Verlust der abgeschlossenen Arbeit einer VM reduzieren.
  • Prüfpunktdaten können ein Speicherabbild einer VM oder Anwendung zu einem bestimmten Ausführungszeitpunkt sein. Alle Änderungen in dem Speicher (z. B. Cache und Speicher) durch die VM oder Anwendung werden erfasst. In dem VM-Kontext ist ein Snapshot (Standardprüfpunkt) oder ein Prüfpunkt (engl. checkpoint) eine konsistente vollständige Darstellung der VM. Ein Snapshot oder Prüfpunkt kann verwendet werden, um eine VM anzuhalten, sodass sie später auf der gleichen Plattform wiederhergestellt oder auf eine Sekundärplattform migriert werden kann. Prüfpunktdaten können Protokoll- und Wiedergabe-Aufzeichnungen von Niedrigebene-Ereignissen umfassen, die von einer VM während eines Ausführungsintervalls ausgeführt werden, wie beispielsweise extern gesteuerte I/O-Aktivitäten. Die Prüfpunktdaten können Konfigurationsinformationen, CPU-Architekturzustand umfassend Werte von allen Architektur- und Steuerregistern, Speicherdatenänderungen seit dem letzten Prüfpunkt umfassend alle modifizierten Daten auf verschiedenen Cache-Ebenen, die nicht in den Speicher zurückgeschrieben wurden, I/O-Vorrichtimgs-Zustand und irgendwelche anderen Informationen, die erforderlich sind, um eine VM in den gleichen Zustand zu bringen, wie sie war, als der Prüfpunkt genommen wurde. Die Prüfpunktdaten können verwendet werden, um die Backup-VM in den gleichen Zustand wie den der Primär-VM zu bringen. Prüfpunktdaten können auch für Container und den Betrieb von Backup- oder Replika-Containern verwendet werden.
  • Dieser Schutz der Kontinuität des VM-Betriebs tritt allerdings zu Kosten einer erheblichen Speicherkapazität sowie eines Bandbreiten- und Netzwerkbandbreiten-Verbrauchs ein. In vielen Anwendungsfällen sind die größte Komponente sämtlicher Prüfpunktzustände, die zu speichern sind, die modifizierten Daten im Speicher. Die Reduzierung des durch die Prüfpunktreplikation verursachten Speicher- und Netzwerkverkehrs kann die Speicher- und Netzwerksystemperformance erheblich verbessern und den zugeordneten Leistungsverbrauch reduzieren. Um Platz zu sparen, überwachen VMMs bestimmte Speicherregionen, die Daten aus den VMs umfassen, die nach Prüfpunkte zu prüfen (checkpointed) sind. Für die überwachten Speicherregionen ist es nur erforderlich, dass Daten gespeichert werden, die seit dem letzten Prüfpunkt modifiziert wurden. Prüfpunkte können verwendet werden, um den Zustand des gesamten Systems zu speichern, oder sie können verwendet werden, um den Zustand für nur eine oder einige wenige VMs zu speichern.
  • Eine bekannte aktuelle Lösung für die Gast-VM-Replikation verwendet eine Speichermanagementeinheit (Memory Management Unit, MMU). Die MMU unterhält für jeden Seitentabelleneintrag ein „Dirty Bit“, das darstellt, ob die Seite seit dem vorherigen Prüfpunkt beschrieben wurde. Während der Prüfpunktreplikationsperiode werden alle Seiten mit gesetztem Dirty Bit aus dem Speicher gelesen und (z. B. über ein Netzwerk) an eine Backup-Maschine gesendet. Die Softwarelösung repliziert die modifizierten Daten bei Seitengranularität, was eine erhebliche redundante Datenreplikation verursacht, da eine erhebliche Menge an sauberen Daten innerhalb modifizierter Seiten immer noch kopiert wird. Selbst wenn z. B. nur 64 Bytes innerhalb einer 4KB-Seite modifiziert werden, is es erforderlich, dass die gesamte 4KB-Seite in der Backup-Maschine repliziert wird. Somit verursacht die aktuelle Lösung erheblichen redundanten Speicher- und Netzwerkverkehr und erhöht die Verarbeitungskosten (Nutzungen) und Latenzen bei der Datenreplikation.
  • Ein Beitrag von Kai-Yuan Hou, Kang G. Shin, Yoshio Turner und Sharad Singhal „Tradeoffs in Compressing Virtual Machine Checkpoints". In Proceedings of the 7th international workshop on Virtualization technologies in distributed computing (VTDC '13), ACM, New York, NY, USA, (Seiten 41-48)) schlägt vor, eine Kompressionstechnik zu verwenden, um den durch Prüfpunktreplikationen verursachten Netzwerkverkehr zu reduzieren. Diese Technik nutzt die Ähnlichkeit von Prüfpunkten aus und eliminiert den redundanten Netzwerkverkehr.
  • Eine effizientere Lösung verwendet differenzielle Aktualisierungen, bei denen nur die Unterschiede zwischen dem aktuellen modifizierten Seitenzustand und dem Zustand derselben Seite von dem vorherigen Prüfpunkt gespeichert werden. Diese Lösung ist zwar platzsparend, erfordert jedoch das Lesen des Zustands des vorherigen Prüfpunkts, bevor der aktuelle Prüfpunkt konstruiert wird.
  • Verschiedene Ausführungsbeispiele verfolgen modifizierte Inhalte in den Prüfpunktdaten einer virtuellen Maschine in entweder feiner oder grober Granularitätsebene (oder in beiden). Ein feinkörniger modifizierter Seiten-Tracker kann von einer Speichersteuerung verwendet werden, um verschmutzte (dirty) oder geänderte Prüfpunktdaten auf einer feinkörnigen Ebene (z. B. 64-Byte- oder Cache-Zeilen-Ebene) nachzuverfolgen, seit eine vorherige Prüfpunktprozedur ausgeführt wurde (z. B. gestartet oder abgeschlossen). Ein grober modifizierter Seiten-Tracker kann von einer Speichersteuerung verwendet werden, um die verschmutzten oder geänderten Prüfpunktdaten in einer groben Granularität (z. B. Seite oder andere Größe) nachzuverfolgen, seit eine vorherige Prüfpunktprozedur ausgeführt wurde (z. B. gestartet oder abgeschlossen). Bei einigen Beispielen werden Änderungen an Daten, die auf einer feinkörnigen Ebene nachverfolgt werden, nicht auch auf einer groben Ebene nachverfolgt. Während einer Prüfpunktreplikationsperiode oder -ereignisses werden die modifizierten Prüfpunktdaten aus dem Speicher gelesen und entsprechend den Änderungen, die von den feinkörnigen und groben modifizierten Seiten- Trackern nachverfolgt werden, an eine Backup-Maschine oder einen Speicher gesendet. Aufgrund der feinkörnigen Nachverfolgung können verschiedene Ausführungsbeispiele das Kopieren eines großen Abschnitts sauberer oder nicht modifizierter Prüfpunktdaten vermeiden und somit den redundanten Speicher- und Netzwerkverkehr erheblich reduzieren und den Leistungsverbrauch reduzieren. Die feinkörnige Nachverfolgung erspart Prüfpunkt-Konstruktions- und -Rekonstruktions-Latenz und -Verarbeitung und spart im Vergleich zur grobkörnigen Nachverfolgung auch den für die Speicherung des Prüfpunktes benötigten Platz.
  • Um eine effiziente grobkörnige oder feinkörnige Nachverfolgung von modifizierten Daten zu ermöglichen, kann eine begrenzte Menge an Cache- oder Speicherplatz grobkörnigen und feinkörnigen modifizierten Seiten-Trackern zugewiesen werden. Bei einigen Beispielen können in einem Fall, in dem nicht genügend Cache- oder Speicherplatz für Einträge in dem groben modifizierten Seiten-Tracker verfügbar ist, ein oder mehrere Einträge in einen anderen Speicher oder eine andere Speicherregion überlaufen, die Prüfpunktdatenänderungen mit einer groben Granularität der gleichen oder einer niedrigeren Granularitätsebene (z. B. Seite oder größer) nachverfolgt, als die, die von dem groben modifizierten Seiten-Tracker im Cache oder Speicherplatz nachverfolgt wird. Bei einigen Beispielen kann ein Eintrag ein einzelnes Bit umfassen, um anzuzeigen, ob eine feinkörnige oder grobkörnige Region geändert wurde. Wenn eine Seite beispielsweise 4 Kilobyte ist und sich irgendwelche Prüfpunktdaten in der Seite geändert haben, kann ein einzelnes Bit in einem Eintrag in einem grobkörnigen modifizierten Seiten-Tracker identifizieren, dass sich die Seite geändert hat (z. B. verschmutzt ist). Bei einem anderen Beispiel kann, wenn sich der Wert einer Cache-Zeile mit Prüfpunktdaten geändert hat, ein Eintrag in dem feinkörnigen modifizierten Seiten-Tracker, der Änderungen an der Cache-Zeilen-Ebene nachverfolgt, anzeigen, dass die Cache-Zeile geändert (z. B. verschmutzt) wurde.
  • Beispielsweise können verschiedene Ausführungsbeispiele die Replikation von 64B von Prüfpunktdaten basierend auf der Verwendung eines feinkörnigen 64B-Änderungs-Trackers bereitstellen, wenn eine einzelne 64B- (oder kleinere) Speicherung oder Aktualisierung von Prüfpunktdaten erfolgt. Wenn ein 4KB-Änderungs-Tracker-Eintrag verwendet wird, kann irgendeine Änderung an einer 4KB-Region, die zur Speicherung von Prüfpunktdaten verwendet wird, zur Replikation von 4KB Prüfpunktdaten führen, selbst wenn sich nur 64B (oder weniger) der Region geändert haben.
  • Bei einigen Beispielen können Datenstrukturen, die feinkörnige und grobkörnige Einträge speichern, codiert und komprimiert werden und zur Sicherung (Backup) auf einem anderen Speicher oder Speichervorrichtung verfügbar sein. Die codierten und komprimierten Datenstrukturen können verwendet werden, um geänderte adressierbare Regionen zu identifizieren, die zur Speicherung von Prüfpunktdaten verwendet werden. Eine andere Vorrichtung kann die codierten und komprimierten Datenstrukturen verwenden, um festzustellen, welche Prüfpunktdaten sich geändert haben, und kann lediglich diese Daten anfordern.
  • Dementsprechend können verschiedene Ausführungsbeispiele den durch Prüfpunktdatenreplikation verursachten Speicher- und Netzwerkverkehr reduzieren. Speicherbandbreite und Netzwerkressourcen können für andere Zwecke als die Prüfpunktreplikation freigegeben werden und der Leistungsverbrauch für Systeme kann reduziert werden.
  • Die Nachverfolgung von Aktualisierungen einer interessierenden Speicherregion ist für eine Vielzahl von Nutzungsmodellen erforderlich. Verschiedene Ausführungsbeispiele können die Ressourcen reduzieren, die zur Nachverfolgung und Verarbeitung solcher Speichermodifikationen für Anwendungsfälle erforderlich sind, die keine vollständigen Prüfpunkte erfordern, umfassend Nutzungen, die möglicherweise keine Speicherung oder Übertragung der Modifikationen erfordern.
  • Speicherdeltas sind typischerweise die größte Komponente von Prüfpunktzustandsaktualisierungen. Für eine überwachte Speicherregion werden die modifizierten Abschnitte dieser Region identifiziert, und die Delta-Darstellung wird übertragen. Verschiedene Ausführungsbeispiele können verwendet werden, um Änderungen in feiner oder grober Granularität irgendeines Inhalts, der in irgendeiner Speicherregion gespeichert ist, unabhängig von der Art des Inhalts nachzuverfolgen. Beispielsweise kann der Inhalt Prüfpunktdaten, Malware-Speicherzugriffe im Gastspeicher oder irgendein anderer Inhalt sein.
  • Im Folgenden wird ein Beispiel für einen Vergleich zwischen den Ansätzen zur Nachverfolgung von Aktualisierungen für Prüfpunktdaten bereitgestellt. In einem ersten Benchmark wird eine Super-Seite (super page) von Prüfpunktdaten (z. B. 2MB) zugewiesen. Schreib-Anforderungen werden auf jede der 4KB-Seiten ausgegeben. Ein zweiter Benchmark weist eine Super-Seite mit Prüfpunktdaten zu (z. B. 2MB). Schreib-Anforderungen werden auf jeden einzelnen 64B-Block in der gesamten Super-Seite ausgegeben. Nachdem die Prüfpunktreplikation erfolgt ist, kann die Überwachung sowohl des Netzwerk- als auch des Speicherverkehrs unter Verwendung eines Profilerstellungstool wie beispielsweise VTune erfolgen. Die Profilerstellungsergebnisse können zeigen, dass der Speicher- und Netzwerkverkehr des ersten Benchmarks deutlich geringer ist (z. B. 1/64) als derjenige des zweiten Benchmarks. Bei Verwendung eines grobkörnigen modifizierten 4KB-Seiten-Ebene-Trackers wird jedoch in beiden Benchmarks die gleiche Datenmenge an den Prüfpunkt geschrieben. Ein feinkörniger, modifizierter 4-Byte-Cache-Zeile-Tracker speichert 1/64 der Daten in dem ersten Benchmark im Vergleich zu dem zweiten Benchmark.
  • 1 stellt eine Umgebung 100 dar, die mehrere Rechen-Racks 102 umfasst, von denen jedes einen Top of Rack- (ToR-) Schalter 104, einen Pod-Manager 106 und eine Mehrzahl von gepoolten Systemschubladen umfasst. In einem Schalter können verschiedene Ausführungsbeispiele verwendet werden. Im Allgemeinen können die gepoolten Systemschubladen gepoolte Rechenschubladen und gepoolte Speicherungsschubladen umfassen. Optional können die gepoolten Systemschubladen auch gepoolte Speicherschubladen und gepoolte Eingabe-/Ausgabe-(I/O-; Input/Output) Schubladen umfassen. Bei dem dargestellten Ausführungsbeispiel umfassen die gepoolten Systemschubladen eine Intel® XEON® gepoolte Computerschublade 108 und eine Intel® ATOM™ gepoolte Rechenschublade 110, eine gepoolte Speicherungsschublade 112, eine gepoolte Speicherschublade 114 und eine gepoolte I/O-Schublade 116. Jede der gepoolten Systemschubladen ist über eine Hochgeschwindigkeitsverbindung 118, wie z. B. eine 40-Gigabit/Sekunde- (Gb/s) oder 100Gb/s-Ethernet-Verbindung oder eine optische Verbindung mit 100+ Gb/s-Silizium-Photonik (SiPh; Silicon Photonics), mit dem ToR-Schalter 104 verbunden. Bei einem Ausführungsbeispiel umfasst eine Hochgeschwindigkeitsverbindung 118 eine 800 Gb/s SiPh-optische Verbindung.
  • Mehrere der Rechen-Racks 100 können über ihre ToR-Schalter 104 verbunden sein (z. B. mit einem Pod-Ebene-Schalter oder einem Rechenzentrum-Schalter), wie durch Verbindungen mit einem Netzwerk 120 dargestellt. Bei einigen Ausführungsbeispielen werden Gruppen von Rechen-Racks 102 als separate Pods über (einen) Pod-Manager 106 managt. Bei einem Ausführungsbeispiel wird ein einzelner Pod-Manager verwendet, um alle Racks in dem Pod zu managen. Alternativ können verteilte Pod-Manager für Pod-Management-Operationen verwendet werden.
  • Eine Umgebung 100 umfasst ferner eine Managementschnittstelle 122, die zum Managen verschiedener Aspekte der Umgebung verwendet wird. Dies umfasst ein Managen einer Rack-Konfiguration, mit entsprechenden Parametern, gespeichert als Rack-Konfigurationsdaten 124.
  • 2 zeigt ein System gemäß einigen Ausführungsbeispielen. Bei diesem Beispiel kann die Rechenplattform 200 irgendeine oder alle der Rechenplattform 200-0 bis 200-N darstellen, wobei N≥1. Die Rechenplattform 200-0 kann die Prozessoren 202 zum Ausführen der Berechnung und Ausführen von Anwendungen, Betriebssystem und Treibern sowie virtuelle Maschinen (VMs) oder Container-Umgebungen verwenden. Die Prozessoren 202 können ein oder mehrere sein von: einer zentralen Verarbeitungseinheit (CPU; central processing unit), einem Kern, einer Grafikverarbeitungseinheit (GPU; graphics processing unit), einer Allzweck-Grafikverarbeitungseinheit (GPGPU; general purpose graphics processing unit), einem feldprogrammierbaren Gate-Array (FPGA; field programmable gate array), High-Density Deep Learning- (HDDL) Rechenmaschinen (oder anderen Vorrichtungen, die für Maschinenlern- oder Inferenz-bezogene Operationen ausgebildet sind) oder Visual Compute Accelerator (VCA) (oder einem anderen Bild-, Audio- oder Videoprozessor). Bei einigen Beispielen führen die Prozessoren 202 einen oder mehrere Virtual Machine Manager (VMM) aus und können einen oder mehrere VMM darstellen.
  • Eine virtuelle Maschine kann Software sein, die ein Betriebssystem und eine oder mehrere Anwendungen ausführt. Eine virtuelle Maschine kann durch Spezifikation, Konfigurationsdateien, eine virtuelle Plattendatei, eine nichtflüchtige Direktzugriffsspeicher- (NVRAM-; non-volatile random access memory) Einstellungsdatei und die Protokolldatei definiert werden und wird durch die physischen Ressourcen einer Host-Rechenplattform gesichert. Ein Container kann ein Software-Package von Anwendungen, Konfigurationen und Abhängigkeiten sein, sodass die Anwendungen zuverlässig auf einer Rechenumgebung im Hinblick auf eine andere laufen. Container können ein Betriebssystem, das auf der Serverplattform installiert ist, gemeinschaftlich verwenden und als isolierte Prozesse laufen.
  • Die Speichersteuerung 204 kann Lese- oder Schreib-Anforderungen von den Prozessoren 202 oder anderen Vorrichtungen (z. B. irgendeiner der Rechnerplattformen 200-1 bis 200-N) empfangen und zumindest Lese-, Schreib- oder Löschoperationen in Bezug auf den im Speicher 212 gespeicherten Inhalt managen. Die Speichersteuerung 204 kann mit dem Speicher 212 unter Verwendung einer Verbindung oder einer Schnittstellenvorrichtung kommunikativ gekoppelt sein. Bei einigen Beispielen kann der Speicher 212 die Prüfpunktdaten 214 speichern und den Änderungs-Tracker 216 ändern. Gemäß einigen Ausführungsbeispielen kann die Speichersteuerung 204 einen Prüfpunkt-Änderungs-Tracker 206 verwenden, um Änderungen zu identifizieren, die auf feinkörniger oder gröberer Ebene einer Speicherregion vorgenommen wurden. In Bezug auf die Prüfpunktdaten 214 kann der Prüfpunkt-Änderungs-Tracker 206 beispielsweise Änderungen identifizieren, die an den Prüfpunktdaten 214 in einer feinkörnigen oder gröberen Ebene vorgenommen wurden. Beispielsweise kann eine feinkörnige Ebene auf einer Cache-Zeilen-Ebene sein (z. B. 32 Bytes, 64 Bytes, 128 Bytes oder andere Vielfache von 16 Bytes oder andere Anzahlen von Bytes). Eine grobkörnige Ebene kann Seitengröße haben (z. B. 2 Kilobyte, 4 Kilobyte, 8 Kilobyte, 16 Kilobyte oder andere Vielfache von 2 Kilobyte oder andere Größen).
  • Der Prüfpunkt-Änderungs-Tracker 206 kann den grobkörnigen Änderungs-Tracker 208 verwenden, um Änderungen an den Prüfpunktdaten 214 auf einer groben Ebene nachzuverfolgen. Der Prüfpunkt-Änderungs-Tracker 206 kann den feinkörnigen Änderungs-Tracker 210 verwenden, um Änderungen an den Prüfpunktdaten 214 auf einer feinkörnigen Ebene nachzuverfolgen. Bei einigen Beispielen verfolgt der Prüfpunkt-Änderungs-Tracker 206 irgendwelche empfangenen angeforderten Änderungen (z. B. Schreibvorgänge) in einer Region des Speichers 212, der einen Abschnitt der Prüfpunktdaten 214 speichert, nach. Der Prüfpunkt-Änderungs-Tracker 206 bestimmt, ob ein Eintrag im grobkörnigen Änderungs-Tracker 208 vorhanden ist, der anzeigt, dass eine Grobe-Ebene-Speicherregion, die Prüfpunktdaten 214 speichert, seit dem einem Abschluss einer früheren Prüfpunktperiode oder -prozedur als geändert angezeigt wurde. Wenn ein solcher Eintrag in dem grobkörnigen Änderungs-Tracker 208 vorhanden und gültig ist, wurde die Änderung bereits auf einer groben Ebene berücksichtigt. Wenn ein solcher Eintrag nicht vorhanden oder ungültig ist, werden Änderungen an einer Speicherregion, die die Prüfpunktdaten 214 speichert, mit einem feinkörnigen Änderungs-Tracker unter Verwendung des feinkörnigen Änderungs-Trackers 210 nachverfolgt.
  • Wenn in dem grobkörnigen Änderungs-Tracker 208 kein gültiger, der Adresse zugeordneter Eintrag ist, kann der Prüfpunkt-Änderungs-Tracker 206 aus dem Änderungs-Tracker 216 einen Eintrag abrufen, der einer Grobe-Ebene-Speicherregion entspricht, die einen Abschnitt der Prüfpunktdaten 214 speichert. Der Prüfpunkt-Änderungs-Tracker 206 kann den abgerufenen Eintrag in den groben Änderungs-Tracker 208 speichern. Wenn der abgerufene Eintrag gültig ist und zeigt, dass eine Änderung in der Grobe-Ebene-Speicherregion vorgenommen wurde, wurde die Änderung bereits nachverfolgt, und es steht ein Eintrag zur Verwendung in dem grobkörnigen Änderungs-Tracker 208 zur Verfügung, der der Grobe-Ebene-Speicherregion entspricht. Wenn der abgerufene Eintrag nicht zeigt, dass eine Änderung in der Grobe-Ebene-Speicherregion vorgenommen wurde, wird der abgerufene Eintrag möglicherweise nicht in dem groben Änderungs-Tracker 208 gespeichert und stattdessen kann der Prüfpunkt-Änderungs-Tracker 206 versuchen, Änderungen auf einer feinkörnigen Ebene nachzuverfolgen.
  • Der Prüfpunkt-Änderungs-Tracker 206 kann feststellen, ob ein Eintrag in dem feinkörnigen Änderungs-Tracker 210 vorhanden ist, der der Schreib-Anforderung entspricht. Wenn ein gültiger feinkörniger Eintrag in dem feinkörnigen Änderungs-Tracker 210 vorhanden ist und so markiert ist, dass er anzeigt, dass eine Änderung an der entsprechenden feinkörnigen Speicherregion vorgenommen wurde, dann wird die Änderung bereits auf einer feinkörnigen Ebene nachverfolgt. Wenn ein gültiger Feinkörnige-Ebene-Eintrag in dem feinkörnigen Änderungs-Tracker 210 nicht vorhanden ist oder nicht so markiert ist, dass er anzeigt, dass eine Änderung an der entsprechenden feinkörnigen Speicherregion vorgenommen wurde, dann wird ein feinkörniger Eintrag erstellt und dem feinkörnigen Änderungs-Tracker 210 hinzugefügt, um eine Änderung an den Prüfpunktdaten 214 auf einer feinkörnigen Ebene zu identifizieren. Der Eintrag wird hinzugefügt und die geänderte Region wird markiert, um eine Änderung auf der einkörnigen Ebene zu identifizieren.
  • In einigen Fällen, wenn der feinkörnige Änderungs-Tracker 210 voll ist und ein feinkörniger Eintrag hinzugefügt werden soll, kann der Ausschluss eines feinkörnigen Eintrags erfolgen, und der ausgeschlossene feinkörnige Eintrag wird ausgewählt basierend auf einem oder mehreren von: am längsten nicht verwendeter (LRU; Least Recently Used), Cache-Zeilen- (oder feinkörniger) Eintrag mit einer höchsten Anzahl von Modifikationen, die durch modifizierte Bits angezeigt werden, oder ein Eintrag mit der geringsten Anzahl von Modifikationen, die durch modifizierte Bits angezeigt werden, oder irgendein anderes Ausschlusskriterium. Der Ausschluss eines feinkörnigen Eintrags aus dem feinkörnigen Änderungs-Tracker 210 bewirkt die Hinzufügung eines Eintrags in den grobkörnigen Änderungs-Tracker 208 und die Änderungsnachverfolgung auf einer groben Ebene unter Verwendung des grobkörnigen Änderungs-Trackers 208. Bei einigen Beispielen kann ein separates Backup im Speicher für den feinkörnigen Änderungs-Tracker 210 bereitgestellt werden und verwenden werden, um ausgeschlossene Einträge aus dem feinkörnigen Änderungs-Tracker 210 zu verwenden. In einigen Fällen, wenn der grobe Änderungs-Tracker 208 voll ist, kann der Ausschluss eines groben Eintrags aus dem grobkörnigen Änderungs-Tracker 208 zu Änderungs-Tracker 216 im Speicher 212 erfolgen. Der ausgeschlossene Grobe-Ebene-Eintrag kann ausgewählt werden basierend auf einem oder mehreren von: am längsten nicht Verwendeter (LRU) oder ein Eintrag mit der geringsten Anzahl von Modifikationen, die durch modifizierte Bits angezeigt werden, oder irgendwelche anderen Ausschlusskriterien.
  • Dementsprechend werden bei einer Prüfpunktreplikationsprozedur oder an irgendeinem Punkt, an dem der Speicheränderungssatz erwünscht wird, lediglich in geschriebene, geänderte oder aktualisierte Prüfpunktdaten 214 repliziert, die geänderten Prüfpunktdaten 214 entsprechen, die basierend auf Änderungen an Prüfpunktdaten 214 festgestellt wurden, die in dem grobkörnigen Änderungs-Tracker 208, dem feinkörnigen Änderungs-Tracker 210 und dem Änderungs-Tracker 216 nachverfolgt werden. Die Nachverfolgung von geschriebenen, geänderten oder aktualisierten Abschnitten der Prüfpunktdaten 214 kann sich auf einen erwünschten Abschnitt der Prüfpunktdaten 214 beziehen, der kleiner ist als eine volle Menge der Prüfpunktdaten 214.
  • Beispielsweise kann ein Virtual Machine Manager (VMM) (z. B. ein VMM, der von der Rechnerplattform 200-1 ausgeführt wird) oder andere Software oder Hardware die Übertragung lediglich der Prüfpunktdaten 214 bewirken, die geänderten Speicherregionen auf einer feinkörnigen oder grobkörnigen Ebene entsprechen. Wenn eine feinkörnige Region beispielsweise 64 Byte groß ist, werden irgendwelche der Prüfpunktdaten 214, die einer feinkörnigen Speicherregion entsprechen, die als geändert identifiziert wird, an eine andere Vorrichtung (z. B. irgendeine der Rechnerplattformen 200-1 bis 200-N) übertragen. Wenn eine grobkörnige Speicherregion 4096 Bytes groß ist, werden zusätzlich alle Prüfpunktdaten 214, die der Grobe-Ebene-Speicherregion entsprechen, die als geändert identifiziert wird, an eine andere Vorrichtung (z. B. an die Rechnerplattform 200-1 oder 200-N). Dementsprechend wird bei diesem Beispiel als Teil einer Prüfpunktperiode eine Mischung aus null oder mehr 64-Byte-Segmenten (oder anderen Größen) und null oder mehr 4096-Byte-Segmenten (oder anderen Größen) umfassend Abschnitte der Prüfpunktdaten 214 an eine andere Vorrichtung übertragen. Ein Prozessor, der einen VMM oder einen anderen Prozess ausführt, kann Prüfpunktdaten-Änderungen mit anderen Prüfpunktdaten zusammenführen, die sich seit einer vorherigen Prüfpunktoperation nicht geändert haben. Zusammengesetzte Prüfpunktdaten umfassend geänderte und unveränderte Prüfpunktdaten können von einer VM für Backup oder VM-Migration oder Container-Backup oder -Migration verwendet werden. Bei einigen Beispielen können Prüfpunktdaten für die Migration, Replikation oder Sicherung von VMs oder Containern verwendet werden.
  • Es wird darauf hingewiesen, dass es verschiedene Sätze von Prüfpunktdaten geben kann, die für jede von einer oder mehreren VMs unterhalten werden können, und Änderungen an den Prüfpunktdaten können für irgendeinen Satz von Prüfpunktdaten nachverfolgt werden.
  • Die Daten können gesendet werden unter Verwendung von Struktur oder Netzwerk 250 in einem oder mehreren von: Ethernet-Frames oder Kommunikation, die mit Remote Direct Memory Access (RDMA; entferner Direktspeicherzugriff), InfiniBand, Internet Wide Area RDMA Protocol (iWARP), schnellen UDP-Internetverbindungen (QUIC) oder RDMA over Converged Ethernet (RoCE) kompatibel sind. Daten können unter Verwendung eines Protokolls wie beispielsweise NVMe over Fabrics (NVMe-oF) oder NVMe auf virtualisierte Speicherungsknote kopiert oder gespeichert werden. Struktur oder Netzwerk 250 kann ein Netzwerk, eine Struktur, eine Verbindung, einen Bus oder ein Medium umfassen, der/die/das ausgebildet ist, ein Paket zu empfangen, kann kompatibel sein zumindest mit Ethernet, PCIe, Intel QuickPath Interconnect (QPI), Intel Ultra Path Interconnect (UPI), Intel On-Chip System Fabric (IOSF), Omnipath, Compute Express Link (CXL), HyperTransport, high-speed fabric, NVLink, Advanced Microcontroller Bus Architecture (AMBA) Interconnect, OpenCAPI, Gen-Z, CCIX, 3GPP Long Term Evolution (LTE; Langzeitentwicklung) (4G), 3GPP 5G und Variationen derselben.
  • 3A zeigt ein System für ein Nachverfolgen von Änderungen an Prüfpunktdaten. Insbesondere sind Formate von Einträgen für schwach besetzte (feinkörnige) und dichte (Grobe-Ebene) Tracker gezeigt. Schwach besetzte (z. B. feinkörnige) modifizierte Tracker und dichte (z. B. grobkörnige) modifizierte Seiten-Tracker werden in einem Cache oder Speicher gespeichert, der von der Speichersteuerung verwendet wird, umfassend in derselben physischen Schaltung oder Systemauf-Chip. Einige der schwach besetzten und dichten modifizierten Seiten-Tracker können in flüchtigen Speicher in einer Speichersteuerung auf der CPU-Seite gespeichert werden.
  • Der schwach besetzte modifizierte Seiten-Tracker-Eintrag 302 kann modifizierte Bits 302A, einen Tag 302B und ein gültiges Bit 302C umfassen. Modifizierte Bits 302A können eine Bit-Kette mit einer Länge von n Bytes sein. Jedes Bit modifizierter Bits 302A kann anzeigen, ob irgendeine Cache-Zeile-Granularität einer Speicherregion, die einer Adresse zugeordnet ist, modifiziert oder nicht modifiziert wurde. Jedes Bit modifizierter Bits 302A wird verwendet, um nachzuverfolgen, ob der entsprechende Datenbrocken (z. B. Cache-Zeile in einer Seite) modifiziert wurde oder nicht. Wenn z. B. eine Seite 4096 Bytes und eine Cache-Zeile 64 Bytes ist, ist n = 8, sodass 8 Bytes (64 Bit) verwendet werden, um alle Cache-Zeilen in einer Seite mit einer Anfangsadresse für die Seite nachzuverfolgen, die zum Teil im Tag 302B angegeben ist. Beispielsweise kann ein bestimmter Eintrag 302 mehreren Cache-Zeilen-großen Regionen im Speicher entsprechen und ein anderer Eintrag 302 kann einer anderen Gruppe von mehreren Cache-Zeilen-großen Regionen im Speicher entsprechen. Der Wert „n“ ist konfigurierbar. Zum Beispiel bedeutet n=8, dass der schwach besetzte modifizierte 4096-Byte-Seiten-Tracker-Cache 310 die modifizierten Daten in einer 64-Byte-Granularität (4096 / (8 * 8 * 64)) nachverfolgt.
  • Tag 302B kann eine höchstwertige m Anzahl von Bytes physischer Seitenadresse nach einer Kette von Null Bits umfassen und kann eine Teilseiten-Adresse einer beginnenden Cache-Zeile sein, für die zusammenhängende Cache-Zeilen unter Verwendung modifizierter Bits 302A nachverfolgt werden. Der Wert „m“ kann 4 oder 5 oder ein anderer Wert sein.
  • Das gültige Bit 302C kann anzeigen, ob ein bestimmter Eintrag in einem Cache tatsächlich verwendet wird (z. B. gültig) oder nicht verwendet wird (z. B. ungültig), um eine Änderung der Cache-Zeile nachzuverfolgen. Das gültige Bit 302C beginnt bei einem ungültigen Zustand, wenn keine Änderungen an einer Cache-Zeile nachverfolgt werden, wird aber auf gültig gesetzt, wenn irgendeine Cache-Zeile-Modifikation durch den Eintrag nachverfolgt wird. Wenn z. B. modifizierte Bits 302A die Modifikation von 64 Cache-Zeilen nachverfolgen, kann Tag 304B ein höchstwertiges 4 oder 5 oder andere Bytes einer beginnenden Cache-Zeile und die 63 anderen folgenden Cache-Zeilen umfassen.
  • Null oder mehr schwach besetzte modifizierte Seiten-Tracker-Einträge 302 können im schwach besetzten modifizierten Seiten-Tracker-Cache 310 gespeichert werden, der bestimmten Cache-Zeilen-großen Speicherregionen entspricht, die Prüfpunktdaten speichern.
  • Der dichte modifizierte Seiten-Tracker-Eintrag 304 kann modifizierte Bits 304A, einen Tag 304B und ein gültiges Bit 304C umfassen. Modifizierte Bits 304A können eine Bit-Kette einer Länge von n Bytes sein. Jedes Bit modifizierter Bits 304A kann anzeigen, ob irgendeine einer Seiten-Ebene von Granularität einer Speicherregion, und die einer Adresse zugeordnet ist, modifiziert oder nicht modifiziert wird. Beispielsweise kann ein bestimmter Eintrag 304 einer seitengroßen Region im Speicher entsprechen und ein anderer Eintrag 304 kann einer anderen seitengroßen Region im Speicher entsprechen. Wenn modifizierte Bits 304A 8 Bytes (d. h. 64 Bits) lang sind, können modifizierte Bits 304A die Modifikation (oder Nichtmodifikation) von bis zu 64 benachbarten Seiten nachverfolgen, beginnend bei einer physischen Adresse, die zum Teil durch Tag 304B angezeigt wird.
  • Der Tag 304B kann ein höchstwertiges m Bytes einer physischen Seitenadresse nach einer Kette von Null Bits umfassen und kann eine Teilseiten-Adresse sein, für die zusammenhängende Seiten unter Verwendung modifizierter Bits 304A nachverfolgt werden. Wenn z. B. modifizierte Bits 304A die Modifikation von 64 Seiten nachverfolgen, kann der Tag 304B ein höchstwertiges 4 oder 5 oder andere Bytes einer physischen Seitenadresse und der 63 anderen folgenden Seiten umfassen.
  • Das gültige Bit 304C kann anzeigen, ob ein bestimmter Eintrag tatsächlich verwendet wird (z. B. gültig) oder nicht verwendet wird (z. B. ungültig), um eine Modifikation einer Seite nachzuverfolgen. Das gültige Bit 304C beginnt in einem ungültigen Zustand, wenn keine Änderungen in einer Gruppe von Seiten nachverfolgt werden, ändert sich aber zu gültig, wenn irgendeine Seiten-Ebene-Modifikation durch den Eintrag nachverfolgt wird.
  • Null oder mehr dichte modifizierte Seiten-Tracker-Einträge 304 können im dichten modifizierten Seiten-Tracker-Cache 320 gespeichert werden, der bestimmten Speicherregionen entspricht, die Prüfpunktdaten speichern.
  • Bei einigen Beispielen verfolgt ein dichter modifizierter Seiten-Tracker-Eintrag 304 Adressen auf Superseitenebene nach, wobei eine Superseite N Seiten umfasst (z. B. 64 bei dem Beispiel, das in 3A gezeigt ist). Wenn N eine Potenz von 2 ist, kann keine Überlappung zwischen Superseiten garantiert werden. Jede Seite gehört nur zu einem einzigen Eintrag in dem dichten modifizierten Seiten-Tracker 330 und/oder dem dichten modifizierten Seiten-Tracker-Cache 320.
  • Der schwach besetzte modifizierte Seiten-Tracker-Cache 310 kann eine satz-assoziative Struktur sein und kann in einem Cache oder einer Speichervorrichtung gespeichert werden, die von einer Speichersteuerung verwendet wird. Bei einigen Beispielen ist der schwach besetzte modifizierte Seiten-Tracker-Cache 8 KB groß. Der dichte modifizierte Seiten-Tracker-Cache 320 kann eine satz-assoziative Struktur sein und kann in einem Cache oder einer Speichervorrichtung gespeichert werden, die von einer Speichersteuerung verwendet wird.
  • Im Folgenden ist eine beispielhafte Beschreibung einer Operation eines Ausführungsbeispiels bereitgestellt. Der Empfang einer Schreib-Anforderung an Speichersteuerung 300 zum Modifizieren von Prüfpunktdaten (nicht gezeigt) bewirkt eine Aktualisierung eines Trackers auf Cache-Zeilen- oder Seiten-Ebene. Beispielsweise wird geprüft, ob Änderungen an einer der Schreib-Anforderung zugeordneten Adresse auf einer Seitenebene nachverfolgt werden. Beispielsweise wird geprüft, ob ein Eintrag, der die zugeordnete Adresse nachverfolgt, im dichten (groben) Page-Tracker-Cache 320 vorhanden ist. Wenn ein gültiger Eintrag in dem dichten (groben) Seiten-Tracker-Cache 320 vorhanden ist, dann wird eine Änderung auf der Seitenebene bereits nachverfolgt und es sind keine Aktualisierungen für den Tracker auf Seiten- oder Cache-Zeilen-Ebene vorzunehmen. Die Änderung kann nachverfolgt werden, wenn ein modifiziertes Bit in dem zugeordneten groben Eintrag gesetzt ist.
  • Wenn jedoch ein Eintrag in dem dichten (groben) Seiten-Tracker-Cache 320 nicht vorhanden ist, ruft die Speichersteuerung 300 einen Eintrag aus dem dichten (groben) Seiten-Tracker-Cache im Speicher 301 (z. B. DRAM-Array) zur Speicherung im dichten (groben) Seiten-Tracker-Cache 330 im Speicher 301 ab. Wenn in dem dichten (groben) Seiten-Tracker 330 im Speicher 301 kein gültiger Eintrag vorhanden ist, kann die Speichersteuerung 300 damit fortfahren, Änderungen an den Prüfpunktdaten auf Cache-Zeilen-Ebene nachverfolgen.
  • Für die Nachverfolgung auf Cache-Zeilen-Ebene unter Verwendung des schwach besetzten modifizierten Seiten-Tracker-Caches 310 prüft die Speichersteuerung 300, ob ein gültiger Eintrag für eine der Schreib-Anforderung zugeordnete Adresse vorhanden ist. Wenn ein gültiger Eintrag mit einem modifizierten Bit für die zugeordnete Adresse im schwach besetzten modifizierten Seiten-Tracker-Cache 310 vorhanden ist, dann wurde die Änderung an Prüfpunktdaten zuvor berücksichtigt und keine Aktualisierungen für den Tracker auf Seiten- oder Cache-Zeilen-Ebene wurden vorgenommen. Wenn ein gültiger Eintrag im spärlichen modifizierten Seiten-Tracker-Cache 310 vorhanden ist, aber die Änderung an Prüfpunktdaten zuvor nicht unter Verwendung eines modifizierten Bits nachverfolgt wurde, wird das modifizierte Bit geändert, um die Änderung auf der Cache-Zeilen-Ebene anzuzeigen.
  • Wenn im schwach besetzten modifizierten Seiten-Tracker-Cache 310 kein gültiger Eintrag mit einem modifizierten Bit für die der Schreib-Anforderung zugeordnete Adresse vorhanden ist, wird ein Eintrag mit einem modifizierten Bit erzeugt, das der Adresse zugeordnet ist, die angibt, dass die Cache-Zeile modifiziert wurde. Zusätzlich wird ein gültiges Bit für den Eintrag auf „gültig“ gesetzt und die Speichersteuerung 300 speichert den Eintrag in den schwach besetzten (feinkörnigen) Page-Tracker-Cache 310.
  • In einigen Fällen erfordert das Hinzufügen eines Eintrags in den schwach besetzten modifizierten Seiten-Tracker-Cache 310 oder den dichten modifizierten Seiten-Tracker-Eintrag 320 den Ausschluss eines gültigen Eintrags. In einigen Fällen kann ein ungültiger Eintrag überschrieben werden und es findet kein Ausschluss statt. Ein Eintrag kann aus dem schwach besetzten modifizierten Seiten-Tracker-Cache 310 oder dem dichten modifizierten Seiten-Tracker-Eintrag 320 entfernt werden, um Platz für das Hinzufügen eines Eintrags zu schaffen. Um beispielsweise einen gültigen Eintrag aus dem schwach besetzten (feinkörnigen) Seiten-Tracker-Cache 310 auszuschließen, um einen neuen Eintrag hinzuzufügen, wird ein Eintrag in den dichten (grobkörnigen) Seiten-Tracker-Cache 320 ausgeschlossen (was auch zum Ausschluss eines gültigen Eintrags in den dichten (grobkörnigen) Seiten-Tracker-Cache 330 im Speicher 301 führen kann). Die Auswahl eines auszuschließenden Eintrags kann sein ein oder mehrere von: am längsten nicht verwendeter (LRU), Cache-Zeilen- (oder feinkörniger) Eintrag mit einer größten Anzahl von Modifikationen, die durch modifizierte Bits angezeigt werden, oder ein Eintrag mit der geringsten Anzahl von Modifikationen, die durch modifizierte Bits angezeigt werden, oder irgendwelche anderen Ausschlusskriterien. Bei einem Beispiel kann der Ausschluss eines feinkörnigen Eintrags darauf basieren, ob eine Schwellenzahl von Cache-Zeilen (z. B. 32 Cache-Zeilen von 64 möglichen Cache-Zeilen) modifiziert wird und Änderungen auf Seitenebene nachverfolgt werden. Der Ausschluss eines feinkörnigen Eintrags aus dem schwach besetzten (feinkörnigen) Seiten-Tracker-Cache 310 kann dazu führen, dass Änderungen auf einer Seiten-(grobkörnig) Ebene nachverfolgt werden.
  • Bei einigen Beispielen kann ein zusätzlicher Sicherungsspeicher im Speicher verwendet werden, um den schwach besetzen modifizierten Seiten-Tracker-Cache 310 zu sichern. So können z. B. ausgeschlossene Einträge aus dem schwach besetzten modifizierten Seiten-Tracker-Cache 310 in dem Sicherungsspeicher gespeichert werden. Eine Kopie des schwach besetzten modifizierten Seiten-Tracker-Caches 310 kann in dem Sicherungsspeicher gespeichert werden.
  • Der Ausschluss von Cache-Zeilen-Ebene-Einträgen kann zwischen Schreib-Anforderungen zu einem bestimmten Zeitpunkt erfolgen, um den schwach besetzten modifizierten Seiten-Tracker-Cache 310 oder den dichten modifizierten Seiten-Tracker-Cache 320 zu bereinigen und Platz bereitzustellen. Einträge im schwach besetzten (feinkörnigen) Seiten-Tracker-Cache 310 können als ungültig markiert werden und Änderungen auf grober Ebene im dichten modifizierten Seiten-Tracker-Cache 320 nachverfolgt werden.
  • 3B zeigt ein System für ein Nachverfolgen von Änderungen an Prüfpunktdaten unter Verwendung von zwei oder mehreren Ebenen. Zum Beispiel kann zumindest ein Feinstkörnige-Ebene-Tracker (z. B. Cache-Zeilen-Ebene), der Nächstfeinstkörnige-Ebene-Tracker (feinste+1 Ebene-Tracker) (z. B. mehrere Cache-Zeilen-Ebenen), ein dichter (Gröbste-Ebene-) Tracker (z. B. mehrere Seiten) verwendet werden. Beispielsweise kann die Nachverfolgung auf einer oder mehreren einer Cache-Zeilen-Ebene (deren Größe in irgendeiner Größe konfiguriert sein kann (z. B. 32 Bytes, 64 Bytes, 128 Bytes, 256 Bytes und Vielfache davon), Gruppen von mehreren Cache-Zeilen, Seiten-Ebene (z. B. 4096 Bytes und Vielfache davon) oder Gruppen von mehreren Seiten-Ebenen erfolgen.
  • 4A-4C stellen einen beispielhaften Prozess zumindest für ein Nachverfolgen von Änderungen an Prüfpunktdaten auf feinkörniger und/oder grobkörniger Ebene dar. Bezug nehmend auf 4A, wird bei 402 eine Schreib-Anforderung zum Schreiben (oder Ändern) von Prüfpunktdaten an einer bestimmten Adresse empfangen. Die Schreib-Anforderung kann eine Adresse in Cache-Zeilen-Granularität angeben (z. B. eine Startadresse für eine Region, die 64 Bytes groß ist (oder andere Größen)). Eine Speichersteuerung, die von einer CPU und/oder einer Speichervorrichtung verwendet wird, kann die Schreib-Anforderung empfangen. Prüfpunkte können von einer VM zu einem geeigneten Zeitpunkt in ihrer Ausführung initiiert werden oder können periodisch von dem System initiiert werden. Wenn ein Prüfpunkt initiiert wird, werden die nachverfolgten modifizierten Daten von den schwach besetzten und dichten Trackern gespeichert. Das Nachverfolgen modifizierter Daten basiert darauf, ob die Adresse zu einer nachverfolgten Speicherregion gehört.
  • Bei 404 wird festgestellt, ob ein Grobe-Ebene-Tracker-Cache einen Eintrag umfasst, der einer Adresse zugeordnet ist, die der Schreib-Anforderung zugeordnet ist. Der Grobe-Ebene-Tracker-Cache kann von der Speichersteuerung oder irgendeiner anderen Vorrichtung (z. B. Beschleuniger, Netzwerkschnittstelle, CPU usw.) verwendet werden. Wenn der Grobe-Ebene-Tracker-Cache einen Eintrag umfasst, der der Adresse zugeordnet ist, die der Schreib-Anforderung zugeordnet ist (ein Treffer), wird der Prozess mit 406 fortgesetzt. Wenn der Grobe-Ebene-Tracker-Cache keinen Eintrag umfasst, der der Adresse zugeordnet ist, die der Schreib-Anforderung zugeordnet ist (ein Fehlschlag), fährt der Prozess mit 408 fort.
  • Bei 406 wird festgestellt, ob ein Regionsmodifikationsindikator in dem Eintrag aus dem Grobe-Ebene-Tracker-Cache anzeigt, dass die der Schreib-Anforderung zugeordnete Adressregion als modifiziert identifiziert wurde. Beispielsweise kann der Regionsmodifikationsindikator als ein oder mehrere Bits verkörpert werden, die anzeigen, ob eine Speicherregion modifiziert wurde. Die Speicherregion kann Prüfpunktdaten speichern, und der Regionsmodifikationsindikator zeigt an, ob die Prüfpunktdaten in der Region von seit einer früheren Prüfpunktreplikationsprozedur oder zu irgendeinem Zeitpunkt geändert wurden. Die Speicherregion kann eine Seitengröße sein.
  • Wenn der Regionsmodifikationsindikator in dem Eintrag angibt, dass die der Schreib-Anforderung zugeordnete Adressregion als geändert identifiziert wurde, kann der Prozess beendet werden, da Änderungen an den Prüfpunktdaten zumindest auf einer groben Ebene (z. B. auf Seitenebene) bereits berücksichtigt sind. Wenn jedoch der Regionsmodifikationsindikator in dem Eintrag nicht angibt, dass die der Schreib-Anforderung zugeordnete Adressregion als geändert identifiziert wurde, wird der Prozess mit 412 (4B) fortgesetzt.
  • Bei 408 wird festgestellt, ob ein Ausschluss eines Eintrags aus dem grobkörnigen Tracker-Cache erforderlich ist, damit ein grobkörniger Eintrag dem grobkörnigen Tracker-Cache hinzugefügt werden kann. Zum Beispiel kann ein Ausschluss angewendet werden, wenn der auszuschließende Eintrag aus dem Grobe-Ebene-Tracker ein gültiger Eintrag ist. Ein ungültiger Eintrag in dem grobkörnigen Tracker-Cache wird nicht ausgeschlossen und kann überschrieben oder wiederverwendet werden, um Änderungen an der Adresse, die Schreibadresse zugeordnet ist, nachzuverfolgen. Wenn ein Ausschluss nicht erforderlich ist, wird der Prozess mit 410 fortgesetzt. Wenn ein Ausschluss auftreten soll, wird der Prozess mit 430 fortgesetzt.
  • Bei 410 wird ein Eintrag aus dem Grobe-Ebene-Tracker im Speicher geholt und in den Grobe-Ebene-Tracker-Cache eingefügt. Der geholte Eintrag kann einem Änderungs-Tracker für zumindest die der Schreib-Anforderung zugeordnete Adresse entsprechen und kann eine grobe Speicherebene umfassend die der Schreib-Anforderung zugeordnete Speicherregion als Speichern aktualisierter Prüfpunktdaten identifizieren. Bei einigen Beispielen umfasst der dichte Tracker im Speicher für jede Seite im physischen Speicher ein Bit, sodass es für jede Seite immer einen entsprechenden Eintrag in dem dichten Tracker geben wird. Der Eintrag kann einen ausgeschlossenen Eintrag oder einen ungültigen Eintrag überschreiben. Der Eintrag wird in dem Grobe-Ebene-Tracker-Cache als gültig identifiziert. Der Prozess wird fortgesetzt mit 406 ( 4A).
  • Bei 430 wird der Eintrag, der aus dem Grobe-Ebene-Tracker-Cache ausgeschlossen wurde, in den Grobe-Ebene-Tracker im Speicher geschrieben. Ein Eintrag kann zum Ausschluss ausgewählt werden basierend auf einer Vielzahl von Kriterien, umfassend ein oder mehrere von: am längsten nicht Verwendeter (LRU) oder ein Eintrag mit der geringsten Anzahl von Modifikationen, die durch modifizierte Bits angezeigt werden, oder irgendwelche anderen Ausschlusskriterien. In einigen Fällen kann der ausgeschlossene Eintrag in dem Grobe-Ebene-Tracker-Cache als ungültig markiert werden. Der Prozess wird fortgesetzt mit 410.
  • Bezug nehmend auf 4B wird bei 412 festgestellt, ob es einen Eintrag in dem feinkörnigen Änderungs-Tracker-Cache gibt, der einer der Schreib-Anforderung zugeordneten Adresse entspricht. Wenn es einen gültigen Eintrag in dem feinkörnigen Änderungs-Tracker-Cache gibt, der einer der Schreib-Anforderung zugeordneten Adresse entspricht, wird der Prozess mit 414 fortgesetzt. Wenn es keinen Eintrag in dem feinkörnigen Änderungs-Tracker-Cache gibt, der einer der Schreib-Anforderung zugeordneten Adresse entspricht, wird der Prozess mit 418 fortgesetzt. Wenn bei einigen Beispielen ein Eintrag in dem feinkörnigen Änderungs-Tracker-Cache ungültig ist, wird der Eintrag als nicht vorhanden betrachtet und der Prozess wird mit 418 fortgesetzt.
  • Bei 414 wird festgestellt, ob der gültige Eintrag in dem feinkörnigen Änderungs-Tracker-Cache, der einer der Schreib-Anforderung zugeordneten Adresse entspricht, anzeigt, dass eine Modifikation vorgenommen wurde. Beispielsweise kann der Regionsmodifikationsindikator als ein oder mehrere Bits verkörpert werden, die anzeigen, ob eine Speicherregion modifiziert wurde, auf die die Schreib-Anforderung abzielt. Die Speicherregion kann ein Speicher einer Cache-Zeile oder eine Region sein, die kleiner ist als diejenige, die von den Regionsmodifikationsindikatoren der Einträge in dem Grobe-Ebene-Tracker nachverfolgt wird, oder eine andere Größe. Die Speicherregion kann Prüfpunktdaten speichern, und der Regionsmodifikationsindikator zeigt an, ob Prüfpunktdaten in der Region seit einer früheren Prüfpunktprozedur oder zu irgendeinem Zeitpunkt geändert wurden.
  • Bei 414 kann, wenn der Regionsmodifikationsindikator in dem gültigen Eintrag angibt, dass die der Schreib-Anforderung zugeordnete Adressregion als modifiziert identifiziert wurde, der Prozess beendet werden, da Änderungen an den Prüfpunktdaten zumindest auf einer feinkörnigen Ebene (z. B. auf Cache-Zeilen-Ebene) bereits berücksichtigt sind. Jedoch, bei 414, wenn der Regionsmodifikationsindikator in dem gültigen Eintrag nicht angibt, dass die der Schreib-Anforderung zugeordnete Adressregion als geändert identifiziert wurde, wird der Prozess mit 416 fortgesetzt.
  • Bei 416 wird der Eintrag in dem feinkörnigen Änderungs-Tracker-Cache, der einer der Schreib-Anforderung zugeordneten Adresse entspricht, abgeändert, um anzuzeigen, dass an der der Schreib-Anforderung zugeordneten Adresse eine Modifikation vorgenommen wurde. Beispielsweise kann der Regionsmodifikationsindikator auf 1 (oder 0) gesetzt werden, um anzuzeigen, dass an der der der Schreib-Anforderung zugeordneten Adresse eine Modifikation vorgenommen wurde. Bei einigen Beispielen erfolgt die Nachverfolgung von Änderungen unter Verwendung eines Eintrags in dem feinkörnigen Änderungs-Tracker-Cache, der einer der Schreib-Anforderung zugeordneten Adresse entspricht, nur dann, wenn ein modifiziertes Bit in einem Grobe-Ebene-Tracker, der der Schreib-Anforderung zugeordnet ist, zurückgesetzt wird (um keine Modifikation anzuzeigen).
  • Bei 418 wird festgestellt, ob ein Eintrag aus dem feinkörnigen Änderungs-Tracker-Cache ausgeschlossen werden soll, um zu ermöglichen, dass ein neuer Eintrag dem feinkörnigen Änderungs-Tracker-Cache hinzugefügt werden kann. Wenn kein Eintrag aus dem feinkörnigen Änderungs-Tracker-Cache ausgeschlossen werden soll, wird der Prozess mit 420 fortgesetzt. Wenn ein Eintrag aus dem feinkörnigen Änderungs-Tracker-Cache ausgeschlossen werden soll, wird der Prozess mit 440 (4C) fortgesetzt.
  • Bei 420 wird ein Eintrag dem feinkörnigen Änderungs-Tracker-Cache hinzugefügt und der neue Eintrag wird aktualisiert, um anzuzeigen, dass an der der Schreib-Anforderung zugeordneten Adresse eine Modifikation vorgenommen wurde. Das Hinzufügen eines Eintrags kann beispielsweise ein Hinzufügen eines neuen Eintrags zu dem feinkörnigen Änderungs-Tracker-Cache oder ein Verwenden eines ungültigen Eintrags (nach dem Löschen seiner Indikatoren, dass eine Modifikation vorgenommen wurde) umfassen. Ein Regionsmodifikationsindikator kann gesetzt werden, um anzuzeigen, dass die der Schreib-Anforderung zugeordnete Adresse modifiziert wurde. Ein Tag für den Eintrag kann als signifikante Bytes der Adresse, die der Schreib-Anforderung zugeordnet ist, gesetzt werden. Für den Eintrag kann ein gültiger Indikator gesetzt werden, um anzuzeigen, der Eintrag ist gültig. Bei einigen Beispielen erfolgt die Nachverfolgung von Änderungen unter Verwendung eines Eintrags in dem feinkörnigen Änderungs-Tracker-Cache, der einer der Schreib-Anforderung zugeordneten Adresse entspricht, nur dann, wenn ein modifiziertes Bit in einem Grobe-Ebene-Tracker, der der Schreib-Anforderung zugeordnet ist, zurückgesetzt wird (um keine Modifikation anzuzeigen).
  • Bezug nehmend auf 4C wird bei 440 festgestellt, ob ein Eintrag aus dem Grobe-Ebene-Tracker-Cache ausgeschlossen werden soll, um Platz für das Nachverfolgen von Aktualisierungen auf der groben Ebene anstatt der feinkörnigen Ebene zu schaffen aufgrund des Ausschlusses eines Eintrags aus dem feinkörnigen Änderungs-Tracker-Cache. Wenn beispielsweise ein ungültiger Eintrag in dem Grobe-Ebene-Tracker-Cache vorhanden ist, kann der ungültige Eintrag überschrieben werden und es ist kein Ausschluss erforderlich. Wenn kein ungültiger Eintrag vorliegt, ist ein Eintrag auszuschließen. Wenn ein Eintrag aus dem Grobe-Ebene-Tracker-Cache ausgeschlossen werden soll, um Platz für die Nachverfolgung von Aktualisierungen auf der groben Ebene zu schaffen, dann wird der Prozess mit 442 fortgesetzt. Wenn ein Eintrag aus dem grobkörnigen Tracker-Cache nicht ausgeschlossen werden soll, um Platz für die Nachverfolgung von Aktualisierungen auf der grobkörnigen Ebene zu schaffen, wird der Prozess mit 444 fortgesetzt.
  • Bei 442 wird ein Eintrag für den Ausschluss aus dem Grobe-Ebene-Tracker-Cache ausgewählt und der ausgeschlossene Eintrag kann in dem Grobkorn-Tracker im Speicher gespeichert werden. Ein potenzieller Eintrag für einen Ausschluss kann ein Eintrag sein, bei dem die größte Anzahl von Regionsmodifikationsindikatoren als positiv (geändert) gesetzt wurde, oder irgendein anderes Ausschlusskriterium. Bei einigen Beispielen können Einträge, bei denen es sich um Kandidaten für einen Ausschluss handelt, identifiziert werden, bevor ein Eintrag ausgeschlossen werden soll.
  • Bei 444 wird ein Eintrag dem Grobe-Ebene-Tracker-Cache hinzugefügt und der hinzugefügte Eintrag wird aktualisiert, um anzuzeigen, dass an der der Schreib-Anforderung zugeordneten Adresse eine Modifikation vorgenommen wurde. Das Hinzufügen eines neuen Eintrags kann beispielsweise ein Hinzufügen eines neuen Eintrags zu dem Grobe-Ebene-Tracker-Cache oder ein Verwenden eines ungültigen Eintrags (nach dem Löschen seiner Indikatoren, dass eine Modifikation vorgenommen wurde) umfassen. Ein Regionsmodifikationsindikator kann gesetzt werden, um anzuzeigen, dass die der Schreib-Anforderung zugeordnete Adresse modifiziert wurde. Ein Tag für den Eintrag kann als signifikante Bytes der Adresse, die der Schreib-Anforderung zugeordnet ist, gesetzt werden. Für den Eintrag kann ein gültiger Indikator gesetzt werden, um anzuzeigen, der Eintrag ist gültig.
  • Als Teil einer Prüfpunktreplikationsprozedur werden der feinkörnige Tracker-Cache, der Grobe-Ebene-Tracker-Cache und der Grobe-Ebene-Tracker im Speicher von einem Virtual Machine Manager (VMM), Hypervisor, Orchestrator oder einer anderen Software überprüft, um festzustellen, welche speicheradressierbaren Teile der Prüfpunktdaten sich geändert haben. Die Prüfpunktdaten mit den entsprechenden Regionsmodifikationsindikatoren, die irgendeinen Tracker setzen, werden aus der Speichervorrichtung ausgelesen und über das Netzwerk an eine Zielspeichervorrichtung gesendet, die einer Replikat-VM oder migrierten VM zugeordnet ist. Es wird darauf hingewiesen, dass bei einigen Beispielen ein Pointer an ein Ziel (in Bezug auf geänderte oder aktualisierte Prüfpunktdaten) gesendet werden kann, anstatt Daten zu senden, und dass der Empfänger bestimmen kann, wann ein Abruf des Inhalts geplant werden soll und eine RDMA- (Remote Direct Memory Access-) Operation verwenden kann, um den Inhalt abzurufen.
  • Bei einigen Beispielen kann nach dem Start eines Prüfpunktreplikationsprozesses (z. B. nach einem Trigger, um geänderte Abschnitte eines bestimmten Teils oder Teilstücks der Prüfpunktdaten zu bestimmen und zu senden), wenn es neue, von einem Prozessor ausgegebene Schreibvorgänge gibt, versucht werden, eine Aufrechterhaltung einer Reihenfolge und Kohärenz der neuen Schreibvorgänge mit dem Prüfpunktreplikationsprozess zu erreichen. Nachdem der Prüfpunktreplikationsprozess gestartet wurde, schreibt ein Prozessor alle schmutzigen (geänderten) Blöcke oder Regionen in den Caches in den Speicher zurück und schreibt alle Einträge des dichten (grobkörnigen) modifizierten Seiten-Tracker-Caches in den modifizierten Seiten-Tracker-Cache im Speicher zurück. Prüfpunktdaten in dem Speicher mit seinem entsprechenden modifizierten Bit, das entweder in dem schwach besetzten (feinkörnigen) modifizierten Seiten-Tracker-Cache oder dem dichten (grobkörnigen) modifizierten Seiten-Tracker gesetzt ist, werden aus dem Speicher gelesen und an einen Zielspeicher gesendet.
  • Bevor alle schmutzigen Daten in einem Ebene-1- (L1-; L = Level = Ebene) Cache in die nächste Cache-Ebene (z. B. Ebene-2- (L2-) Cache) zurückgeschrieben wurden, dürfen die Daten in der Speicherwarteschlange, die nach Beginn des Prüfpunkts ausgegeben wurde, nicht in den L1 -Cache geschrieben werden. Wenn oder nachdem alle schmutzigen Daten in dem L1-Cache in den L2-Cache geschrieben wurden, können jedoch neue Daten in dem LI-Cache gespeichert werden. Wenn oder nachdem alle schmutzigen Daten in dem Nächste-Ebene-Cache (z. B. L2-Cache) in einen weiteren Nächste-Ebene-Cache (z. B. Ebene-3- (L3-) Cache) geschrieben wurden, können die zurückgeschriebenen schmutzigen Daten aus dem LI-Cache ausgeschlossen und in den L2-Cache geschrieben werden. Wenn oder nachdem alle schmutzigen Daten in dem L2-Cache in den L3-Cache geschrieben wurden, können die zurückgeschriebenen schmutzigen Daten aus dem L1-Cache ausgeschlossen und in den L2-Cache geschrieben werden. Schmutzige Daten in dem L3-Cache können in den Speicher geschrieben werden, und die zurückgeschriebenen schmutzigen Daten können aus dem L2-Cache ausgeschlossen und in den L3-Cache geschrieben werden. Dementsprechend kann die Reihenfolge der neuen Schreib-Anforderungen und des Prüfpunktreplikationsprozesses durch die Verwendung eines Wasserfall-Ansatzes zwischen den Cache-Tiers beibehalten werden.
  • Bei einigen Beispielen kann eine Entität (z. B. VM oder Container), deren Prüfpunktdaten überwacht werden, vom Modifizieren oder Schreiben in Regionen, die auf Änderungen überwacht werden, so lange zurückgehalten (quiesce) werden, bis ein Änderungssatz identifiziert wird und der geänderte Satz an anderer Stelle übertragen oder zwischengespeichert wird (z. B. als Teil eines Prüfpunktreplikationsprozesses).
  • Es kann verschiedene andere Adressabbildungsschemata für ein Speichersystem geben. Anpassungen des Datenabbildungsschemas der feinkörnigen und groben modifizierten Seiten-Trackers an verschiedene Adressabbildungsschemata über Speichersteuerungen hinweg können verwendet werden. 5 stellt ein System dar, das mehrere Speichersteuerungen verwendet. Bei einigen Beispielen verwendet eine Speichersteuerung ihren eigenen feinkörnigen und groben modifizierten Seiten-Tracker. Es ist nicht erforderlich, dass die Daten der Schreib-Anforderung und ihre entsprechenden Tracker von derselben Speichersteuerung gesteuert werden, derart, dass eine Speichersteuerung Seiten nachverfolgen kann, die von einer anderen Speichersteuerung gemanagt werden. Zum Beispiel wird eine „A Schreiben“ -Anforderung an den Speicher gesendet. Die Anforderung wird an die Speichersteuerung 1 gesendet, auf den ihre Adresse A abgebildet wird. Wenn die entsprechenden feinkörnigen und grobkörnigen modifizierten Seiten-Tracker von Adresse A auf eine andere Speichersteuerung (Speichersteuerung 2) abgebildet werden, sendet ein separater Befehl die Adresse von A Schreiben an Speichersteuerung 2, um auf den feinkörnigen und grobkörnigen modifizierten Seiten-Tracker zuzugreifen, auf den Adresse A abgebildet ist. Dementsprechend können Änderungs-Tracker zu Prüfpunktdaten auf feinkörniger und grober Ebenen auftreten, obwohl die Feinkörnige- und Grobe-Ebene-Änderungsnachverfolgung von einer anderen Speichersteuerung gemanagt wird. Eine solche Nachverfolgung ermöglicht es der Systemsoftware, effizienter zu arbeiten, indem aneinandergrenzende Regionen festgelegt und übertragen werden können, selbst wenn die Daten für Effizienz über mehrere Speichersteuerungen hinweg verteilt (striped) sind.
  • 6 stellt ein System dar, das mehrere Speichersteuerungen verwendet. Bei einigen Beispielen verfolgen feinkörnige und grobkörnige modifizierte Seiten-Tracker die Informationen der Prüfpunktdaten, die ihrer eigenen Speichersteuerung zugeordnet sind, nach. Beispielsweise werden modifizierte Seiten-Tracker, die von Speichersteuerung 1 verwendet werden, verwendet, um die Speicherdaten nachzuverfolgen, die von Speichersteuerung 1 gesteuert werden. In diesem Fall wird jeder Eintrag in den feinkörnigen und grobkörnigen modifizierten Seiten-Trackern verwendet, um die modifizierten Bits in der gleichen Zeile (row) nachzuverfolgen. Eine Zeile gibt die Einheit an, in der Speicherzellen aktiviert werden. Beispielsweise bedeutet eine 8KB-Zeile, dass vor dem Lesen einer Cache-Zeile (cache line) die gesamte 8KB-Zeile, die diese Cache-Zeile umfasst, aktiviert wird. Die Aktivierungs-Latenz und -Leistung wird amortisiert, wenn mehrere Cache-Zeilen in der Zeile gelesen/geschrieben werden, bevor sie geschlossen oder vorgeladen wird und eine weitere Zeile für die nächste zu lesende/schreibende Cache-Zeile geöffnet wird. Der feinkörnige und der grobe modifizierte Seiten-Tracker werden als feinkörniger und grober modifizierter „Zeilen“-Tracker verwendet. Wenn der Speicher einer einzelnen Seite von mehreren Speichersteuerungen gemanagt wird, verfolgt der von jeder Speichersteuerung verwendete feinkörnige Tracker Modifikationen nach, die nur auf diese Speichersteuerung abgebildet werden, während der Grobkörnige-Ebene-Seiten-Tracker-Cache mit dem grobkörnigen Page-Tracker-Cache im Speicher kohärent bleiben würde.
  • Es kann für Systemsoftware (z. B. den VMM) wünschenswert sein, mehrere unterschiedliche Speicherregionen (z. B. für verschiedene VMs) mit unterschiedlichen Intervallen zu überwachen, um die Speicheränderungssätze zu identifizieren. Einige Ansätze ermöglichen es der Systemsoftware, grobkörnige Mechanismen (wie z. B. Extended Page Table (EPT) accessed/dirty-(A/D-) Bits) zu verwenden, um Regionen zu bestimmen, die potenziell modifiziert wurden, und bereichs-basierte Cache-Flushs nur dieser Regionen auszuführen, bevor einer der Mehrere-Ebene-Änderungs-Tracker, umfassend feinkörnige Tracker, konsultiert wird. Infolgedessen kann mehr von dem Cache-Inhalt intakt bleiben und die Auswirkungen auf Software reduziert werden, die nicht nach Prüfpunkte geprüft wurde.
  • Zusätzlich zu dem Identifizieren modifizierter Regionen ändern verschiedene Ausführungsbeispiele nach einer erfolgreichen Prüfpunktreplikation Bereiche, die als modifiziert zu markieren sind, um unverändert zu bleiben, oder markieren Einträge als ungültig. Für die Gleichzeitigkeit ist es erforderlich, dass dies bereichsspezifisch ist. Um bei der genauen Identifizierung von Änderungssätzen zu helfen, stellt die Systemsoftware typischerweise sicher, dass keine CPU oder I/O-Vorrichtung nachverfolgte Regionen während des Change Harvesting / Tracker Reset (Änderungs-Ernten / Tracker-Rücksetzen) modifiziert.
  • Bei einigen Beispielen wird zusätzlich oder alternativ zu den hier beschriebenen Ausführungsbeispielen die grobkörnige Nachverfolgung unter Verwendung einer Speichermanagementeinheit- (MMU-; memory management unit) Vorrichtung oder -Prozess ausgeführt. Wenn feinkörnige Tracker für eine Region vorhanden sind, dann werden feinkörnige Modifikationsdaten verwendet. Ansonsten werden die grobkörnigen Informationen von dem konventionellen MMU-Mechanismus accessed/dirty- (A/D-) Bits oder softwareprotokollierten ersten Modifikationen an schreibgeschützten Seiten verwendet. Beispielsweise können Seiten-Ebene-A/D-Informationen in der MMU konsultiert werden, bevor ein feinkörniger Tracker verwendet wird.
  • 7 stellt ein System dar. Das System kann hierin beschriebene Ausführungsbeispiele verwenden, um Daten (z. B. aktualisierte Abschnitte von Prüfpunktdaten oder andere aktualisierte Abschnitte von Inhalten) an das und von dem System an eine andere Vorrichtung über ein Gitter (mesh) oder eine Struktur (fabric) bereitzustellen. Ein System 700 umfasst einen Prozessor 710, der eine Verarbeitung, ein Operationsmanagement und eine Ausführung von Anweisungen für das System 700 bereitstellt. Der Prozessor 710 kann irgendeine Art von Mikroprozessor, zentraler Verarbeitungseinheit (CPU), Grafikverarbeitungseinheit (GPU), Verarbeitungskern oder anderer Verarbeitungshardware, um Verarbeitung für das System 700 bereitzustellen, oder eine Kombination von Prozessoren umfassen. Der Prozessor 710 steuert den Gesamtbetrieb des Systems 700 und kann ein oder mehrere programmierbare Allzweck- oder Spezialzweck-Mikroprozessoren, digitale Signalprozessoren (DSPs; digital signal processors), programmierbare Steuerungen, anwendungsspezifische integrierte Schaltungen (ASICs; application specific integrated circuits), programmierbare Logikbauelemente (PLDs; programmable logic devices) oder Ähnliches oder eine Kombination solcher Bauelemente sein oder umfassen.
  • Bei einem Beispiel umfasst das System 700 eine Schnittstelle 712, die mit dem Prozessor 710 gekoppelt ist, was eine Höhere-Geschwindigkeit-Schnittstelle oder eine Hoher-Durchsatz-Schnittstelle für Systemkomponenten darstellen kann, die Höhere-Bandbreite-Verbindungen benötigt, wie beispielsweise ein Speicherteilsystem 720 oder Grafikschnittstellen-Komponenten 740 oder Beschleuniger 742. Die Schnittstelle 712 repräsentiert eine Schnittstellenschaltung, die eine eigenständige Komponente oder auf einem Prozessor-Die integriert sein kann. Falls vorhanden, bildet die Grafikschnittstelle 740 eine Schnittstelle mit Grafikkomponenten, um an einen Benutzer des Systems 700 eine visuelle Anzeige bereitzustellen. Bei einem Beispiel kann die Grafikschnittstelle 740 eine hochauflösende (HD; high definition) Anzeige treiben, die an einen Nutzer eine Ausgabe bereitstellt. Hochauflösend kann sich auf eine Anzeige beziehen, die eine Pixeldichte von ungefähr 100 PPI (pixels per inch; Pixel pro Zoll) oder größer aufweist, und kann Formate wie beispielsweise Full HD (z. B. 1080p), Retina-Displays (Retina-Anzeigen), 4K (ultra high definition oder UHD; ultrahochauflösend) oder andere umfassen. Bei einem Beispiel kann die Anzeige eine Touchscreen-Anzeige umfassen. Bei einem Beispiel erzeugt die Grafikschnittstelle 740 eine Anzeige basierend auf Daten, die in dem Speicher 730 gespeichert sind oder basierend auf Operationen, die von dem Prozessor 710 ausgeführt werden, oder beidem. Bei einem Beispiel erzeugt die Grafikschnittstelle 740 eine Anzeige basierend auf Daten, die in dem Speicher 730 gespeichert sind oder basierend auf Operationen, die von dem Prozessor 710 ausgeführt werden, oder beidem.
  • Die Beschleuniger 742 können eine Feste-Funktion-Offload-Engine sein, auf die ein Prozessor 710 zugreifen kann oder die von einem selben verwendet werden kann. Beispielsweise kann ein Beschleuniger unter den Beschleunigern 742 Kompressionsfähigkeit (DC), Kryptographiedienste wie beispielsweise Public-Key-Verschlüsselung (PKE; public key encryption), Chiffrieren, Hash-/Authentifizierung-Fähigkeiten, Entschlüsselung oder andere Fähigkeiten oder Dienste bereitstellen. Bei einigen Ausführungsbeispielen stellt ein Beschleuniger unter den Beschleunigern 742 zusätzlich oder alternativ die hierin beschriebenen Feldauswahlsteuerungsfähigkeiten bereit. In einigen Fällen können die Beschleuniger 742 in eine CPU-Buchse integriert sein (z. B. ein Verbinder zu einer Hauptplatine oder Schaltungsplatine, die eine CPU umfasst und eine elektrische Schnittstelle mit der CPU bereitstellt). Beispielsweise können die Beschleuniger 742 einen Einzel- oder Multi-Kern-Prozessor, eine Grafikverarbeitungseinheit, eine logische Ausführungseinheit, Ein- oder Multi-Level-Cache, funktionale Einheiten verwendbar zur unabhängigen Ausführung von Programmen oder Threads, anwendungsspezifische integrierte Schaltungen (ASICs), Neuronales-Netzwerk-Prozessoren (NNPs; neural network processors), programmierbare Steuerlogik und programmierbare Verarbeitungselemente wie beispielsweise feldprogrammierbare Gate-Arrays (FPGAs) umfassen. Die Beschleuniger 742 können mehrere neuronale Netzwerke, CPUs, Prozessorkerne, Allzweck-Grafikverarbeitungseinheiten bereitstellen oder Grafikverarbeitungseinheiten können für eine Verwendung durch Künstliche-Intelligenz- (KI-; artificial intelligence (AI)) oder Maschinelles-Lernen- (ML; machine learning) Modelle zur Verfügung gestellt werden. Beispielsweise kann das KI-Modell irgendeines oder eine Kombination verwenden oder umfassen von: einem Bestärkendes-Lernen-Schema, einem Q-Lernen-Schema, einem Deep-Q-Lernen oder einem Asynchronous Advantage Actor-Critic (A3C), einem kombinatorischen neuronalen Netzwerk, einem rekurrenten neuronalen Netzwerk oder einem anderen KI- oder ML-Modell. Mehrere neuronale Netzwerke, Prozessorkerne oder Grafikverarbeitungseinheiten können für die Verwendung durch KI- oder ML-Modelle zur Verfügung gestellt werden.
  • Ein Speicherteilsystem 720 repräsentiert den Hauptspeicher des Systems 700 und stellt Speicherung für Code, der durch den Prozessor 710 auszuführen ist, oder Datenwerte, die bei einem Ausführen einer Routine zu verwenden sind, bereit. Das Speicherteilsystem 720 kann eine oder mehrere Speichervorrichtungen 730 umfassen, wie beispielsweise Nur-Lese-Speicher (ROM; read-only memory), Flash-Speicher, eine oder mehrere Varianten von Direktzugriffsspeicher (RAM; random access memory), wie beispielsweise DRAM, oder andere Speichervorrichtungen, oder eine Kombination solcher Vorrichtungen. Ein Speicher 730 speichert und hostet unter anderem ein Betriebssystem (OS; operating system) 732, um eine Softwareplattform für eine Ausführung von Anweisungen in dem System 700 bereitzustellen. Zusätzlich können Anwendungen 734 auf der Software-Plattform des OS 732 von dem Speicher 730 ausgeführt werden. Die Anwendungen 734 repräsentieren Programme, die ihre eigene operative Logik zur Ausführung einer oder mehrerer Funktionen aufweisen. Prozesse 736 repräsentieren Mittel oder Routinen, die an das OS 732 oder eine oder mehrere Anwendungen 734 Hilfsfunktionen bereitstellen, oder eine Kombination. Das OS 732, die Anwendungen 734 und die Prozesse 736 stellen Software-Logik bereit, um Funktionen für das System 700 bereitzustellen. Bei einem Beispiel umfasst das Speicherteilsystem 720 eine Speichersteuerung 722, die eine Speichersteuerung zum Erzeugen und Ausgeben von Befehlen an den Speicher 730 ist. Es versteht sich, dass die Speichersteuerung 722 ein physischer Teil des Prozessors 710 oder ein physischer Teil der Schnittstelle 712 sein kann. Zum Beispiel kann die Speichersteuerung 722 eine integrierte Speichersteuerung sein, die auf einer Schaltung mit dem Prozessor 710 integriert ist.
  • Auch wenn nicht eigens dargestellt, versteht es sich, dass das System 700 einen oder mehrere Busse oder Bus-Systeme zwischen Vorrichtungen umfassen kann, wie beispielsweise einen Speicher-Bus, einen Grafik-Bus, Schnittstellen-Busse oder andere. Busse oder andere Signalleitungen können Komponenten kommunikativ oder elektrisch miteinander koppeln, oder die Komponenten sowohl kommunikativ als auch elektrisch koppeln. Busse können physikalische Kommunikationsleitungen, Punkt-zu-Punkt-Verbindungen, Brücken, Adapter, Steuerungen oder eine andere Schaltungsanordnung oder eine Kombination umfassen. Busse können zum Beispiel einen oder mehrere von einem Systembus, einem Peripheral Component Interconnect- (PCI-) Bus, einem Hyper Transport- oder Industry Standard Architecture- (ISA-) Bus, einem Small Computer System Interface- (SCSI-) Bus, einem universellen seriellen Bus (USB; universal serial bus) oder einem Institute of Electrical and Electronics Engineers (IEEE) Standard 1394-Bus (Firewire) umfassen.
  • Bei einem Beispiel umfasst das System 700 eine Schnittstelle 714, die mit der Schnittstelle 712 gekoppelt sein kann. Bei einem Beispiel repräsentiert die Schnittstelle 714 eine Schnittstellenschaltung, die eigenständige Komponenten und eine integrierte Schaltungsanordnung umfassen kann. Bei einem Beispiel koppeln mehrere Benutzerschnittstellenkomponenten oder Peripheriekomponenten oder beide mit der Schnittstelle 714. Eine Netzwerkschnittstelle 750 stellt an das System 700 die Fähigkeit bereit, über ein oder mehrere Netzwerke mit entfernten Vorrichtungen (z. B. Servern oder anderen Rechenvorrichtungen) zu kommunizieren. Die Netzwerkschnittstelle 750 kann einen Ethernet-Adapter, drahtlose Verbindungskomponenten, zelluläre Netzwerk-Verbindungskomponenten, USB (Universal Serial Bus) oder andere drahtgebundene oder drahtlose standard-basierte oder proprietäre Schnittstellen umfassen. Die Netzwerkschnittstelle 750 kann Daten an eine Vorrichtung, die in dem gleichen Rechenzentrum oder Rack ist, oder eine entfernte Vorrichtung übertragen, was das Senden von in dem Speicher gespeicherten Daten umfassen kann. Die Netzwerkschnittstelle 750 kann Daten von einer entfernten Vorrichtung empfangen, was das Speichern von empfangenen Daten in Speicher umfassen kann. Verschiedene Ausführungsbeispiele können in Verbindung mit der Netzwerkschnittstelle 750, dem Prozessor 710 und dem Speicherteilsystem 720 verwendet werden.
  • Bei einem Beispiel umfasst das System 700 eine oder mehrere Eingangs-/Ausgangs- (I/O; Input/Output) Schnittstelle(n) 760. Die I/O-Schnittstelle 760 kann eine oder mehrere Schnittstellenkomponenten umfassen, über die ein Benutzer mit dem System 700 interagiert (z. B. Audio-, alphanumerische, tastbare/berührbare oder andere Schnittstellbildung). Eine Peripherieschnittstelle 770 kann irgendeine Hardwareschnittstelle umfassen, die oben nicht ausdrücklich erwähnt wurde. Peripherievorrichtungen beziehen sich im Allgemeinen auf Vorrichtungen, die abhängig mit dem System 700 verbinden. Eine abhängige Verbindung ist eine, bei der das System 700 die Software- oder Hardware-Plattform oder beide bereitstellt, auf der die Operation ausgeführt wird und mit der ein Benutzer interagiert.
  • Bei einem Beispiel umfasst das System 700 ein Speicherungsteilsystem 780, um Daten in einer nichtflüchtigen Weise zu speichern. Bei einem Beispiel können in bestimmten Systemimplementierungen zumindest bestimmte Komponenten einer Speicherung 780 mit Komponenten des Speicherteilsystems 720 überlappen. Das Speicherungsteilsystem 780 umfasst (eine) Speicherungsvorrichtung(en) (storage) 784, die irgendein herkömmliches Medium zur Speicherung großer Datenmengen auf nichtflüchtige Weise sein oder umfassen können, wie beispielsweise eine oder mehrere magnetische, Festkörper- oder optisch-basierte Platten oder eine Kombination. Die Speichervorrichtung 784 umfasst Code oder Anweisungen und Daten 786 in einem dauerhaften Zustand (d. h. der Wert bleibt trotz Unterbrechung der Leistung zu dem System 700 erhalten). Die Speichervorrichtung 784 kann allgemein als ein „Speicher“ (memory) betrachtet werden, obwohl der Speicher 730 üblicherweise der Ausführungs- oder Betriebsspeicher ist, um an den Prozessor 710 Anweisungen bereitzustellen. Obwohl die Speichervorrichtung 784 nichtflüchtig ist, kann der Speicher 730 flüchtigen Speicher umfassen (d. h. der Wert oder Zustand der Daten ist unbestimmt, falls die Leistung zu dem System 700 unterbrochen wird). Bei einem Beispiel umfasst das Speicherungsteilsystem 780 eine Steuerung 782, um eine Schnittstelle mit der Speichervorrichtung 784 zu bilden. Bei einem Beispiel ist die Steuerung 782 ein physischer Teil der Schnittstelle 714 oder des Prozessors 710 oder kann Schaltungen oder Logik sowohl in dem Prozessor 710 als auch in der Schnittstelle 714 umfassen.
  • Ein flüchtiger Speicher ist ein Speicher, dessen Zustand (und damit die darin gespeicherten Daten) unbestimmt ist, falls Leistung zu der Vorrichtung unterbrochen wird. Ein dynamischer flüchtiger Speicher erfordert ein Aktualisieren der Daten, die in der Vorrichtung gespeichert sind, um den Zustand aufrechtzuerhalten. Ein Beispiel eines dynamischen flüchtigen Speichers umfasst DRAM (Dynamic Random Access Memory; dynamischen Direktzugriffsspeicher) oder eine Variante wie beispielsweise synchronen DRAM (SDRAM; Synchronous DRAM). Ein Speicherteilsystem, wie es hierin beschrieben ist, kann mit einer Reihe von Speichertechnologien kompatibel sein, wie beispielsweise DDR3 (Double Data Rate Version 3, ursprüngliche Herausgabe durch JEDEC (Joint Electronic Device Engineering Council) am 27. Juni 2007). DDR4 (DDR-Version 4, erste Spezifikation veröffentlicht im September 2012 durch JEDEC), DDR4E (DDR-Version 4), LPDDR3 (Low Power DDR-Version3 (Niedrig-Leistungs-DDR-Version3), JESD209-3B, August 2013 durch JEDEC), LPDDR4) LPDDR-Version 4, JESD209-4, ursprünglich veröffentlicht durch JEDEC im August 2014), WIO2 (Wide Input/Output Version 2 (breiter Eingang/Ausgang Version 2), JESD229-2, ursprünglich veröffentlicht durch JEDEC im August 2014, HBM (High Bandwidth Memory (Hohe-Bandbreite-Speicher), JESD325, ursprünglich veröffentlicht durch JEDEC im Oktober 2013, LPDDR5 (derzeit in Diskussion durch JEDEC), HBM2 (HBM-Version 2), derzeit in Diskussion durch JEDEC, oder anderen oder Kombinationen von Speichertechnologien, und Technologien, die auf Herleitungen oder Erweiterungen solcher Spezifikationen basieren. Die JEDEC-Standards sind unter www.jedec.org verfügbar.
  • Eine nichtflüchtige Speicher- (NVM-; non-volatile memory) Vorrichtung ist ein Speicher, dessen Zustand bestimmt wird, auch falls Leistung zu der Vorrichtung unterbrochen wird. Bei einem Ausführungsbeispiel kann die NVM-Vorrichtung eine blockadressierbare Speichervorrichtung, wie beispielsweise NAND-Technologien, oder genauer, einen Multi-Schwellenpegel-NAND-Flash-Speicher (z. B. Single-Level Cell („SLC“), Multi-Level Cell („MLC“), Quad-Level Cell („QLC“), Tri-Level Cell („TLC“) oder eine andere NAND) umfassen. Eine NVM-Vorrichtung kann auch eine byteadressierbare dreidimensionale Write-in-Place Cross Point (Vor-Ort-Schreiben-Kreuzpunkt-) Speichervorrichtung oder eine andere byteadressierbare Write-in-Place-NVM-Vorrichtung (auch als dauerhafter Speicher bezeichnet) umfassen, wie beispielsweise einen ein- oder mehrstufigen Phasenwechselspeicher (PCM; Phase Change Memory) oder Phasenwechselspeicher mit einem Schalter (PCMS; phase change memory with a switch), NVM-Vorrichtungen, die Chalkogenidphasenwechselmaterial (z. B. Chalkogenidglas) verwenden, einen resistiven Speicher umfassend Metalloxid-Basis, Sauerstoff-Leerstellenbasis und Conductive Bridge Random Access Memory (CB-RAM), Nanodrahtspeicher, ferroelektrischer Direktzugriffsspeicher (FeRAM, FRAM; ferroelectric random access memory), magnetoresistiver Direktzugriffsspeicher (MRAM; magneto resistive random access memory) mit Memristor-Technologie, Spin Transfer Torque- (STT-) MRAM, eine auf Spintronik-Magnet-Übergang-Speicher basierende Vorrichtung, eine auf magnetischem Tunnelübergang (MTJ; magnetic tunneling junction) basierende Vorrichtung, eine DW (Domain Wall; Domänenwand) und SOT (Spin Orbit Transfer) basierte Vorrichtung, eine thyristorbasierte Speichervorrichtung oder eine Kombination aus einem der Obigen oder einen anderen Speicher.
  • Eine Leistungsquelle (nicht abgebildet) stellt an die Komponenten des Systems 700 Leistung bereit. Insbesondere bildet eine Leistungsquelle üblicherweise eine Schnittstelle mit einer oder mehreren Leistungsversorgungen in dem System 700, um an die Komponenten des Systems 700 Leistung bereitzustellen. Bei einem Beispiel umfasst die Leistungsversorgung einen AC-zu-DC-(Wechselstrom-zu-Gleichstrom-; alternating current to direct current) Adapter zum Einstecken in eine Steckdose. Eine solche Wechselstrom- (AC-) Leistung kann eine Erneuerbare-Energien-(z. B. Solarleistung) Leistungsquelle sein. Bei einem Beispiel umfasst eine Leistungsquelle eine Gleichstrom- (DC-) Leistungsquelle, wie beispielsweise einen externen Wechselstrom-zu-Gleichstrom- (AC-zu-DC-) Wandler. Bei einem Beispiel umfasst eine Leistungsquelle oder Leistungsversorgung drahtlose Ladehardware zum Aufladen über die Nähe zu einem Ladefeld. Bei einem Beispiel kann eine Leistungsquelle eine interne Batterie, eine Wechselstromversorgung, eine bewegungsbasierte Leistungsversorgung, eine Solarleistungsversorgung oder eine Brennstoffzellenquelle umfassen.
  • Bei einem Beispiel kann das System 700 unter Verwendung von miteinander verbundenen Rechenschlitten aus Prozessoren, Speichern, Speicherungsvorrichtungen, Netzwerkschnittstellen und anderen Komponenten implementiert sein. Es können Hochgeschwindigkeitsverbindungen wie beispielsweise PCIe, Ethernet oder optische Verbindungen (oder eine Kombination derselben) verwendet werden.
  • Ausführungsbeispiele hierin können in verschiedenen Arten von Rechen- und Netzwerk-Ausrüstung, wie beispielsweise Schaltern, Routern, Racks und Blade-Servern, wie sie in einem Rechenzentrum und/oder einer Serverfarmumgebung verwendet werden, implementiert sein. Die Server, die in Rechenzentren und Serverfarmen verwendet werden, umfassen angeordnete Server-Konfigurationen wie beispielsweise Rack-basierte Server oder Blade-Server. Diese Server sind in Kommunikation via verschiedene Netzwerkzugänge miteinander verbunden, wie beispielsweise ein Partitionieren von Serversätzen in lokale Netzwerke (LANs; Local Area Networks) mit geeigneten Schalt- und Routing-Einrichtungen zwischen den LANs, um ein privates Intranet zu bilden. Zum Beispiel können Cloud-Hosting-Einrichtungen üblicherweise große Rechenzentren mit einer Vielzahl von Servern nutzen. Ein Blade umfasst eine separate Rechenplattform, die ausgebildet ist, serverartige Funktionen auszuführen, das heißt, ein „Server auf einer Karte“. Dementsprechend umfasst jedes Blade Komponenten, die herkömmlichen Servern gemein sind, umfassend eine gedruckte Hauptschaltungsplatine (Hauptplatine; main board), die eine interne Verkabelung (d. h. Busse) zum Koppeln geeigneter integrierter Schaltungen (ICs) und anderer Komponenten, die auf der Platine befestigt sind, bereitstellt.
  • Verschiedene Beispiele können unter Verwendung von Hardware-Elementen, Software-Elementen oder einer Kombination von beiden implementiert sein. Bei einigen Beispielen können Hardwareelemente Vorrichtungen, Komponenten, Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktivitäten usw.), integrierte Schaltungen, ASICs, PLDs, DSPs, FPGAs, Speichereinheiten, Logik-Gates, Register, ein Halbleiterbauelement, Chips, Mikrochips, Chipsätze usw. umfassen. Bei einigen Beispielen können Softwareelemente Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Unterroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, APIs, Anweisungssätze, einen Rechencode, einen Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination derselben umfassen. Die Bestimmung, ob ein Beispiel unter Verwendung von Hardware-Elementen und/oder Software-Elementen implementiert wird, kann gemäß irgendeiner Anzahl von Faktoren, wie beispielsweise der gewünschten Rechenrate, den Leistungspegeln, den Wärmetoleranzen, dem Verarbeitungszyklus-Budget, den Eingangsdatenraten, den Ausgangsdatenraten, den Speicherressourcen, den Datenbusgeschwindigkeiten und anderen Entwurf- oder Performanceeinschränkungen, wie für eine gegebene Implementierung gewünscht, variieren. Es wird darauf hingewiesen, dass Hardware-, Firmware- und/oder Software-Elemente hierin zusammen oder einzeln als „Modul“, „Logik“, „Schaltung“ oder „Schaltungsanordnung“ bezeichnet werden können. Ein Prozessor kann ein oder mehrere sein aus einer Kombination aus einer Hardware-Zustandsmaschine, digitalen Steuerlogik, zentralen Verarbeitungseinheit oder irgendwelchen Hardware-, Firmware- und/oder Software-Elementen.
  • Einige Beispiele können unter Verwendung von oder als ein Herstellungsartikel oder zumindest ein computerlesbares Medium implementiert sein. Ein computerlesbares Medium kann ein nichtflüchtiges Speicherungsmedium zur Speicherung von Logik umfassen. Bei einigen Beispielen kann das nichtflüchtige Speicherungsmedium eine oder mehrere Arten von computerlesbaren Speicherungsmedien umfassen, die fähig sind, elektronische Daten zu speichern, umfassend flüchtigen oder nichtflüchtigen Speicher, entfernbaren oder nicht entfernbaren Speicher, löschbaren oder nicht löschbaren Speicher, beschreibbaren oder wiederbeschreibbaren Speicher und so weiter. Bei einigen Beispielen kann die Logik verschiedene Softwareelemente, wie beispielsweise Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Unterroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, API, Anweisungssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination derselben umfassen.
  • Gemäß einigen Beispielen kann ein computerlesbares Medium ein nichtflüchtiges Speicherungsmedium zum Speichern oder Aufrechterhalten von Anweisungen umfassen, das, wenn es durch eine Maschine, eine Rechenvorrichtung oder ein System ausgeführt wird, die Maschine, die Rechenvorrichtung oder das System veranlasst, Verfahren und/oder Operationen gemäß den beschriebenen Beispielen auszuführen. Die Anweisungen können irgendeine geeignete Art von Code umfassen, wie beispielsweise einen Quellcode, einen kompilierten Code, einen interpretierten Code, einen ausführbaren Code, einen statischen Code, einen dynamischen Code und Ähnliches. Die Anweisungen können gemäß einer vordefinierten Computersprache, -weise oder -syntax implementiert sein, um eine Maschine, ein(e) Rechenvorrichtung oder System anzuweisen, eine bestimmte Funktion auszuführen. Die Anweisungen können unter Verwendung irgendeiner geeigneten Hochsprachen-, Niedersprachen-, objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache implementiert sein.
  • Ein oder mehrere Aspekte von zumindest einem Beispiel können durch repräsentative Anweisungen implementiert sein, die auf zumindest einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logiken innerhalb des Prozessors repräsentiert, die, wenn sie von einer Maschine, einer Rechenvorrichtung oder einem System gelesen werden, die Maschine, die Rechenvorrichtung oder das System veranlassen, Logik zur Ausführung der hierin beschriebenen Techniken herzustellen. Solche Darstellungen, die als „IP-Kerne“ bekannt sind, können auf einem greifbaren, maschinenlesbaren Medium gespeichert und an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, um sie in die Fertigungsmaschinen zu laden, die die Logik oder den Prozessor tatsächlich herstellen.
  • Das Auftreten der Phrase „ein einzelnes Beispiel“ oder „ein Beispiel“ bezieht sich nicht notwendigerweise auf dasselbe Beispiel oder Ausführungsbeispiel. Irgendein hierin beschriebener Aspekt kann mit irgendeinem anderen Aspekt oder ähnlichen hierin beschriebenen Aspekt kombiniert werden, unabhängig davon, ob die Aspekte in Bezug auf dieselbe Figur oder dasselbe Element beschrieben sind. Ein Teilen, Auslassen oder Umfassen von Blockfunktionen, die in den beiliegenden Figuren abgebildet sind, lässt nicht herleiten, dass die Hardwarekomponenten, Schaltungen, Software und/oder Elemente zur Implementierung dieser Funktionen notwendigerweise unterteilt, weggelassen oder bei Ausführungsbeispielen umfasst sein müssten.
  • Einige Beispiele können unter Verwendung der Ausdrücke „gekoppelt“ und „verbunden“ zusammen mit ihren Herleitungen beschrieben sein. Diese Begriffe sind nicht notwendigerweise als Synonyme füreinander vorgesehen. Beispielsweise können Beschreibungen, die die Begriffe „verbunden“ und/oder „gekoppelt“ verwenden, möglicherweise anzeigen, dass zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt miteinander stehen. Der Begriff „gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander sind, jedoch weiter miteinander zusammenarbeiten oder interagieren.
  • Die Begriffe „erste,r,s“, „zweite,r,s“ und Ähnliches bezeichnen hierin nicht irgendeine Reihenfolge, Menge oder Bedeutung, sondern werden vielmehr dazu verwendet, ein Element von einem anderen zu unterscheiden. Die Begriffe „ein,e,s“ (a, an) bezeichnen hierin nicht eine Mengenbeschränkung, sondern vielmehr das Vorhandensein von zumindest einem von den Gegenständen, auf die Bezug genommen wird. Der Begriff „aufgeschaltet“ (asserted), der hierin in Bezug auf ein Signal verwendet wird, bezeichnet einen Zustand des Signals, in dem das Signal aktiv ist und der durch Anwenden irgendeines Logikpegels auf das Signal, entweder Logik 0 oder Logik 1, erreicht werden kann. Die Begriffe „folgen“ oder „nach“ können sich auf unmittelbar folgen oder folgen nach einem anderen Ereignis oder Ereignissen beziehen. Andere Abfolgen von Schritten können auch gemäß alternativen Ausführungsbeispielen ausgeführt werden. Ferner können zusätzliche Schritte, abhängig von den bestimmten Anwendungen, hinzugefügt oder entfernt werden. Es kann irgendeine Kombination von Änderungen verwendet werden und ein Fachmann auf dem Gebiet, der den Nutzen dieser Offenbarung hat, würde die vielen Variationen, Modifikationen und alternativen Ausführungsbeispiele verstehen.
  • Eine disjunktive Sprache, wie beispielsweise die Phrase „zumindest eines von X, Y oder Z“, sofern nicht anderweitig spezifisch angegeben, wird ansonsten innerhalb des Kontexts verstanden, wie er im Allgemeinen verwendet wird, um darzustellen, dass ein Gegenstand, ein Begriff usw. entweder X, Y oder Z oder irgendeine Kombination davon (z. B. X, Y und/oder Z) sein kann. Somit ist solch disjunktive Sprache nicht im Allgemeinen dafür vorgesehen, und soll nicht implizieren, dass bestimmte Ausführungsbeispiele das jeweilige Vorliegen von zumindest einem von X, zumindest einem von Y oder zumindest einem von Z erfordern. Zusätzlich soll konjunktive Sprache wie beispielsweise die Phrase „zumindest eines von X, Y und Z“, sofern nicht anderweitig spezifisch angegeben, auch als X, Y, Z oder irgendeine Kombination davon, umfassend „X, Y und/oder Z“, verstanden werden.
  • Nachfolgend sind darstellende Beispiele der hierin offenbarten Vorrichtungen, Systeme und Verfahren bereitgestellt. Ein Ausführungsbeispiel der Vorrichtungen, Systeme und Verfahren kann irgendeine einzelne oder mehrere und irgendeine Kombination der nachfolgend beschriebenen Beispiele umfassen.
  • Beispiel 1 umfasst eine Vorrichtung, umfassend: eine Schnittstelle mit einem Speicher und eine mit der Schnittstelle gekoppelte Speichersteuerung, wobei die Speichersteuerung ausgebildet ist, eine Schreib-Anforderung mit einer zugeordneten Adresse zum Schreiben von Prüfpunktdaten zu empfangen und einen Änderungs-Tracker zum Nachverfolgen von Aktualisierungen für Prüfpunktdaten basierend auf zumindest zwei Ebenen von Speicherregionsgrößen zu verwenden, wobei die zumindest zwei Ebenen von Speicherregionsgrößen eine erste Ebene und eine zweite Ebene umfassen und die erste Ebene einer größeren Speicherregionsgröße zugeordnet ist als eine Speicherregionsgröße, die der zweiten Ebene zugeordnet ist.
  • Beispiel 2 umfasst irgendein Beispiel, wobei die erste Ebene eine Seiten-Ebene umfasst und die zweite Ebene eine Cache-Zeilen-Ebene umfasst.
  • Beispiel 3 umfasst irgendein Beispiel, wobei das Nachverfolgen von Aktualisierungen für Prüfpunktdaten basierend auf zumindest zwei Ebenen von Speicherregionsgrößen umfasst: Identifizieren, dass ein Schreiben in die Prüfpunktdaten, das der Schreib-Anforderung zugeordnet ist, basierend darauf nachverfolgt wird, dass die Schreib-Anforderung einer auf der ersten Ebene als aktualisiert identifizierten Speicherregion entspricht.
  • Beispiel 4 umfasst irgendein Beispiel, wobei das Nachverfolgen von Aktualisierungen für Prüfpunktdaten basierend auf zumindest zwei Ebenen von Speicherregionsgrößen umfasst: basierend darauf, dass das der Schreib-Anforderung zugeordnete Schreiben in die Prüfpunktdaten nicht auf der ersten Ebene unter Verwendung eines Erste-Ebene-Änderungs-Trackers nachverfolgt wird, ein Abrufen eines Erste-Ebene-Änderungs-Trackers für die Speicherregion aus dem Speicher und ein Identifizieren, dass das der Schreib-Anforderung zugeordnete Schreiben in die Prüfpunktdaten basierend darauf nachverfolgt wird, dass der abgerufene Erste-Ebene-Tracker die der Schreib-Anforderung zugeordnete Speicherregion als aktualisiert identifiziert.
  • Beispiel 5 umfasst irgendein Beispiel, wobei das Nachverfolgen von Aktualisierungen für Prüfpunktdaten basierend auf zumindest zwei Ebenen von Speicherregionsgrößen umfasst: basierend darauf, dass das der Schreib-Anforderung zugeordnete Schreiben in die Prüfpunktdaten nicht auf der ersten Ebene unter Verwendung eines Erste-Ebene-Änderungs-Trackers nachverfolgt wird, ein Bestimmen, ob eine Aktualisierung für einen Abschnitt der Speicherregion unter Verwendung eines Zweite-Ebene-Trackers nachverfolgt wird und ein Identifizieren, dass das der Schreib-Anforderung zugeordnete Schreiben in die Prüfpunktdaten basierend darauf nachverfolgt wird, dass die Aktualisierung für einen Abschnitt der Speicherregion unter Verwendung eines Zweite-Ebene-Trackers nachverfolgt wird.
  • Beispiel 6 umfasst irgendein Beispiel, wobei das Nachverfolgen von Aktualisierungen für Prüfpunktdaten basierend auf zumindest zwei Ebenen von Speicherregionsgrößen umfasst: basierend darauf, dass das der Schreib-Anforderung zugeordnete Schreiben in die Prüfpunktdaten nicht auf der ersten Ebene unter Verwendung eines Erste-Ebene-Änderungs-Trackers nachverfolgt wird, ein Abrufen eines Erste-Ebene-Änderungs-Trackers für die Speicherregion; basierend darauf, dass der abgerufene Erste-Ebene-Tracker die Speicherregion nicht als aktualisiert identifiziert, ein Bestimmen, ob eine Aktualisierung für einen Abschnitt der Speicherregion unter Verwendung eines Zweite-Ebene-Trackers nachverfolgt wird; und basierend darauf, dass die Aktualisierung für einen Abschnitt der Speicherregion nicht unter Verwendung eines Zweite-Ebene-Trackers nachverfolgt wird, ein Verwenden eines neuen Zweite-Ebene-Trackers zum Nachverfolgen einer Aktualisierung für die Speicherregion auf der zweiten Ebene.
  • Beispiel 7 umfasst irgendein Beispiel, wobei das Nachverfolgen von Aktualisierungen für Prüfpunktdaten basierend auf zumindest zwei Ebenen von Speicherregionsgrößen umfasst: basierend darauf, dass unzureichend Platz zum Speichern des neuen Zweite-Ebene-Trackers zur Verfügung steht, ein Ausschließen eines oder mehrerer Zweite-Ebene-Tracker.
  • Beispiel 8 umfasst irgendein Beispiel, wobei die Prüfpunktdaten ein oder mehrere umfassen von: Konfigurationsinformationen, Zentrale-Verarbeitungseinheit-, CPU-, Architekturzustand umfassend Werte von Architektur- und Steuerregistern, Speicherdatenänderungen seit dem letzten Prüfpunkt, modifizierte Daten in Cache-Ebenen, die nicht in den Speicher zurückgeschrieben wurden, Eingabe/Ausgabe-, I/O-, Vorrichtungs-Zustand oder Informationen, die erforderlich sind, um eine virtuelle Maschine, VM, oder einen Container in den gleichen Zustand zu bringen, in dem er war, als der Prüfpunkt genommen wurde.
  • Beispiel 9 umfasst irgendein Beispiel, wobei aktualisierte Prüfpunktdaten zumindest Prüfpunktdaten-Aktualisierungen nach einer Prüfpunktdatenreplikation umfassen.
  • Beispiel 10 umfasst irgendein Beispiel, wobei basierend auf der Initiierung einer Prüfpunktdatenreplikation die Speichersteuerung ausgebildet ist, ein Kopieren von aktualisierten Prüfpunktdaten in eine andere Speichervorrichtung zu ermöglichen, basierend darauf, dass Regionen der Prüfpunktdaten, die als aktualisiert identifiziert wurden, Aktualisierungen verwenden, die auf einer ersten Ebene und einer zweiten Ebene nachverfolgt werden.
  • Beispiel 11 umfasst irgendein Beispiel, wobei ein Virtuelle-Machine-Manager (VMM) ausgebildet ist, eine Prüfpunktdatenreplikation zu veranlassen.
  • Beispiel 12 umfasst irgendein Beispiel, und umfasst den mit der Schnittstelle gekoppelten Speicher und ferner umfassend ein oder mehrere von: einem Prozessor, einem Server oder einem Rechenzentrum.
  • Beispiel 13 umfasst ein computerimplementiertes Verfahren, umfassend: Nachverfolgen von Aktualisierungen für Prüfpunktdaten auf erster und zweiter Granularitätsebene der Speicherregionsgröße, wobei die erste Ebene gröber ist als die zweite Ebene, und während einer Prüfpunktreplikation ein Übertragen von lediglich aktualisierten Abschnitten von Prüfpunktdaten an eine andere Speichervorrichtung basierend auf der Aktualisierungsnachverfolgung auf erster und zweiter Granularitätsebene, wobei die aktualisierten Abschnitte den Größen von Speicherregionen entsprechen, die entweder auf der ersten oder zweiten Granularitätsebene als aktualisiert identifiziert werden.
  • Beispiel 14 umfasst irgendein Beispiel, wobei die erste Ebene eine Seiten-Ebene umfasst und die zweite Ebene eine Cache-Zeilen-Ebene umfasst.
  • Beispiel 15 umfasst irgendein Beispiel, und umfassend ein Empfangen einer Schreib-Anforderung und ein Identifizieren, dass eine der Schreib-Anforderung zugeordnete Aktualisierung für die Prüfpunktdaten basierend darauf nachverfolgt wird, dass eine Schreib-Anforderung einer auf der ersten Ebene als aktualisiert identifizierten Speicherregion entspricht.
  • Beispiel 16 umfasst irgendein Beispiel und umfasst: Empfangen einer Schreib-Anforderung; Abrufen eines Zweite-Ebene-Trackers einer Aktualisierung für einen Abschnitt der Speicherregion; und Identifizieren, dass eine der Schreib-Anforderung zugeordnete Aktualisierung für die Prüfpunktdaten basierend darauf nachverfolgt wird, dass die Aktualisierung für einen Abschnitt der Speicherregion unter Verwendung des Zweite-Ebene-Trackers nachverfolgt wird.
  • Beispiel 17 umfasst ein System, umfassend: einen Speicher; eine Speichersteuerung; einen Prozessor; und eine Netzwerkschnittstelle, wobei die Speichersteuerung ausgebildet ist: Aktualisierungen für Prüfpunktdaten, die in dem Speicher gespeichert sind, zu überwachen; irgendeine Aktualisierung für die Prüfpunktdaten unter Verwendung eines Aktualisierungs-Trackers auf entweder einer ersten Granularitätsebene oder einer zweiten Granularitätsebene nachzuverfolgen, wobei die erste Granularitätsebene einer Speicherregion erster Größe entspricht und die zweite Granularitätsebene einer Speicherregion zweiter Größe entspricht, wobei die erste Größe größer ist als die zweite Größe; und für eine Prüfpunktreplikationsoperation ein Ermöglichen des Kopierens von aktualisierten Regionen der Prüfpunktdaten als identifiziert unter Verwendung des Aktualisierungs-Trackers.
  • Beispiel 18 umfasst irgendein Beispiel, wobei die erste Ebene eine Seiten-Ebene umfasst und die zweite Ebene eine Cache-Zeilen-Ebene umfasst.
  • Beispiel 19 umfasst irgendein Beispiel, wobei die Netzwerkschnittstelle ausgebildet ist, aktualisierte Regionen der Prüfpunktdaten an eine andere Speichervorrichtung zu übertragen.
  • Beispiel 20 umfasst irgendein Beispiel, wobei die Speichersteuerung ausgebildet ist, irgendeine Aktualisierung für die Prüfpunktdaten auf einer zweiten Ebene nachzuverfolgen, sofern eine Aktualisierung nicht auf der ersten Ebene nachverfolgt wurde.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • Kai-Yuan Hou, Kang G. Shin, Yoshio Turner und Sharad Singhal „Tradeoffs in Compressing Virtual Machine Checkpoints“. In Proceedings of the 7th international workshop on Virtualization technologies in distributed computing (VTDC '13), ACM, New York, NY, USA, (Seiten 41-48)) [0008]

Claims (15)

  1. Eine Vorrichtung, umfassend: eine Schnittstelle mit einem Speicher und eine mit der Schnittstelle gekoppelte Speichersteuerung, wobei die Speichersteuerung ausgebildet ist: eine Schreib-Anforderung mit einer zugeordneten Adresse zum Schreiben von Prüfpunktdaten zu empfangen und einen Änderungs-Tracker zum Nachverfolgen von Aktualisierungen für Prüfpunktdaten basierend auf zumindest zwei Ebenen von Speicherregionsgrößen zu verwenden, wobei die zumindest zwei Ebenen von Speicherregionsgrößen eine erste Ebene und eine zweite Ebene umfassen und die erste Ebene einer größeren Speicherregionsgröße zugeordnet ist als eine Speicherregionsgröße, die der zweiten Ebene zugeordnet ist.
  2. Die Vorrichtung gemäß Anspruch 1, wobei das Nachverfolgen von Aktualisierungen für Prüfpunktdaten basierend auf zumindest zwei Ebenen von Speicherregionsgrößen umfasst: Identifizieren, dass ein Schreiben in die Prüfpunktdaten, das der Schreib-Anforderung zugeordnet ist, basierend darauf nachverfolgt wird, dass die Schreib-Anforderung einer auf der ersten Ebene als aktualisiert identifizierten Speicherregion entspricht.
  3. Die Vorrichtung gemäß einem der vorherigen Ansprüche, wobei das Nachverfolgen von Aktualisierungen für Prüfpunktdaten basierend auf zumindest zwei Ebenen von Speicherregionsgrößen umfasst: basierend darauf, dass das der Schreib-Anforderung zugeordnete Schreiben in die Prüfpunktdaten nicht auf der ersten Ebene unter Verwendung eines Erste-Ebene-Änderungs-Trackers nachverfolgt wird, ein Abrufen eines Erste-Ebene-Änderungs-Trackers für die Speicherregion aus dem Speicher und Identifizieren, dass das der Schreib-Anforderung zugeordnete Schreiben in die Prüfpunktdaten basierend darauf nachverfolgt wird, dass der abgerufene Erste-Ebene-Tracker die der Schreib-Anforderung zugeordnete Speicherregion als aktualisiert identifiziert.
  4. Die Vorrichtung gemäß einem der vorherigen Ansprüche, wobei das Nachverfolgen von Aktualisierungen für Prüfpunktdaten basierend auf zumindest zwei Ebenen von Speicherregionsgrößen umfasst: basierend darauf, dass das der Schreib-Anforderung zugeordnete Schreiben in die Prüfpunktdaten nicht auf der ersten Ebene unter Verwendung eines Erste-Ebene-Änderungs-Trackers nachverfolgt wird, Bestimmen, ob eine Aktualisierung für einen Abschnitt der Speicherregion unter Verwendung eines Zweite-Ebene-Trackers nachverfolgt wird und Identifizieren, dass das der Schreib-Anforderung zugeordnete Schreiben in die Prüfpunktdaten basierend darauf nachverfolgt wird, dass die Aktualisierung für einen Abschnitt der Speicherregion unter Verwendung eines Zweite-Ebene-Trackers nachverfolgt wird.
  5. Die Vorrichtung gemäß einem der vorherigen Ansprüche, wobei das Nachverfolgen von Aktualisierungen für Prüfpunktdaten basierend auf zumindest zwei Ebenen von Speicherregionsgrößen umfasst: basierend darauf, dass das der Schreib-Anforderung zugeordnete Schreiben in die Prüfpunktdaten nicht auf der ersten Ebene unter Verwendung eines Erste-Ebene-Änderungs-Trackers nachverfolgt wird, ein Abrufen eines Erste-Ebene-Änderungs-Trackers für die Speicherregion; basierend darauf, dass der abgerufene Erste-Ebene-Tracker die Speicherregion nicht als aktualisiert identifiziert, ein Bestimmen, ob eine Aktualisierung für einen Abschnitt der Speicherregion unter Verwendung eines Zweite-Ebene-Trackers nachverfolgt wird; und basierend darauf, dass die Aktualisierung für einen Abschnitt der Speicherregion nicht unter Verwendung eines Zweite-Ebene-Trackers nachverfolgt wird, ein Verwenden eines neuen Zweite-Ebene-Trackers zum Nachverfolgen einer Aktualisierung für die Speicherregion auf der zweiten Ebene.
  6. Die Vorrichtung gemäß einem der vorherigen Ansprüche, wobei die Prüfpunktdaten ein oder mehrere umfassen von: Konfigurationsinformationen, Zentrale-Verarbeitungseinheit-, CPU-, Architekturzustand umfassend Werte von Architektur- und Steuerregistern, Speicherdatenänderungen seit dem letzten Prüfpunkt, modifizierte Daten in Cache-Ebenen, die nicht in den Speicher zurückgeschrieben wurden, Eingabe/Ausgabe-, I/O-, Vorrichtungs-Zustand oder Informationen, die erforderlich sind, um eine virtuelle Maschine, VM, oder einen Container in den gleichen Zustand zu bringen, in dem er war, als der Prüfpunkt genommen wurde.
  7. Die Vorrichtung gemäß einem der vorherigen Ansprüche, wobei basierend auf der Initiierung einer Prüfpunktdatenreplikation die Speichersteuerung ausgebildet ist, ein Kopieren von aktualisierten Prüfpunktdaten in eine andere Speichervorrichtung zu ermöglichen, basierend darauf, dass Regionen der Prüfpunktdaten, die als aktualisiert identifiziert wurden, Aktualisierungen verwenden, die auf einer ersten Ebene und einer zweiten Ebene nachverfolgt werden.
  8. Die Vorrichtung gemäß einem der Ansprüche 1-7, ferner umfassend den mit der Schnittstelle gekoppelten Speicher und ferner umfassend ein oder mehrere von: einem Prozessor, einem Server oder einem Rechenzentrum.
  9. Ein computerimplementiertes Verfahren, umfassend: Nachverfolgen von Aktualisierungen für Prüfpunktdaten auf erster und zweiter Granularitätsebene einer Speicherregionsgröße, wobei die erste Ebene gröber ist als die zweite Ebene und während einer Prüfpunktreplikation ein Übertragen von lediglich aktualisierten Abschnitten von Prüfpunktdaten an eine andere Speichervorrichtung basierend auf der Aktualisierungsnachverfolgung auf erster und zweiter Granularitätsebene, wobei die aktualisierten Abschnitte Größen von Speicherregionen entsprechen, die entweder auf der ersten oder zweiten Granularitätsebene als aktualisiert identifiziert werden.
  10. Das Verfahren gemäß Anspruch 9, umfassend: Empfangen einer Schreib-Anforderung und Identifizieren, dass eine der Schreib-Anforderung zugeordnete Aktualisierung für die Prüfpunktdaten basierend darauf nachverfolgt wird, dass eine Schreib-Anforderung einer auf der ersten Ebene als aktualisiert identifizierten Speicherregion entspricht.
  11. Das Verfahren gemäß Anspruch 9 oder 10, umfassend: Empfangen einer Schreib-Anforderung; Abrufen eines Zweite-Ebene-Trackers einer Aktualisierung für einen Abschnitt der Speicherregion; und Identifizieren, dass eine der Schreib-Anforderung zugeordnete Aktualisierung für die Prüfpunktdaten basierend darauf nachverfolgt wird, dass die Aktualisierung für einen Abschnitt der Speicherregion unter Verwendung des zweite-Ebene-Trackers nachverfolgt wird.
  12. Das Verfahren gemäß einem der Ansprüche 9-11, umfassend: basierend darauf, dass das der Schreib-Anforderung zugeordnete Schreiben in die Prüfpunktdaten nicht auf der ersten Ebene unter Verwendung eines Erste-Ebene-Änderungs-Trackers nachverfolgt wird, ein Abrufen eines Erste-Ebene-Änderungs-Trackers für die Speicherregion; basierend darauf, dass der abgerufene Erste-Ebene-Tracker die Speicherregion nicht als aktualisiert identifiziert, ein Bestimmen, ob eine Aktualisierung für einen Abschnitt der Speicherregion unter Verwendung eines Zweite-Ebene-Trackers nachverfolgt wird; und basierend darauf, dass die Aktualisierung für einen Abschnitt der Speicherregion nicht unter Verwendung eines Zweite-Ebene-Trackers nachverfolgt wird, ein Verwenden eines neuen Zweite-Ebene-Trackers zum Nachverfolgen einer Aktualisierung für die Speicherregion auf der zweiten Ebene.
  13. Das Verfahren gemäß einem der Ansprüche 9-12, wobei die Prüfpunktdaten ein oder mehrere umfassen von: Konfigurationsinformationen, Zentrale-Verarbeitungseinheit-, CPU-, Architekturzustand umfassend Werte von Architektur- und Steuerregistern, Speicherdatenänderungen seit dem letzten Prüfpunkt, modifizierte Daten in Cache-Ebenen, die nicht in den Speicher zurückgeschrieben wurden, Eingabe/Ausgabe-, I/O-, Vorrichtungs-Zustand oder Informationen, die erforderlich sind, um eine virtuelle Maschine, VM, oder einen Container in den gleichen Zustand zu bringen, in dem er war, als der Prüfpunkt genommen wurde.
  14. Das Verfahren gemäß einem der Ansprüche 9-13, wobei basierend auf der Initiierung einer Prüfpunktdatenreplikation ein Ermöglichen des Kopierens von aktualisierten Prüfpunktdaten in eine andere Speichervorrichtung, basierend darauf, dass Regionen der Prüfpunktdaten, die als aktualisiert identifiziert wurden, Aktualisierungen verwenden, die auf einer ersten Ebene und einer zweiten Ebene nachverfolgt werden.
  15. Eine maschinenlesbare Speichervorrichtung, umfassend maschinenlesbare Anweisungen, die bei Ausführung ein Verfahren implementieren oder eine Vorrichtung implementieren, wie in einem der vorangehenden Ansprüche beansprucht.
DE102020122182.7A 2019-09-27 2020-08-25 Virtuelle-maschine-replikation und -migration Pending DE102020122182A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/586,859 US11544093B2 (en) 2019-09-27 2019-09-27 Virtual machine replication and migration
US16/586,859 2019-09-27

Publications (1)

Publication Number Publication Date
DE102020122182A1 true DE102020122182A1 (de) 2021-04-01

Family

ID=69229677

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020122182.7A Pending DE102020122182A1 (de) 2019-09-27 2020-08-25 Virtuelle-maschine-replikation und -migration

Country Status (3)

Country Link
US (1) US11544093B2 (de)
CN (1) CN112579252A (de)
DE (1) DE102020122182A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11714725B2 (en) * 2019-06-03 2023-08-01 University Of Central Florida Research Foundation, Inc. System and method for ultra-low overhead and recovery time for secure non-volatile memories
US11263136B2 (en) * 2019-08-02 2022-03-01 Stratus Technologies Ireland Ltd. Fault tolerant systems and methods for cache flush coordination
US11216205B2 (en) * 2020-02-28 2022-01-04 EMC IP Holding Company LLC Intelligent checkpoint page server for containers
US11687356B2 (en) * 2020-09-04 2023-06-27 Vmware, Inc. Techniques for concurrently supporting virtual NUMA and CPU/memory hot-add in a virtual machine
CN112256391B (zh) * 2020-10-22 2023-04-25 海光信息技术股份有限公司 一种虚拟机内存迁移方法、装置、及设备
US11586371B2 (en) * 2021-07-23 2023-02-21 Vmware, Inc. Prepopulating page tables for memory of workloads during live migrations
US11947418B2 (en) * 2022-06-22 2024-04-02 International Business Machines Corporation Remote access array
CN116881049B (zh) * 2023-07-21 2024-01-30 无锡隆云数字技术有限公司 一种云构架下基于终端和云主机的分布式数据备份方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9069701B2 (en) * 2012-12-11 2015-06-30 International Business Machines Corporation Virtual machine failover
CN104937565B (zh) * 2013-03-28 2017-11-17 慧与发展有限责任合伙企业 从第一节点到第二节点的地址范围传送
US9514044B2 (en) * 2013-05-24 2016-12-06 Hewlett Packard Enterprise Development Lp Multi-level cache tracking table
GB2516087A (en) * 2013-07-11 2015-01-14 Ibm Virtual Machine Backup
US9280465B2 (en) * 2013-10-08 2016-03-08 Globalfoundries Inc. Techniques for moving checkpoint-based high-availability log and data directly from a producer cache to a consumer cache
US9335943B2 (en) 2014-06-30 2016-05-10 Intel Corporation Method and apparatus for fine grain memory protection
EP3224712B1 (de) * 2014-11-24 2020-12-02 Intel Corporation Unterstützung von anwendungstransparenter, hochverfügbarer gpu-datenverarbeitung mit virtual machine (vm)-checkpointing
US10152381B1 (en) * 2017-04-27 2018-12-11 EMC IP Holding Company LLC Using storage defragmentation function to facilitate system checkpoint

Also Published As

Publication number Publication date
CN112579252A (zh) 2021-03-30
US11544093B2 (en) 2023-01-03
US20200042343A1 (en) 2020-02-06

Similar Documents

Publication Publication Date Title
DE102020122182A1 (de) Virtuelle-maschine-replikation und -migration
DE102017128952B4 (de) Datenspeichervorrichtung, die konfiguriert ist, um eine nicht-blockierende Steuerungs-Aktualisierungsoperation auszuführen
DE112011102487B4 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE112014006118B4 (de) Spekulatives Vorab-Holen von in einem Flash-Speicher gespeicherten Daten
DE102011076894B9 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE602005004226T2 (de) Speichervorrichtung und Informationsverarbeitungssystem
DE102018214013A1 (de) Automatische kontinuierliche Prüfpunktsetzung
DE102011076895B4 (de) Cachekohärenzprotokoll für persistente Speicher
DE112011105984T5 (de) Dynamische teilweise Abschaltung eines arbeitsspeicherseitigen Zwischenspeichers in einer Arbeitsspeicherhierarchie auf zwei Ebenen
DE102018105854A1 (de) Dynamische Größenanpassung logischer Speicherblöcke
DE102014003668A1 (de) Befehle zum markieren des anfangs und endes eines nicht- transaktionsorientierten codegebiets, das ein zurückschreiben zu einer persistenten ablage erfordert
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE112015000378T5 (de) Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher
DE112011106013T5 (de) System und Verfahren für den intelligenten Datentransfer von einem Prozessor in ein Speicheruntersystem
DE112011106032T5 (de) Energieeinsparung durch Speicherkanal-Abschaltung
DE102019113049A1 (de) VERFAHREN UND VORRICHTUNG ZUR FLUSH-VERWALTUNG EINER ATOMISCHEN GRUPPE VON SCHREIBVORGäNGEN IN PERSISTENTEN SPEICHER ALS REAKTION AUF EINEN UNERWARTETEN STROMAUSFALL
DE102009031125A1 (de) Nand-Fehlerbehandlung
DE112020000183T5 (de) Speicherungsklassenspeicherzugriff
DE102020116316A1 (de) Prioritätsbasierte batterie-zuordnung für ressourcen während leistungsausfall
DE112017001658T5 (de) Behandlung von fehleranfälligen Cache-Zeilen-Slots eines speicherseitigen Caches eines Multilevel-Systemspeichers
DE112017005782T5 (de) Warteschlange für Speichervorgänge
DE102019106126A1 (de) Massenspeicherungsvorrichtung mit vom Host eingeleiteter Pufferausräumung
DE102019104871A1 (de) Nichtflüchtige dateiaktualisierungsmedien
DE102018123670A1 (de) Speicherungssystem, Rechensystem und Verfahren dafür
DE102022101607A1 (de) Verwaltung der hostspeicherpufferzuweisung