DE112020003929B4 - Verwaltung von metadaten von virtuellen speichern - Google Patents

Verwaltung von metadaten von virtuellen speichern Download PDF

Info

Publication number
DE112020003929B4
DE112020003929B4 DE112020003929.3T DE112020003929T DE112020003929B4 DE 112020003929 B4 DE112020003929 B4 DE 112020003929B4 DE 112020003929 T DE112020003929 T DE 112020003929T DE 112020003929 B4 DE112020003929 B4 DE 112020003929B4
Authority
DE
Germany
Prior art keywords
metadata
container
processor
storage object
containers
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.)
Active
Application number
DE112020003929.3T
Other languages
English (en)
Other versions
DE112020003929T5 (de
Inventor
Jaime Jaloma
Mark Rogers
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112020003929T5 publication Critical patent/DE112020003929T5/de
Application granted granted Critical
Publication of DE112020003929B4 publication Critical patent/DE112020003929B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61FFILTERS IMPLANTABLE INTO BLOOD VESSELS; PROSTHESES; DEVICES PROVIDING PATENCY TO, OR PREVENTING COLLAPSING OF, TUBULAR STRUCTURES OF THE BODY, e.g. STENTS; ORTHOPAEDIC, NURSING OR CONTRACEPTIVE DEVICES; FOMENTATION; TREATMENT OR PROTECTION OF EYES OR EARS; BANDAGES, DRESSINGS OR ABSORBENT PADS; FIRST-AID KITS
    • A61F13/00Bandages or dressings; Absorbent pads
    • A61F13/02Adhesive bandages or dressings
    • A61F13/0203Adhesive bandages or dressings with fluid retention members
    • A61F13/0206Adhesive bandages or dressings with fluid retention members with absorbent fibrous layers, e.g. woven or non-woven absorbent pads or island dressings
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61FFILTERS IMPLANTABLE INTO BLOOD VESSELS; PROSTHESES; DEVICES PROVIDING PATENCY TO, OR PREVENTING COLLAPSING OF, TUBULAR STRUCTURES OF THE BODY, e.g. STENTS; ORTHOPAEDIC, NURSING OR CONTRACEPTIVE DEVICES; FOMENTATION; TREATMENT OR PROTECTION OF EYES OR EARS; BANDAGES, DRESSINGS OR ABSORBENT PADS; FIRST-AID KITS
    • A61F13/00Bandages or dressings; Absorbent pads
    • A61F13/00051Accessories for dressings
    • A61F13/00063Accessories for dressings comprising medicaments or additives, e.g. odor control, PH control, debriding, antimicrobic
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61FFILTERS IMPLANTABLE INTO BLOOD VESSELS; PROSTHESES; DEVICES PROVIDING PATENCY TO, OR PREVENTING COLLAPSING OF, TUBULAR STRUCTURES OF THE BODY, e.g. STENTS; ORTHOPAEDIC, NURSING OR CONTRACEPTIVE DEVICES; FOMENTATION; TREATMENT OR PROTECTION OF EYES OR EARS; BANDAGES, DRESSINGS OR ABSORBENT PADS; FIRST-AID KITS
    • A61F13/00Bandages or dressings; Absorbent pads
    • A61F13/02Adhesive bandages or dressings
    • A61F13/0203Adhesive bandages or dressings with fluid retention members
    • A61F13/022Adhesive bandages or dressings with fluid retention members having more than one layer with different fluid retention characteristics
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61FFILTERS IMPLANTABLE INTO BLOOD VESSELS; PROSTHESES; DEVICES PROVIDING PATENCY TO, OR PREVENTING COLLAPSING OF, TUBULAR STRUCTURES OF THE BODY, e.g. STENTS; ORTHOPAEDIC, NURSING OR CONTRACEPTIVE DEVICES; FOMENTATION; TREATMENT OR PROTECTION OF EYES OR EARS; BANDAGES, DRESSINGS OR ABSORBENT PADS; FIRST-AID KITS
    • A61F13/00Bandages or dressings; Absorbent pads
    • A61F13/02Adhesive bandages or dressings
    • A61F13/0276Apparatus or processes for manufacturing adhesive dressings or bandages
    • A61F13/0289Apparatus or processes for manufacturing adhesive dressings or bandages manufacturing of adhesive dressings
    • DTEXTILES; PAPER
    • D04BRAIDING; LACE-MAKING; KNITTING; TRIMMINGS; NON-WOVEN FABRICS
    • D04HMAKING TEXTILE FABRICS, e.g. FROM FIBRES OR FILAMENTARY MATERIAL; FABRICS MADE BY SUCH PROCESSES OR APPARATUS, e.g. FELTS, NON-WOVEN FABRICS; COTTON-WOOL; WADDING ; NON-WOVEN FABRICS FROM STAPLE FIBRES, FILAMENTS OR YARNS, BONDED WITH AT LEAST ONE WEB-LIKE MATERIAL DURING THEIR CONSOLIDATION
    • D04H3/00Non-woven fabrics formed wholly or mainly of yarns or like filamentary material of substantial length
    • D04H3/005Synthetic yarns or filaments
    • D04H3/007Addition polymers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/9035Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/907Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0667Virtualisation aspects at data level, e.g. file, record or object virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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/4401Bootstrapping
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Vascular Medicine (AREA)
  • Veterinary Medicine (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Animal Behavior & Ethology (AREA)
  • General Health & Medical Sciences (AREA)
  • Public Health (AREA)
  • Heart & Thoracic Surgery (AREA)
  • Computer Security & Cryptography (AREA)
  • Computational Linguistics (AREA)
  • Library & Information Science (AREA)
  • Chemical & Material Sciences (AREA)
  • Medicinal Chemistry (AREA)
  • Manufacturing & Machinery (AREA)
  • Textile Engineering (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Auf einem Computer implementiertes Verfahren (700, 800), das aufweist:Instanziieren (709) einer Mehrzahl von Containern (402) mit Metadaten eines virtuellen Speichers (VM) durch einen Prozessor (103), wobei eine Gesamtanzahl von VM-Metadaten-Containern ausreichend VM-Metadatenblöcke (408) aufweist, um den gesamten realen, physischen Speicher (301) darzustellen, der für ein Computersystem (200) als virtueller Speicher bereitgestellt wird;Gruppieren (711) der Mehrzahl von VM-Metadaten-Containern zu zwei oder mehr Container-Gruppen (407) durch den Prozessor, wobei jede der zwei oder mehr Container-Gruppen durch eine unterschiedliche Sperre (507) gesteuert wird;Durchsuchen (817) der zwei oder mehr Container-Gruppen durch den Prozessor nach einer ersten Container-Gruppe, bei der es sich um eine am wenigsten verwendete Container-Gruppe handelt, als Reaktion auf eine Anforderung zum Zuordnen von Speicherobjekt-Metadaten zu einem VM-Metadatenblock;Abfragen (821) der ersten Container-Gruppe durch den Prozessor nach einem ersten VM-Metadaten-Container, bei dem es sich um einen am wenigsten verwendeten VM-Metadaten-Container innerhalb der ersten Container-Gruppe handelt;Zuordnen (825) der Speicherobjekt-Metadaten zu dem VM-Metadatenblock des ersten VM-Metadaten-Containers durch den Prozessor, wodurch die Anforderung zum Zuordnen der Speicherobjekt-Metadaten erfüllt wird.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung bezieht sich allgemein auf das Gebiet von virtuellen Speichern und im Besondern auf eine Verwaltung von Metadaten von virtuellen Speichern.
  • HINTERGRUND
  • Bei virtuellen Speichern (virtual memory, VM) handelt es sich um eine Funktion, die durch Betriebssysteme bereitgestellt wird. Ein Betriebssystem erstellt einen virtuellen Speicherbereich, auf den Anwendungen und Programme so zugreifen können, als wäre der Bereich eine einzelne zusammenhängende physische Speichereinheit. Bei einem virtuellen Speicherbereich kann es sich um eine Kombination aus einem physischen Speicher sowie Plattenspeicher-Ressourcen handeln, die zusammenarbeiten. Der virtuelle Speicher fungiert als alternativer Satz von Adressen und erweitert den Umfang des verfügbaren Speichers. Betriebssysteme können einen virtuellen Speicher durch Zuordnen einer Menge an Plattenspeicherplatz zur Verwendung durch den virtuellen Speicher konfigurieren. Anwendungen und Programme verwenden diese virtuellen Adressen innerhalb des virtuellen Speicherbereichs zum Speichern von Daten und Anweisungen, die möglicherweise nicht so häufig adressiert werden müssen wie sonstige Datensätze oder Anweisungen, die häufiger adressiert werden. Wenn die Adresspositionen des virtuellen Speichers durch das Betriebssystem aufgerufen werden, werden die durch den virtuellen Speicher gespeicherten Daten und Anweisungen auf eine physische Adresse des physischen Speichers kopiert. Um virtuellen Speicher auf physischen Speicher zu kopieren, unterteilen Betriebssysteme virtuellen Speicher in Seiten. Jede Seite enthält eine feste Anzahl von Adressen, die durch den Plattenspeicher gespeichert werden, bis das Betriebssystem die Adresse aufruft. Beim Aufrufen setzt das Betriebssystem in einem Prozess, der als Zuordnung bekannt ist, virtuelle Adressen in reale Adressen um. Das Kopieren von virtuellen Seiten von dem Plattenspeicher in den Hauptspeicher ist als Umlagern oder Auslagern bekannt.
  • Bei einer Speicherzuordnung handelt es sich um den Prozess des Zuweisens von Speicherblöcken auf Anforderung. Eine Zuordnungsfunktion empfängt Speicher von dem Betriebssystem in einer kleinen Anzahl von großen Blöcken, die die Zuordnungsfunktion aufteilt, um die Anforderungen nach kleineren Blöcken zu erfüllen. Die Zuordnungsfunktion macht jegliche zurückgegebenen Blöcke für das Betriebssystem zur Verwendung verfügbar, um eine künftige Zuordnungsanforderung zu erfüllen.
  • US 6 970 990 B2 offenbart ein Verfahren und eine Vorrichtung zur Verwaltung von virtuellem Speicher im virtuellen Modus. Genauer gesagt ein virtueller Speichermanager, der mit virtuellem Speicher und nicht mit physischem Speicher arbeitet.
  • KURZDARSTELLUNG
  • Die Erfindung wird durch die Merkmale der unabhängigen Ansprüche beschrieben. Ausführungsformen sind in den abhängigen Ansprüchen angegeben.
  • Ausführungsformen der vorliegenden Offenbarung beziehen sich auf ein auf einem Computer implementiertes Verfahren, ein zugehöriges Computersystem und Computerprogrammprodukt für die Verwaltung von skalierbarem virtuellen Speicher. Das auf einem Computer implementierte Verfahren weist auf: Instanziieren einer Mehrzahl von Containern mit Metadaten eines virtuellen Speichers (VM) durch einen Prozessor, wobei eine Gesamtanzahl von VM-Metadaten-Containern ausreichend VM-Metadatenblöcke aufweist, um den gesamten realen, physischen Speicher darzustellen, der für ein Computersystem als virtueller Speicher bereitgestellt wird; Gruppieren der Mehrzahl von VM-Metadaten-Containern zu zwei oder mehr Container-Gruppen durch den Prozessor, wobei jede der zwei oder mehr Container-Gruppen durch eine unterschiedliche Sperre gesteuert wird; Durchsuchen der zwei oder mehr Container-Gruppen durch den Prozessor nach einer am wenigsten verwendeten Container-Gruppe als Reaktion auf eine Anforderung zum Zuordnen von Speicherobjekt-Metadaten zu einem VM-Metadatenblock; Abfragen der am wenigsten verwendeten Container-Gruppe durch den Prozessor nach einem am wenigsten verwendeten VM-Metadaten-Container innerhalb der am wenigsten verwendeten Container-Gruppe; Zuordnen der Speicherobjekt-Metadaten zu dem VM-Metadatenblock des am wenigsten verwendeten VM-Metadaten-Containers durch den Prozessor, wodurch die Anforderung zum Zuordnen der Speicherobjekt-Metadaten erfüllt wird.
  • Ausführungsformen der vorliegenden Offenbarung beziehen sich auf ein auf einem Computer implementiertes Verfahren, ein zugehöriges Computersystem und Computerprogrammprodukt für die Verwaltung von skalierbarem virtuellen Speicher, wobei das auf einem Computer implementierte Verfahren aufweist: Empfangen einer Anforderung zum Durchführen einer Speicherverwaltungsoperation an einer Metadatenblock-Zuordnung, die eine Mehrzahl von Container-Gruppen aufweist, die einen oder mehrere VM-Metadaten-Container aufweisen, durch einen Prozessor, wobei ein Zugriff auf einzelne Container-Gruppen der Mehrzahl von Container-Gruppen durch verschiedene Sperren gesteuert wird; Erwerben einer ersten Sperre, die eine erste Container-Gruppe steuert, durch den Prozessor; Durchführen sämtlicher Speicherverwaltungsoperationen an Speicherobjekt-Metadaten durch den Prozessor, die durch VM-Metadatenblöcke der ersten Container-Gruppe gespeichert werden, die Teil der Metadatenblock-Zuordnung sind; Freigeben der ersten Sperre durch den Prozessor; und Erwerben einer zweiten Sperre durch den Prozessor, die eine zweite Container-Gruppe steuert.
  • Eine alternative Ausführungsform der vorliegenden Offenbarung bezieht sich auf ein auf einem Computer implementiertes Verfahren, ein zugehöriges Computersystem und Computerprogrammprodukte zum Verwalten von skalierbarem virtuellen Speicher, wobei das auf einem Computer implementierte Verfahren aufweist: Instanziieren einer Mehrzahl von Containern mit Metadaten eines virtuellen Speichers (VM) durch einen Prozessor, wobei eine Gesamtanzahl von VM-Metadaten-Containern ausreichend VM-Metadatenblöcke aufweist, um den gesamten realen, physischen RAM darzustellen, der für ein Computersystem als virtueller Speicher bereitgestellt wird; Gruppieren der Mehrzahl von VM-Metadaten-Containern zu zwei oder mehr Container-Gruppen durch den Prozessor, wobei jede der zwei oder mehr Container-Gruppen durch eine unterschiedliche Sperre gesteuert wird; Empfangen einer Anforderung zum Vergrößern eines Speicherobjekts und Erhöhen einer Anzahl von VM-Metadatenblöcken, die einem Speichern von Speicherobjekt-Metadaten des Speicherobjekts zugeordnet sind, durch einen Prozessor; Ermitteln eines ersten VM-Metadaten-Containers einer ersten Container-Gruppe durch den Prozessor, die für ein vorheriges Zuordnen zumindest eines VM-Metadatenblocks zum Speichern der Speicherobjekt-Metadaten des Speicherobjekts zuständig ist; Berechnen von Metadatenblock-Voraussetzungen zum Erfüllen der Anforderung zum Vergrößern durch den Prozessor; Ermitteln durch den Prozessor, ob die Metadatenblock-Voraussetzungen zum Erfüllen der Anforderung zum Vergrößern größer als eine Größe von freien VM-Metadatenblöcken des ersten VM-Metadaten-Containers sind.
  • Eine Ausführungsform der vorliegenden Offenbarung bezieht sich auf ein Computersystem und auf ein zugehöriges auf einem Computer implementiertes Verfahren und Computerprogrammprodukt zum Verwalten von skalierbarem virtuellen Speicher, wobei das Computersystem aufweist: einen Prozessor; und ein durch einen Computer lesbares Speichermedium, das mit dem zumindest einen Prozessor verbunden ist, wobei das durch einen Computer lesbare Speichermedium Programmanweisungen enthält, die ein auf einem Computer implementiertes Verfahren ausführen, das aufweist: Instanziieren einer Mehrzahl von Containern mit Metadaten eines virtuellen Speichers (VM) durch den Prozessor, wobei eine Gesamtanzahl von VM-Metadaten-Containern ausreichend VM-Metadatenblöcke aufweist, um den gesamten realen, physischen Speicher darzustellen, der für ein Computersystem als virtueller Speicher bereitgestellt wird; Gruppieren der Mehrzahl von VM-Metadaten-Containern zu zwei oder mehr Container-Gruppen durch den Prozessor; Durchsuchen der zwei oder mehr Container-Gruppen durch den Prozessor nach einer am wenigsten verwendeten Container-Gruppe als Reaktion auf eine Anforderung zum Zuordnen von Speicherobjekt-Metadaten zu einem VM-Metadatenblock; und Abfragen der am wenigsten verwendeten Container-Gruppe durch den Prozessor nach einem am wenigsten verwendeten VM-Metadaten-Container innerhalb der am wenigsten verwendeten Container-Gruppe.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
    • 1 stellt eine Ausführungsform eines Blockschaubildes von internen und externen Komponenten eines Datenverarbeitungssystems dar, in dem hierin beschriebene Ausführungsformen gemäß der vorliegenden Offenbarung implementiert sein können.
    • 2a stellt ein Blockschaubild einer Ausführungsform einer Rechenumgebung zum Zuordnen von Speicherobjekt-Metadaten gemäß der vorliegenden Offenbarung dar.
    • 2b stellt ein Blockschaubild einer alternativen Ausführungsform einer Rechenumgebung zum Zuordnen von Speicherobjektdaten gemäß der vorliegenden Offenbarung dar.
    • 3a stellt ein Blockschaubild einer Ausführungsform einer Rechenumgebung zum Speichern und Abrufen von Daten oder Anweisungen dar, die in einem virtuellen Speicher gespeichert sind.
    • 3b stellt ein Blockschaubild einer alternativen Ausführungsform einer Rechenumgebung zum Speichern und Abrufen von Daten oder Anweisungen dar, die in einem virtuellen Speicher gespeichert sind, wobei die Rechenumgebung einen logischen Cache aufweist.
    • 3c stellt ein Blockschaubild einer weiteren alternativen Ausführungsform einer Rechenumgebung zum Speichern und Abrufen von Daten oder Anweisungen dar, die in einem virtuellen Speicher gespeichert sind, wobei die Rechenumgebung einen physischen Cache aufweist.
    • 4a veranschaulicht ein Blockschaubild, das eine Ausführungsform zum Implementieren von vorinstanziierten VM-Metadaten-Containern, die parallel zueinander arbeiten, gemäß der vorliegenden Offenbarung darstellt.
    • 4b veranschaulicht ein Blockschaubild, das eine Verteilung von Zuordnungen von Speicherobjekt-Metadaten zu VM-Metadatenblöcken von VM-Metadaten-Containern, die parallel zueinander arbeiten, gemäß der vorliegenden Offenbarung darstellt.
    • 5 veranschaulicht ein Blockschaubild, das eine Ausführungsform einer Metadatenblock-Zuordnung darstellt, die Speicherobjekt-Metadaten aufweist, die über eine Mehrzahl von Container-Gruppen verteilt sind, die einzeln durch verschiedene Sperren und eine Priorisierungsverwaltung von Metadaten von virtuellen Speicherobjekten je Container-Gruppe gesteuert werden.
    • 6 stellt ein Blockschaubild einer weiteren alternativen Ausführungsform einer Rechenumgebung zum Zuordnen von Speicherobjekt-Metadaten gemäß der vorliegenden Offenbarung dar.
    • 7 stellt eine Ausführungsform eines Algorithmus für eine Zuordnungsfunktion, die VM-Metadaten-Container instanziiert, gemäß der vorliegenden Offenbarung dar.
    • 8a stellt eine Ausführungsform eines Algorithmus dar, der eine Zuordnung von Speicherobjekt-Metadaten zu VM-Metadatenblöcken eines VM-Metadaten-Containers implementiert.
    • 8b stellt eine Ausführungsform eines Algorithmus dar, der einen übergebenen Kernel-Prozess zum Erstellen von zusätzlichen VM-Metadaten-Containern für die Zuordnung von Speicherobjekt-Metadaten implementiert.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die hierin verwendete Terminologie dient lediglich der Beschreibung bestimmter Ausführungsformen und soll die Offenbarung nicht beschränken. So, wie sie hierin verwendet werden, sollen die Singularformen „ein“, „eine“ und „der“, „die“, „das“ auch die Pluralformen enthalten, sofern dies aus dem Kontext nicht eindeutig anders hervorgeht. Es versteht sich darüber hinaus, dass die Begriffe „aufweist“ und/oder „aufweisend“, wenn sie in dieser Beschreibung verwendet werden, das Vorhandensein von angegebenen Merkmalen, Schritten, Vorgängen, Elementen und/oder Komponenten bezeichnen, jedoch nicht das Vorhandensein bzw. die Beifügung von einem/einer bzw. mehreren anderen Merkmalen, Schritten, Vorgängen, Elementen, Komponenten und/oder Gruppen davon ausschließen.
  • Die entsprechenden Strukturen, Materialien, Vorgänge und Entsprechungen aller Mittel oder Step-plus-Function-Elementen in den nachstehenden Ansprüchen sollen jede Struktur, jedes Material bzw. jede Handlung zum Durchführen der Funktion in Kombination mit anderen beanspruchten Elementen als ausdrücklich beansprucht enthalten. Die Beschreibung der vorliegenden Offenbarung erfolgte zum Zweck der Veranschaulichung und Beschreibung, ist jedoch nicht erschöpfend oder auf die Offenbarung in der dargestellten Form beschränkt gemeint. Zahlreiche Modifizierungen und Varianten sind für Fachleute ersichtlich, ohne vom Umfang der Offenbarung abzuweichen. Die Ausführungsform wurde ausgewählt und beschrieben, um die Grundgedanken der Offenbarung und die praktische Anwendung am besten zu erläutern und um anderen Fachleuten das Verständnis der Offenbarung für verschiedene Ausführungsformen mit verschiedenen, für den in Betracht gezogenen Einsatz geeigneten Modifizierungen zu ermöglichen.
  • ÜBERSICHT
  • Ausführungsformen der vorliegenden Offenbarung erkennen an, dass ein Bedarf an effizienten Verfahren, Systemen und Computerprogrammprodukten zum Verwalten von Operationen an Metadaten von virtuellen Speichern und im Besonderen an einer Verwaltung von skalierbarem virtuellen Speicher besteht. Mit der Zunahme von Systemspeicher und der Anzahl der Prozessoren und/oder der Verarbeitungsleistung nehmen die Anforderungen von verschiedenen Prozessen an das System zu. Mit zunehmender Skalierung des Systemspeicherbedarfs leiden bestehende Speicherzuordnungstechniken unter Einbußen der Leistungsfähigkeit der Operationen zur Verwaltung von virtuellem Speicher. Bestehende Techniken zur Verwaltung von virtuellem Speicher implementieren häufig die Erstellung von VM-Metadaten-Containern nach Bedarf. Ein „VM-Metadaten-Container“ kann sich auf Container beziehen, die VM-Metadatenblöcke enthalten können, die zum Speichern von Metadaten zuständig sind, die ein Speicherobjekt beschreiben können, das durch eine Anwendung, ein Programm oder Prozesse verwendet wird. Rechensysteme, die große Mengen an Speicher enthalten, können mehrere VM-Metadaten-Container einsetzen, um ausreichend VM-Metadatenblöcke bereitstellen, die den gesamten vorhandenen physischen Speicher mit virtuellem Speicher darstellen können.
  • Aktuell verfügbare VM-Verwaltungstechniken steuern Zuordnungen von VM-Metadatenblöcken mithilfe einer einzelnen Sperre, die sich über sämtliche der VM Metadaten-Container eines Rechensystems erstrecken und den Zugriff auf diese steuern. Eine Zuordnung von Speicherobjekt-Metadaten zu VM-Metadaten-Containern kann einen „First-Fit"(erster Passender)-Algorithmus befolgen, wodurch der erste verfügbare VM-Metadaten-Container, der groß genug ist, um die Speicherobjekt-Metadaten zu enthalten, gefüllt wird und ein nachfolgender VM-Metadaten-Container hinzugefügt werden kann, wenn der bestehende VM-Metadaten-Container außerstande ist, den Speicherbedarf der Speicherobjekt-Metadaten zu erfüllen. Da VM-Metadaten-Container entsprechend dem Bedarf der Systeme erstellt werden, die Operationen an virtuellem Speicher verwalten, wird nur eine Sperre erstellt und genutzt, was dazu führt, dass nur ein VM-Metadaten-Container gleichzeitig verwendet wird, auch wenn möglicherweise mehrere Metadaten-Container verfügbar sind. Dies wiederum kann dazu führen, dass die VM-Metadaten-Container von vorn mit Speicherobjekt-Metadaten geladen werden, da Systeme, die Zuordnungen von virtuellem Speicher verwalten, den ersten gefundenen Metadaten-Container mit ausreichend Platz bevorzugen und den ersten gefundenen Metadaten-Container verwenden, bis der Metadaten-Container voll ist, bevor sie zu dem nächsten verfügbaren Metadaten-Container übergehen. Infolgedessen können verbleibende Metadaten-Container leer oder größtenteils leer bleiben, bis das System zu dem leeren Metadaten-Container übergeht und beginnt, den leeren VM-Metadaten-Container mit Speicherobjekt-Metadaten zu füllen.
  • Nachteilige Auswirkungen des First-Fit-Algorithmus, der durch die Verwaltung von virtuellem Speicher verwendet wird, sind auf Systemen mit geringen Mengen an Speicher möglicherweise weniger spürbar, da Systeme mit geringen Mengen an Speicher keine große Anzahl von VM-Metadaten-Containern verwenden. Jedoch erkennen Ausführungsformen der vorliegenden Offenbarung an, dass Systeme, die große Mengen an Speicher nutzen, eine große Anzahl von VM-Metadaten-Containern erstellen und außerstande sind, auf diese VM-Metadaten-Container parallel zueinander zuzugreifen, da die First-Fit-Technik eine Implementierung verwendet, die nur eine einzelne Sperre erwirbt. Ausführungsformen der vorliegenden Anmeldung verbessern ein Skalieren von Operationen zur Verwaltung von virtuellem Speicher für Systeme, die große Mengen an Speicher nutzen, was zu einer verbesserten Leistungsfähigkeit und einer geringeren Verschlechterung der Operationen zur Verwaltung von virtuellem Speicher im Vergleich zu Systemen führt, die First-Fit-Algorithmen nutzen. Ausführungsformen der vorliegenden Offenbarung erhöhen die Granularität von Sperrmechanismen für virtuellen Speicher durch Verwenden mehrerer Sperrmechanismen, die Systemen ermöglichen, auf eine Mehrzahl von VM-Metadaten-Containern parallel zuzugreifen (anstatt nur einen VM-Metadaten-Container gleichzeitig zu nutzen), was die Leistungsfähigkeit der Speicherzuordnung verbessert.
  • Ausführungsformen der vorliegenden Offenbarung können eine Mehrzahl von VM-Metadaten-Containern zum Beispiel beim Starten eines Systems vorinstanziieren. Ausführungsformen können die VM-Metadaten-Container so instanziieren, dass die Gesamtmenge an virtuellem Speicher, der für die VM-Metadaten-Container bereitgestellt wird, der Menge an realem, physischen Speicher (wie zum Beispiel dem RAM) entspricht, der für das System verfügbar ist. Wenn zum Beispiel die Gesamtmenge an RAM, die für das System verfügbar ist, 32 TB beträgt, beträgt die kombinierte Gesamtmenge an virtuellem Speicher, der von allen VM-Metadaten-Containern verfügbar ist, 32 TB. Zusätzliche Metadaten-Container können nach Bedarf erstellt werden. Ein Verwenden der vorinstanziierten VM-Metadaten-Container, wie hierin offenbart, kann dem System ermöglichen, den gesamten physischen Speicher als virtuellen Speicher zuzuordnen, bevor das System zusätzliche VM-Metadaten-Container erstellen muss. Ausführungsformen der vorliegenden Offenbarung können einen oder mehrere Algorithmen befolgen, die das Betriebssystem des Systems anleiten, die Anzahl von zu instanziierenden VM-Metadaten-Containern zu ermitteln. Ermittlungen können auf der Menge an verfügbaren Prozessor- und Speicher-Ressourcen beruhen, und ein oder mehrere VM-Metadaten-Container können in Container-Gruppen platziert werden, wobei jede der Gruppierungen von VM-Metadaten-Containern einer einzelnen Sperre zugewiesen werden kann, die durch das System erworben wird.
  • Ausführungsformen der vorliegenden Offenbarung können einen „Least-Used" (am wenigsten verwendet)-Zuordnungsalgorithmus (anstelle von „First-Fill“) nutzen. Die hierin beschriebenen „Least-Used“-Techniken nutzen die vorinstanziierten Gruppen von VM-Metadaten-Containern, die einer der Mehrzahl von Container-Gruppen zugewiesen werden können. Wenn neue Metadatenblock-Zuordnungen angefordert werden, können VM-Metadaten-Container durch eine Speicherzuordnungsfunktion abgefragt werden. Die Zuordnungsfunktion kann die Nutzungsstufen der Metadaten-Container-Gruppen abfragen, und anschließend kann die Zuordnungsfunktion einen am wenigsten verwendeten oder weniger verwendeten Metadaten-Container innerhalb der Container-Gruppe auswählen, um die Zuordnungsanforderung zu erfüllen. Während des Abfragens kann die Zuordnungsfunktion die Metadaten-Container oder die Gruppen von Metadaten-Containern durchsuchen, während die Metadaten-Container entsperrt sind, um Sperrenkonflikte so gering wie möglich zu halten. Infolgedessen können die Gruppen von Metadaten-Containern, die durch die Sperren geordnet werden, mit gleichen Geschwindigkeiten oder nahezu gleichen Geschwindigkeiten mit Speicherobjekt-Metadaten gefüllt werden. Durch Aufrechterhalten von Container-Gruppierungen, die mehrere Metadaten-Container innerhalb einer einzelnen Sperre enthalten, können Ausführungsformen der Zuordnungsfunktion darüber hinaus den am wenigsten verwendeten Metadaten-Container innerhalb der am wenigsten verwendeten Gruppierung von Metadaten-Containern auswählen, um ihn mit den Speicherobjekt-Metadaten zu füllen.
  • Ausführungsformen der vorliegenden Offenbarung erkennen des Weiteren an, dass Speicherobjekte in einigen Situationen ein Vergrößern anfordern können, wodurch die Menge an virtuellem Speicher zunimmt, die durch ein Speicherobjekt in Anspruch genommen wird, das bereits eine Zuordnung eines oder mehrerer VM-Metadatenblöcke empfangen hat. Ausführungsformen der Zuordnungsfunktion, die eine Vergrößerungsanforderung empfängt, können Vergrößerungsanforderungen erfüllen, indem sie auf den ursprünglichen Metadaten-Container abzielen, der zuvor zum Empfangen der Speicherobjekt-Metadaten zugeordnet wurde. In Situationen, in denen der Ziel-Metadaten-Container nicht ausreichend freien Speicherplatz aufweist, um die Vergrößerungsanforderung zu erfüllen, kann die Zuordnungsfunktion die Anforderung durch Zuordnen der Speicherobjekt-Metadaten zu einem weiteren VM-Metadaten-Container innerhalb derselben Container-Gruppe wie der Ziel-Metadaten-Container erfüllen, auf den ursprünglich durch die Zuordnungsfunktion abgezielt worden war, wobei die Zuordnungen des Speicherobjekts von VM-Metadatenblöcken innerhalb derselben Container-Gruppe behalten werden und ein Zugriff daher durch eine einzelne Sperre gesteuert wird. Speicherobjekt-Metadaten innerhalb einer einzelnen Sperre zu behalten, kann dazu beitragen, vor einer Sperrenüberlastung zu schützen, die daraus resultieren kann, dass sich Speicherobjektzuordnungen über mehrere Sperren erstrecken. Eine Speicherobjektzuordnung innerhalb einer einzelnen Sperre zu behalten, kann die Verwaltung der Speicherzuordnung optimieren, indem vermieden wird, dass mehr als eine Sperre zum Durchführen von Operationen oder eines Zugriffs auf die Speicherobjekt-Metadaten erworben werden muss.
  • Ausführungsformen der vorliegenden Offenbarung erkennen des Weiteren an, dass in einigen Situationen, in denen Vergrößerungsanforderungen oder neue Speicherzuordnungen empfangen werden und VM-Metadaten-Container innerhalb einer einzelnen Sperre nahezu voll sind, ein Beschränken von Speicherobjektzuordnungen auf einen einzelnen VM-Metadaten-Container oder eine Gruppe von VM-Metadaten-Containern, die durch eine einzelne Sperre verwaltet werden, zum Zeitpunkt der Anforderung unter Umständen nicht möglich ist. Speicherobjekt-Metadaten können sich über mehrere VM-Metadaten-Container innerhalb von verschiedenen Container-Gruppen erstrecken. Ausführungsformen der vorliegenden Offenbarung können die Leistungsfähigkeit von Operationen auf Grundlage der Container-Gruppe ordnen, bevor sie Operationen zur Speicherverwaltung durchführen, um zu vermeiden, dass sie dieselbe Sperre mehrmals erwerben müssen. Statt Speicheroperationen für die Zuordnung von Metadatenblöcken in der Reihenfolge durchzuführen, in der die Metadatenblöcke ursprünglich zugeordnet worden sind, können VM-Operationen alle Speicherobjekt-Metadaten, die sich unter einer einzelnen erworbenen Sperre befinden, auf einmal verwalten, und die Sperre kann dann am Ende der Operation freigemacht werden und muss möglicherweise nie wieder neu erworben werden. VM-Metadatenblöcke können auf Grundlage der Container-Gruppen gruppiert werden, denen die VM-Metadaten zugeordnet sind. Beispielsweise kann eine Zuordnung von VM-Metadatenblöcken einer Mehrzahl von VM-Metadaten-Containern zugeordnet werden, die sich unter den Sperren a, b und c befinden, wobei die ersten drei Blöcke der „Sperre a“ zugeordnet werden, der 4. Block der „Sperre b“ zugeordnet wird, der 5. Block der „Sperre c“ zugeordnet wird und der sechste Block der „Sperre b“ zugeordnet wird. Statt VM-Verwaltungsoperationen durchzuführen, indem zuerst die „Sperre a“ für die ersten drei Blöcke erworben wird, dann die Sperre b für den 4. Block erworben wird, die Sperre c für den 5. Block erworben wird, gefolgt durch ein erneutes Erwerben der Sperre b für den 6. Block, können Ausführungsformen der vorliegenden Offenbarung Speicherverwaltungsoperationen durch Erwerben der „Sperre a“ für die ersten drei Blöcke, Freimachen der ersten drei Metadatenblöcke, Freigeben der „Sperre a“ und anschließendes Erwerben der „Sperre b“, Freimachen des 4. Blocks und des 6. Blocks und Freigeben der „Sperre b“ durchführen. Die Speicherverwaltungsoperationen können die „Sperre b“ vollständig freigeben, da die Zuordnungen zu dem 4. und dem 6. Block freigemacht worden sind, statt die „Sperre b“ erneut erwerben zu müssen, nachdem der 5. Block freigegeben worden ist, der sich in der „Sperre c“ befindet.
  • DATENVERARBEITUNGSSYSTEM
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt mit einem beliebigen Integrationsgrad technischer Details handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) enthalten, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine materielle Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Festwertspeicher (ROM), ein löschbarer programmierbarer Festwertspeicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatten-Festwertspeicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. durch ein Glasfaserkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Rechen-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Rechen-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Rechen-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für integrierte Schaltungen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). Bei einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, feldprogrammierbare Gate-Arrays (FPGA) oder programmierbare Logik-Arrays (PLA) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsdaten der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programmanweisungen implementiert werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Computers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers oder der sonstigen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen Mittel zum Implementieren der in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubildes festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, die Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaubilder angegebenen Funktion/Schritts implementieren.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubildes festgelegten Funktionen/Schritte umsetzen.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in dem Ablaufplan oder den Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zum Implementieren der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Implementierungen können die in den Blöcken angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit als ein Schritt, gleichzeitig, im Wesentlichen gleichzeitig, zum Teil oder vollständig zeitlich überlappend ausgeführt werden, oder die Blöcke können bisweilen je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder des Ablaufplans sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder dem Ablaufplan durch spezielle auf Hardware beruhende Systeme implementiert werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung erfolgten zur Veranschaulichung, sind jedoch nicht erschöpfend oder auf die offenbarten Ausführungsformen beschränkt gemeint. Zahlreiche Modifizierungen und Varianten sind für Fachleute ersichtlich, ohne vom Umfang der Erfindung abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsform, die praktische Anwendung oder die technische Verbesserung gegenüber auf dem Markt erhältlichen Technologien am besten zu erläutern oder um anderen Fachleuten zu ermöglichen, die hierin offenbarten Ausführungsformen zu verstehen.
  • 1 veranschaulicht ein Blockschaubild eines Datenverarbeitungssystems 100, bei dem es sich um ein vereinfachtes Beispiel für ein Rechensystem handeln kann, das in der Lage ist, die hierin beschriebenen Rechenoperationen durchzuführen. Das Datenverarbeitungssystem 100 kann für ein(e) oder mehrere Rechensysteme oder - einheiten, die in der Rechenumgebung 200, 290, 600 dargestellt werden, wie in 2a bis 6 gezeigt, und gemäß den Ausführungsformen der vorliegenden Offenbarung repräsentativ sein. Es ist zu beachten, dass 1 lediglich eine Veranschaulichung einer Implementierung eines Datenverarbeitungssystems 100 bereitstellt und keine Einschränkungen in Bezug auf die Umgebungen impliziert, in denen verschiedene Ausführungsformen implementiert werden können. Im Allgemeinen können die in 1 veranschaulichten Komponenten für eine beliebige elektronische Einheit repräsentativ sein, die in der Lage ist, durch eine Maschine lesbare Programmanweisungen auszuführen.
  • Wenngleich 1 ein Beispiel für ein Datenverarbeitungssystem 100 darstellt, kann ein Datenverarbeitungssystem 100 viele verschiedene Formen annehmen, darunter von Bare-Metal-Computersystemen und virtualisierten Computersystemen. Beispielsweise kann ein Datenverarbeitungssystem 100 die Form von Personal-Computersystemen, Laptops, Notebooks, Tablets, Servern, Client-Systemen, Netzwerkeinheiten, Netzwerk-Endgeräten, Thin Clients, Thick Clients, Selbstbedienungs-Terminals, Einheiten zur telefonischen Datenübertragung (z.B. Smartphones), Mehrprozessorsystemen, Systemen auf Grundlage von Mikroprozessoren, Minicomputersystemen, Großrechnersystemen, Smart-Einheiten oder Einheiten für das Internet der Dinge (Internet ofThings, loT) annehmen. Die Datenverarbeitungssysteme 100 können in einer vernetzten Rechenumgebung und/oder einer verteilten Cloud-Computing-Umgebung arbeiten, die von den hierin beschriebenen Systemen oder Einheiten und/oder Fachleuten bekannten oder durch diese verwendeten zusätzlichen Recheneinheiten oder-systemen beliebige enthalten können.
  • Das Datenverarbeitungssystem 100 kann eine Datenübertragungsstruktur 112 enthalten, die eine elektronische Datenübertragung zwischen einem oder mehreren Prozessor(en) 103, einem Speicher 105, einem nichtflüchtigen Speicher 106, einem Cache 107, einer Datenübertragungseinheit 111 und einer oder mehreren Eingabe-/Ausgabe(E/A)-Einheiten 115 bereitstellen kann. Die Datenübertragungsstruktur 112 kann mit einer beliebigen Architektur implementiert werden, die zum Weiterleiten von Daten und/oder Steuerungsinformationen zwischen (einem) Prozessor(en) 103 (wie zum Beispiel Mikroprozessoren, Datenübertragungs- und Netzwerkprozessoren usw.), einem Speicher 105, externen Einheiten 117 und beliebigen sonstigen Hardware-Komponenten innerhalb eines Datenverarbeitungssystems 100 gestaltet ist. Beispielsweise kann die Datenübertragungsstruktur 112 als ein oder mehrere Busse wie zum Beispiel ein Adressbus 305 oder ein Datenbus 307 implementiert werden.
  • Bei dem Speicher 105 und dem nichtflüchtigen Speicher 106 kann es sich um durch einen Computer lesbare Speichermedien handeln. Zu Ausführungsformen des Speichers 105 können ein Direktzugriffsspeicher (random access memory, RAM) und ein Cache-Speicher 107 zählen. Im Allgemeinen kann der Speicher 105 beliebige geeignete flüchtige oder nichtflüchtige, durch einen Computer lesbare Speichermedien enthalten und kann Firmware oder eine sonstige Software aufweisen, die in den Speicher 105 programmiert ist. (Ein) Programm(e) 114, Software-Anwendungen 223, Benutzerprozesse 221 und Dienste, die hierin beschrieben werden, können in dem Speicher 105 und/oder dem nichtflüchtigen Speicher 106 zur Ausführung und/oder zum Zugriff durch einen oder mehrere des/der jeweiligen Prozessor(s,en) 103 des Computersystems 100 gespeichert werden.
  • Der nichtflüchtige Speicher 106 kann eine Mehrzahl von Magnet-Festplattenlaufwerken enthalten. Alternativ oder zusätzlich zu einem Magnet-Festplattenlaufwerk kann der nichtflüchtige Speicher 106 ein oder mehrere Halbleiter-Festplattenlaufwerke, Halbleiter-Speichereinheiten, Festwertspeicher (read-only memory, ROM), löschbare, programmierbare Festwertspeicher (erasable programmable read-only memory, EPROM), Flash-Speicher oder beliebige sonstige durch einen Computer lesbare Speichermedien enthalten, die in der Lage sind, Programmanweisungen oder digitale Informationen zu speichern. Ausführungsformen der durch den nichtflüchtigen Speicher 106 verwendeten Medien können auch auswechselbar sein. Beispielsweise kann eine Wechselfestplatte als nichtflüchtiger Speicher 106 verwendet werden. Zu sonstigen Beispielen zählen optische und Magnetplatten, USB-Speichersticks und Chip-Karten, die zum Übertragen auf ein weiteres durch einen Computer lesbares Speichermedium, das ebenfalls Teil des nichtflüchtigen Speichers 106 ist, in ein Laufwerk eingesetzt werden.
  • Eine Datenübertragungseinheit 111 erleichtert eine elektronische Datenübertragung zwischen den Datenverarbeitungssystemen 100. Beispielsweise zwischen einem oder mehreren Computersystemen oder -einheiten über ein Datenübertragungsnetzwerk 250. Bei der beispielhaften Ausführungsform kann die Datenübertragungseinheit 111 Netzwerkadapter oder -Schnittstellen wie zum Beispiel TCP/IP-Adapterkarten, drahtlose Wi-Fi-Schnittstellenkarten, drahtlose 3G- oder 4G- oder 5G-Schnittstellenkarten oder sonstige Verbindungen für eine drahtgebundene oder drahtlose Datenübertragung enthalten. Datenübertragungsnetzwerke können zum Beispiel Kupferkabel, Lichtwellenleiter, drahtlose Übertragung, Router, Firewalls, Switches, Gateway-Computer, Edge-Server und/oder sonstige Netzwerk-Hardware aufweisen, die Teil von Knoten der Datenübertragungsnetzwerke sein können oder eine Verbindung mit diesem herstellen können, darunter Einheiten, (ein) Host-System(e) 201, Endgeräte oder sonstige Netzwerk-Computersysteme. Software und Daten, die zum Umsetzen von Ausführungsformen der vorliegenden Erfindung verwendet werden, können auf die Computersysteme, die in einer Netzwerkumgebung arbeiten, durch die Datenübertragungseinheit 111 (z.B. über das Internet, ein lokales Netzwerk oder sonstige Weitbereichs-Netzwerke) heruntergeladen werden. Von der Datenübertragungseinheit 111 aus können die Software und die Daten des Programms/der Programme 114 in den nichtflüchtigen Speicher 106 geladen werden.
  • Eine oder mehrere E/A-Schnittstellen 115 können eine Eingabe und Ausgabe von Daten in/aus sonstige(n) Einheiten ermöglichen, die mit dem Datenverarbeitungssystem 100 verbunden sein können. Beispielsweise kann die E/A-Schnittstelle 115 eine Verbindung mit einer oder mehreren externen Einheiten 117 wie zum Beispiel einer oder mehreren Smart-Einheiten, loT-Einheiten, Aufzeichnungseinheiten wie zum Beispiel einem Audiosystem, Kamerasystemen, einer oder mehreren Sensoreinheit(en), Eingabeeinheiten wie zum Beispiel einer Tastatur, einer Computermaus, einem Touchscreen, einer virtuellen Tastatur, einem Touchpad, einer Zeigeeinheit oder sonstigen Benutzerschnittstellen-Einheiten herstellen. Zu externen Einheiten 117 können auch tragbare durch einen Computer lesbare Speichermedien wie zum Beispiel USB-Speichersticks, tragbare optische oder Magnetplatten und Speicherkarten zählen. Die E/A-Schnittstelle 115 kann außerdem eine Verbindung zu einer durch einen Menschen lesbaren Anzeige 118 herstellen. Die durch einen Menschen lesbare Anzeige 118 stellt einen Mechanismus zum Anzeigen von Daten für einen Benutzer bereit und kann zum Beispiel ein Computermonitor oder -bildschirm sein. Die durch einen Menschen lesbare Anzeige 118 kann darüber hinaus eine integrierte Anzeige sein und kann als Touchscreen fungieren, wie zum Beispiel eine eingebaute Anzeige eines Tablet-Computers.
  • SYSTEM ZUM VERWALTEN VON ZUORDNUNGEN VON METADATEN VON VIRTUELLEN SPEICHERN
  • Unter Bezugnahme auf die Zeichnungen stellen 2a bis 6 einen Ansatz dar, der mithilfe eines oder mehrerer Datenverarbeitungssysteme 100 ausgeführt werden kann, die innerhalb einer Rechenumgebung 200, 290, 600 arbeiten, um Systeme, Verfahren und Computerprogrammprodukte zum Verwalten der Zuordnung von virtuellem Speicher zu Speicherobjekten mithilfe eines oder mehrerer VM-Metadaten-Container 402a bis 402f (im Allgemeinen als „VM-Metadaten-Container 402“ bezeichnet) zu implementieren. Ausführungsformen von Rechenumgebungen 200, 290, 600 können ein oder mehrere Datenverarbeitungssysteme 100 enthalten, die über ein Einheitennetzwerk 250 miteinander verbunden sind. Bei den Datenverarbeitungssystemen 100, die mit dem Einheitennetzwerk 250 verbunden sind, kann es sich um Spezialsysteme oder -einheiten handeln (ohne darauf beschränkt zu sein), die die Verbindung mit einem oder mehreren Host-Systemen 201 und/oder einem oder mehreren Client-Systemen 227a, 227b ...227n (die allgemein als Client-System 227 bezeichnet werden) enthalten können, die Ressourcen des Host-Systems 201 anfordern und nutzen können, um Daten oder eingegebene Anweisungen zu verarbeiten, die (eine) Zuordnung(en) eines virtuellen Speichers erfordern können, um die Daten und Anweisungen für ein oder mehrere Speicherobjekte eines Benutzerprozesses 221, einer Anwendung 223, eines Programms 114 oder eines Dienstes zu speichern.
  • Die Datenverarbeitungssysteme 100, die in Ausführungsformen von 2a bis 6 beispielhaft dargestellt werden, können nicht nur die Elemente der in den Zeichnungen von 2a bis 6 dargestellten Systeme und Einheiten aufweisen, sondern die dargestellten Spezial-Datenverarbeitungssysteme können des Weiteren eine oder mehrere Komponenten des in 1 dargestellten und oben beschriebenen Datenverarbeitungssystems 100 enthalten. Wenngleich dies in den Figuren nicht vollständig dargestellt wird, können ein oder mehrere Komponenten des Datenverarbeitungssystems 100 in die Ausführungsformen des Host-Systems 201 und/oder des Client-Systems 227 als System-Hardware 203 integriert sein, darunter die Integration eines oder mehrerer Prozessoren 103, Programme 114, eines Speichers 105, eines nichtflüchtigen Speichers 106, eines Cache 107, einer Datenübertragungseinheit 111, einer oder mehrerer Eingabe-/Ausgabe(E/A)-Schnittstelle(n) 115, einer oder mehrerer externer Einheiten 117 und einer durch einen Menschen lesbaren Anzeige 118 (ohne darauf beschränkt zu sein).
  • Die Ausführungsform der Rechenumgebung 200 veranschaulicht ein Blockschaubild, das Komponenten einer Ausführungsform eines Host-Systems 201 darstellt, wohingegen eine Rechenumgebung 290 ein Blockschaubild eines Host-Systems 201 von 2a darstellt, das Daten mit einem oder mehreren Client-Systemen 227 über das Netzwerk 250 austauscht. Der Begriff „Host-System“ 201 kann sich auf ein Datenverarbeitungssystem 100 wie zum Beispiel einen Computer oder eine sonstige Einheit, die mit einem Computernetzwerk verbunden ist, beziehen und Benutzern von Client-Systemen 227, die mit dem Host-System 201 verbunden sind, einen Zugriff auf Rechen-Ressourcen, Dienste, Benutzerprozesse 221, Anwendungen 223, Programme 114 usw. bereitstellen. Beispielsweise kann es sich bei dem Host-System 201 um einen (realen oder virtuellen) Server handeln, der als Web-Host, Cloud-Host, virtueller Host, entfernt angeordneter Host und/oder Großrechner arbeitet. Bei Client-Systemen 227, die mit dem Host-System 201 verbunden sind, kann es sich um ein Computersystem, eine Recheneinheit oder einen weiteren Typ von Datenverarbeitungssystem 100 handeln, die mit dem Host-System 201 über ein Netzwerk 250 verbunden sein und auf die verfügbaren Ressourcen zugreifen können, die durch das Host-System 201 angeboten werden. Beispielsweise ein Zugriff auf ein oder mehrere Programme 114, Anwendungen 223, Benutzerprozesse 221, Dienste usw.
  • Ausführungsformen des Netzwerks 250 können das Host-System 201 mit den Client-Systemen 227 verbinden und können mithilfe von drahtgebundenen, drahtlosen oder Lichtwellenleiter-Verbindungen aufgebaut sein. Ausführungsformen des Host-Systems 201, der Client-Systeme 227 und sonstiger Datenverarbeitungssysteme 100 können mit dem Netzwerk 250 über die Datenübertragungseinheit 111 wie zum Beispiel eine Netzwerk-Schnittstellen-Steuereinheit, eine Netzwerk-Schnittstellenkarte oder eine sonstige Netzwerk-Datenübertragungseinheit, die in der Lage ist, eine Verbindung mit dem Netzwerk 250 zu erleichtern, verbunden sein und Daten darüber mit diesem austauschen. Bei einigen Ausführungsformen der Rechenumgebungen 200, 290, 600 können ein oder mehrere Host-Systeme 201 und das Client-System 227 Datenverarbeitungssysteme 100 darstellen, die in Gruppen zusammengefasste Computer und Komponenten nutzen, die als einzelner Pool von nahtlosen Ressourcen fungieren, wenn durch das Netzwerk 250 auf sie zugegriffen wird. Beispielsweise können solche Ausführungsformen in einem Rechenzentrum, für Anwendungen von Cloud Computing, Speicherbereichs-Netzwerken (storage area network, SAN) und Network-attached Storage (NAS) verwendet werden.
  • Ausführungsformen der Datenübertragungseinheit 111 können elektronische Spezialschaltungen implementieren, die eine Datenübertragung mithilfe eines spezifischen Standards für eine physische Schicht und eine Datenübertragungsschicht ermöglichen. Beispielsweise Ethernet, Fiber Channel, Wi-Fi oder Token Ring zum Übertragen von Daten zwischen dem Host-System 201, dem Client-System 227 und sonstigen Datenverarbeitungssystemen 100, die mit dem Netzwerk 250 verbunden sind. Die Datenübertragungseinheit 111 kann des Weiteren einen vollständigen Netzwerk-Protokollstapel ermöglichen, der eine Datenübertragung über das Netzwerk 250 zu Gruppen von Host-Systemen 201, Client-Systemen 227 und sonstigen Datenverarbeitungssystemen 100 ermöglicht, die durch Datenübertragungskanäle des Netzwerks 250 miteinander verbunden sind. Das Netzwerk 250 kann eine Datenübertragung und ein gemeinsames Nutzen von Ressourcen unter dem Host-System 201, dem Client-System 227 und sonstigen Datenverarbeitungssystemen 100 (zum Beispiel über das Netzwerk zugängliche Speichermedien) erleichtern, die mit dem Netzwerk 250 verbunden sind. Zu Beispielen für das Netzwerk 250 können ein lokales Netzwerk (Local Area Network, LAN), ein Heimnetzwerk (home area network, HAN), ein Weitverkehrs-Netzwerk (Wide Area Network, WAN), Backbone-Netzwerke (BBN), Peer-to-Peer-Netzwerke (P2P), Campus-Netzwerke, Unternehmensnetzwerke, das Internet, Cloud-Computing-Netzwerke und ein beliebiges sonstiges Netzwerk zählen, das einem Fachmann bekannt ist.
  • Unter Bezugnahme auf die Zeichnungen stellt 2a ein Blockschaubild dar, das eine Ausführungsform eines Host-Systems 201 beschreibt, das in der Lage ist, virtuellen Speicher, Speicherobjekte und Anforderungen zur Zuordnung von VM-Metadatenblöcken zu verwalten. Wie durch die Zeichnungen dargestellt, kann das Host-System 201 (oder sonstige Typen von Datenverarbeitungssystemen 100), das für das Verwalten der Zuordnung von virtuellem Speicher und VM-Metadaten zuständig ist, eine oder mehrere der Abstraktionsschichten aufweisen, wie dargestellt. Beispielsweise können Ausführungsformen des Host-Systems 201 eine Schicht einer System-Hardware 203, eine Schicht eines Betriebssystem 205 (das einen Kernel 206 aufweisen kann) und eine Schicht eines Benutzerbereichs 207 aufweisen. Ausführungsformen der System-Hardware 203 können eine oder mehrere physische Komponenten des Host-Systems 201 aufweisen, die Computer-Ressourcen bereitstellen können, die durch das Host-System 201 genutzt und/oder für ein oder mehrere Client-Systeme 227 bereitgestellt werden können, die einen Zugriff auf die Ressourcen anfordern oder auf eine oder mehrere Anwendungen 223, Programme 114 und/oder Dienste zugreifen können, die durch das Host-System 201 bereitgestellt werden. Beispielsweise durch Erstellen eines oder mehrerer virtualisierter Rechensysteme, die den Client-Systemen 227 zugewiesen werden. Zu Beispielen für die System-Hardware 203, die in der Schicht der System-Hardware 203 zu finden ist, können ein oder mehrere Prozessoren 103, ein Speicher 105, ein nichtflüchtiger Speicher 106 und/oder E/A-Schnittstellen 115 zählen (ohne darauf beschränkt zu sein), wie dargestellt.
  • Bei Ausführungsformen der Schicht des Benutzerbereichs 207 kann es sich um einen Abschnitt des Speichers 105 des Host-Systems 201 handeln, der einem Ausführen von Anwendungen 223, Benutzerprozessen 221, Programmen 114, Diensten und sonstiger Software zugeordnet ist. Bei einigen Ausführungsformen kann sich der Benutzerbereich 207 auf den gesamten Code beziehen, der außerhalb des Kernels 206 des Betriebssystems 205 ausgeführt wird. Der Benutzerbereich 207 kann nicht nur verschiedene Programme 114, Dienste und/oder Anwendungen 223 aufweisen, sondern kann darüber hinaus eine oder mehrere Bibliotheken 224 enthalten, auf die das Betriebssystem 205 zugreifen kann, um eine Verbindung zwischen dem Software-Code des Benutzerbereichs 207 und dem Kernel 206 herzustellen. Wenn die Anwendungen 223 und sonstige Software durch das Host-System 201 geöffnet werden, können Ausführungsformen des Betriebssystems 205 („OS 205“) das Programm 114 und beliebige erforderliche Ressourcen zusammen mit beliebigen Plug-ins und Bibliotheken 224 in den Benutzerbereich 207 laden. Ausführungsformen des Benutzerbereichs 207 können mit zunehmender Menge an Speicher 105 zunehmen. Beispielsweise kann durch Vergrößern des RAM des Host-Systems 201 und/oder sonstiger Typen des verfügbaren physischen Speichers 301 ein umso größerer Benutzerbereich 207 verfügbar sein, um eine Mehrzahl von Anwendungen 223 gleichzeitig auszuführen.
  • Ausführungsformen der Schicht des Betriebssystems 205 können das Betriebssystem 205 einschließlich des Kernels 206 des Betriebssystems 205 aufweisen. Ausführungsformen des OS 205 können die Ressourcen der System-Hardware 203, einheitenunabhängige Schnittstellen zum Zugreifen auf die Ressourcen der System-Hardware 203 verwalten und das gemeinsame Nutzen dieser Ressourcen mit einem oder mehreren Client-Systemen 227 erleichtern. Das OS 205 kann die Verwendung der System-Hardware 203 unter den Systemprogrammen 114 und Anwendungen 223 koordinieren, auf die durch Benutzer zugegriffen wird. Bei einigen Ausführungsformen kann das OS 205 einen Kernel 206 aufweisen. Bei dem Kernel 206 kann es sich um ein zentrales Modul des Betriebssystems 205 handeln. Der Kernel 206 kann unabhängig von den Programmen 114, Anwendungen 223, Benutzerprozessen 221, Diensten usw. ausgeführt werden, die möglicherweise innerhalb des Benutzerbereichs 207 ausgeführt werden. Der Kernel 206 kann in den Speicher 105 des Host-Systems 201 geladen werden und kann häufig der erste Teil des OS 205 sein, der geladen wird, wenn das Host-System 201 oder ein sonstiges Datenverarbeitungssystem 100 gestartet wird. Ausführungsformen des Kernels 206 können nach dem Laden in den Speicher 105 in dem Speicher 105 verbleiben, um wesentliche Dienste, Anwendungen und Abschnitte des Betriebssystems 205 auszuführen. Der Kernel 206 kann dafür zuständig sein, die System-Hardware 203 mit der Software zu verbinden, die innerhalb des Benutzerbereichs 207 ausgeführt oder verarbeitet wird. Zu Beispielen für die Programme und Dienste, die durch den Kernel 206 bereitgestellt werden, können eine Prozess-/Aufgabenverwaltung 209 für die Ausführung von Anwendungen 223, ein Manager 213 für virtuellen Speicher zum Steuern der Zuordnung von virtuellem Speicher und Speicherobjekt-Metadaten, eine Einheitenverwaltung 217 durch die Verwendung von Einheitentreibern und ein Dateisystem-Manager 219 zum Verwalten der Zuordnung von Speicherplatz des nichtflüchtigen Speichers 106 wie zum Beispiel Festplatten und Halbleiterlaufwerken zählen (ohne darauf beschränkt zu sein).
  • Ausführungsformen des Managers 213 für virtuellen Speicher können für die Speicherzuordnungsprozesse des Host-Systems 201 zuständig sein. Bei der Speicherzuordnung handelt es sich um einen Prozess, durch den Anwendungen 223, Programmen 114, Diensten und sonstigen Formen von Software ein virtueller Speicherbereich und/oder ein physischer Speicherbereich zugewiesen wird. Bei einigen Ausführungsformen kann es sich bei der Speicherzuordnung in erster Linie um eine Operation der System-Hardware 203 handeln, sie kann jedoch durch das OS 205 und/oder Software-Anwendungen verwaltet werden. Programmen 114, Anwendungen 223 und Diensten kann eine spezifische Adresse innerhalb des Speichers 105 entsprechend den Voraussetzungen des Programms 114, der Anwendung 223 oder des Dienstes, die ausgeführt werden, zugewiesen werden, und nachdem die ausgeführte Software Operationen beendet hat oder die ausgeführte Software inaktiv ist, kann der Speicher 105 freigegeben und/oder einer weiteren einzelnen Software zugeordnet oder mit dem Hauptspeicher 105 des Host-Systems 201 zusammengefasst werden.
  • Datenverarbeitungssysteme 100 wie zum Beispiel das Host-System 201 sind in der Lage, mehr Speicher 105 zu adressieren, als den gesamten physischen Speicher 301, der in dem System installiert ist. Der zusätzliche Speicher kann als virtueller Speicher bezeichnet werden. Ausführungsformen des virtuellen Speichers können als Abschnitt oder Teilabschnitt einer Einheit eines nichtflüchtigen Speichers 106 bereitgestellt werden. Beispielsweise kann eine Festplatte mit einem virtuellen Speicherteilabschnitt eingerichtet werden, der zum Emulieren des Speichers 105 des Host-Systems 201 bestimmt ist, und einen virtuellen Speicherbereich bereitstellen. Beispielsweise durch Emulieren eines RAM auf der Einheit des nichtflüchtigen Speichers 106. Durch Verwenden eines virtuellen Speicherschemas können Programme 114, Anwendungen 223 und sonstige Software, die in dem Benutzerbereich 207 ausgeführt wird, größer als der physische Speicher 301 sein, dem Host-System 201 ermöglichen, die Verwendung des physischen Speichers 301 durch Verwenden des nichtflüchtigen Speichers 106 zu erweitern und des Weiteren einen Schutz des Speichers 105 bereitstellen, da jede virtuelle Adresse des virtuellen Speichers in eine physische Adresse umgesetzt wird. Ausführungsformen des Managers 213 für virtuellen Speicher können Images des Speichers 105, die als Umlagerungsdatei(en) (oder „Auslagerungsdateien“) bezeichnet werden, in dem nichtflüchtigen Speicher 106 erstellen, und das OS 205 kann die virtuellen Speicherpositionen in dem nichtflüchtigen Speicher 106 adressieren, als ob der virtuelle Speicher in dem physischen Speicher 301 gespeichert würde. Wenn das OS 205 einen Block eines Speichers anfordert, der nicht durch den physischen Speicher 301 gespeichert ist, kann der Manager 213 für virtuellen Speicher einen Speicherblock aus dem physischen Speicher 301 verwenden, der nicht kürzlich verwendet worden ist, und ihn in eine Umlagerungsdatei schreiben. Der Manager 213 für virtuellen Speicher kann des Weiteren den Block des Speichers, den das OS 205 angefordert hat, aus der Umlagerungsdatei lesen. Der Manager 213 für virtuellen Speicher kann anschließend den Block des Speichers aus der Umlagerungsdatei entnehmen und ihn anstelle des alten Blocks, der nicht kürzlich verwendet worden ist, in den physischen Speicher 301 verlagern. Dieser Prozess kann aufgrund des Auslagerns von Umlagerungsdateien aus dem physischen Speicher 301 gegen Umlagerungsdateien, die durch den nichtflüchtigen Speicher 106 als virtueller Speicher gespeichert werden, als Auslagern bezeichnet werden.
  • Unter Bezugnahme auf 3a wird ein Beispiel dargestellt, das zeigt, wie Techniken für virtuelle Speicher ein Auslagern verwenden, um Umlagerungsdateien innerhalb des nichtflüchtigen Speicher 106 gegen Umlagerungsdateien auszutauschen, die in dem physischen Speicher 301 gespeichert sind. Wie in der Zeichnung dargestellt, fordert ein Prozessor 103 einen Speicherblock (d.h., ein Speicherobjekt, das durch eine Anwendung 223 verwendet wird) von einer Adresse des physischen Speichers 301 zum Beispiel über einen Adressbus 305 an. Wenn sich die Umlagerungsdatei in dem nichtflüchtigen Speicher 106 statt in dem physischen Speicher 301 befindet, kann die Umlagerungsdatei des virtuellen Speichers zu einer Adresse des physischen Speichers 301 ausgelagert werden und können die Daten durch einen Datenbus 307 zu dem Prozessor 103 zurückgegeben werden. Bei einigen Ausführungsformen können die Prozessoren 103 eine Speicherverwaltungseinheit 303 (memory management unit, MMU) verwenden, die in die System-Hardware 203 eingebaut sein kann. Die MMU 303 kann die Funktion zum Umsetzen von logischen Adressen, die die Position der Umlagerungsdatei beschreiben, die sie in dem virtuellen Speicher des nichtflüchtigen Speichers 106 einnimmt, in eine physische Adresse des physischen Speichers 301 durchführen. Ausführungsformen der MMU 303 können die Funktion oder Aufgabe zum Umsetzen von virtuellen Adressen in physische Adressen durchführen, wie in 3a bis 3c dargestellt, um die angeforderten Speicherblöcke aus dem physischen Speicher 301 abzurufen und/oder die Umlagerungsdateien aus dem nichtflüchtigen Speicher 106 zu dem physischen Speicher 301 auszulagern. Bei einigen Ausführungsformen kann ein Cache 107 in dem Host-System 201 enthalten sein, um einen Abruf von logischen oder physischen Adressen, die häufig oder kürzlich verwendet worden sind, durch die MMU 303 während einer Verwaltung von virtuellem Speicher zu verbessern. Beispielsweise kann auf einen logischen Cache (wie in 3b dargestellt) durch die MMU 303 zugegriffen werden, um kürzlich oder häufig verwendete logische Adressen abzurufen, die in physische Adressen umgesetzt werden. In ähnlicher Weise kann ein physischer Cache (wie in 3c dargestellt) enthalten sein, um eine schnellere Suche von häufig verwendeten physischen Adressen bereitzustellen, die den umgesetzten logischen Adressen entsprechen können.
  • Bei einigen Ausführungsformen kann der Manager 213 für virtuellen Speicher des Host-Systems 201 eine Zuordnungsfunktion 215 enthalten. Ausführungsformen der Zuordnungsfunktion 215 können für ein Durchführen von Aufgaben oder Funktionen zuständig sein, die einem Verwalten der Speicherobjekte (Speicherblöcke, die durch die Anwendungen 223 verwendet werden) und der freien Speicherblöcke zugehörig sind, die für das Host-System 201 zur Zuordnung zu Anwendungen 223 oder Software, die innerhalb des Benutzerbereichs 207 bereitgestellt wird, verfügbar sind. Um die Speicherobjekte und die freien Speicherblöcke, die durch die Zuordnungsfunktion 215 verwaltet werden, effizienter zu verwalten, können Ausführungsformen der Zuordnungsfunktion 215 Metadaten erstellen und speichern, die die Chunks von virtuellem Speicher beschreiben, die für die Zuordnungsfunktion 215 zugänglich sind (die hierin als „Speicherobjekt-Metadaten“ bezeichnet werden). Beispielsweise können die Metadaten die Größe, den Status und Zeigeradressen von Speicherobjekten beschreiben, die durch einen physischen oder virtuellen Speicher gespeichert werden. Ausführungsformen der Zuordnungsfunktion 215 können die Speicherobjekt-Metadaten in einem oder mehreren VM-Metadatenblöcken ordnen und speichern, die für die Metadaten bestimmt sind, die die Blöcke von virtuellem Speicher beschreiben, die verwaltet werden. Bei einigen Ausführungsformen kann es sich bei VM-Metadatenblöcken um einen Header eines Chunks von virtuellem Speicher handeln, der zur Zuordnung zu einem Speicherobjekt verfügbar ist.
  • Ausführungsformen von VM-Metadatenblöcken können durch die Zuordnungsfunktion 215 zu einem oder mehreren VM-Metadaten-Containern 402a bis 402f (die allgemein als VM-Metadaten-Container 402 bezeichnet werden) geordnet werden, wie in dem veranschaulichenden Beispiel von 4a bis 4b dargestellt. Ausführungsformen der VM-Metadaten-Container 402 können eine Mehrzahl von VM-Metadatenblöcken aufweisen. Die Anzahl von VM-Metadatenblöcken pro Container kann abhängig von der Gesamtmenge an physischem Speicher 301, der für das Host-System 201 verfügbar ist, der Größe der VM-Metadaten-Container 402 und der Anzahl von VM-Metadaten-Containern 402, die durch das Host-Systemen 201 erstellt werden, variieren. Bei einigen Ausführungsformen können die Größe und die Anzahl von VM-Metadaten-Containern 402 automatisch durch das Betriebssystem 205 ermittelt werden. Bei alternativen Ausführungsformen können die Speichergröße und/oder die Anzahl von VM-Metadaten-Containern, die durch das Betriebssystem 205 erstellt werden, benutzerdefiniert sein. Daher kann die Anzahl von für die Zuordnungsfunktion 215 verfügbaren VM-Metadatenblöcken pro VM-Metadaten-Container 402 abhängig von dem Host-System 201, der Rechenumgebung und dem Verfahren zum Instanziieren der VM-Metadaten-Container 402 variieren.
  • Bei der in 4a dargestellten beispielhaften Ausführungsform können die Größe und die Anzahl von VM-Metadaten-Containern 402, die durch das Betriebssystem 205 instanziiert werden, ausreichend VM-Metadaten-Container 402 aufweisen, um die Gesamtmenge an physischem Speicher 301, der für das Host-System 201 verfügbar ist, als virtuellen Speicher darzustellen. Durch Instanziieren von ausreichend VM-Metadaten-Containern 402, um die Gesamtmenge an physischem Gesamtspeicher 301 gleichzeitig darzustellen, kann die Zuordnungsfunktion 215 in der Lage sein, den gesamten physischen Speicher 301 als virtuellen Speicher zuzuordnen, bevor die Erstellung eines neuen Containers 403 angefordert wird. Ausführungsformen der Zuordnungsfunktion 215 können die Gesamtanzahl von VM-Metadaten-Containern vorinstanziieren, um den physischen Gesamtspeicher 301 als virtuellen Speicher zu dem Zeitpunkt darzustellen, zu dem das Host-System 201 startet. Bei Ausführungsformen, bei denen die Instanziierung von VM-Metadaten-Containern 402 durch das Betriebssystem 205 festgelegt wird, kann die Instanziierung von VM-Metadaten-Containern 403 auf Grundlage eines Algorithmus implementiert werden, der die optimale Anzahl von VM-Metadaten-Containern 402 und/oder deren Größe gemäß der für das Host-System 201 verfügbaren Menge an Ressourcen des Prozessors 103 und des Speichers 105 ermittelt. Wenn ein OS 205 zum Beispiel entscheidet, dass ein einzelner VM-Metadaten-Container 128 GB an virtuellem Speicher aufweisen soll, kann die Gesamtmenge an physischem Speicher 301 durch die ausgewählte Größe eines einzelnen VM-Metadaten-Containers 402 geteilt werden, um die Gesamtanzahl von zu instanziierenden VM-Metadaten-Containern 402 zu ermitteln. Wenn ein Host-System 201 zum Beispiel 1.024 GB an physischem Speicher 301 aufweist, kann das Betriebssystem acht VM-Metadaten-Container instanziieren, die jeweils einzeln 128 GB darstellen.
  • Ein Fachmann würde erkennen, dass durch Anpassen der Größe eines einzelnen Metadaten-Containers 402 mehr oder weniger einzelne VM-Metadaten-Container 402 instanziiert werden können. Statt zum Beispiel 128 GB einzelnen VM-Metadaten-Containern 402 zuzuordnen, können einem einzelnen VM-Metadaten-Container 64 GB zugeordnet werden. Auf diese Weise könnte ein Host-System, das 1.024 GB an physischem Speicher 301 aufweist, durch das Betriebssystem 205 mit sechzehn VM-Metadaten-Containern 402 instanziiert werden, um die gesamten 1.024 GB des physischen Speichers 301 vollständig darzustellen. Gleichermaßen kann bei einigen Ausführungsformen ein Benutzer eine gewünschte Größe eines einzelnen Metadaten-Containers 402 eingeben, und abhängig von dem physischen Gesamtspeicher 301 des Host-Systems 201 kann das Betriebssystem 205 die Mehrzahl von VM-Metadaten-Containern 402 erstellen, die jeweils der benutzerdefinierten Größe entsprechen, die die Gesamtmenge an physischem Speicher 301 des Host-Systems widerspiegeln würde.
  • Wie in 4a dargestellt, kann die Mehrzahl von VM-Metadaten-Containern 402, die durch das Host-System 201 instanziiert wird, des Weiteren zu einer Mehrzahl von Container-Gruppen 407a bis 407d (hierin in den Zeichnungen als „GRUPPE 407a“ bis „GRUPPE 407d“ dargestellt und allgemein als Container-Gruppen 407 bezeichnet) geordnet werden. Jede Container-Gruppe 407 kann einer Sperre zugewiesen sein, die einen Zugriff auf die Container-Gruppe steuert. Bei der in 4a bis 4b dargestellten beispielhaften Ausführungsform sind die VM-Metadaten-Container 402 zu zwei oder mehr Container-Gruppen 407 geordnet. Durch Aufteilen der VM-Metadaten-Container 402 in zwei oder mehr Container-Gruppen 407, statt eine einzelne Sperre zu verwenden, um einen Zugriff auf sämtliche VM-Metadaten-Container 402 zu steuern, können zwei oder mehr Sperren unabhängig einen Zugriff auf ihre zugewiesene Container-Gruppe steuern und zulassen, dass eine Mehrzahl von parallelen Speicherzuordnungsoperationen durchgeführt wird. Bei einem System mit einer einzelnen Sperre kann das Host-System 201 dadurch behindert werden, dass es warten muss, bis jede laufende Speicherzuordnungsoperation durchgeführt ist, bevor es zu der nächsten Speicherzuordnungsoperation übergehen kann. Wie durch die Ausführungsform von 4a dargestellt, werden die VM-Metadaten-Container 402, die durch das Betriebssystem 205 vorinstanziiert sind, in drei getrennte Container-Gruppen 407a, 407b, 407c aufgeteilt, wobei die einzelnen Container-Gruppen 407 des Weiteren zwei VM-Metadaten-Container 402 pro Container-Gruppe 407 aufweisen. Wenngleich nur drei Container-Gruppen 407 mit nur zwei VM-Metadaten-Containern 402 pro Container-Gruppe in diesem in 4a veranschaulichten Beispiel dargestellt werden, kann eine beliebige Anzahl von VM-Metadaten-Containern 402 pro Container-Gruppe 407 instanziiert werden. Beispielsweise könnten 3, 4, 5, 10, 15, 20 usw. oder mehr VM-Metadaten-Container 402 jeder der einzelnen Container-Gruppen 407 zugewiesen werden. Darüber hinaus kann eine beliebige Anzahl von Container-Gruppen 407 erworben werden, um die VM-Metadaten-Container 402 zu ordnen. Beispielsweise kann das Betriebssystem 205 die Mehrzahl von VM-Metadaten-Containern 402 zu 2, 4, 6, 12, 25, 50, 100 usw. oder mehr Container-Gruppen 407 ordnen. Wenn neue VM-Metadaten-Container 403 durch das Betriebssystem 205 erstellt werden, können die neuen VM-Metadaten-Container 403 darüber hinaus zu bestehenden Container-Gruppen hinzugefügt werden, die durch die zugewiesenen Sperren 407a, 407b, 407c gesteuert werden, oder zu einer neuen Container-Gruppe 407d geordnet werden, die durch eine neu erworbene Sperre 407d gesteuert wird.
  • Bei einigen Ausführungsformen kann jede der erworbenen Container-Gruppen 407 eine gleiche Anzahl von VM-Metadaten-Containern 402 aufweisen, wie in 4a dargestellt. In einigen Fällen kann die Anzahl von VM-Metadaten-Containern 402 pro Container-Gruppe 407 asymmetrisch geordnet sein, wobei einige Container-Gruppen 407 mehr oder weniger VM-Metadaten-Container 402 als sonstige Container-Gruppen 407 aufweisen können. Die Gründe für eine asymmetrische Anzahl von VM-Metadaten-Containern 402 können von System zu System variieren. Beispielsweise kann eine ungerade Anzahl von VM-Metadaten-Containern instanziiert werden, um den gesamten physischen Speicher 301 des Host-Systems als virtuellen Speicher darzustellen. In sonstigen Fällen, wie zum Beispiel in 4a dargestellt, kann die Erstellung eines neuen Metadaten-Containers 403 die vorherige Symmetrie von VM-Metadaten-Containern 402 unter den Container-Gruppen 407 unterbrechen. Beispielsweise weisen in 4a die Container-Gruppen 407a, 407b und 407c zwei Metadaten-Container 402a bis 402f auf, bei Erstellung eines neuen VM-Metadaten-Containers 403, der in der Container-Gruppe 407d platziert wird, weist die Container-Gruppe 407d jedoch nur einen neuen VM-Metadaten-Container 403 auf (zumindest bis der nächste VM-Metadaten-Container 402 erstellt wird). In einigen Fällen kann eine Mehrzahl von neuen VM-Metadaten-Containern 403 gleichzeitig erstellt werden. Beispielsweise können zwei neue Metadaten-Container 403, die der Container-Gruppe 407d zugewiesen werden, statt einer erstellt werden, wie in 4a dargestellt.
  • Ausführungsformen der Zuordnungsfunktion 215 können VM-Metadatenblöcke gemäß einem Zuordnungsalgorithmus VM-Metadaten-Containern 402 zuordnen. Die beispielhafte Ausführungsform des durch die Zuordnungsfunktion 215 verwendeten Zuordnungsalgorithmus kann das System der mehreren Container-Gruppen 407, das durch eine zugewiesene Sperre gesteuert wird, wie in 4a dargestellt, durch Befolgen eines Algorithmus nutzen, um Speicherobjekt-Metadaten mithilfe eines Algorithmus VM-Metadatenblöcken zuzuordnen, der die Metadaten, die ein Speicherobjekt beschreiben, einem VM-Metadatenblock innerhalb des am wenigsten verwendeten VM-Metadaten-Containers 402 zuordnet. Im Gegensatz zu einem ersten verfügbaren Algorithmus zum Zuordnen von Metadaten, wie oben beschrieben, der darin resultiert, dass VM-Metadaten-Container 402 der Reihe nach gefüllt werden, kann ein Zuordnen von Metadaten zu dem am wenigsten verwendeten Metadaten-Container 402 darin resultieren, dass VM-Metadaten-Container 402 VM-Metadatenblöcke gleichmäßiger über die Container-Gruppen 407 hinweg zuordnen, wie in 4b dargestellt. Bei der beispielhaften Ausführungsform von 4b werden zugeordnete VM-Metadatenblöcke 408a bis 408f gleichmäßig (oder beinahe gleichmäßig) auf die VM-Metadaten-Container 402a bis 402f verteilt, die sich über mehrere Container-Gruppen 407a bis 407c hinweg erstrecken. Wenn eine neue Metadatenblock-Zuordnung angefordert wird, kann die Zuordnungsfunktion 215 die Aufgabe des Abfragens der Nutzungsstufen der Container-Gruppen 407 und/oder der VM-Metadaten-Container 402 innerhalb der Container-Gruppen 407 durch Durchführen eines Suchlaufs durchführen. Auf Grundlage der Ergebnisse des Abfragesuchlaufs können Ausführungsformen der Zuordnungsfunktion 215 eine Container-Gruppe 407, bei der es sich um die am wenigsten verwendete Container-Gruppe 407 handelt, aus der Mehrzahl von Container-Gruppen 407 auswählen. Bei einigen Ausführungsformen kann die Zuordnungsfunktion 215 die Container-Gruppen 407 durchsuchen, ohne eine Sperre während der Abfragesuchläufe der Nutzungsstufen zu erwerben, um Sperrenkonflikte so gering wie möglich zu halten. Die Abfragesuchläufe können kurz oder nichterschöpfend sein und können eine schnelle Annäherung der Nutzungsstufen der VM-Metadaten-Container 402 innerhalb der Container-Gruppen 407 bereitstellen. Ausführungsformen der Abfragesuchläufe stellen möglicherweise nicht zwingend eine Absolutmessung der am wenigsten verwendeten Container-Gruppe 407 bereit, sondern stellen vielmehr eine geschätzte Nutzungsstufe bereit. Bei Ermitteln der am wenigsten verwendeten Container-Gruppe 407 kann die Zuordnungsfunktion 215 auf eine Erfüllung der Zuordnungsanforderung an einen oder mehrere VM-Metadaten-Container 402 innerhalb der Container-Gruppe 407 abzielen, die ausreichend VM-Metadatenblöcke enthalten kann, um die Anforderung zu erfüllen. Die Zuordnungsfunktion 215 kann die Speicherobjekt-Metadaten in einem VM-Metadatenblock eines am wenigsten verwendeten VM-Metadaten-Containers 402 innerhalb der am wenigsten verwendeten Container-Gruppe 407 speichern.
  • Ausführungsformen der Zuordnungsfunktion 215 können darüber hinaus Aufgaben durchführen, die Funktionen zur Verwaltung von virtuellem Speicher zugehörig sind, die sich auf Anforderungen beziehen, ein Speicherobjekt zu vergrößern, wobei bestehende Speicherobjekt-Metadaten bereits einem VM-Metadatenblock zugewiesen worden sind. Die Zuordnungsfunktion 215 kann Anforderungen zum Vergrößern von bestehenden Speicherobjekten zunächst durch Abzielen auf einen oder mehrere VM-Metadaten-Container 402 erfüllen, die möglicherweise die Metadaten des Speicherobjekts bereits in einem VM-Metadatenblock speichern. Die Zuordnungsfunktion 215 kann den VM-Metadaten-Container 402, der die bestehenden Speicherobjekt-Metadaten aufweist, die dem Speicherobjekt zugehörig sind, durchsuchen und ermitteln, ob die Zuordnungsfunktion 215 die Vergrößerungsanforderung mithilfe desselben VM Metadaten-Containers 402 erfüllen kann, der zuvor die Metadaten des Speicherobjekts gespeichert hat. Wenn in dem zuvor verwendeten VM-Metadaten-Container 402 nicht ausreichend freier Speicherplatz vorhanden ist, kann die Zuordnungsfunktion 215 versuchen, die Anforderung mithilfe eines weiteren VM-Metadaten-Containers 402 innerhalb derselben Container-Gruppe 407 wie der zuvor verwendete VM-Metadaten-Container 402 zu erfüllen. Wenn zum Beispiel eine Vergrößerungsanforderung versucht, ein Speicherobjekt zu vergrößern, dessen Metadaten die Zuordnungsfunktion 215 zuvor einem VM-Metadatenblock innerhalb des VM-Metadaten-Containers 402a zugeordnet hat, durchsucht die Zuordnungsfunktion 215 den VM-Metadaten-Container 402a , um zu ermitteln, ob ausreichend VM-Metadatenblöcke vorhanden sind, um die Vergrößerungsanforderung zu erfüllen. Wenn ausreichend freier Speicherplatz verfügbar ist, kann die Zuordnungsfunktion die Metadaten für das Speicherobjekt in einen VM-Metadatenblock innerhalb des VM-Metadaten-Containers 402a schreiben. Anderenfalls durchsucht die Zuordnungsfunktion den VM-Metadaten-Container 402b, um zu ermitteln, ob ausreichend freier Speicherplatz verfügbar ist, um einen VM-Metadatenblock dem Speicherobjekt zuzuordnen, um sämtliche der Metadaten des Speicherobjekts innerhalb der Container-Gruppe 407a zu behalten.
  • In einigen Fällen ist es der Zuordnungsfunktion 215 unter Umständen nicht möglich, die Metadaten für ein Speicherobjekt innerhalb derselben Container-Gruppe 407 zu behalten, was zu einer Zuordnung der Speicherobjekt-Metadaten zu VM-Metadatenblöcken innerhalb von zwei getrennten VM-Metadaten-Containern 402 führt, die sich über eine Mehrzahl von Container-Gruppen 407 erstrecken, die durch verschiedene Sperren gesteuert werden. Beispielsweise ein Zuordnen von VM-Metadatenblöcken für ein Speicherobjekt zu dem VM-Metadaten-Container 402b, der sich innerhalb der Container-Gruppe 407a befindet, und zu dem VM-Metadaten-Container 402d, der sich innerhalb der Container-Gruppe 407b befindet. Eine solche Situation, die sich über mehrere Sperren 407 erstreckt, kann auftreten, wenn die VM-Metadaten-Container 402 innerhalb der einzelnen Container-Gruppe 407 voll werden und/oder nicht ausreichend VM-Metadatenblöcke aufweisen, um Anforderungen zum Vergrößern eines bestehenden Speicherobjekts zu erfüllen.
  • Bei einigen Ausführungsformen kann die Zuordnungsfunktion 215 Speicherverwaltungsoperationen an Speicherobjekt-Metadaten 503 optimieren, auf die durch das Host-System 201 zugegriffen wird und die durch dieses verwendet werden, um eine Operation durchzuführen, wenn Speicherobjekt-Metadaten 503 möglicherweise über eine Mehrzahl von Container-Gruppen 407 verteilt sind und ein Zugriff auf diese durch eine Mehrzahl von Sperren 507a bis 507e gesteuert wird. Beispielsweise ein Durchführen von Operationen zum Freimachen von VM-Metadatenblöcken, die nicht mehr zum Speichern von Speicherobjekt-Metadaten 503 benötigt werden. Statt Operationen an der Metadatenblock-Zuordnung 501, die einem Speicherobjekt zugehörig ist, in der Reihenfolge durchzuführen, in der die Metadaten zugeordnet wurden, können Ausführungsformen der Zuordnungsfunktion 215 Speicherverwaltungsoperationen auf Grundlage der Container-Gruppen 407 durchführen und auf diese Weise sämtliche Operationen durch einmaliges Erwerben einer Sperre 507 und anschließendes Freigeben der Sperre 507 durchführen. Durch gleichzeitiges Durchführen von Operationen für eine gesamte Container-Gruppe 407 muss die Zuordnungsfunktion 215 eine Sperre 507a bis 507e nicht mehrmals erwerben und erneut erwerben. Vielmehr kann eine VM-Verwaltungsoperation für die gesamte Container-Gruppe 407 durchgeführt werden, und die Sperre 507 kann anschließend freigegeben werden, ohne die Sperre erneut erwerben zu müssen, um eine künftige Operation durchzuführen.
  • Beispielsweise stellt 5 ein Beispiel für eine Zuordnungsfunktion 215 dar, die Speicheroperationen an einer Metadatenblock-Zuordnung 501 für ein Speicherobjekt durchführt, das Speicherobjekt-Metadaten 503 aufweist, die sich über eine Mehrzahl von Container-Gruppen 407 und Sperren 507 erstrecken. Speicherobjekt-Metadaten 503a1 bis 503a8 werden der Container-Gruppe 407a zugeordnet, die durch die Sperre 507a gesteuert wird. Speicherobjekt-Metadaten 503b1 bis 503b6 werden der Container-Gruppe 407b zugeordnet, die durch die Sperre 507b gesteuert wird, wohingegen Speicherobjekt-Metadaten 503c, 503d und 503e der Container-Gruppe 407c, 407d bzw. 407e zugeordnet werden, die jeweils durch die Sperren 507c, 507d, 507e gesteuert werden. Wenn die Zuordnungsfunktion 215 Speicherverwaltungsoperationen (wie zum Beispiel Freimachen von VM-Metadatenblöcken, die Speicherobjekt-Metadaten 503 speichern, die das Speicherobjekt beschreiben) durchführt, kann die Zuordnungsfunktion 215 Operationen durch Durchführen der Speicheroperationen auf Grundlage der Container-Gruppen 407, statt in der durch die Metadatenblock-Zuordnung 501 dargestellten Reihenfolge optimieren. Beispielsweise kann die Zuordnungsfunktion 215 vermeiden, zuerst die Sperre 507a zu erwerben, die die Speicherobjekt-Metadaten 503a1 steuert, die Speicherobjekt-Metadaten 503a1 freizumachen und sich entlang der Metadatenblock-Zuordnung 501a zu bewegen, wie in 5 dargestellt, und die nächste Sperre 507b zu erwerben, um die Speicherobjekt-Metadaten 503b1 freizumachen, gefolgt von einem Erwerben der Sperre 507c, um die Speicherobjekt-Metadaten 503c1 freizumachen (und so weiter), was dazu führt, dass die einzelne Sperre 507 nach Bedarf mehrmals erworben wird. Beispielsweise würde ein Durchführen von Speicheroperationen in der Reihenfolge der Speicherobjekt-Metadaten 503, die in der Metadatenblock-Zuordnung 501 dargestellt wird, dazu führen, dass die Sperre 507a achtmal, die Sperre 507b sechsmal und die Sperren 507c, 507d und 507e jeweils viermal erworben werden. Stattdessen kann die Zuordnungsfunktion 215 die Sperren 507a bis 507e jeweils einmal erwerben, Speicherverwaltungsoperationen für alle Speicherobjekt-Metadaten 503 durchführen, die durch die erworbene Sperre 507 gesteuert werden, die Sperre 507 freigeben und zu der nächsten Sperre 507 übergehen. Beispielsweise kann die Zuordnungsfunktion 215 die Sperre 507a erwerben und Speicheroperationen an den Speicherobjekt-Metadaten 503a1 bis 503a8 (wie zum Beispiel Freimachen der diesen zugehörigen VM-Metadatenblöcke) durchführen, während die Sperre 507a erworben ist, die Sperre 507a freigeben und zu einem Erwerben der Sperre 507b, Freimachen der Metadatenblöcke, die die Speicherobjekt-Metadaten 503b1 bis 502b6 speichern, und Freigeben der Sperre 507b übergehen. Die Zuordnungsfunktion 215 kann den Prozess für die verbleibenden Container-Gruppen 407c, 407d, 407e, die den Sperren 507c, 507d, 507e zugehörig sind, entsprechend wiederholen.
  • Ausführungsformen der Zuordnungsfunktion 215 können mehrfache Operationen zur Zuordnung und Aufhebung der Zuordnung unterstützen, die parallel und/oder gleichzeitig auftreten. Bei Ausführungsformen der Nutzung von VM-Metadaten-Containern 402 kann es sich um einen fließenden Vorgang handeln, und das OS 205 des Host-Systems 201 kann abhängig von dem sich verändernden Zustand des Host-Systems 201 unbeabsichtigt mehr VM-Metadaten-Container 402 als benötigt erstellen. Wenn Anwendungen 223 geschlossen werden oder inaktiv werden, können Speicherobjekte, die den Anwendungen 223 zugehörig sind, aus dem Speicher 105 freigegeben werden, was der Zuordnungsfunktion 215 ermöglicht, die Speicherobjekt-Metadaten der freigegebenen Speicherobjekte zu entfernen und freie VM-Metadatenblöcke an die VM-Metadaten-Container 402 zurückzugeben. Dementsprechend wird durch Freigeben von Speicherobjekten und Erstellen von freien VM-Metadatenblöcken Speicherplatz der VM-Metadaten-Container 402 für neue VM-Metadaten verfügbar, die in die neu freigemachten VM-Metadatenblöcke zu schreiben sind, oder um Speicherplatz bereitzustellen, damit bestehende Metadaten der Speicherobjekte vergrößert werden können.
  • Ausführungsformen der Zuordnungsfunktion 215 können ein systemweites Schema des Betriebssystems 205 befolgen, um eine Mindestmenge an Ressourcen frei und ohne Weiteres zur Verwendung durch das Host-System 201 verfügbar zu halten (als „Min-Free“-Schema bezeichnet). Ausführungsformen der Zuordnungsfunktion 215 können Systemaufrufe, die die Erstellung von neuen VM-Metadaten-Containern 403 anfordern, mit dem Min-Free-Schema abgleichen, um zu ermitteln, ob neue VM-Metadaten-Container von dem Kernel 206 angefordert werden sollten. Wie oben angemerkt, kann sich die Verfügbarkeit von VM-Metadatenblöcken ständig ändern, und wenngleich ein aktueller Zustand des Host-Systems 201 der Zuordnungsfunktion 215 angeben kann, dass eine Anforderung zum Erstellen eines neuen VM-Metadaten-Containers 403 erforderlich sein kann, können ein oder mehrere VM-Metadatenblöcke vor einer Ausführung der Erstellungsanforderung und/oder Instanziierung des neuen VM-Metadaten-Containers 403 frei werden. Beispielsweise wird eine Anforderung zur Zuordnung eines VM-Metadatenblocks durch die Zuordnungsfunktion 215 empfangen, und die Zuordnungsfunktion fragt die VM-Metadaten-Container 402 ab und stellt fest, dass keiner der VM-Metadaten-Container ausreichend freien Speicherplatz aufweist, um die Anforderung zu erfüllen. Die Zuordnungsfunktion 215 übergibt einen Kernel-Prozess, um einen neuen VM-Metadaten-Container 403 zu erstellen. In der Zwischenzeit hat jedoch ein weiterer Prozess einer Anwendung 223 sämtliche der VM-Metadatenblöcke freigemacht, was zu ausreichend freien Blöcken führt, um die Anforderung zu erfüllen. Vor einem Instanziieren des VM-Metadaten-Containers 403 kann der Kernel-Prozess den Zustand des Host-Systems 201 abfragen und ermitteln, ob ausreichend freier Speicherplatz in sämtlichen der VM-Metadaten-Container 402 vorhanden ist, um die Voraussetzungen der in den Min-Free-Schemata vorgesehenen Mengen an frei verfügbaren Ressourcen zu erfüllen. Wenn die Abfrage eine Angabe zurückgibt, dass die Mindestniveaus von frei verfügbaren Ressourcen erfüllt werden (wenn angegeben wird, dass zwischen der übergebenen Kernel-Prozessanforderung und dem Zeitpunkt der Abfrage Ressourcen freigemacht worden sind), erfüllt der Kernel-Prozess nicht die Anforderung zum Erstellen eines neuen VM-Metadaten-Containers 403, wodurch vor dem fließenden Charakter der Verwaltung von virtuellem Speicher und der unbeabsichtigten Erstellung von nicht benötigten VM-Metadaten-Containern 402 geschützt wird.
  • Bei den beispielhaften Ausführungsformen des Host-Systems 201 kann es sich bei dem Kernel-Prozess, der durch die Zuordnungsfunktion 215 aufgerufen wird, um die neuen VM-Metadaten-Container 403 zu erstellen, um eine einzelne Entität handeln, die für das Erstellen von neuen VM-Metadaten-Containern 403 zuständig ist. Dementsprechend wird bei einer solchen Ausführungsform die Erstellung von neuen VM-Metadaten-Containern 403 serialisiert, was in der Erstellung eines neuen VM-Metadaten-Containers 403 nach dem anderen in der Reihenfolge, in der die Kernel-Prozessanforderungen übergeben werden, resultiert. Aufgrund der Serialisierung der Anforderungen und des Erstellungsprozesses kann die beispielhafte Ausführungsform des Kernel-Prozesses den Zustand des Host-Systems 201 zwischen Erstellungen von neuen VM-Metadaten-Containern 403 abfragen, um zu ermitteln, ob das Min-Free-Schema befolgt wird und ob eine Mindestmenge an frei verfügbaren Ressourcen vorhanden ist. Durch Durchführen der Abfragen zwischen der Erstellung von neuen VM-Metadaten-Containern 403 kann der Kernel-Prozess die fortlaufende Erstellung von neuen VM-Metadaten-Containern 403 verhindern, sobald die Mindestmenge an frei verfügbaren Ressourcen erkannt wird (d.h., VM-Metadatenblöcke durch eine(n) oder mehrere Anwendungen 223 oder Prozesse freigemacht werden), wodurch eine unbeabsichtigte Übererstellung von neuen VM-Metadaten-Containern 403 verhindert wird, wenn ausreichend VM-Metadatenblöcke verfügbar geworden sind, um das systemweite Min-Free-Niveau zu erfüllen.
  • Bei einigen Ausführungsformen des Host-Systems 201 können Sicherheitseinrichtungen implementiert werden, um zu verhindern, dass die Verwaltung von virtuellem Speicher des Host-Systems 201 zu einem Schema mit einer einzelnen Sperre 407 übergeht, wenn sämtliche der bestehenden VM-Metadaten-Container 402 voll oder nahezu voll sind. Um eine Situation mit nur einem einzelnen neuen Metadaten-Container 403 als der einzigen Option zum Zuordnen von VM-Metadatenblöcken zu neuen Zuordnungsanforderungen, während das Host-System 201 darauf wartet, dass VM-Metadatenblöcke freigemacht werden, zu verhindern, können Ausführungsformen des Kernel-Prozesses mehrere neue VM-Metadaten-Container 403 gleichzeitig erstellen, wenn sie durch die Zuordnungsfunktion 215 dazu aufgefordert werden. Wie oben angemerkt, kann der Kernel-Prozess fortlaufend die Mindestmengen von frei verfügbaren Ressourcen zwischen der Erstellung von neuen VM-Metadaten-Containern 403 überprüfen und die Erstellung der neuen VM-Metadaten-Container 403 beenden, sobald ausreichend verfügbare VM-Metadatenblöcke unter den bestehenden VM-Metadaten-Containern 402 frei verfügbar sind, um das systemweite Min-Free-Niveau zu erfüllen.
  • Unter Bezugnahme auf die Zeichnungen stellt 6 eine alternative Ausführungsform dar, die eine Rechenumgebung 600 aufweist, in der das Host-System 201 eine oder mehrere Anwendungen 223, auf die durch die Client-Systeme 227 zugegriffen wird, in mehrere getrennte containerisierte Umgebungen eines Container-Clusters 602 (als Container 603a bis 603n dargestellt) containerisieren kann. Ausführungsformen des Host-Systems 201 können Operationen an virtuellem Speicher über ein Betriebssystem 205 für die containerisierten Anwendungen verwalten, die durch das Host-System 201 in einer mit dieser Offenbarung im Einklang befindlichen Weise bereitgestellt und gehostet werden. Ausführungsformen der Container 603 weisen ein Anwendungs-Image 607a bis 607n und die Software-Abhängigkeiten 605a bis 605 innerhalb der Betriebsumgebung des Containers 603 auf. Das Host-System 201 kann ein Mehrbenutzer-Betriebssystem (d.h., das Host-Betriebssystem 205) ausführen und Rechen-Ressourcen über die Host-System-Hardware 203 für den einen oder die mehreren Container 603a bis 603n (die allgemein als Container 603 bezeichnet werden) bereitstellen, die die containerisierte Computerumgebung zum Ausführen und Durchführen von Funktionen der Anwendung 223 aufweisen. Ausführungsformen des Betriebssystems 205, das durch die Container 603 in dem Container-Cluster 602 gemeinsam genutzt wird, können den virtuellen Speicher verwalten, der den Containern 603 zum Ausführen der Anwendungs-Images 607 zugeordnet ist.
  • Ausführungsformen der Rechenumgebung 600 können zu einer Mehrzahl von Rechenzentren geordnet werden, die sich über mehrere Netzwerke, Domänen und/oder geographische Standorte erstrecken können. Die Rechenzentren können sich bei einigen Ausführungsformen an physischen Standorten befinden, wohingegen die Rechenzentren bei sonstigen Ausführungsformen eine Mehrzahl von Host-Systemen 201 aufweisen können, die über ein Cloud-Netzwerk und/oder eine Kombination von physisch positionierten und verteilten Host-Systemen 201 verteilt sind. Rechenzentren können ein oder mehrere Host-Systeme 201 enthalten, die eine Host-System-Hardware 203, ein Host-Betriebssystem 205 und/oder Containerisierungs-Software 601 wie zum Beispiel die quelloffene Software Docker und/oder OpenShift bereitstellen, ohne darauf beschränkt zu sein, um das containerisierte Anwendungs-Image 607 auszuführen und zu verarbeiten, das in die Umgebung der Container 603 eingebunden ist, wie in 6 dargestellt. Wenngleich die in 6 dargestellte beispielhafte Ausführungsform drei Container 603 enthält, dient die Ausführungsform von 6 lediglich zur Veranschaulichung des Konzepts, dass eine Mehrzahl von Containern 603 durch ein Host-System 201 gehostet und verwaltet werden kann. Die Ausführungsform von 6 sollte in keiner Weise so verstanden werden, dass das Host-System 201 darauf beschränkt ist, nur drei Container 603 zu hosten. Die Anzahl der gehosteten Container 603 und der Operationen an virtuellem Speicher, die durch ein Host-System 201 verwaltet werden, kann abhängig von der Menge an verfügbaren Rechen-Ressourcen auf Grundlage der Host-System-Hardware 267 und der Menge an Rechen-Ressourcen variieren, die durch die Anwendungs-Images 607 benötigt werden, die durch die Containerisierungs-Software 601 innerhalb der Container 603 ausgeführt werden.
  • Ausführungsformen der Containerisierungs-Software 601 können als Software-Plattform zum Entwickeln, Bereitstellen und Ausführen von containerisierten Programmen 114 und Anwendungen 223 arbeiten, wie auch die schnelle Bereitstellung von Code innerhalb der Rechenumgebung der Container 603 ermöglichen. Ausführungsformen der Container 603 können zwischen Host-Systemen 201 sowie zwischen verschiedenen Rechenzentren übertragen werden, die möglicherweise an verschiedenen geographischen Standorten arbeiten, wodurch ermöglicht wird, dass die Container 603 auf einem beliebigen Host-System 201 ausgeführt werden, das eine Containerisierungs-Software 601 ausführt. Die Containerisierungs-Software 601 ermöglicht dem Host-System 201, die containerisierten Anwendungen 223 und Programme 221 von der Host-System-Hardware 203 und sonstiger Infrastruktur des Host-Systems 201 zu trennen und Operationen an virtuellem Speicher für containerisierte Anwendungen 223 zu verwalten, die über das Betriebssystem 205 des Host-Systems auf dem Host-System 201 verarbeitet und ausgeführt werden.
  • Die Containerisierungs-Software 601 stellt für das Host-System 201 die Möglichkeit bereit, Anwendungs-Images 607 innerhalb der isolierten Umgebung des Containers 603 zu packen und auszuführen. Eine durch einzelne Container 603 bereitgestellte Isolierung und Sicherheit kann dem Host-System 201 ermöglichen, mehrere Instanzen der Anwendungs-Images 607 auszuführen und gleichzeitig Operationen an virtuellem Speicher für sämtliche der Anwendungs-Images 607 auf einem einzelnen Host-System 201 zu verwalten. Aufgrund der Beseitigung jeglichen Bedarfs an einem Hypervisor, der typischerweise durch virtuelle Maschinen verwendet wird, kann ein Container 603 einfach sein. Vielmehr können die Container 603 direkt innerhalb des Kernels 206 des Host-Betriebssystems 205 ausgeführt werden. Ausführungsformen der Anwendungs-Images 607 können jedoch von einem Kombinieren einer Virtualisierung von virtuellen Maschinen mit einer Containerisierung profitieren. Beispielsweise kann es sich bei dem Host-System 201 um eine virtuelle Maschine handeln, die eine Containerisierungs-Software 601 ausführt.
  • Ausführungsformen der Containerisierungs-Software 601 können eine (nicht dargestellte) Containerisierungs-Engine aufweisen. Bei der Containerisierungs-Engine kann es sich um eine Client-Server-Anwendung handeln, die ein Server-Programm, das einen Dämon-Prozess ausführt, eine REST-API, die eine oder mehrere Schnittstellen spezifiziert, die die Anwendungen 223 und/oder sonstige Programme verwenden können, um sich mit dem Dämon-Prozess auszutauschen und Anweisungen für das Anwendungs-Image 607 bereitzustellen, sowie einen Befehlszeilen-Schnittstellen(command-line interface, CLI)-Client zum Eingeben von Anweisungen aufweisen kann. Bei einer Ausführungsform kann das Client-System 227 Befehle mithilfe einer CLI eingeben, um Daten mit der Containerisierungs-Software 601 des Host-Systems 201 auszutauschen. Bei der in 6 dargestellten beispielhaften Ausführungsform können Befehle, die durch das Client-System 227 für das Host-System 201 bereitgestellt werden, über die Anwendungsschnittstelle 229 eingegeben werden, die in den Speicher 105 oder in den nichtflüchtigen Speicher 106 des Client-Systems 227 geladen wird, die eine Verbindung mit dem Host-System 201 herstellt.
  • Ausführungsformen der CLI können die REST-API der Containerisierungs-Engine verwenden, um den Dämon durch automatisierte Skripterstellung oder über direkte CLI-Befehle zu steuern oder mit diesem zu interagieren. Als Reaktion auf die von der CLI empfangenen Anweisungen kann der Dämon über die REST-API die Speicherobjekte der Containerisierungs-Software 601 einschließlich eines oder mehrerer Software-Images, die sich innerhalb der Container 601 befinden, der Container 601 selbst, Netzwerken, Datenträgern, Plug-Ins usw. erstellen und verwalten. Bei einem Image kann es sich um eine schreibgeschützte Vorlage mit Anweisungen zum Erstellen eines Containers 603 handeln, und es kann anpassbar sein. Bei Containern 603 kann es sich um eine ausführbare Instanz des Software-Image handeln. Container 603 können mithilfe einer API einer Containerisierungs-Software 601 oder über die CLI erstellt, gestartet, beendet, verlagert oder gelöscht werden. Container 603 können mit einem oder mehreren Netzwerken 250 verbunden sein, können an eine Speichereinheit angeschlossen sein und/oder ein neues Image auf Grundlage des aktuellen Zustands eines Containers 603 erstellen.
  • VERFAHREN ZUM VERWALTEN DER ZUORDNUNG VON METADATEN VON VIRTUELLEN SPEICHERN
  • Die Zeichnungen von 7 bis 8b stellen Ausführungsformen von Algorithmen 700, 800 dar, die ein auf einem Computer implementiertes Verfahren zum Verwalten der Zuordnung von Speicherobjekt-Metadaten durchführen. Die Algorithmen 700, 800, wie sie veranschaulicht und beschrieben werden, können ein oder mehrere Computersysteme verwenden, die allgemein durch das Datenverarbeitungssystem 100 von 1 und genauer durch die Ausführungsformen von Spezial-Datenverarbeitungssystemen definiert werden, die in 2a bis 6 dargestellt werden, wie hierin beschrieben. Ein Fachmann sollte erkennen, dass die Schritte der Algorithmen 700, 800, die durch 7 und 8a bis 8b beschrieben werden, in einer anderen Reihenfolge als dargestellt durchgeführt werden können. Bei den Algorithmen 700, 800 müssen nicht unbedingt alle hierin beschriebenen Schritte durchgeführt werden. Vielmehr können einige Ausführungsformen der Algorithmen 700, 800 die Verfahren durch Durchführen eines Teilsatzes von Schritten mithilfe eines oder mehrerer der im Folgenden erörterten Schritte ändern.
  • Ausführungsformen des Algorithmus 700 können einen Prozess zum Vorinstanziieren einer Mehrzahl von VM-Metadaten-Containern 402 während des Startprozesses des Host-Systems 201 beschreiben. Der Algorithmus 700 kann in Schritt 701 beginnen. In Schritt 701 initiiert ein Datenverarbeitungssystem 100 wie zum Beispiel ein Host-System 100 oder ein weiterer Typ eines Rechensystems einen Startprozess, um das Host-System 201 einzuschalten und das Betriebssystem 205 zu laden. Der Kernel 206 des Betriebssystems 205 kann in den Speicher 105 geladen werden. In Schritt 703 können das Betriebssystem 205 und/oder der Kernel 206 den Instanziierungsmodus zum Erstellen von VM-Metadaten-Containern 402 ermitteln. Beispielsweise, ob die Instanziierung der VM-Metadaten-Container 402 auf Anweisung der Parameter des Betriebssystems 205 oder durch benutzergesteuerte Parameter erstellt wird. In Schritt 705 kann eine Ermittlung durchgeführt werden, und wenn erkannt wird, dass der Instanziierungsmodus zum Erstellen von VM-Metadaten-Containern durch das OS 205 gesteuert wird, kann der Algorithmus 700 zu Schritt 707 übergehen. Wenn demgegenüber in Schritt 705 ein benutzergesteuerter Instanziierungsmodus erkannt wird, kann der Algorithmus 700 zu Schritt 709 übergehen und die vorgegebene Anzahl von VM-Metadaten-Containern 402 auf Grundlage der benutzergesteuerten Parameter erstellen.
  • In Schritt 707 kann das Betriebssystem 205 bei OS-gesteuerten Instanziierungsmodi die Anzahl von zu erstellenden VM-Metadaten-Containern 402 auf Grundlage der verfügbaren Ressourcen des Host-Systems 201 berechnen. Im Besonderen kann das Betriebssystem die Gesamtmenge des physischen Speichers 301 berechnen, der für das Host-System 201 oder ein sonstiges Datenverarbeitungssystem 100 vorgesehen ist, das mit der Verwaltung von virtuellem Speicher beauftragt ist, und die Gesamtmenge des physischen Speichers 301 durch eine vorab ausgewählte, optimierte oder gewünschte Größe für die VM-Metadaten-Container 402 teilen, wie durch das OS 205 festgelegt, um den gesamten realen, physischen Speicher korrekt als virtuellen Speicher mit VM-Metadaten-Containern 402 darzustellen. In Schritt 709 kann der Kernel-Prozess des Betriebssystems 205 die Mehrzahl der VM-Metadaten-Container 402 in der ausgewählten Größe in Übereinstimmung entweder mit den OS-gesteuerten Parametern und/oder den benutzergesteuerten Parametern auf Grundlage dessen erstellen, ob der Instanziierungsmodus OS-gesteuert oder benutzergesteuert ist. In Schritt 711 des Algorithmus 700 kann das Betriebssystem 205 die in Schritt 709 erstellten VM-Metadaten-Container 402 zu Container-Gruppen 407 gruppieren, die durch eine Sperre 507 gesteuert werden, die einzelnen Container-Gruppen 407 zugewiesen wird. Bei der beispielhaften Ausführungsform kann das Betriebssystem 205 die VM-Metadaten-Container 402 zu zumindest zwei Container-Gruppen 407 ordnen. Das Betriebssystem 205 kann jedoch eine beliebige Anzahl von Container-Gruppen 407 erstellen, wie es als optimal ermittelt wird oder wie durch benutzerdefinierte Parameter festgelegt. Dementsprechend beendet das Betriebssystem in Schritt 713 das Starten des Host-Systems 713 in das Betriebssystem 205 und ist bereit, weitere Operationen durchzuführen, darunter benutzergesteuerte Operationen und eine Verwaltung von Metadaten von virtuellen Speichern mithilfe der VM-Metadaten-Container 402, die während des Startprozesses instanziiert worden sind.
  • Ausführungsformen von Algorithmen 700 können zu einem Algorithmus 800 führen, der auf die Instanziierung der VM-Metadaten-Container 402 folgt, wie oben beschrieben. Der Algorithmus 800 kann mit Schritt 801 beginnend fortfahren. In Schritt 801 kann das Host-System 201 eine Speicherzuordnung empfangen, die anfordert, dass ein Speicherobjekt einem Speicherblock zugeordnet wird, der durch eine Anwendung 223, ein Programm 114, einen Dienst oder eine sonstige ausgeführte einzelne Software verwendet wird. Die Zuordnungsfunktion 215 des Managers 213 für virtuellen Speicher kann mit einem Verwalten der Zuordnungsanforderung und einem Schreiben von Speicherobjekt-Metadaten, die das Speicherobjekt beschreiben, in einen oder mehrere VM-Metadatenblöcke der VM-Metadaten-Container 402 beauftragt werden. Die Zuordnungsfunktion 215 kann in Schritt 803 die Zuordnungsanforderung analysieren und den Typ der Zuordnungsanforderung ermitteln, der in Schritt 801 empfangen wurde. Beispielsweise ermitteln, ob die Zuordnungsanforderung ein Verwalten von Metadaten betrifft, die ein neues Speicherobjekt beschreiben, oder eine Anforderung zum Vergrößern eines bestehenden Speicherobjekts ist, das bereits Metadaten aufweist, die in einem oder mehreren VM-Metadaten-Containern 402 gespeichert sind.
  • In Schritt 805 kann auf Grundlage der Analyse in Schritt 803 ermittelt werden, ob die Zuordnungsanforderung ein Speichern von neuen Metadaten, die das neue Speicherobjekt beschreiben, oder ein Vergrößern eines bestehenden Speicherobjekts um Metadaten betrifft, die zuvor in einem oder mehreren VM-Metadatenblöcken eines bestehenden VM-Metadaten-Containers 402 gespeichert worden sind. Wenn ermittelt wird, dass sich die Anforderung auf ein Verwalten von neuen Speicherobjekt-Metadaten bezieht, kann der Algorithmus 800 zu Schritt 817 übergehen. Wenn demgegenüber ermittelt wird, dass sich die Anforderung auf ein Vergrößern von bestehenden Speicherobjekt-Metadaten bezieht, kann der Algorithmus 800 zu Schritt 807 übergehen. In Schritt 807 kann die Zuordnungsfunktion 215 zunächst auf den zuvor verwendeten VM-Metadaten-Container 402 abzielen, der zuvor gespeicherte Speicherobjekt-Metadaten aufweist, die das Speicherobjekt beschreiben, dessen Vergrößerung angefordert wird. Die Zuordnungsfunktion 215 kann den Ziel-VM-Metadaten-Container 402 durchsuchen, um zu ermitteln, ob der Speicherplatz, der innerhalb des Ziel-VM-Metadaten-Containers 402 verfügbar ist, größer als oder gleich wie der Speicherplatz ist, der zum Erfüllen der Vergrößerungsanforderung benötigt wird.
  • In Schritt 809 wird auf Grundlage des Suchlaufs durch den Ziel-VM-Metadaten-Container 402, der in Schritt 807 durchgeführt worden ist, ermittelt, ob der Ziel-VM-Metadaten-Container ausreichend freien Speicherplatz aufweist, um die zusätzlichen Speicherobjekt-Metadaten in zumindest einen verfügbaren VM-Metadatenblock zu schreiben. Wenn ausreichend Speicherplatz in dem VM-Metadaten-Container 402 vorhanden ist, kann der Algorithmus 800 zu Schritt 825 übergehen, und die Zuordnungsfunktion 215 kann den VM-Metadatenblock des Ziel-VM-Metadaten-Containers 402 dem VM-Metadaten-Container 402 zuordnen, der die Speicherobjekt-Metadaten zuvor für das Speicherobjekt gespeichert hatte, das der Gegenstand der Vergrößerungsanforderung ist. Wenn demgegenüber in Schritt 809 durch die Zuordnungsfunktion 215 ermittelt wird, dass nicht ausreichend Speicherplatz innerhalb des Ziel-VM-Metadaten-Containers 402 vorhanden ist, um die Vergrößerungsanforderung zu erfüllen, kann der Algorithmus 800 zu Schritt 811 übergehen. In Schritt 811 kann die Zuordnungsfunktion 215 des Weiteren ermitteln, ob mehrere VM-Metadaten-Container 402 innerhalb derselben Container-Gruppe 407 wie der VM-Metadaten-Container 402 vorhanden sind, auf den zuvor abgezielt und der durchsucht worden ist, um ausreichend Speicherplatz in Schritt 807 und 809 zu ermitteln. Wenn in Schritt 811 ermittelt wird, dass keine zusätzlichen VM-Metadaten-Container 402 innerhalb derselben Container-Gruppe 407 vorhanden sind, kann der Algorithmus zu Schritt 817 übergehen. Wenn die Ermittlung durch die Zuordnungsfunktion 215 in Schritt 811 darüber hinaus ermittelt, dass zusätzliche VM-Metadaten-Container 402 innerhalb derselben Container-Gruppe 407 vorhanden sind, kann der Algorithmus zu Schritt 813 übergehen und des Weiteren ermitteln, ob sämtliche VM-Metadaten-Container 402 auf ausreichend Speicherplatz durchsucht und bewertet worden sind. Wenn in Schritt 813 sämtliche VM-Metadaten-Container 402 innerhalb derselben Container-Gruppe 407 durchsucht worden sind und ermittelt worden ist, dass keiner der VM-Metadaten-Container 402 ausreichend Speicherplatz aufweist, kann der Algorithmus 800 zu Schritt 817 übergehen.
  • Wenn demgegenüber in Schritt 813 durch die Zuordnungsfunktion 215 ermittelt wird, dass nicht alle VM-Metadaten-Container 402 innerhalb derselben Container-Gruppe 407 durchsucht worden sind, kann der Algorithmus 800 zu Schritt 815 übergehen. In Schritt 815 kann die Zuordnungsfunktion 215 die verbleibenden VM-Metadaten-Container 402 innerhalb derselben Container-Gruppe 407 wie der in Schritt 807 durchsuchte VM-Metadaten-Container durchsuchen. Bei einigen Ausführungsformen kann die Zuordnungsfunktion 215 auf Grundlage des Suchlaufs zuerst auf den am wenigsten verwendeten VM-Metadaten-Container 402 abzielen, um zu ermitteln, ob der am wenigsten verwendete Metadaten-Container 402 innerhalb der Container-Gruppe 407 ausreichend Speicherplatz aufweist, um die Vergrößerungsanforderung zu erfüllen. Der Algorithmus 800 kann zu Schritt 809 zurückkehren und eine weitere Ermittlung durchführen, ob der in Schritt 815 durchsuchte VM-Metadaten-Container 402, auf den neu abgezielt wird, ausreichend freien Speicherplatz aufweist, und entsprechend dem Algorithmus 800 fortfahren, wie zuvor oben beschrieben.
  • In Schritt 817 kann die Zuordnungsfunktion 215 die Container-Gruppen 407 nach der am wenigsten verwendeten Container-Gruppe durchsuchen, die VM-Metadaten-Container 402 aufweist. In Schritt 819 kann auf Grundlage des Suchlaufs durch die Container-Gruppen 407 ermittelt werden, ob die am wenigsten verwendete Container-Gruppe 407 mehrere VM-Metadaten-Container 402 aufweist. Wenn der Suchlauf ermittelt, dass nicht mehrere VM-Metadaten-Container 402 innerhalb der am wenigsten verwendeten Container-Gruppe 407 vorhanden sind, kann der Algorithmus zu Schritt 823 übergehen und ermitteln, ob der einzige VM-Metadaten-Container 402 innerhalb der am wenigsten verwendeten Container-Gruppe 407 ausreichend Speicherplatz enthält, um entweder die Vergrößerungsanforderung oder die Anforderung einer neuen Zuordnung von Speicherobjekt-Metadaten zu erfüllen. Wenn demgegenüber in Schritt 819 durch die Zuordnungsfunktion 215 ermittelt wird, dass mehrere VM-Metadaten-Container 402 innerhalb der am wenigsten verwendeten Container-Gruppe 407 vorhanden sind, kann die Zuordnungsfunktion 215 auf den am wenigsten verwendeten VM-Metadaten-Container 402 innerhalb der am wenigsten verwendeten Container-Gruppe 407 abzielen und diesen durchsuchen, um zu ermitteln, ob ausreichend Speicherplatz vorhanden ist, um eine anstehende Zuordnungsanforderung (eine Anforderung entweder einer Neuerstellung oder einer Vergrößerung) zu erfüllen.
  • In Schritt 823 wird ermittelt, ob ausreichend Speicherplatz innerhalb des am wenigsten verwendeten VM-Metadaten-Containers 402 innerhalb der am wenigsten verwendeten Container-Gruppe 407 verfügbar ist. Wenn ausreichend Speicherplatz innerhalb eines der VM-Metadaten-Container 402 der am wenigsten verwendeten Container-Gruppe 407 gefunden wird, kann der Algorithmus zu Schritt 825 übergehen und Speicherobjekt-Metadaten zu einem VM-Metadatenblock innerhalb des ausgewählten VM-Metadaten-Containers 402 zuordnen. Wenn jedoch in Schritt 823 ermittelt wird, dass der am wenigsten verwendete VM-Metadaten-Container innerhalb der am wenigsten verwendeten Container-Gruppe nicht ausreichend Speicherplatz aufweist, um die Zuordnungsanforderung zu erfüllen, kann der Algorithmus 800 zu Schritt 826 übergehen.
  • In Schritt 826 kann die Zuordnungsfunktion 215 eine Anforderung zum Erstellen eines oder mehrerer neuer VM-Metadaten-Container 403 mit ausreichend Speicherplatz, um die Zuordnungsanforderung zu erfüllen, an den Kernel-Prozess (Kproc) übergeben. In Schritt 827 ermittelt der Algorithmus, ob die Kproc-Erstellungsanforderung an den Kernel 206 übergeben worden ist. Wenn die Krpoc-Anforderung zum Erstellen von neuen VM-Metadaten-Containern 403 nicht übergeben wird, wird die Erstellung von neuen VM-Metadaten-Containern 403 nicht erfüllt, und der Kproc kehrt in den Ruhemodus zurück. Wenn demgegenüber ermittelt wird, dass die Erstellungsanforderung an den Kernel-Prozess übergeben worden ist, kann der Algorithmus 800 zu Schritt 829 übergehen und sämtliche bestehenden VM-Metadaten-Container 402 in dem System durchsuchen, um die Menge an VM-Metadatenblöcken zu ermitteln, die für das Host-System 201 verfügbar sind. Auf Grundlage des Suchlaufs in Schritt 829 ermittelt der Kernel 206 in Schritt 831, ob die systemweite Mindestmenge an freien Ressourcen verfügbar ist, um die Zuordnungsanforderung zu erfüllen, falls zwischen dem Zeitpunkt, zu dem die Anforderung gestellt wurde, und dem Zeitpunkt, zu dem die Erstellungsanforderung an den Kernel 206 übergeben worden ist, freie Ressourcen verfügbar geworden sind, um die Zuordnungsanforderung zu erfüllen. Wenn die Menge an systemweiten Ressourcen, die frei verfügbar sind, größer als der Schwellenwert ist, der durch das Min-Free-Schema festgelegt wird, das durch das OS 205 eingerichtet worden ist, geht der Algorithmus zu Schritt 837 über, und der Kproc kehrt in den Ruhemodus zurück, und die Zuordnung von Ressourcen kann mithilfe eines bestehenden VM-Metadaten-Containers 402 erfüllt werden, der ausreichend freigemachten Speicherplatz aufweist, um die Zuordnungsfunktion zu erfüllen.
  • Wenn der Kernel 206 in Schritt 831 ermittelt, dass die systemweite Verfügbarkeit von freien Ressourcen unterhalb der durch das Min-Free-Schema des OS 205 festgelegten Menge liegt, kann der Kernel 206 in einen Container-Erstellungsmodus übergehen. In Schritt 833 wird des Weiteren ermittelt, ob der Kernel 206 in einen Einzel-Container-Erstellungsmodus oder in einen Mehrfach-Container-Erstellungsmodus übergegangen ist. Wenn der Kernel 206 in einen Einzel-Container-Erstellungsmodus übergegangen ist, geht der Algorithmus 800 zu Schritt 834 über, und der Kernel 206 erstellt einen neuen VM-Metadaten-Container 403 mit ausreichend Speicherplatz, um die Zuordnungsanforderung zu erfüllen, und der Kproc kehrt in den Ruhemodus zurück. Wenn der Kernel 206 in Schritt 833 in einen Mehrfach-Container-Erstellungsmodus übergeht, kann der Algorithmus zu Schritt 835 übergehen und einen neuen VM-Metadaten-Container 403 erstellen, der ausreichend Speicherplatz aufweist, um die Zuordnungsanforderung zu erfüllen. In Schritt 836 ermittelt der Algorithmus 800 des Weiteren, ob die Erstellungsanforderung nach mehreren neuen VM-Metadaten-Containern 403 erfüllt worden ist. Wenn die Erstellungsanforderung nach mehreren VM-Metadaten-Containern 403 nicht erfüllt worden ist, kann der Algorithmus 800 zu Schritt 835 zurückkehren und zusätzliche neue VM-Metadaten-Container 403 erstellen. Bei einigen Ausführungsformen kann der Algorithmus zwischen dem Erstellen der neuen VM-Metadaten-Container 403 der Mehrfach-Container-Anforderung zu Schritt 831 zurückkehren und ermitteln, ob das Min-Free-Schema des Betriebssystems 205 geeignete Niveaus erreicht hat, um das Schema mit dem neu erstellten VM-Metadaten-Container 403 zu erfüllen. Wenn der in Schritt 835 erstellte neue VM-Metadaten-Container 403 die Menge an frei verfügbaren Ressourcen nicht auf den Schwellenwert des Min-Free-Schemas erhöht, kann der Algorithmus 800 zu Schritt 835 zurückkehren und den nächsten neuen VM-Metadaten-Container 403 in der Mehrfach-Container-Anforderung erstellen. Wenn in Schritt 836 ermittelt worden ist, dass die Mehrfach-Container-Anforderung abgeschlossen ist, geht der Algorithmus 800 zu Schritt 837 über, und der Kproc kehrt in den Ruhemodus zurück.

Claims (25)

  1. Auf einem Computer implementiertes Verfahren (700, 800), das aufweist: Instanziieren (709) einer Mehrzahl von Containern (402) mit Metadaten eines virtuellen Speichers (VM) durch einen Prozessor (103), wobei eine Gesamtanzahl von VM-Metadaten-Containern ausreichend VM-Metadatenblöcke (408) aufweist, um den gesamten realen, physischen Speicher (301) darzustellen, der für ein Computersystem (200) als virtueller Speicher bereitgestellt wird; Gruppieren (711) der Mehrzahl von VM-Metadaten-Containern zu zwei oder mehr Container-Gruppen (407) durch den Prozessor, wobei jede der zwei oder mehr Container-Gruppen durch eine unterschiedliche Sperre (507) gesteuert wird; Durchsuchen (817) der zwei oder mehr Container-Gruppen durch den Prozessor nach einer ersten Container-Gruppe, bei der es sich um eine am wenigsten verwendete Container-Gruppe handelt, als Reaktion auf eine Anforderung zum Zuordnen von Speicherobjekt-Metadaten zu einem VM-Metadatenblock; Abfragen (821) der ersten Container-Gruppe durch den Prozessor nach einem ersten VM-Metadaten-Container, bei dem es sich um einen am wenigsten verwendeten VM-Metadaten-Container innerhalb der ersten Container-Gruppe handelt; Zuordnen (825) der Speicherobjekt-Metadaten zu dem VM-Metadatenblock des ersten VM-Metadaten-Containers durch den Prozessor, wodurch die Anforderung zum Zuordnen der Speicherobjekt-Metadaten erfüllt wird.
  2. Auf einem Computer implementiertes Verfahren nach Anspruch 1, wobei der Schritt zum Instanziieren der Mehrzahl von VM-Metadaten-Containern während eines Startens des Computersystems durchgeführt und automatisch durch ein Betriebssystem (205) des Computersystems verwaltet wird.
  3. Auf einem Computer implementiertes Verfahren nach Anspruch 1, das des Weiteren aufweist: Empfangen (801, 803, 805) einer Anforderung zum Vergrößern eines Speicherobjekts und Erhöhen einer Anzahl von VM-Metadatenblöcken, die den Speicherobjekt-Metadaten zugeordnet sind, die dem Speicherobjekt zugehörig sind, durch den Prozessor; Berechnen (807) von VM-Metadatenblock-Voraussetzungen zum Erfüllen der Anforderung zum Vergrößern der Zuordnung der VM-Metadatenblöcke, die die Speicherobjekt-Metadaten speichern, durch den Prozessor; Vergleichen (809) einer Menge an verbleibendem Speicherplatz des ersten VM-Metadaten-Containers mit den VM-Metadatenblock-Voraussetzungen durch den Prozessor; als Reaktion auf den Schritt zum Vergleichen, der ermittelt, dass die Menge an verbleibendem Speicherplatz des ersten VM-Metadaten-Containers größer als die VM-Metadatenblock-Voraussetzungen ist, Zuordnen (830) eines zusätzlichen VM-Metadatenblocks zum Speichern der Speicherobjekt-Metadaten zu dem ersten VM-Metadaten-Container durch den Prozessor, wodurch die Anforderung zum Vergrößern des Speicherobjekts erfüllt wird.
  4. Auf einem Computer implementiertes Verfahren nach Anspruch 1, das des Weiteren aufweist: Empfangen (801, 803, 805) einer Anforderung zum Vergrößern eines Speicherobjekts, das den Speicherobjekt-Metadaten zugehörig ist, und Erhöhen einer Anzahl von VM-Metadatenblöcken, die dem Speicherobjekt zugeordnet sind, durch den Prozessor; Berechnen (807) von VM-Metadatenblock-Voraussetzungen zum Erfüllen der Anforderung zum Vergrößern des Speicherobjekts durch den Prozessor; Durchsuchen (809) des ersten VM-Metadaten-Containers, um zu ermitteln, ob eine Menge an verbleibendem Speicherplatz des ersten VM-Metadaten-Containers größer als der Speicherbedarf zum Erfüllen der Anforderung zum Vergrößern des Speicherobjekts ist; als Reaktion auf das Ermitteln, dass die Menge an verbleibendem Speicherplatz des ersten VM-Metadaten-Containers nicht größer als der Speicherbedarf zum Erfüllen der Anforderung zum Vergrößern des Speicherobjekts ist, Suchen (815) innerhalb der ersten Container-Gruppe durch den Prozessor nach einem zweiten VM-Metadaten-Container mit ausreichend verbleibenden Speicherplatz, um die Anforderung zum Vergrößern des Speicherobjekts zu erfüllen.
  5. Auf einem Computer implementiertes Verfahren nach Anspruch 4, das des Weiteren aufweist: als Reaktion auf das Ermitteln (813), dass der zweite VM-Metadaten-Container mit ausreichend Speicherplatz, um die Anforderung zum Vergrößern des Speicherobjekts zu erfüllen, nicht innerhalb der ersten Container-Gruppe zu finden ist, Suchen nach dem zweiten VM-Metadaten-Container mit ausreichend verbleibendem Speicherplatz, um die Anforderung zum Vergrößern des Speicherobjekts innerhalb einer zweiten Container-Gruppe zu erfüllen, durch den Prozessor; und Zuordnen (825) eines VM-Metadatenblocks des zweiten VM-Metadaten-Containers durch den Prozessor, um die Speicherobjekt-Metadaten zu speichern.
  6. Auf einem Computer implementiertes Verfahren, das aufweist: Empfangen einer Anforderung zum Durchführen einer Speicherverwaltungsoperation an einer Metadatenblock-Zuordnung (501), die eine Mehrzahl von Container-Gruppen (407) aufweist, die einen oder mehrere VM-Metadaten-Container (402) aufweisen, durch einen Prozessor (103), wobei ein Zugriff auf einzelne Container-Gruppen der Mehrzahl von Container-Gruppen durch verschiedene Sperren (507) gesteuert wird; Erwerben einer ersten Sperre (507a), die eine erste Container-Gruppe steuert, durch den Prozessor; Durchführen sämtlicher Speicherverwaltungsoperationen an Speicherobjekt-Metadaten durch den Prozessor, die durch VM-Metadatenblöcke der ersten Container-Gruppe gespeichert werden, die Teil der Metadatenblock-Zuordnung sind; Freigeben der ersten Sperre durch den Prozessor; und Erwerben einer zweiten Sperre (507b) durch den Prozessor, die eine zweite Container-Gruppe steuert.
  7. Auf einem Computer implementiertes Verfahren nach Anspruch 6, wobei der Schritt zum Durchführen sämtlicher Speicherverwaltungsoperationen an den Speicherobjekt-Metadaten innerhalb der ersten Container-Gruppe, die Teil der Metadatenblock-Zuordnung sind, aufweist: gleichzeitiges Freimachen sämtlicher der VM-Metadatenblöcke, die durch die erste Container-Gruppe gespeichert werden, die Teil der Metadatenblock-Zuordnung sind, durch den Prozessor.
  8. Auf einem Computer implementiertes Verfahren, das aufweist: Instanziieren (709) einer Mehrzahl von Containern (402) mit Metadaten eines virtuellen Speichers (VM) durch einen Prozessor (103), wobei eine Gesamtanzahl von VM-Metadaten-Containern ausreichend VM-Metadatenblöcke (408) aufweist, um den gesamten realen, physischen Speicher (301) darzustellen, der für ein Computersystem (200) als virtueller Speicher bereitgestellt wird; Gruppieren (711) der Mehrzahl von VM-Metadaten-Containern zu zwei oder mehr Container-Gruppen (407) durch den Prozessor, wobei jede der zwei oder mehr Container-Gruppen durch eine unterschiedliche Sperre (507) gesteuert wird; Empfangen (801, 803, 805) einer Anforderung zum Vergrößern eines Speicherobjekts und Erhöhen einer Anzahl von VM-Metadatenblöcken, die einem Speichern von Speicherobjekt-Metadaten des Speicherobjekts zugeordnet sind, durch den Prozessor; Ermitteln (807) eines ersten VM-Metadaten-Containers einer ersten Container-Gruppe, der für ein vorheriges Zuordnen zumindest eines VM-Metadatenblocks zum Speichern der Speicherobjekt-Metadaten des Speicherobjekts zuständig ist, durch den Prozessor; Berechnen (807) von Metadatenblock-Voraussetzungen zum Erfüllen der Anforderung zum Vergrößern durch den Prozessor; Ermitteln (809) durch den Prozessor, ob die Metadatenblock-Voraussetzungen zum Erfüllen der Anforderung zum Vergrößern größer als eine Größe von freien VM-Metadatenblöcken des ersten VM-Metadaten-Containers sind.
  9. Auf einem Computer implementiertes Verfahren nach Anspruch 8, wobei der Schritt zum Instanziieren der Mehrzahl von VM-Metadaten-Containern während eines Startens des Computersystems durchgeführt und automatisch durch ein Betriebssystem (205) des Computersystems verwaltet wird.
  10. Auf einem Computer implementiertes Verfahren nach Anspruch 8, das des Weiteren aufweist: als Reaktion auf das Ermitteln, dass die Metadatenblock-Voraussetzungen zum Erfüllen der Anforderung zum Vergrößern nicht größer als die Größe der freien Metadatenblöcke des ersten VM-Metadaten-Containers sind, Zuordnen (830) der Speicherobjekt-Metadaten zu einem freien Metadatenblock des ersten Metadaten-Containers durch den Prozessor.
  11. Auf einem Computer implementiertes Verfahren nach Anspruch 8, das des Weiteren aufweist: als Reaktion auf das Ermitteln (809), dass die Metadatenblock-Voraussetzungen zum Erfüllen der Anforderung zum Vergrößern größer als die Größe der freien Metadatenblöcke des ersten VM-Metadaten-Containers sind; Durchsuchen (815) der ersten Container-Gruppe durch den Prozessor nach einem am wenigsten verwendeten VM-Metadaten-Container innerhalb der ersten Container-Gruppe; und Zuordnen (825) der Speicherobjekt-Metadaten zu einem freien Metadatenblock des am wenigsten verwendeten VM-Metadaten-Containers innerhalb der ersten Container-Gruppe durch den Prozessor.
  12. Auf einem Computer implementiertes Verfahren nach Anspruch 8, das des Weiteren aufweist: als Reaktion auf das Ermitteln (810, 811, 813), dass die Metadatenblock-Voraussetzungen zum Erfüllen der Anforderung zum Vergrößern größer als die Größe der freien Metadatenblöcke des ersten Metadaten-Containers sind; Durchsuchen (817, 821, 823) einer zweiten Container-Gruppe durch den Prozessor nach einem am wenigsten verwendeten VM-Metadaten-Container innerhalb der zweiten Container-Gruppe; und Zuordnen (825) der Speicherobjekt-Metadaten zu einem freien Metadatenblock des am wenigsten verwendeten VM-Metadaten-Containers innerhalb der zweiten Container-Gruppe durch den Prozessor.
  13. Auf einem Computer implementiertes Verfahren nach Anspruch 8, das des Weiteren aufweist: als Reaktion auf das Ermitteln (813), dass die Metadatenblock-Voraussetzungen zum Erfüllen der Anforderung zum Vergrößern größer als die Größe der freien Metadatenblöcke des ersten VM-Metadaten-Containers sind; Durchsuchen (817) der zwei oder mehr Container-Gruppen durch den Prozessor nach einer am wenigsten verwendeten Container-Gruppe; weiteres Durchsuchen (821) der am wenigsten verwendeten Container-Gruppe durch den Prozessor nach einem am wenigsten verwendeten VM-Metadaten-Container; Ermitteln (823) durch den Prozessor, ob die Metadatenblock-Voraussetzungen zum Erfüllen der Anforderung zum Vergrößern größer als die Größe der freien Metadatenblöcke des am wenigsten verwendeten VM-Metadaten-Containers sind; Übergeben (823) eines Kernel-Prozesses zum Erstellen (835) eines oder mehrerer neuer VM-Metadaten-Container durch den Prozessor, die zumindest ausreichend freie VM-Metadatenblöcke aufweisen, um die Vergrößerungsanforderung zu erfüllen.
  14. Computersystem (200), das aufweist: einen Prozessor (103); und ein durch einen Computer lesbares Speichermedium (105, 106), das mit dem Prozessor verbunden ist, wobei das durch einen Computer lesbare Speichermedium Programmanweisungen enthält, die ein auf einem Computer implementiertes Verfahren ausführen, das aufweist: Instanziieren (709) einer Mehrzahl von Containern (402) mit Metadaten eines virtuellen Speichers (VM) durch den Prozessor (103), wobei eine Gesamtanzahl von VM-Metadaten-Containern ausreichend VM-Metadatenblöcke (408) aufweist, um den gesamten realen, physischen Speicher (301) darzustellen, der für ein Computersystem als virtueller Speicher bereitgestellt wird; Gruppieren (711) der Mehrzahl von VM-Metadaten-Containern zu zwei oder mehr Container-Gruppen (407) durch den Prozessor, wobei jede der zwei oder mehr Container-Gruppen durch eine unterschiedliche Sperre (507) gesteuert wird; Durchsuchen (817) der zwei oder mehr Container-Gruppen durch den Prozessor nach einer am wenigsten verwendeten Container-Gruppe als Reaktion auf eine Anforderung zum Zuordnen von Speicherobjekt-Metadaten zu einem VM-Metadatenblock; und Abfragen (821) der am wenigsten verwendeten Container-Gruppe durch den Prozessor nach einem am wenigsten verwendeten VM-Metadaten-Container innerhalb der am wenigsten verwendeten Container-Gruppe.
  15. Computersystem nach Anspruch 14, das des Weiteren aufweist: Zuordnen (825) der Speicherobjekt-Metadaten zu einem VM-Metadatenblock des am wenigsten verwendeten VM-Metadaten-Containers durch den Prozessor, wodurch die Anforderung zum Zuordnen der Speicherobjekt-Metadaten erfüllt wird.
  16. Computersystem nach Anspruch 14, das des Weiteren aufweist: Ermitteln (823) durch den Prozessor, dass der am wenigsten verwendete VM-Metadaten-Container keine erforderliche Menge an VM-Metadatenblöcken aufweist, um die Speicherobjekt-Metadaten zu speichern.
  17. Computersystem nach Anspruch 16, das des Weiteren aufweist: Übergeben (823) eines Kernel-Prozesses zum Erstellen (834, 835) eines oder mehrerer neuer VM-Metadaten-Container durch den Prozessor, die ausreichend verfügbare VM-Metadatenblöcke aufweisen, um die Anforderung zum Zuordnen der Speicherobjekt-Metadaten zu erfüllen.
  18. Computersystem nach Anspruch 17, das des Weiteren aufweist: Abfragen (829) eines Zustands des Computersystems durch den Prozessor; Vergleichen (831) des Zustands des Computersystems mit einem Systemverwaltungsplan eines Betriebssystems durch den Prozessor, um eine Mindestmenge an Rechen-Ressourcen zur Verwendung durch das Computersystem verfügbar zu halten; als Reaktion auf das Vergleichen des Zustands des Computersystems mit dem Systemverwaltungsplan, bei dem ermittelt wird, dass das Verfügbarhalten der Mindestmenge an Rechen-Ressourcen nicht erfüllt worden ist, Instanziieren (834, 835) des einen oder der mehreren neuen VM-Metadaten-Container durch den Prozessor.
  19. Computersystem nach Anspruch 17, das des Weiteren aufweist: Abfragen (829) eines Zustands des Computersystems durch den Prozessor; Vergleichen (831) des Zustands des Computersystems mit einem Systemverwaltungsplan eines Betriebssystems durch den Prozessor, um eine Mindestmenge an Rechen-Ressourcen zur Verwendung durch das Computersystem verfügbar zu halten; und als Reaktion auf das Vergleichen des Zustands des Computersystems mit dem Systemverwaltungsplan, bei dem ermittelt wird, dass das Verfügbarhalten der Mindestmenge an Rechen-Ressourcen erfüllt worden ist, Abbrechen (837) des Kernel-Prozesses zum Erstellen des einen oder der mehreren neuen VM-Metadaten-Container durch den Prozessor.
  20. Computersystem nach Anspruch 15, das des Weiteren aufweist: Empfangen (801, 803, 805) einer Anforderung zum Vergrößern eines Speicherobjekts, das den Speicherobjekt-Metadaten zugehörig ist, und Erhöhen einer Anzahl von VM-Metadatenblöcken, die dem Speicherobjekt zugeordnet sind, durch den Prozessor; Berechnen (807) von VM-Metadatenblock-Voraussetzungen zum Erfüllen der Anforderung zum Vergrößern des Speicherobjekts durch den Prozessor; Durchsuchen (809) des am wenigsten verwendeten VM-Metadaten-Containers durch den Prozessor, um zu ermitteln, ob eine Menge an verbleibendem Speicherplatz des am wenigsten verwendeten VM-Metadaten-Containers größer als der Speicherbedarf zum Erfüllen der Anforderung zum Vergrößern des Speicherobjekts ist; als Reaktion auf das Ermitteln, dass die Menge an verbleibendem Speicherplatz des am wenigsten verwendeten VM-Metadaten-Containers nicht größer als der Speicherbedarf zum Erfüllen der Anforderung zum Vergrößern des Speicherobjekts ist, Ermitteln (815) eines zweiten VM-Metadaten-Containers mit ausreichend Speicherplatz zum Erfüllen der Anforderung zum Vergrößern des Speicherobjekts durch den Prozessor, wobei der zweite VM-Metadaten-Container nicht innerhalb der am wenigsten verwendeten Container-Gruppe zu finden ist; und Zuordnen (825) von VM-Metadatenblöcken eines zweiten VM-Metadaten-Containers, der sich innerhalb einer zweiten Container-Gruppe befindet, durch den Prozessor, um die Speicherobjekt-Metadaten zu speichern.
  21. Computerprogrammprodukt, das aufweist: ein oder mehrere durch einen Computer lesbare Speichermedien, wobei durch einen Computer lesbare Programmanweisungen auf dem einen oder den mehreren durch einen Computer lesbaren Speichermedien gespeichert sind, wobei die Programmanweisungen ein auf einem Computer (200) implementiertes Verfahren (700, 800) ausführen, das aufweist: Instanziieren (709) einer Mehrzahl von Containern (402) mit Metadaten eines virtuellen Speichers (VM), wobei eine Gesamtanzahl von VM-Metadaten-Containern ausreichend VM-Metadatenblöcke (408) aufweist, um den gesamten realen, physischen Speicher (301) darzustellen, der für ein Computersystem als virtueller Speicher bereitgestellt wird; Gruppieren (711) der Mehrzahl von VM-Metadaten-Containern zu zwei oder mehr Container-Gruppen; Durchsuchen (817) der zwei oder mehr Container-Gruppen nach einer am wenigsten verwendeten Container-Gruppe als Reaktion auf eine Anforderung zum Zuordnen von Speicherobjekt-Metadaten zu einem VM-Metadatenblock; und Abfragen (825) der am wenigsten verwendeten Container-Gruppe nach einem am wenigsten verwendeten VM-Metadaten-Container innerhalb der am wenigsten verwendeten Container-Gruppe.
  22. Computerprogrammprodukt nach Anspruch 21, das des Weiteren aufweist: Zuordnen der Speicherobjekt-Metadaten zu einem VM-Metadatenblock des am wenigsten verwendeten VM-Metadaten-Containers, wodurch die Anforderung zum Zuordnen der Speicherobjekt-Metadaten erfüllt wird.
  23. Computerprogrammprodukt nach Anspruch 21, das des Weiteren aufweist: Ermitteln (823), dass der am wenigsten verwendete VM-Metadaten-Container keine erforderliche Menge an VM-Metadatenblöcken aufweist, um die Speicherobjekt-Metadaten zu speichern.
  24. Computerprogrammprodukt nach Anspruch 23, das des Weiteren aufweist: Übergeben (826) eines Kernel-Prozesses zum Erstellen (834, 835) eines oder mehrerer neuer VM-Metadaten-Container, die zumindest ausreichend verfügbare VM-Metadatenblöcke aufweisen, um die Anforderung zum Zuordnen der Speicherobjekt-Metadaten zu erfüllen.
  25. Computerprogrammprodukt nach Anspruch 24, das des Weiteren aufweist: Abfragen (829) eines Zustands des Computersystems durch den Prozessor; Vergleichen (831) des Zustands des Computersystems mit einem Systemverwaltungsplan eines Betriebssystems durch den Prozessor, um eine Mindestmenge an Rechen-Ressourcen zur Verwendung durch das Computersystem verfügbar zu halten; als Reaktion auf das Vergleichen des Zustands des Computersystems mit dem Systemverwaltungsplan, bei dem ermittelt wird, dass das Verfügbarhalten der Mindestmenge an Rechen-Ressourcen nicht erfüllt worden ist, Instanziieren (834, 835) des einen oder der mehreren neuen VM-Metadaten-Container.
DE112020003929.3T 2019-10-11 2020-10-01 Verwaltung von metadaten von virtuellen speichern Active DE112020003929B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/599,141 US11436033B2 (en) 2019-10-11 2019-10-11 Scalable virtual memory metadata management
US16/599,141 2019-10-11
PCT/IB2020/059188 WO2021070016A1 (en) 2019-10-11 2020-10-01 Virtual memory metadata management

Publications (2)

Publication Number Publication Date
DE112020003929T5 DE112020003929T5 (de) 2022-05-25
DE112020003929B4 true DE112020003929B4 (de) 2024-05-08

Family

ID=75382867

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020003929.3T Active DE112020003929B4 (de) 2019-10-11 2020-10-01 Verwaltung von metadaten von virtuellen speichern

Country Status (8)

Country Link
US (1) US11436033B2 (de)
JP (1) JP7394978B2 (de)
KR (1) KR20220036981A (de)
CN (1) CN114424172B (de)
AU (1) AU2020361670B2 (de)
DE (1) DE112020003929B4 (de)
GB (1) GB2602948B (de)
WO (1) WO2021070016A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11467775B2 (en) 2019-10-15 2022-10-11 Hewlett Packard Enterprise Development Lp Virtual persistent volumes for containerized applications
US11487571B2 (en) * 2020-03-30 2022-11-01 Wipro Limited Method and system for efficient utilization of resources in containers
US11687267B2 (en) 2020-04-14 2023-06-27 Hewlett Packard Enterprise Development Lp Containerized application manifests and virtual persistent volumes
US11693573B2 (en) 2020-06-18 2023-07-04 Hewlett Packard Enterprise Development Lp Relaying storage operation requests to storage systems using underlying volume identifiers
US11960773B2 (en) * 2020-07-31 2024-04-16 Hewlett Packard Enterprise Development Lp Modifying virtual persistent volumes based on analysis of performance metrics

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6970990B2 (en) 2002-09-30 2005-11-29 International Business Machines Corporation Virtual mode virtual memory manager method and apparatus

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6209066B1 (en) * 1998-06-30 2001-03-27 Sun Microsystems, Inc. Method and apparatus for memory allocation in a multi-threaded virtual machine
GB0325788D0 (en) 2003-11-05 2003-12-10 Ibm Memory allocation
WO2009095917A1 (en) 2008-01-29 2009-08-06 Ramot At Tel Aviv University Ltd. A system and method for responding to virtual memory addresses
JP2010108216A (ja) * 2008-10-30 2010-05-13 Kyocera Mita Corp メモリ管理システム、電子機器及びメモリ管理プログラム
JP2012168751A (ja) * 2011-02-15 2012-09-06 Panasonic Corp メモリ管理装置、メモリ管理方法、およびプログラム
US20130179481A1 (en) * 2012-01-11 2013-07-11 Tonian Inc. Managing objects stored in storage devices having a concurrent retrieval configuration
US9996370B1 (en) * 2012-04-18 2018-06-12 Open Invention Network Llc Page swapping in virtual machine environment
CN104111897B (zh) 2013-04-16 2017-06-13 华为技术有限公司 一种数据处理方法、装置及计算机系统
US9436614B2 (en) * 2013-05-02 2016-09-06 Globalfoundries Inc. Application-directed memory de-duplication
US9361215B2 (en) 2013-05-31 2016-06-07 Apple Inc. Memory allocation improvements
US9940229B2 (en) 2013-12-17 2018-04-10 Intel Corporation Technologies for persistent memory programming
US9256467B1 (en) * 2014-11-11 2016-02-09 Amazon Technologies, Inc. System for managing and scheduling containers
KR102026877B1 (ko) 2015-06-16 2019-09-30 한국전자통신연구원 메모리 관리 유닛 및 그 동작 방법
US9921885B2 (en) * 2015-06-19 2018-03-20 Vmware, Inc. Resource management for containers in a virtualized environment
WO2017118474A1 (en) * 2016-01-05 2017-07-13 Huawei Technologies Co., Ltd. A data processing apparatus and method and a data container structure
US10275272B2 (en) 2016-06-20 2019-04-30 Vmware, Inc. Virtual machine recovery in shared memory architecture
US20180004649A1 (en) * 2016-07-01 2018-01-04 Intel Corporation Techniques to Format a Persistent Memory File
JP6772655B2 (ja) 2016-08-15 2020-10-21 富士通株式会社 情報処理システムおよび情報処理方法
US20180095892A1 (en) 2016-10-01 2018-04-05 Intel Corporation Processors, methods, systems, and instructions to determine page group identifiers, and optionally page group metadata, associated with logical memory addresses
KR102498668B1 (ko) 2017-05-17 2023-02-09 삼성전자주식회사 플래시-인지 힙 메모리 관리 방법 및 호스트 장치
US10691544B2 (en) * 2017-11-21 2020-06-23 International Business Machines Corporation Modifying a container instance network
CN109936571B (zh) * 2019-02-22 2020-05-29 全球能源互联网研究院有限公司 一种海量数据共享方法、开放共享平台及电子设备

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6970990B2 (en) 2002-09-30 2005-11-29 International Business Machines Corporation Virtual mode virtual memory manager method and apparatus

Also Published As

Publication number Publication date
CN114424172B (zh) 2023-03-21
GB202206068D0 (en) 2022-06-08
DE112020003929T5 (de) 2022-05-25
GB2602948B (en) 2022-12-07
JP2022552141A (ja) 2022-12-15
AU2020361670A1 (en) 2022-03-17
AU2020361670B2 (en) 2023-01-19
WO2021070016A1 (en) 2021-04-15
US11436033B2 (en) 2022-09-06
GB2602948A (en) 2022-07-20
KR20220036981A (ko) 2022-03-23
JP7394978B2 (ja) 2023-12-08
US20210109772A1 (en) 2021-04-15
CN114424172A (zh) 2022-04-29

Similar Documents

Publication Publication Date Title
DE112020003929B4 (de) Verwaltung von metadaten von virtuellen speichern
DE102016103359B4 (de) Singleton-cachespeicher-verwaltungsprotokoll für hierarchische virtualisierte speichersysteme
DE112018006769B4 (de) Erweiterte zwischenspeicherzuweisung basierend auf virtuellen knotenressourcen
DE102012218269B4 (de) Schnittstelle zur Verwaltung von Datenverschiebung in einem Speichersystem mit thin provisioning
DE112010004931T5 (de) Mehrphasige Wiederherstellung von Dateisystemen mit SelektiverBedarfsweiser Verfügbarkeit von Daten(
DE112012000635T5 (de) Dynamische Speicherverwaltung in einer virtualisierten Datenverarbeitungsumgebung
DE112012003342T5 (de) Dynamisches Anpassen und Begrenzen der Größe des Netzwerkadapterspeichers zur Speicherung von Umsetzungseinträgen für virtuelle Funktionen
DE112020000694T5 (de) Erzeugung und ausführung von sicheren containern
DE112011101317T5 (de) Optimieren eines Dateisystems für unterschiedliche Typen von Anwendungen in einem Datenverarbeitungs-Cluster unter Verwendung von dynamischer Blockgrössen-Granularität
DE102013215535A1 (de) Sicherung oder wiederherstellung von daten mit hilfe eines hauptspeichers und nichtflüchtiger speichermedien
DE102018115251A1 (de) Technologien zum Schutz eines virtuellen Maschinenspeichers
DE102021125179A1 (de) Erzeugen und bereitstellen von containerabbildern
DE102018123669A1 (de) Host-Computer-Anordnung, Remote-Server-Anordnung, Speicherungssystem und Verfahren davon
DE112018005404T5 (de) Vereinfachen des zugriffs auf lokalitätsdomäneninformationen eines speichers
DE112019005392T5 (de) Steigern von datenleistung durch transferieren von daten zwischen speicherebenen unter verwendung von arbeitslastmerkmalen
DE112017005022T5 (de) Umladen der Bandverarbeitung auf Objektspeicher
DE102019102883A1 (de) Technologien zum Bewegen von Arbeitslasten zwischen Hardwarewarteschlangenmanagern
DE112018002955T5 (de) Kognitive datei- und objektverwaltung für verteilte speicherumgebungen
DE112018000900T5 (de) Verarbeiten eines Befehls zum Freigeben von Speicherplatz in einem Computersystem
DE112016003598T5 (de) Gleichzeitige Massenverarbeitung von baumbasierten Datenstrukturen
DE112019000402T5 (de) Chronologisch geordnetes out-of-place-aktualisierungs-schlüssel-wert-speichersystem
DE102022129936A1 (de) Techniken zur Erweiterung des Systemspeichers durch Nutzung des verfügbaren Gerätespeichers
DE112020000498T5 (de) Migrieren von daten aus einem grossen extent-pool in einen kleinen extent-pool
DE102020114272A1 (de) Einsatz von virtuellen Node Clustern in einer mehrmittelbaren Umgebung
DE102012221261A1 (de) Verfahren zum Zwischenspeichern und System zum Ausführen des Verfahrens zum Zwischenspeichern zum Betreiben eines mindestens einen Host-Computer aufweisenden Computerserversystems

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, US

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION, ARMONK, NY, US

R084 Declaration of willingness to licence
R016 Response to examination communication
R018 Grant decision by examination section/examining division