DE102013205572B4 - Verwenden von softwarekomponenten-metadaten zum bereitstellen von virtuellen maschinen in einer vernetzten datenverarbeitungsumgebung - Google Patents
Verwenden von softwarekomponenten-metadaten zum bereitstellen von virtuellen maschinen in einer vernetzten datenverarbeitungsumgebung Download PDFInfo
- Publication number
- DE102013205572B4 DE102013205572B4 DE102013205572.2A DE102013205572A DE102013205572B4 DE 102013205572 B4 DE102013205572 B4 DE 102013205572B4 DE 102013205572 A DE102013205572 A DE 102013205572A DE 102013205572 B4 DE102013205572 B4 DE 102013205572B4
- Authority
- DE
- Germany
- Prior art keywords
- virtual machines
- software component
- combinations
- computer
- software
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
Abstract
Durch einen Computer umgesetztes Verfahren zur Optimierung der Bereitstellungszeiten angeforderter virtueller Maschinen mit darauf installierten Kombinationen von Softwarekomponenten in einer vernetzten Datenverarbeitungsumgebung, aufweisend ein
- Ermitteln durch einen genetischen Algorithmus einer Bereitstellungsverteilung einer vorgegebenen Zahl von virtuellen Maschinen (VMs) mit einer Vielzahl von Kombinationen darauf installierter Softwarekomponenten, von der ausgehend die mit einer Anforderungswahrscheinlichkeit gewichtete mittlere Zeit zur Erfüllung zukünftiger Anforderungen von virtuellen Maschinen mit installierten Softwarekomponenten-Kombinationen hin optimal ist,
- wobei die Zeit zur Erfüllung einer Anforderung als die minimale Zeit unter den Zeiten für jeweils einen Installationsübergang von einer der bereitgestellten virtuellen Maschinen mit installierten Kombinationen von Softwarekomponenten zu der angeforderten virtuellen Maschine mit installierten Softwarekomponenten bestimmt ist.
- Ermitteln durch einen genetischen Algorithmus einer Bereitstellungsverteilung einer vorgegebenen Zahl von virtuellen Maschinen (VMs) mit einer Vielzahl von Kombinationen darauf installierter Softwarekomponenten, von der ausgehend die mit einer Anforderungswahrscheinlichkeit gewichtete mittlere Zeit zur Erfüllung zukünftiger Anforderungen von virtuellen Maschinen mit installierten Softwarekomponenten-Kombinationen hin optimal ist,
- wobei die Zeit zur Erfüllung einer Anforderung als die minimale Zeit unter den Zeiten für jeweils einen Installationsübergang von einer der bereitgestellten virtuellen Maschinen mit installierten Kombinationen von Softwarekomponenten zu der angeforderten virtuellen Maschine mit installierten Softwarekomponenten bestimmt ist.
Description
- TECHNISCHES GEBIET
- Allgemein betrifft die vorliegende Erfindung die Verbesserung von Bereitstellungszeiten von virtuellen Maschinen (VMs) in einer vernetzten Datenverarbeitungsumgebung (z.B. einer Cloud-Computing-Umgebung). Insbesondere betrifft die vorliegende Erfindung das Verwenden von Softwarekomponenten-Metadaten zum Bereitstellen von virtuellen Maschinen in einer vernetzten Datenverarbeitungsumgebung.
- HINTERGRUND
- Die vernetzte Datenverarbeitungsumgebung (z.B. Cloud-Computing-Umgebung) ist eine Erweiterung der Vorgänger-Grid-Umgebung, wobei mehrere Grids (Gitter) und andere Datenverarbeitungsressourcen des Weiteren um eine oder mehrere zusätzliche Abstraktionsschichten erweitert werden können (z.B. eine Cloud-Schicht), wodurch ungleichartige Einheiten sich für einen Endnutzer als ein einziger Pool von nahtlosen Ressourcen darstellen. Zu diesen Ressourcen können unter anderem solche Elemente wie physische oder logische Datenverarbeitungs-Engines, Server und Einheiten, Einheitenspeicher, Speichereinheiten gehören.
- Cloud-Computing-Dienste werden üblicherweise in einem relativ statischen Hardware-Pool ausgeführt, wobei Betriebssysteme und Anwendungen genutzt und neu konfiguriert werden, um die Datenverarbeitungsbedürfnisse von Nutzern zu erfüllen. Innerhalb der Grenzen der Cloud-Umgebung können Anwendungsabbilder installiert und überschrieben werden, Internet-Protocol- (IP-) Adressen können modifiziert werden, und reale und virtuelle Prozessoren/Maschinen können zugeordnet werden, um sich ändernde Geschäftsbedürfnisse zu erfüllen. Gegenwärtig können verschiedene Cloud-Dienstanbieter unterschiedliche lange Zeiten benötigen, um virtuelle Maschinen bereitzustellen, die von Nutzern angefordert werden. Zum Beispiel können einige Cloud-Anbieter eine bestimmte Ressource sehr schnell bereitstellen, wogegen andere dazu länger brauchen. Daher können Anforderungen bestehen konsistente Bereitstellungszeiten für Datenverarbeitungsressourcen zu erzielen.
- Aus
US 2008 / 0 263 553 A1 - Aus
US 2010 / 0 058 342 A1 - Ausgehend von diesem Stand der Technik stellt sich die Erfindung die Aufgabe, die für die Bereitstellung von virtuellen Maschinen erforderliche Zeit zu optimieren.
- Die Aufgabe wird erfindungsgemäß gelöst durch das durch einen Computer umgesetzte Verfahren nach Anspruch 1, das System zum Erzeugen eines vorab bereitgestellten Pools von virtuellen Maschinen nach Anspruch 7, das Computerprogrammprodukt nach Anspruch 8, sowie das Verfahren zum Nutzen eines Systems nach Anspruch 9. Bevorzugte Ausführungsformen der Erfindung sind Gegenstand der jeweiligen Unteransprüche.
- KURZDARSTELLUNG DER ERFINDUNG
- Algorithmische Verfahren können verwendet werden, um einen vorab bereitgestellten Pool von virtuellen Maschinen (VMs) in einer vernetzten Datenverarbeitungsumgebung zu erzeugen. Insbesondere wird eine Installationszeit für mögliche Kombinationen von Softwarekomponenten einer VM in einer Vielzahl von Softwarekomponenten-Kombinationen berechnet. Jede einzelne Installationszeit wird durch einen Wert gewichtet, der einem Bereitstellungsverlauf von Softwarekomponenten zugehörig ist. Zumindest ein Teil der Softwarekomponenten-Kombinationen ist dem vorab bereitgestellten Pool von virtuellen Maschinen (VMs) zugeordnet.
- Es wird ein durch einen Computer umgesetztes Verfahren zum Erzeugen eines vorab bereitgestellten Pools von virtuellen Maschinen (VMs) in einer vernetzten Datenverarbeitungsumgebung bereitgestellt, aufweisend: das Berechnen einer Installationszeit für jede Softwarekomponenten-Kombination in einer Vielzahl von Softwarekomponenten-Kombinationen; das Gewichten jeder einzelnen Installationszeit durch einen Wert, der einem Bereitstellungsverlauf zugehörig ist; und das Zuordnen zumindest eines Teils der Softwarekomponenten-Kombinationen zu dem vorab bereitgestellten Pool von virtuellen Maschinen (VMs).
- Ein System zum Erzeugen eines vorab bereitgestellten Pools von virtuellen Maschinen (VMs) in einer vernetzten Datenverarbeitungsumgebung kann aufweisen: ein Speichermedium, das Anweisungen aufweist; einen Bus, der an das Speichermedium gekoppelt ist; und einen Prozessor, der an den Bus gekoppelt ist, der, wenn die Anweisungen ausgeführt werden, das System veranlasst zum: Berechnen einer Installationszeit für jede Softwarekomponenten-Kombination in einer Vielzahl von Softwarekomponenten-Kombinationen; Gewichten jeder einzelnen Installationszeit durch einen Wert, der einem Bereitstellungsverlauf zugehörig ist; und Zuordnen zumindest eines Teils der Softwarekomponenten-Kombinationen zu dem vorab bereitgestellten Pool von virtuellen Maschinen (VMs).
- Ein Computerprogrammprodukt zum Erzeugen eines vorab bereitgestellten Pools von virtuellen Maschinen (VMs) in einer vernetzten Datenverarbeitungsumgebung kann ein computerlesbares Speichermedium und Programmanweisungen aufweisen, die auf dem computerlesbaren Speichermedium gespeichert sind zum: Berechnen einer Installationszeit für jede Softwarekomponenten-Kombination in einer Vielzahl von Softwarekomponenten-Kombinationen; Gewichten jeder einzelnen Installationszeit durch einen Wert, der einem Bereitstellungsverlauf zugehörig ist; und Zuordnen zumindest eines Teils der Softwarekomponenten-Kombinationen zu dem vorab bereitgestellten Pool von virtuellen Maschinen (VMs).
- Ein Verfahren zum Nutzen eines Systems zum Erzeugen eines vorab bereitgestellten Pools von virtuellen Maschinen (VMs) in einer vernetzten Datenverarbeitungsumgebung kann aufweisen: das Nutzen einer Computerinfrastruktur, die betriebsfähig ist zum: Berechnen einer Installationszeit für jede Softwarekomponenten-Kombination in einer Vielzahl von Softwarekomponenten-Kombinationen; Gewichten jeder einzelnen Installationszeit durch einen Wert, der einem Bereitstellungsverlauf zugehörig ist; und Zuordnen zumindest eines Teils der Softwarekomponenten-Kombinationen zu dem vorab bereitgestellten Pool von virtuellen Maschinen (VMs).
- Figurenliste
- Diese und andere Merkmale dieser Erfindung werden in der folgenden Beschreibung der verschiedenen Aspekte der Erfindung in Verbindung mit den begleitenden Zeichnungen erläutert, wobei:
-
1 einen Cloud-Computing-Knoten gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht. -
2 eine Cloud-Computing-Umgebung veranschaulicht. -
3 Abstraktionsmodellschichten gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht. -
4 eine Systemdarstellung veranschaulicht. -
5 ein Installationsschaubild gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht. -
6 einen Verfahrensablaufplan gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht. - Die Zeichnungen sind nicht notwendigerweise maßstabsgetreu. Die Zeichnungen sind rein schematische Darstellungen, die keine speziellen Parameter der Erfindung darstellen sollen. In den Zeichnungen stellt eine gleiche Nummerierung gleiche Elemente dar.
- AUSFÜHRLICHE BESCHREIBUNG
- Ausführungsformen der vorliegenden Erfindung stellen eine Gruppe von algorithmischen Verfahren bereit, die verwendet werden können, um einen vorab bereitgestellten Pool von virtuellen Maschinen (VMs) in einer vernetzten Datenverarbeitungsumgebung zu erzeugen. Insbesondere wird eine Installationszeit für mögliche Kombinationen von Softwarekomponenten einer VM in einer Vielzahl von Softwarekomponenten-Kombinationen berechnet. Jede einzelne Installationszeit wird durch einen Wert gewichtet, der einem Bereitstellungsverlauf von Softwarekomponenten zugehörig ist. Zumindest ein Teil der Softwarekomponenten-Kombinationen ist dem vorab bereitgestellten Pool von virtuellen Maschinen (VMs) zugeordnet.
- Es ist von vornherein zu verstehen, dass, obwohl diese Offenbarung eine detaillierte Beschreibung von Cloud-Computing enthält, die Umsetzung der hierin zitierten Lehren nicht auf eine Cloud-Computing-Umgebung begrenzt ist. Die Ausführungsformen der vorliegenden Erfindung sind stattdessen fähig, in Verbindung mit jedem anderen Typ einer jetzt bekannten oder später entwickelten Datenverarbeitungsumgebung umgesetzt zu werden.
- Cloud-Computing ist ein Modell einer Dienstleistung zum Ermöglichen eines bequemen On-Demand-Netzwerkzugriffs (Netzzugriff bei Bedarf) auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzbandbreite, Server, Verarbeitung, Arbeitsspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand oder Interaktion mit einem Anbieter des Diensts rasch bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Merkmale, mindestens drei Dienstmodelle und mindestens vier Nutzungsmodelle enthalten.
- Die Merkmale sind wie folgt:
- On-Demand-Selfservice: Ein Cloud-Nutzer kann einseitig und je nach Bedarf automatisch Datenverarbeitungsfunktionen, wie z.B. Serverzeit und Netzwerkspeicher, ohne menschliche Interaktion mit dem Anbieter des Diensts bereitstellen.
- Breiter Netzwerkzugriff: Funktionen stehen über ein Netzwerk zur Verfügung und auf sie wird über Standardmechanismen zugegriffen, die den Einsatz über heterogene Thin Client- oder Thick Client-Plattformen unterstützen (z.B. Mobiltelefone, Laptops und PDAs).
- Ressourcen-Pooling: Die Datenverarbeitungsressourcen des Anbieters sind in einem Pool zusammengeschlossen, um unter Verwendung eines Multi-Tenant-Modells mehreren Nutzern mit unterschiedlichen physischen und virtuellen Ressourcen zu dienen, deren Zuweisung oder Zuweisungsaufhebung je nach Bedarf dynamisch erfolgt. Es herrscht insofern ein Gefühl der Standortunabhängigkeit, dass der Nutzer im Allgemeinen keine Kontrolle oder Kenntnis in Bezug auf den genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, einen Standort auf einer höheren Abstraktionsebene anzugeben (z.B. Land, Bundesstaat oder Rechenzentrum).
- Schnelle Elastizität: Funktionen können rasch und elastisch, in einigen Fällen automatisch, für eine schnelle Erweiterung bereitgestellt und für eine schnelle Reduzierung rasch freigegeben werden. Für den Nutzer scheinen die zur Bereitstellung verfügbaren Funktionen oft unbegrenzt zu sein und können jederzeit in beliebiger Menge erworben werden.
- Richtig bemessener Dienst: Cloud-Systeme kontrollieren und optimieren Ressourcennutzung durch wirksamen Einsatz einer Messfunktion auf einer passenden Abstraktionsebene, die dem Diensttyp entspricht (z.B. Speicher, Verarbeitung, Bandbreite und aktive Nutzerkonten). Die Inanspruchnahme von Ressourcen kann überwacht, gesteuert und gemeldet werden, was sowohl für den Anbieter als auch den Nutzer des in Anspruch genommenen Dienstes für Transparenz sorgt.
- Es gibt folgende Dienstmodelle:
- Software as a Service (SaaS): Die für den Nutzer bereitgestellte Funktion besteht darin, die auf einer Cloud-Infrastruktur ausgeführten Anwendungen des Anbieters zu nutzen. Auf die Anwendungen kann über eine Thin Client-Schnittstelle, wie beispielsweise einen Web-Browser (z.B. eMail auf Web-Grundlage), von verschiedenen Client-Einheiten aus zugegriffen werden. Der Nutzer verwaltet weder noch steuert er die zu Grunde liegende Cloud-Infrastruktur, einschließlich Netzwerk, Server, Betriebssysteme, Speicher oder auch einzelne Anwendungsfunktionen, ausgenommen möglicherweise begrenzte nutzerspezifische Einstellungen einer Anwendungskonfiguration.
- Platform as a Service (PaaS): Die für den Nutzer bereitgestellte Funktion besteht darin, auf der Cloud-Infrastruktur vom Nutzer erstellte oder erworbene Anwendungen zu nutzen, die unter Verwendung von Programmiersprachen und Tools erstellt wurden, die von dem Anbieter unterstützt werden. Der Nutzer verwaltet weder noch steuert er die zu Grunde liegende Cloud-Infrastruktur, einschließlich Netzwerke, Server, Betriebssysteme oder Speicher, aber er hat die Kontrolle über die genutzten Anwendungen und möglicherweise die Hosting-Umgebungskonfigurationen von Anwendungen.
- Infrastructure as a Service (IaaS): Die für den Nutzer bereitgestellte Funktion besteht in der Bereitstellung von Verarbeitung, Speicher, Netzwerken und anderen grundlegenden Datenverarbeitungsressourcen, wobei der Nutzer in der Lage ist, beliebige Software zu nutzen und auszuführen, zu der auch Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet weder noch steuert er die zu Grunde liegende Cloud-Infrastruktur, aber er hat die Kontrolle über Betriebssysteme, Speicher, genutzte Anwendungen und möglicherweise eine begrenzte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
- Es gibt folgende Nutzungsmodelle:
- Private Cloud: Die Cloud-Infrastruktur wird ausschließlich für eine Organisation betrieben. Sie kann von der Organisation oder einer Drittpartei verwaltet werden und kann innerhalb oder außerhalb der Geschäftsräume vorhanden sein.
- Community Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine spezielle Community, die gemeinsame Problemstellungen hat (z.B. Berücksichtigung von Zielsetzung, Sicherheitsanforderungen, Richtlinien und Konformität). Sie kann von den Organisationen oder einer Drittpartei verwaltet werden und kann innerhalb oder außerhalb der Geschäftsräume vorhanden sein.
- Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Industriegruppe zur Verfügung gestellt und ist im Besitz einer Organisation, die Cloud-Dienste verkauft.
- Hybrid Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung von zwei oder mehr Clouds (Private, Community oder Public), die eindeutige Entitäten bleiben, aber durch eine standardisierte oder proprietäre Technologie vereinigt sind, die eine Daten- und Anwendungsportabilität ermöglicht (z.B. Cloud Bursting für einen Lastausgleich zwischen Clouds).
- Eine Cloud-Datenverarbeitungsumgebung ist dienstorientiert mit Schwerpunkt auf Statusunabhängigkeit, niedriger Kopplung, Modularität und semantischer Interoperabilität. Das Kernstück des Cloud Computing ist eine Infrastruktur, die ein Netzwerk von miteinander verbundenen Knoten aufweist.
- Unter Bezugnahme auf
1 wird eine schematische Darstellung eines Beispiels für einen Cloud-Computing-Knoten gezeigt. Der Cloud-Computing-Knoten10 ist nur ein Beispiel für einen geeigneten Cloud-Computing-Knoten und soll keinerlei Einschränkung in Bezug auf den Schutzumfang der Verwendung oder Funktionalität der Ausführungsformen der hierin beschriebenen Erfindung andeuten. Ungeachtet dessen lässt sich der Cloud-Computing-Knoten10 umsetzen und/oder kann jede der im Vorgenannten erläuterten Funktionalitäten ausführen. - Im Cloud-Computing-Knoten
10 ist ein Computersystem/Server12 vorhanden, das bzw. der mit zahlreichen anderen Umgebungen oder Konfigurationen für Universal- oder Sonder-Datenverarbeitungssysteme betriebsfähig ist. Zu Beispielen für bekannte Datenverarbeitungssysteme, Umgebungen und/oder Konfigurationen, die für eine Verwendung mit dem Computersystem/Server12 geeignet sein können, zählen PC-Systeme, Servercomputersysteme, Thin Clients, Thick Clients, Handheld- oder Laptop-Einheiten, Multiprozessorsysteme, Systeme auf der Grundlage von Mikroprozessoren, Set-Top-Boxen, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme und verteilte Cloud-Computing-Umgebungen, die beliebige der oben genannten Systeme oder Einheiten und dergleichen aufweisen, sie sind aber nicht darauf beschränkt. - Das Computersystem/der Server
12 kann in dem allgemeinen Kontext von durch ein Computersystem ausführbaren Anweisungen beschrieben werden, wie beispielsweise Programmmodule, die von einem Computersystem ausgeführt werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. enthalten, die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen umsetzen. Das Computersystem/der Server12 kann in verteilten Cloud-Computing-Umgebungen betrieben werden, wobei Aufgaben von entfernt angeordneten Verarbeitungseinheiten ausgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können Programmmodule sich sowohl in lokalen als auch entfernt angeordneten Computersystem-Speichermedien befinden, die Arbeitsspeichereinheiten enthalten. - Wie in
1 gezeigt, wird das Computersystem/der Server12 in dem Cloud-Computing-Knoten10 in der Form einer Universal-Datenverarbeitungseinheit gezeigt. Die Komponenten des Computersystems/Servers12 können einen oder mehrere Prozessoren oder Verarbeitungseinheiten16 , einen Systemspeicher28 und einen Bus18 enthalten, der verschiedene Systemkomponenten einschließlich des Systemspeichers28 an den Prozessor16 koppelt, sie sind aber nicht darauf beschränkt. - Der Bus
18 stellt einen oder mehrere von mehreren beliebigen Typen von Busstrukturen dar, einschließlich eines Arbeitsspeicherbusses oder Arbeitsspeicher-Controllers, eines Peripheriebusses, eines Accelerated Graphics Port und eines Prozessor- oder lokalen Busses unter Verwendung von einer aus einer Vielfalt von Busarchitekturen. Als Beispiel und nicht einschränkend enthalten derartige Architekturen einen Industry Standard Architecture (ISA) -Bus, Micro Channel Architecture (MCA) -Bus, Enhanced ISA (EISA) -Bus, einen lokalen Video Electronics Standards Association (VESA) -Bus und Peripheral Component Interconnects (PCI) - Bus. - Das Computersystem/der Server
12 weist typischerweise eine Vielfalt von Medien auf, die von einem Computersystem gelesen werden können. Derartige Medien können alle verfügbaren Medien sein, auf die von dem Computersystem/Server12 zugegriffen werden kann, und sie enthalten sowohl flüchtige als auch nicht flüchtige Medien, austauschbare und nicht austauschbare Medien. - Der Systemspeicher
28 kann vom Computersystem lesbare Medien in Form von flüchtigem Arbeitsspeicher enthalten, wie beispielsweise einen Direktzugriffspeicher (RAM)30 und/oder einen Cache-Zwischenspeicher32 . Das Computersystem/der Server12 kann ferner andere austauschbare/nicht austauschbare, flüchtige/nicht flüchtige Computersystem-Speichermedien enthalten. Nur als Beispiel kann das Speichersystem34 für das Lesen von und das Schreiben auf nicht austauschbare, nicht flüchtige Magnetdatenträger bereitgestellt werden (nicht gezeigt und typischerweise als „Festplatte“ bezeichnet). Obwohl nicht gezeigt, können ein Magnetplattenlaufwerk für das Auslesen und Beschreiben einer austauschbaren, nicht flüchtigen Magnetplatte (z.B. eine „Floppy-Disk“) und ein optisches Plattenlaufwerk für das Auslesen oder Beschreiben einer austauschbaren, nicht flüchtigen optischen Platte wie einem CD-ROM, DVD-ROM oder andere optische Medien bereitgestellt werden. In solchen Fällen können alle über eine oder mehrere Datenträgerschnittstellen mit dem Bus18 verbunden werden. Wie ferner im Folgenden veranschaulicht und beschrieben wird, kann der Speicher28 mindestens ein Programmprodukt mit einer Gruppe (z.B. mindestens einem) von Programmmodulen enthalten, die so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen. - Das Programm/Dienstprogramm
40 , das eine Gruppe von (mindestens einem) von Programmmodulen42 aufweist, kann beispielsweise und nicht einschränkend im Speicher28 gespeichert werden, ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten. Das Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten oder eine Kombination davon können alle jeweils eine Umsetzung einer Netzwerkumgebung enthalten. Die Programmmodule42 führen im Allgemeinen die Funktionen und/oder Methoden von Ausführungsformen der Erfindung aus, wie hierin beschrieben. - Das Computersystem/der Server
12 kann auch mit einem oder mehreren externen Einheiten14 Daten austauschen, wie beispielsweise einer Tastatur, einem Zeigegerät, einer Anzeige24 usw.; einer oder mehreren Einheiten, die es einem Nutzer ermöglichen, mit dem Computersystem/Server12 zu interagieren; und/oder allen Einheiten (z.B. Netzwerkkarte, Modem usw.), die es dem Computersystem/Server12 ermöglichen, mit einer oder mehreren anderen Datenverarbeitungseinheiten Daten auszutauschen. Ein derartiger Datenaustausch kann über E/A-Schnittstellen 22 erfolgen. Außerdem kann das Computersystem/der Server12 mit einem oder mehreren Netzwerken, wie beispielsweise einem lokalen Netz (LAN), einem allgemeinen Weitverkehrsnetz (WAN) und/oder einem öffentlichen Netzwerk (z.B. dem Internet), über den Netzwerkadapter20 Daten austauschen. Wie dargestellt, tauscht der Netzwerkadapter20 Daten mit den anderen Komponenten des Computersystems/Servers12 über den Bus18 aus. Es sollte verstanden werden, dass, obwohl nicht gezeigt, andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem/Server12 verwendet werden könnten. Beispiele dafür, ohne darauf beschränkt zu sein, sind: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerk-Arrays, RAID-Systeme, Bandlaufwerke und Speichersysteme zur Datenarchivierung usw. - Unter folgender Bezugnahme auf
2 wird die veranschaulichende Cloud-Computing-Umgebung50 dargestellt. Wie gezeigt, weist die Cloud-Computing-Umgebung50 einen oder mehrere Cloud-Computing-Knoten10 auf, mit denen lokale Datenverarbeitungseinheiten Daten austauschen können, die von Nutzern der Cloud verwendet werden, wie beispielsweise Personal Digital Assistant (PDA) oder Mobiltelefon54A , Desktop-Computer54B , Laptop-Computer54C und/oder Fahrzeug-Computersystem54N . Die Knoten10 können untereinander Daten austauschen. Sie können (nicht gezeigt) physisch oder virtuell in einem oder mehreren Netzwerken gruppiert sein, wie beispielsweise Private, Community, Public oder Hybrid Cloud, wie hierin oben beschrieben, oder eine Kombination davon sein. Damit hat die Cloud-Computing-Umgebung50 die Möglichkeit, eine Infrastruktur, Plattformen und/oder Software als Dienste anzubieten, für die ein Nutzer der Cloud keinerlei Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es versteht sich, dass die in2 gezeigten Typen von Datenverarbeitungseinheiten54A bis N nur zur Veranschaulichung dienen sollen, und dass die Cloud-Computing-Knoten10 und die Cloud-Computing-Umgebung50 mit jedem Typ einer computerisierten Einheit über jeden Typ von Netzwerk und/oder eine über ein Netzwerk adressierbare Verbindung (z.B. unter Verwendung eines Web-Browsers) Daten austauschen können. - Unter folgender Bezugnahme auf
3 ist eine Gruppe von funktionalen Abstraktionsschichten gezeigt, die von der Cloud-Computing-Umgebung50 (2 ) bereitgestellt werden. Es sollte von vornherein verstanden werden, dass die in3 gezeigten Komponenten, Schichten und Funktionen nur veranschaulichend sein sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie dargestellt, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt: - Die Hardware- und Software-Schicht
60 weist Hardware- und Software-Komponenten auf. Zu Beispielen für Hardware-Komponenten zählen Mainframes. In einem Beispiel zSeries®-Systeme von IBM® und Server auf der Grundlage einer RISC- (Reduced Instruction Set Computer) Architektur. In einem Beispiel pSeries®-Systeme von IBM, xSeries®-Systeme von IBM, BladeCenter®-Systeme von IBM, Speichereinheiten, Netzwerke und Netzwerkkomponenten. Zu Beispielen für Software-Komponenten zählt Software für Netzwerkanwendungsserver. In einem Beispiel Software für WebSphere®-Anwendungsserver von IBM und Datenbanksoftware. In einem Beispiel Software für DB2®-Datenbanken von IBM. (IBM, zSeries, pSeries, xSeries, BladeCenter, WebSphere und DB2 sind Marken der International Business Machines Corporation, die weltweit unter zahlreichen Gerichtsbarkeiten registriert sind.) - Die Virtualisierungsschicht
62 stellt eine Abstraktionsschicht bereit, von der aus die folgenden Beispiele für virtuelle Entitäten bereitgestellt werden können: virtuelle Server; virtueller Speicher; virtuelle Netzwerke, einschließlich virtueller privater Netzwerke; virtuelle Anwendungen und Betriebssysteme; und virtuelle Clients. - In einem Beispiel kann die Verwaltungsschicht
64 die im Folgenden beschriebenen Funktionen bereitstellen. Die Ressourcenbereitstellung sorgt für die dynamische Beschaffung von Datenverarbeitungsressourcen und anderen Ressourcen, die zum Ausführen von Aufgaben innerhalb der Cloud-Computing-Umgebung eingesetzt werden. Messung und Preisbestimmung stellen beim Einsatz von Ressourcen innerhalb der Cloud-Computing-Umgebung eine Kostenverfolgung und die Abrechnung oder Rechnungsstellung für den Nutzer dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Lizenzen für Anwendungssoftware aufweisen. Die Sicherheit stellt für die Nutzer der Cloud und Aufgaben eine Identitätsüberprüfung sowie Schutz für Daten und andere Ressourcen bereit. Das Nutzerportal stellt den Zugang zu der Cloud-Computing-Umgebung für Nutzer und Systemadministratoren bereit. Die Service-Level- (Dienstgüte) Verwaltung sorgt für die Zuordnung und Verwaltung von Cloud-Computing-Ressourcen, so dass erforderliche Service-Levels eingehalten werden. Planung und Vertragserfüllung des Service Level Agreement (SLA) (Dienstgütevereinbarung) stellen eine Vorab-Vereinbarung für und Beschaffung von Cloud-Computing-Ressourcen bereit, für die gemäß eines SLA eine zukünftige Anforderung erwartet wird. In der Verwaltungsschicht wird ferner eine Optimierung der Bereitstellungszeit gezeigt, welche die Funktionalität darstellt, die unter den Ausführungsformen der vorliegenden Erfindung bereitgestellt wird. - Die Arbeitslastenschicht
66 stellt Beispiele für die Funktionalität bereit, für die die Cloud-Computing-Umgebung eingesetzt werden kann. Zu Beispielen für Arbeitslasten und Funktionen, die von dieser Schicht aus bereitgestellt werden können, zählen: Zuordnung und Navigation; Software-Entwicklung und Lifecycle-Management; Bereitstellung von virtuellen Schulungen; Datenanalyseverarbeitung; Transaktionsverarbeitung; Speicherung von Nutzerdaten und Sicherung. Wie vorher erwähnt, sind alle vorgenannten Beispiele, die unter Bezugnahme auf3 beschrieben wurden, rein veranschaulichend, und die Erfindung ist nicht auf diese Beispiele beschränkt. - Es versteht sich, dass alle Funktionen der vorliegenden Erfindung, wie hierin beschrieben, typischerweise durch die Auswahlfunktionalität der virtuellen Maschine (der Verwaltungsschicht
64 , die konkret als Module von Programmcode42 des Programms/Dienstprogramms40 (1 ) verkörpert sein kann) ausgeführt werden können. Dies muss allerdings nicht der Fall sein. Die hierin zitierte Funktionalität könnte von jeder der in3 gezeigten Schichten60 bis66 ausgeführt/umgesetzt und/oder ermöglicht werden. - Es wird wiederholt, dass, obwohl diese Offenbarung eine ausführliche Beschreibung zu Cloud-Computing enthält, die Umsetzung der hierin zitierten Lehren nicht auf eine Cloud-Computing-Umgebung begrenzt ist. Die Ausführungen der vorliegenden Erfindung sind stattdessen dazu bestimmt, mit jedem Typ einer derzeit bekannten oder zukünftig entwickelten vernetzten Datenverarbeitungsumgebung umgesetzt zu werden.
- Unter folgender Bezugnahme auf
4 wird eine Systemdarstellung gemäß einem Aspekt der vorliegenden Erfindung gezeigt. Wie veranschaulicht wird eine Engine für zusammengefasste virtuelle Maschinen (Engine70 ) in einer vernetzten Datenverarbeitungsumgebung84 gezeigt (die z.B. die Cloud-Computing-Umgebung50 aufweist). Im Allgemeinen kann die Engine70 als ein Programm40 auf dem Computersystem12 von1 umgesetzt werden und kann die hierin zitierten Funktionen umsetzen, wie in der Verwaltungsschicht64 von3 veranschaulicht. Im Allgemeinen weist die Engine70 (in einer Ausführungsform) eine Regel- und/oder Datenverarbeitungs-Engine auf, die eine Gruppe von (mindestens eine) Regeln78 verarbeitet und/oder eine Gruppe von Datenverarbeitungen ausführt, um eine Gruppe von VMs72A bis N aus einem Pool von vorab bereitgestellten VMs (Pool74 ) auszuwählen, um eine oder mehrere Arbeitslastanforderungen76A bis N zu verarbeiten/zu bearbeiten. Auf diese Weise kann die Engine70 Funktionen ähnlich wie bei einem Universal-Computer ausführen. - Auf diese Weise kann die Engine
70 mehrere Funktionen unter Verwendung der Regeln78 ausführen. Neben anderen Funktionen kann die Engine70 insbesondere: eine Installationszeit für jede Softwarekomponenten- (z.B. Softwareprogramm) Kombination in einer Vielzahl von Softwarekomponenten-Kombinationen berechnen; jede einzelne Installationszeit durch einen Wert, der einem Bereitstellungsverlauf zugehörig ist, gewichten; und zumindest einen Teil der Softwarekomponenten-Kombinationen zu dem vorab bereitgestellten Pool von virtuellen Maschinen (VMs) zuordnen. - Die Funktionen der Engine
70 werden im Folgenden ausführlicher erklärt. Unter den Ausführungsformen der vorliegenden Erfindung befinden sich mehrere Verfahren/Ansätze, die umgesetzt werden können, um einen Pool74 von (z.B. zumindest teilweise) vorab bereitgestellten VMs72A bis N zu erzeugen. Angenommen, die Cloud-Umgebung50 weist einen Pool74 von (z.B. zumindest teilweise) vorab bereitgestellten VMs72A bis N auf. Ferner angenommen, dass ein Bereitstellungsverlauf und Bewertungsdaten80 für die teilweise vorab bereitgestellten VMs72A bis N vorhanden sind (z.B. in einer Gruppe von Datenbanken82A bis N oder dergleichen). Mehrere Verfahren/Ansätze können umgesetzt werden, um zu identifizieren, welche VMs72A bis N im Pool74 die Softwarekomponente(n) aufweisen, die zum Verarbeiten der Arbeitslastanforderungen76A bis N verwendet wird bzw. werden. In dem im Folgenden dargelegten Beispiel wird angenommen, dass bis zu drei mögliche Softwarekomponenten (z.B. Softwareprogramme) bereitgestellt und/oder verwendet werden, nämlich die Softwarekomponenten „A“, „B“ und „C“ (oder eine beliebige Kombination davon). Dies muss jedoch nicht der Fall sein, und es versteht sich, dass die Softwarekomponenten „A“, „B“ und „C“ nur zu Veranschaulichungszwecken zitiert werden. - Diese Offenbarung stellt ein Verfahren zum Erzeugen eines Pools von (z.B. zumindest teilweise) vorab bereitgestellten VMs
72A bis N vor, der in Bezug auf die Zeit, die zum Erfüllen von VM-Anforderungen benötigt wird, optimal zugeordnet ist. Das Verfahren berechnet die Zeit, um von jeder Kombination von Softwarekomponenten zu jeder anderen Kombination von Softwarekomponenten zu gelangen. Die gesamte Übergangszeit für jede einzelne Softwarekomponenten-Kombination stellt deren Installationszeit dar. Diese Installationszeit wird dann durch die Verteilung aller vorherigen Bereitstellungsanforderungen gewichtet. Mit anderen Worten, die Wahrscheinlichkeit, mit der der Benutzer eine VM mit der jeweiligen endgültigen Softwarekomponenten-Konfiguration anfordern würde, wird für jede Zeitberechnung zum Gewichten der Installationszeit für die Konfiguration verwendet. Dieses Verfahren ist vorteilhaft, weil es auf optimale Weise die beste Vorab-Bereitstellungsverteilung von VMs auf der Grundlage ihrer relativen Installationszeiten findet. - In einer ersten Ausführungsform berechnet das Verfahren die Übergangszeit von jeder möglichen Softwarekomponenten-Kombinationen zu jeder anderen Softwarekomponenten-Kombination. In einer zweiten Ausführungsform wird nur eine Untergruppe von Übergangszeiten berechnet statt einer Übergangszeit für jede mögliche Softwarekomponenten-Kombination. Diese Ausführungsform verringert die Komplexität durch das Einschränken der Anzahl von Softwarekomponenten-Kombinationen, die in den Übergangszeitberechnungen verwendet werden. Dieses Verfahren stellt nahezu optimale Ergebnisse bereit, die im Vergleich zu herkömmlichen Verfahren schnell berechnet werden.
- In einer weiteren Ausführungsform wird ein genetischer Algorithmus beim Erzeugen des Vorab-Bereitstellungs-Pools verwendet, um die Komplexität zu überwinden, die durch große Dienstekataloge erstellt wird. Gegenwärtig können Cloud-Anbieter bis zu mehrere Stunden brauchen, um von Nutzern angeforderte Ressourcen bereitzustellen. Einige Cloud-Systeme brauchen nur wenige Minuten. Die Unterschiede in der Bereitstellungsgeschwindigkeit liegen im Allgemeinen in drei Bereichen: (1) die Höhe der Investitionen in die Sicherungsspeicher-Architektur; (2) die Architektur der Cloud-Verwaltungsplattform; und (3) die zum Bereitstellen von Ressourcen verwendeten Verfahren. Einige Clouds brauchen zum Bereitstellen notwendigerweise länger, weil der Dienstanbieter sich entschieden hat, nicht in kostspielige Backend-Speichertechnologien zu investieren, andere brauchen wiederum länger aufgrund von Anforderungen, die von Nutzern eingesetzt werden, die komplexere Bereitstellungsverfahren erfordern.
- Genetische Algorithmen entwickeln Lösungen für Probleme unter Verwendung der Prinzipien der natürlichen Auslese. Im Allgemeinen beginnt ein genetischer Algorithmus mit einer Ausgangsgesamtheit von Lösungsversuchen für ein Problem, bewertet die Lösungsversuche und verwendet die besseren Lösungen als Grundlage für ein nächstes Erzeugen von Lösungsversuchen. Der Prozess wird üblicherweise fortgesetzt, bis sich eine zufriedenstellende Lösung abzeichnet. Beliebige Softwarekomponenten-Kombinationen werden für eine Tauglichkeitsbewertung ausgewählt. Kombinationen, die bei der Tauglichkeitsbewertung gut abschneiden, werden zu dem Bereitstellungs-Pool hinzugefügt. In einem Beispiel kann der genetische Algorithmus Bedingungen haben. Bedingungen sind Anforderungen, die eine Softwarekomponenten-Kombination erfüllen muss, um sich für eine Tauglichkeitsprüfung zu qualifizieren. Indem vor dem Ausführen von Tauglichkeitsbewertungen Kombinationen entfernt werden, die gewisse Anforderungen nicht erfüllen, kann das System Zeit sparen, indem unbrauchbare Lösungen nicht weiterverfolgt werden.
- Die folgende Tauglichkeitsbewertungsfunktion nimmt eine Ausführung des genetischen Algorithmusprozesses (einschließlich mehrerer Generierungen) vor, um das tauglichste teilweise vorab bereitgestellte Einzelergebnis zu finden. Die Tauglichkeitsbewertungsfunktion des genetischen Algorithmus kann wie folgt dargestellt werden:
gaFitnessFunction(softwareConfiguration x, probDistOfSoftwareConfig): totalToCost = 0 for each Software installable combination y do: totalToCost += timeTolnstall(x,y) * P(y) end for loop return totalToCost
Um den sich daraus ergebenden vorab bereitgestellten Pool vielfältig zu halten, wird jedes Mal, wenn eine Softwarekomponente in den Pool gestellt wird, eine Instanz dieser Kombination entfernt. Auf diese Weise wird der sich daraus ergebende Prozentsatz dieser Konfiguration vermindert, und wenn der genetische Algorithmus das nächste Mal ausgeführt wird, ist die Gewichtung der Konfiguration geringer. Das Verfahren stellt durch Software installierbare Kombinationen als BitSets für jede einzelne Kombination in der genetischen Ausgangsgesamtheit dar. Zum Beispiel kann eine mögliche durch Software installierbare Konfiguration auf die folgende Weise dargestellt werden: 1001110 = S1S2S3S4S5S6S7. Der allgemeine Algorithmus für die Rückgabe eines Pools wird im Folgenden gezeigt:
pool = BitSet[] probDistOfSoftwareConfig = getCurrentProbDistOfSoftwareInstallables() for i=1 to n number of VMs in the resulting pool do: pool[i] = chooseOneGA(probDistOfSoftwareConfig) probDistOfSoftwareConfig.removeOneInstance(pool[i]) end for loop return pool
Dieses Konzept wird ausführlicher in 5 gezeigt. Wie veranschaulicht zeigt das Schaubild in 5 VMs 100A bis N mit einer Kombination von Softwarekomponenten „A“, „B“ und/oder „C“. Ebenso werden verschiedene Querpfade 102A bis N mit dazugehörigen Zeiten „tx“ gezeigt, um alle drei Softwarekomponenten „A“, „B“ und/oder „C“ zu erhalten. Zum Beispiel, beginnend bei VM 100A (Null-Gruppe), besteht eine mögliche Route zum Erhalten aller drei Software-Komponenten darin, wie in Knoten 100N gezeigt, den Pfad tb zu VM 100B zu durchqueren, danach Pfad ta zu VM 100E und dann Pfad tc zu VM 100N . Wie ferner gezeigt, könnte man mehreren Pfaden von VM 100A zu VM 100N folgen.
Betrachten wir das Beispiel, in dem die Softwarekomponente A eine Softwarekomponenten-Installationszeit von 5 Minuten hat, und die Softwarekomponente B eine Softwarekomponenten-Installationszeit von 30 Minuten hat. Es ginge viel schneller, eine „A und B“-VM bereitzustellen, indem man mit einer B-VM statt einer A-VM beginnt.
Das folgende Beispiel eines „timeToInstall“-Algorithmus kann zum Berechnen der Installationszeit jeder Softwarekomponente verwendet werden: timeTolnstall(startConfig, endConfig):
if startConfig has Software not found in endConfig then: // Keine Deinstallationen zulassen, ab Anfang beginnen startConfig = {} end if installTime = 0 for each Software component s in endConfig do: if startConfig does not contain s then: installTime += ts end if end for loop return installTime
Die Variable startConfig stellt den Anfang der Installationszeit für die jeweilige Softwarekomponenten-Konfiguration dar. Die Variable endConfig stellt das Ende der Installationszeit für die jeweilige Softwarekomponenten-Konfiguration dar. Die Gesamtzeit für die Installation (installTime) wird von dem Algorithmus zurückgegeben.
In einigen Ausführungsformen berücksichtigt die Funktion „timeToInstall“ nicht das Deinstallieren von Softwarekomponenten von einer teilweise bereitgestellten VM zum Erfüllen von Anforderungen, da nach dem Deinstallieren der Software noch Softwarekomponenten-Reste vorhanden sein können. In anderen Ausführungsformen können Deinstallationen in den Algorithmus integriert werden, indem die Deinstallationszeiten für jede Softwarekomponente aufgenommen werden. Der Algorithmus würde dann die Mindestentfernung in dem in 1 veranschaulichten Blockschaubild nehmen.
In jeder der oben beschriebenen Ausführungsformen wird jede Installationszeit dann durch den Prozentsatz jeder Softwarekomponenten-Kombination gewichtet, die vorher bereitgestellt wurde. Mit anderen Worten, die Zeitberechnung für jede Softwarekomponenten-Konfiguration wird durch die Wahrscheinlichkeit gewichtet, mit der der Benutzer eine VM mit dieser endgültigen Softwarekomponenten-Konfiguration anfordern würde. Beim Gewichten der Wahrscheinlichkeit werden einfache P- (softwareConfig) Wahrscheinlichkeiten verwendet. Mit anderen Worten, von all den vorher bereitgestellten Instanzen beruht die Gewichtung auf dem Prozentsatz für ausschließlich softwareConfig. Der folgende „totalToCost“-Algorithmus kann verwendet werden, um eine VM auf der Grundlage einer Verteilung auszuwählen, um einen Pool von (z.B. zumindest teilweise) vorab bereitgestellten VMs 72A bis N zu erzeugen:
totalToCost = int[] for each Software component combination x do: for each Software component combination y do: totalToCost[x] += timeTolnstall(x,y) * P(y) end for loop end for loop reciprocalToCost = reciprocate(totalToCost) normalizedRecipricalToCost = normalize(reciprocalToCost) selectVMPoolBasedOnDistribution(normalizedRecipricalToCost)
Unter folgender Bezugnahme auf 6 wird ein Verfahrensablaufplan gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in Schritt S1 veranschaulicht, wird eine Installationszeit für jede Softwarekomponenten-Kombination berechnet. In Schritt S2 wird jede einzelne Installationszeit durch einen Wert gewichtet, der zu einem Bereitstellungsverlauf zugehörig ist. In Schritt S3 wird zumindest ein Teil der Softwarekomponenten-Kombinationen dem vorab bereitgestellten Pool von virtuellen Maschinen (VMs) zugeordnet.
Obwohl sie hierin als eine Generierungslösung für einen vorab bereitgestellten VM-Pool gezeigt und beschrieben wird, versteht es sich, dass die Erfindung ferner verschiedene alternative Ausführungsformen bereitstellt. Zum Beispiel stellt die Erfindung in einer Ausführungsform ein computerlesbares/-verwendbares Medium bereit, das Computerprogrammcode enthält, um einer Computerinfrastruktur zu ermöglichen, eine Generierungsfunktionalität für einen vorab bereitgestellten VM-Pool bereitzustellen, wie hierin erörtert. Insofern enthält das computerlesbare/- verwendbare Medium einen Programmcode, der jeden der verschiedenen Prozesse der Erfindung umsetzt. Es versteht sich, dass die Begriffe computerlesbares Medium oder computerverwendbares Medium eine oder mehrere von jedem Typ von physischen Ausführungsformen des Programmcodes aufweist. Insbesondere kann das computerlesbare/-verwendbare Medium einen Programmcode aufweisen, der auf einem oder mehreren tragbaren Herstellungsartikeln für Speicherung (z.B. einer CD, einer Magnetplatte, einem Band usw.), auf einem oder mehreren Datenspeicherabschnitten einer Datenverarbeitungseinheit wie beispielsweise dem Speicher 28 (1 ) und/oder dem Speichersystem 34 (1 ) (z.B. einer Festplatte, einem Nur-Lese-Speicher, einem Direktzugriffspeicher, einem Cache-Zwischenspeicher usw.) ausgeführt sein kann.
In einer weiteren Ausführungsform stellt die Erfindung ein Verfahren bereit, das den Prozess der Erfindung auf der Grundlage eines Abonnements, von Werbung und/oder von Gebühren ausführt. Das heißt, ein Dienstanbieter wie beispielsweise ein Lösungsintegrator könnte anbieten, eine Generierungsfunktionalität für einen vorab bereitgestellten VM-Pool anzubieten. In diesem Fall kann der Dienstanbieter eine Computerinfrastruktur wie beispielsweise ein Computersystem 12 (1 ) erstellen, verwalten, unterstützen usw., das die Prozesse der Erfindung für einen oder mehrere Nutzer ausführt. Im Gegenzug kann der Dienstanbieter eine Bezahlung von dem oder den Nutzern gemäß einem Abonnement und/oder einer Gebührenvereinbarung erhalten und/oder der Dienstanbieter kann eine Bezahlung aus dem Verkauf von Werbeinhalt an einen oder mehrere Dritte erhalten.
In einer noch weiteren Ausführungsform stellt die Erfindung ein durch einen Computer umgesetztes Verfahren zum Erzeugen eines Pools von (z.B. zumindest teilweise) vorab bereitgestellten VMs bereit. In diesem Fall kann eine Computerinfrastruktur wie beispielsweise ein Computersystem 12 (1 ) bereitgestellt werden, und ein oder mehrere Systeme zum Ausführen der Prozesse der Erfindung können erhalten (z.B. erstellt, gekauft, verwendet, modifiziert usw.) und für die Computerinfrastruktur genutzt werden. Insofern kann die Nutzung eines Systems eines oder mehreres aufweisen von: (1) Installieren von Programmcode auf einer Datenverarbeitungseinheit wie beispielsweise einem Computersystem 12 ( 1 ) aus einem computerlesbaren Medium; (2) Hinzufügen von einer oder mehreren Datenverarbeitungseinheiten zu der Computerinfrastruktur; und (3) Integrieren und/oder Modifizieren von einem oder mehreren vorhandenen Systemen der Computerinfrastruktur, um der Computerinfrastruktur das Ausführen der Prozesse der Erfindung zu ermöglichen.
Claims (9)
- Durch einen Computer umgesetztes Verfahren zur Optimierung der Bereitstellungszeiten angeforderter virtueller Maschinen mit darauf installierten Kombinationen von Softwarekomponenten in einer vernetzten Datenverarbeitungsumgebung, aufweisend ein - Ermitteln durch einen genetischen Algorithmus einer Bereitstellungsverteilung einer vorgegebenen Zahl von virtuellen Maschinen (VMs) mit einer Vielzahl von Kombinationen darauf installierter Softwarekomponenten, von der ausgehend die mit einer Anforderungswahrscheinlichkeit gewichtete mittlere Zeit zur Erfüllung zukünftiger Anforderungen von virtuellen Maschinen mit installierten Softwarekomponenten-Kombinationen hin optimal ist, - wobei die Zeit zur Erfüllung einer Anforderung als die minimale Zeit unter den Zeiten für jeweils einen Installationsübergang von einer der bereitgestellten virtuellen Maschinen mit installierten Kombinationen von Softwarekomponenten zu der angeforderten virtuellen Maschine mit installierten Softwarekomponenten bestimmt ist.
- Durch einen Computer umgesetztes Verfahren nach
Anspruch 1 , wobei der dem Bereitstellungsverlauf zugehörige Wert einen Prozentsatz von früheren Bereitstellungsanforderungen für die jeweilige Softwarekomponenten-Kombination aus allen früheren Bereitstellungsanforderungen aufweist. - Durch einen Computer umgesetztes Verfahren nach
Anspruch 1 , wobei die Vielzahl von Softwarekomponenten-Kombinationen alle möglichen Softwarekomponenten-Kombinationen aufweist. - Durch einen Computer umgesetztes Verfahren nach
Anspruch 1 , wobei die Vielzahl von Softwarekomponenten-Kombinationen eine Untergruppe aller möglichen Softwarekomponenten-Kombinationen aufweist, wobei die Untergruppe zufällig ausgewählt wird. - Durch einen Computer umgesetztes Verfahren nach
Anspruch 4 , ferner aufweisend das Ausführen eines genetischen Algorithmus an der Untergruppe von Softwarekomponenten-Kombinationen. - Durch einen Computer umgesetztes Verfahren nach
Anspruch 1 , wobei die vernetzte Datenverarbeitungsumgebung eine Cloud-Computing-Umgebung aufweist. - System zur Optimierung der Bereitstellungszeiten angeforderter virtueller Maschinen mit darauf installierten Kombinationen von Softwarekomponenten in einer vernetzten Datenverarbeitungsumgebung, aufweisend - ein Speichermedium, das Anweisungen aufweist; - einen an das Speichermedium gekoppelten Bus; und - einen an den Bus gekoppelten Prozessor, der beim Ausführen der Anweisungen das System veranlasst zum: - Berechnen einer Installationszeit für jede Softwarekomponenten-Kombination in einer Vielzahl von Softwarekomponenten-Kombinationen; - Gewichten jeder einzelnen Installationszeit durch einen Wert, der einem Bereitstellungsverlauf zugehörig ist; - Zuordnen von zumindest einem Teil der Softwarekomponenten-Kombinationen zu dem vorab bereitgestellten Pool von virtuellen Maschinen (VMs) und - Ermitteln durch einen genetischen Algorithmus einer Bereitstellungsverteilung einer vorgegebenen Zahl von virtuellen Maschinen (VMs) mit einer Vielzahl von Kombinationen darauf installierter Softwarekomponenten, von der ausgehend die mit einer Anforderungswahrscheinlichkeit gewichtete mittlere Zeit zur Erfüllung zukünftiger Anforderungen von virtuellen Maschinen mit installierten Softwarekomponenten-Kombinationen hin optimal ist, - wobei die Zeit zur Erfüllung einer Anforderung als die minimale Zeit unter den Zeiten für jeweils einen Installationsübergang von einer der bereitgestellten virtuellen Maschinen mit installierten Kombinationen von Softwarekomponenten zu der angeforderten virtuellen Maschine mit installierten Softwarekomponenten bestimmt ist.
- Computerprogrammprodukt zum Erzeugen eines vorab bereitgestellten Pools von virtuellen Maschinen (VMs) in einer vernetzten Datenverarbeitungsumgebung, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium und Programmanweisungen aufweist, die auf dem computerlesbaren Speichermedium gespeichert sind zum Ausführen des Verfahrens nach einem der
Ansprüche 1 bis6 . - Verfahren zum Nutzen eines Systems zum Erzeugen eines vorab bereitgestellten Pools von virtuellen Maschinen (VMs) in einer vernetzten Datenverarbeitungsumgebung nach
Anspruch 7 .
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/446,058 | 2012-04-13 | ||
US13/446,058 US9317337B2 (en) | 2012-04-13 | 2012-04-13 | Utilizing software component metadata to provision virtual machines in a networked computing environment |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102013205572A1 DE102013205572A1 (de) | 2013-10-17 |
DE102013205572B4 true DE102013205572B4 (de) | 2020-06-18 |
Family
ID=49232351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102013205572.2A Active DE102013205572B4 (de) | 2012-04-13 | 2013-03-28 | Verwenden von softwarekomponenten-metadaten zum bereitstellen von virtuellen maschinen in einer vernetzten datenverarbeitungsumgebung |
Country Status (2)
Country | Link |
---|---|
US (1) | US9317337B2 (de) |
DE (1) | DE102013205572B4 (de) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10963420B2 (en) * | 2012-08-10 | 2021-03-30 | Adobe Inc. | Systems and methods for providing hot spare nodes |
US9256452B1 (en) * | 2012-11-14 | 2016-02-09 | Amazon Technologies, Inc. | Providing an instance availability estimate |
US10043194B2 (en) | 2014-04-04 | 2018-08-07 | International Business Machines Corporation | Network demand forecasting |
US10361924B2 (en) | 2014-04-04 | 2019-07-23 | International Business Machines Corporation | Forecasting computer resources demand |
US10439891B2 (en) | 2014-04-08 | 2019-10-08 | International Business Machines Corporation | Hyperparameter and network topology selection in network demand forecasting |
US9385934B2 (en) | 2014-04-08 | 2016-07-05 | International Business Machines Corporation | Dynamic network monitoring |
US10713574B2 (en) | 2014-04-10 | 2020-07-14 | International Business Machines Corporation | Cognitive distributed network |
US9674300B2 (en) | 2015-04-22 | 2017-06-06 | At&T Intellectual Property I, L.P. | Apparatus and method for predicting an amount of network infrastructure needed based on demographics |
EP3282359A1 (de) * | 2016-08-09 | 2018-02-14 | Alcatel Lucent | Verfahren zur verwaltung eines virtuellen funkzugangsnetzwerks und verfahren zur kalibrierung einer softwarekomponente |
US10684840B1 (en) | 2017-03-03 | 2020-06-16 | Amazon Technologies, Inc. | Software package installation and monitoring |
US10466991B1 (en) * | 2017-03-03 | 2019-11-05 | Amazon Technologies, Inc. | Computing instance software package installation |
CN107122205B (zh) * | 2017-04-11 | 2021-01-29 | 深圳市客一客信息科技有限公司 | 安装程序的安装时间确定方法及装置 |
JP6962138B2 (ja) * | 2017-11-06 | 2021-11-05 | 富士通株式会社 | 情報処理装置、情報処理システム及びプログラム |
US10671442B2 (en) | 2017-11-15 | 2020-06-02 | Red Hat, Inc. | Dynamic preparation of a new network environment, and subsequent monitoring thereof |
CN109447264B (zh) * | 2018-09-17 | 2021-11-23 | 浙江工业大学 | 云计算环境下基于vham-r模型的虚拟机放置遗传优化方法 |
US10877799B2 (en) | 2018-10-16 | 2020-12-29 | Cisco Technology, Inc. | Evolutionary modelling based non-disruptive scheduling and management of computation jobs |
US11734146B2 (en) | 2021-07-16 | 2023-08-22 | Bank Of America Corporation | Analyzing performance metrics for improving technology environment of a software application |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080263553A1 (en) | 2007-04-19 | 2008-10-23 | International Business Machines Corporation | Dynamic Service Level Manager for Image Pools |
US20100058342A1 (en) | 2007-01-11 | 2010-03-04 | Fumio Machida | Provisioning system, method, and program |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5093912A (en) | 1989-06-26 | 1992-03-03 | International Business Machines Corporation | Dynamic resource pool expansion and contraction in multiprocessing environments |
US7577722B1 (en) | 2002-04-05 | 2009-08-18 | Vmware, Inc. | Provisioning of computer systems using virtual machines |
JP4867660B2 (ja) | 2004-01-30 | 2012-02-01 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンピューティング・ユーティリティのためのコンピューティング環境のコンポーネント化された自動プロビジョニングおよび管理 |
US8316130B2 (en) | 2004-12-22 | 2012-11-20 | International Business Machines Corporation | System, method and computer program product for provisioning of resources and service environments |
US8429630B2 (en) | 2005-09-15 | 2013-04-23 | Ca, Inc. | Globally distributed utility computing cloud |
JP4129988B2 (ja) | 2005-11-10 | 2008-08-06 | インターナショナル・ビジネス・マシーンズ・コーポレーション | リソースのプロビジョニング方法 |
US7941801B2 (en) | 2006-03-07 | 2011-05-10 | Oracle America Inc. | Method and system for provisioning a virtual computer and scheduling resources of the provisioned virtual computer |
US8028048B2 (en) * | 2007-02-27 | 2011-09-27 | International Business Machines Corporation | Method and apparatus for policy-based provisioning in a virtualized service delivery environment |
US20100042670A1 (en) | 2008-08-13 | 2010-02-18 | Electronic Data Systems Corporation | Integrated development engine for a cloud computing environment |
US8850571B2 (en) * | 2008-11-03 | 2014-09-30 | Fireeye, Inc. | Systems and methods for detecting malicious network content |
US7996525B2 (en) | 2008-12-31 | 2011-08-09 | Sap Ag | Systems and methods for dynamically provisioning cloud computing resources |
US8924559B2 (en) | 2009-12-03 | 2014-12-30 | International Business Machines Corporation | Provisioning services using a cloud services catalog |
US9009294B2 (en) | 2009-12-11 | 2015-04-14 | International Business Machines Corporation | Dynamic provisioning of resources within a cloud computing environment |
CN102376064A (zh) * | 2010-08-12 | 2012-03-14 | 威睿公司 | 云环境中软件的弹性许可 |
US9323561B2 (en) * | 2010-08-13 | 2016-04-26 | International Business Machines Corporation | Calibrating cloud computing environments |
US20120054731A1 (en) * | 2010-08-24 | 2012-03-01 | International Business Machines Corporation | Method, System and Computer Programs to Assist Migration to a Cloud Computing Environment |
-
2012
- 2012-04-13 US US13/446,058 patent/US9317337B2/en active Active
-
2013
- 2013-03-28 DE DE102013205572.2A patent/DE102013205572B4/de active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100058342A1 (en) | 2007-01-11 | 2010-03-04 | Fumio Machida | Provisioning system, method, and program |
US20080263553A1 (en) | 2007-04-19 | 2008-10-23 | International Business Machines Corporation | Dynamic Service Level Manager for Image Pools |
Also Published As
Publication number | Publication date |
---|---|
US9317337B2 (en) | 2016-04-19 |
US20130275961A1 (en) | 2013-10-17 |
DE102013205572A1 (de) | 2013-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102013205572B4 (de) | Verwenden von softwarekomponenten-metadaten zum bereitstellen von virtuellen maschinen in einer vernetzten datenverarbeitungsumgebung | |
DE112012000444B4 (de) | Verfahren, System und Computerprogrammprodukt zum Ermitteln einer optimalen Datenverarbeitungsumgebung zum Ausführen eines Abbildes sowie Verfahren zum Implementieren eines entsprechenden Systems | |
DE112010003886B4 (de) | Bereitstellung von Diensten unter Verwendung eines Cloud-Dienste-Katalogs | |
DE112012004336B4 (de) | System, Verfahren und Programmprodukt für kostenbewusste Auswahl von Vorlagen zum Bereitstellen von gemeinsam genutzten Ressourcen | |
DE112010003819B4 (de) | Cloudübergreifende gemeinsame Ressourcen-Nutzung innerhalb einer Cloud-Datenverarbeitungsumgebung | |
DE112012003316B4 (de) | Dynamisches Erwerben von Datenverarbeitungsressourcen in einer vernetzten Datenverarbeitungsumgebung | |
DE112013001889B4 (de) | Dynamische Zuweisung einer Arbeitslast über eine Vielzahl von Clouds hinweg | |
DE102012219363B4 (de) | Ereignisvorhersage und Ermittlung von vorbeugenden Maßnahmen in einer vernetzten Datenverarbeitungsumgebung | |
DE112012002941T5 (de) | Anwendungsressourcenverwalter über eine Cloud | |
DE112012004238T5 (de) | Auf Erkennung beruhende Identifizierung und Migration von leicht in eine Cloud verlagerbaren Anwendungen | |
DE102016205297A1 (de) | Festlegen von speicherebenen zum platzieren von datensätzen während des ausführens von aufgaben in einem arbeitsablauf | |
DE112013001308T5 (de) | Verwalten von mandantenspezifischen Datensätzen in einer mandantenfähigen Umgebung | |
DE102012215219A1 (de) | Ermitteln von Verteilungen von Abbildmustern von virtuellen Maschinen in einer vernetzten Datenverarbeitungsumgebung | |
DE112011105294T5 (de) | Abhängigkeiten-basierte Auswirkungsanalyse unter Verwendung eines mehrdimensionalen Modells eines Software-Angebots | |
DE112021000390T5 (de) | Anpassen der leistung eines datenverarbeitungssystems | |
DE112021005927T5 (de) | Patchen von arbeitsabläufen | |
DE112021004577T5 (de) | Verwalten eines aufgabenablaufs in einer edge-datenverarbeitungsumgebung | |
DE112021003499T5 (de) | Skalierbare operatoren für eine automatische verwaltung von arbeitslasten in hybriden cloud-umgebungen | |
DE112021001974T5 (de) | Proaktives durchführen von aufgaben auf der grundlage eines schätzens vonhardwarerekonfigurationszeiten | |
DE112020003825T5 (de) | Entsprechung zwischen externen Operationen und Containern sowie Mutationsereignissen | |
DE112020005326T5 (de) | Erzeugen eines skalierungsplans für externe systeme während eines cloud-tenant-onboardings/offboardings | |
DE112020005306T5 (de) | Implementierung von arbeitslasten in einer multi-cloud-umgebung | |
DE112021005848T5 (de) | Koordinieren von in einer skalierbaren anwendung umgesetzten anfragen | |
DE112022003126T5 (de) | Zugreifen auf topologisches zuordnen von kernen | |
DE112021005394T5 (de) | Tag-gesteuerte planung von datenverarbeitungsressourcen zur funktionsausführung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division | ||
R084 | Declaration of willingness to licence | ||
R020 | Patent grant now final | ||
R081 | Change of applicant/patentee |
Owner name: KYNDRYL, INC., NEW YORK, US Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION, ARMONK, NY, US |