DE102013207603A1 - Computer-implemented method for processing job in common pool of resources, involves organizing acquired local topology information including storage topology and associated resource use information of common pool of resources - Google Patents

Computer-implemented method for processing job in common pool of resources, involves organizing acquired local topology information including storage topology and associated resource use information of common pool of resources Download PDF

Info

Publication number
DE102013207603A1
DE102013207603A1 DE201310207603 DE102013207603A DE102013207603A1 DE 102013207603 A1 DE102013207603 A1 DE 102013207603A1 DE 201310207603 DE201310207603 DE 201310207603 DE 102013207603 A DE102013207603 A DE 102013207603A DE 102013207603 A1 DE102013207603 A1 DE 102013207603A1
Authority
DE
Germany
Prior art keywords
job
virtual
topology
virtual machine
physical
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.)
Granted
Application number
DE201310207603
Other languages
German (de)
Other versions
DE102013207603B4 (en
Inventor
Min Li
Prasenjit Sarkar
Dinesh K. Subhraveti
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
Priority claimed from US13/457,090 external-priority patent/US8972983B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102013207603A1 publication Critical patent/DE102013207603A1/en
Application granted granted Critical
Publication of DE102013207603B4 publication Critical patent/DE102013207603B4/en
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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool

Abstract

The method involves raising the status of a virtual machine status in a common pool of resources. The local topology information of common pool of resources is acquired. The acquired local topology information including a storage topology and associated resource use information is organized. The efficient performance of job belonging to the input/output (I/O) is supported, using the organized topology information including an assignment of a job to a selected virtual machine in the common pool. Independent claims are included for the following: (1) system for processing job in common pool of resources; and (2) computer program product for processing job in common pool of resources.

Description

Hintergrundbackground

Die vorliegende Erfindung bezieht sich auf einen effizienten Ansatz zur Nutzung der Jobverarbeitung in einem gemeinsamen Pool (Shared Pool) von Ressourcen. Im Besonderen bezieht sich die Erfindung auf die Auswertung der virtuellen und physischen Topologie der gemeinsamen Ressourcen und die Verarbeitung von Jobs in Reaktion auf die kombinierte Topologie. The present invention relates to an efficient approach to utilizing job processing in a shared pool of resources. In particular, the invention relates to the evaluation of the virtual and physical topology of the shared resources and the processing of jobs in response to the combined topology.

MapReduce ist ein Framework zum Verarbeiten hochgradig verteilbarer Aufgaben über riesige Datensets unter Verwendung sehr vieler Computerknoten. In Fällen, in denen alle Knoten die gleiche Hardware verwenden, oder bei einem Grid, in dem die Knoten unterschiedliche Hardware verwenden, wird das Framewerk im Allgemeinen als ein Cluster bezeichnet. Eine computerbezogene Verarbeitung kann für Daten erfolgen, die entweder in einem Dateisystem oder einer Datenbank gespeichert sind. Im Besonderen erhält ein Master-Knoten (bzw. übergeordneter Knoten) eine Job-Eingabe und teilt den Job in kleinere Teiljobs auf, die auf die anderen Knoten im Cluster oder Grid verteilt werden. In einer Ausführungsform sind die Knoten im Cluster oder Grid in einer Hierarchie angeordnet und die Teiljobs können weiter unterteilt und verteilt werden. Die Knoten, die für die Verarbeitung der Teiljobs verantwortlich sind, geben verarbeitete Daten an den Master-Knoten zurück. Im Besonderen werden die verarbeiteten Daten vom Master-Knoten erhoben und kombiniert, um eine Ausgabe zu bilden. Dementsprechend ist MapReduce eine Algorithmus-basierte Technik für die verteilte Verarbeitung zu einem Job gehörender großer Datenmengen.MapReduce is a framework for processing highly distributable tasks across huge datasets using a large number of compute nodes. In cases where all nodes use the same hardware, or a grid in which the nodes use different hardware, the frame is generally referred to as a cluster. Computer related processing may be for data stored in either a file system or a database. In particular, a master node (or parent node) receives a job input and splits the job into smaller subjobs that are distributed among the other nodes in the cluster or grid. In one embodiment, the nodes in the cluster or grid are arranged in a hierarchy and the subjobs can be further subdivided and distributed. The nodes responsible for processing the subjobs return processed data to the master node. In particular, the processed data is collected from the master node and combined to form an output. Accordingly, MapReduce is an algorithm-based technique for distributed processing of large amounts of data associated with a job.

Wie oben beschrieben, ermöglicht MapReduce die Verteilung der Datenverarbeitung über ein Netzwerk von Knoten. Obwohl MapReduce sehr komfortabel im Einsatz ist, treten bei aktuellen Verwendungen von MapReduce Leistungsprobleme bei der Verarbeitung von Jobs auf.As described above, MapReduce enables the distribution of data processing over a network of nodes. Although MapReduce is very comfortable to use, current usage of MapReduce has performance issues with processing jobs.

KurzzusammenfassungQuick Facts

Die vorliegende Erfindung weist ein Verfahren, ein System und eine Vorrichtung für die effiziente Verarbeitung von Jobs in einem gemeinsamen Pool von Ressourcen auf. Gemäß einem Aspekt wird ein computerimplementiertes Verfahren zur Implementierung in einem gemeinsamen Pool von Ressourcen bereitgestellt. Im Besonderen enthält der gemeinsame Pool einen physischen Host, der sich mit wenigstens einer physischen Maschine in Kommunikation befindet, wobei die physische Maschine eine oder mehrere virtuelle Maschinen unterstützt. Es werden Statusinformationen, die mit dem Betrieb der virtuellen Maschinen in Zusammenhang stehen, erhoben. Darüber hinaus werden lokale Topologieinformationen erfasst, die mit dem gemeinsamen Pool von Ressourcen in Zusammenhang stehen. Der Aspekt der Erfassung dieser Informationen beinhaltet die Kommunikation in periodischen Abständen mit einem integrierten Monitor der physischen Maschine. Die erfassten Topologieinformationen werden organisiert (bzw. strukturiert, „organized“), wobei die Topologieinformationen eine Speichertopologie, die einer virtuellen Topologie von Ressourcen zugrundeliegt, und zugeordnete Ressourcennutzungsinformationen enthalten. Nach der Organisation der Speichertopologieinformationen kann damit die Verarbeitung von einem oder mehreren Jobs vereinfacht werden. Im Besonderen kann ein Job einer ausgewählten virtuellen Maschine im gemeinsamen Pool, die eine effiziente Leistung des zum Job gehörenden I/O unterstützt, als Reaktion darauf zugeordnet werden.The present invention includes a method, system, and apparatus for efficiently processing jobs in a common pool of resources. In one aspect, a computer-implemented method for implementation in a shared pool of resources is provided. In particular, the shared pool includes a physical host in communication with at least one physical machine, wherein the physical machine supports one or more virtual machines. Status information related to the operation of the virtual machines is collected. It also collects local topology information related to the shared pool of resources. The aspect of gathering this information involves periodic communication with an integrated monitor of the physical machine. The collected topology information is organized ("organized"), the topology information including a storage topology underlying a virtual topology of resources and associated resource utilization information. After organizing the storage topology information, this can simplify the processing of one or more jobs. In particular, a job of a selected virtual machine in the shared pool that supports efficient performance of the job-associated I / O may be assigned in response thereto.

Gemäß einem weiteren Aspekt wird ein System mit Tools bereitgestellt, um die effiziente Verarbeitung von Jobs in einem gemeinsamen Pool von Ressourcen zu unterstützen. Der gemeinsame Pool von Ressourcen beinhaltet einen physischen Host, der sich mit mehreren physischen Maschinen in Kommunikation befindet. Jede physische Maschine kann wenigstens eine virtuelle Maschine unterstützen, und jede physische Maschine enthält einen integrierten Monitor, um den virtuellen Maschinen-Status von einer lokalen virtuellen Maschine zu erheben. Ebenso wird jede virtuelle Maschine mit einem integrierten Agent bereitgestellt. Eine Funktionseinheit wird in Kommunikation mit dem physischen Host bereitgestellt. Die Funktionseinheit beinhaltet Tools, um die effiziente Verarbeitung eines Jobs in Reaktion auf eine topologische Architektur des gemeinsamen Pools von Ressourcen zu unterstützen. Im Besonderen enthalten die Tools einen Director, der sich in Kommunikation mit dem Host befindet, um in periodischen Abständen mit jedem integrierten Monitor zu kommunizieren, und eine Topologie zu erfassen und zu organisieren, die einer virtuellen Topologie des gemeinsamen Pools von Ressourcen zugrundeliegt. Die Topologie beinhaltet sowohl die Speichertopologie des Datenspeichers als auch zugehörige Ressourcennutzungsinformationen. Der Director nutzt die organisierte Topologie zur Zuweisung des Jobs an eine oder mehrere der gemeinsamen Ressourcen, sodass der Job eine effiziente Leistung (Performance) des zum Job gehörenden I/O unterstützt.In another aspect, a system is provided with tools to help efficiently process jobs in a common pool of resources. The shared pool of resources includes a physical host that communicates with multiple physical machines. Each physical machine can support at least one virtual machine, and each physical machine includes a built-in monitor to raise the virtual machine state from a local virtual machine. Likewise, each virtual machine is deployed with a built-in agent. A functional unit is provided in communication with the physical host. The functional unit includes tools to help efficiently process a job in response to a topological architecture of the shared pool of resources. Specifically, the tools include a director in communication with the host to periodically communicate with each integrated monitor, and to collect and organize a topology that underlies a virtual topology of the shared pool of resources. The topology includes both the storage topology of the data store and associated resource usage information. The Director uses the organized topology to assign the job to one or more of the shared resources so that the job supports efficient performance of the job-related I / O.

Nach einem weiteren Aspekt wird ein Computerprogrammprodukt für die effiziente Verarbeitung von Jobs in einem gemeinsamen Pool von Ressourcen bereitgestellt. Das Computerprogrammprodukt beinhaltet ein computerlesbares nicht flüchtiges Speichermedium, das einen computerlesbaren Programmcode darin enthält. Bei der Ausführung auf einem Computer veranlasst der computerlesbare Programmcode, dass der Computer Informationen von den Ressourcen im gemeinsamen Pool erhebt. Die erfasste Kommunikation wird einem physischen Host kommuniziert, der sich in Kommunikation mit einer oder mehreren physischen Maschinen und zugeordneten virtuellen Maschinen befindet. Im Besonderen beinhalten die erhobenen Informationen, ohne jedoch darauf beschränkt zu sein, Informationen zu virtuellen Maschinen und physische Informationen. Programmcode wird bereitgestellt, um lokale Topologieinformationen des gemeinsamen Pools von Ressourcen in periodischen Abständen basierend auf der erhobenen Informationen bereitzustellen, und um die erfassten Informationen einem integrierten Monitor der physischen Maschine in periodischen Abständen zu kommunizieren. Darüber hinaus wird Programmcode bereitgestellt, um die erfassten Topologieinformationen zu organisieren. Die erfassten Topologieinformationen beinhalten, ohne jedoch darauf beschränkt zu sein, eine Speichertopologie, die einer virtuellen Topologie zugrundeliegt, und zugehörige Ressourcennutzungsinformationen. Programmcode wird zur Nutzung der organisierten Speichertopologieinformationen bereitgestellt und um in Reaktion darauf einer ausgewählten virtuellen Maschine im gemeinsamen Pool einen Job zuzuweisen. Die Jobzuweisung beinhaltet die Unterstützung der effizienten Leistung des zum Job gehörenden I/O. In another aspect, a computer program product is provided for efficiently processing jobs in a common pool of resources. The computer program product includes a computer readable non-volatile storage medium containing computer readable program code therein. When run on a computer, the computer-readable program code causes the computer to collect information from the resources in the shared pool. The detected communication is communicated to a physical host that is in communication with one or more physical machines and associated virtual machines. In particular, the information collected includes, but is not limited to, information about virtual machines and physical information. Program code is provided to provide local topology information of the shared pool of resources at periodic intervals based on the information collected, and to periodically communicate the acquired information to an integrated physical machine monitor. In addition, program code is provided to organize the collected topology information. The acquired topology information includes, but is not limited to, a storage topology underlying a virtual topology and associated resource utilization information. Program code is provided to use the organized storage topology information and, in response, to assign a job to a selected virtual machine in the common pool. The job assignment involves supporting the efficient performance of the job-associated I / O.

Gemäß einem weiteren Aspekt wird ein computerimplementiertes Verfahren zur Implementierung in einem gemeinsamen Pool von Ressourcen bereitgestellt. Im Besonderen enthält der gemeinsame Pool von Ressourcen einen physischen Host, der sich mit wenigstens einer physischen Maschine in Kommunikation befindet, die eine oder mehrere virtuelle Maschinen unterstützt. Es werden Statusinformationen von der einen oder den mehreren virtuellen Maschinen erhoben. Lokale Topologieinformationen einer hierarchischen Organisation eines gemeinsamen Pools von Ressourcen, der durch die physischen und virtuellen Maschinen gebildet wird, werden in periodischen Abständen erfasst und organisiert. Im Besonderen werden die organisierten Topologieinformationen in dem gemeinsamen Pool von Ressourcen gespeichert. Die Nutzung der Speicherressourcen und die in der Topologie dargestellten virtuellen Maschinen werden ausgewertet. Ein Job wird einer oder mehreren ausgewählten virtuellen Maschinen in Reaktion auf die Topologie und die Auswertung der Speicherressourcen zugewiesen. Dementsprechend unterstützt die Jobzuweisung die effiziente Leistung als Reaktion sowohl auf die Technologie wie auch die Auswertung der Speicherressourcennutzung.In another aspect, a computer-implemented method for implementation in a shared pool of resources is provided. In particular, the shared pool of resources includes a physical host that is in communication with at least one physical machine that supports one or more virtual machines. Status information is collected from the one or more virtual machines. Local topology information of a hierarchical organization of a common pool of resources formed by the physical and virtual machines is collected and organized periodically. In particular, the organized topology information is stored in the shared pool of resources. The use of memory resources and the virtual machines represented in the topology are evaluated. A job is assigned to one or more selected virtual machines in response to the topology and evaluation of storage resources. Accordingly, job allocation supports efficient performance in response to both the technology and the evaluation of memory resource usage.

Weitere Merkmale und Vorteile der vorliegenden Erfindung werden aus der folgenden detaillierten Beschreibung der aktuellen bevorzugten Ausführungsform der Erfindung in Verbindung mit den begleitenden Zeichnungen deutlich.Other features and advantages of the present invention will become apparent from the following detailed description of the presently preferred embodiment of the invention taken in conjunction with the accompanying drawings.

Kurzbeschreibung der verschiedenen Ansichten der ZeichnungenBrief description of the different views of the drawings

Die Zeichnungen, auf die hier Bezug genommen wird, bilden einen Bestandteil der Patenschrift. In den Zeichnungen dargestellte Merkmale dienen nur der Illustration einiger Ausführungsformen der Erfindung und nicht aller Ausführungsformen der Erfindung, außer dies wird anderweitig ausdrücklich angegeben. The drawings to which reference is made form a part of the patent. Features illustrated in the drawings are only illustrative of some embodiments of the invention and not all embodiments of the invention except as expressly stated otherwise.

1 stellt einen Cloud-Computingknoten gemäß einer Ausführungsform der vorliegenden Erfindung dar. 1 illustrates a cloud computing node according to an embodiment of the present invention.

2 stellt eine Cloud-Computingumgebung gemäß einer Ausführungsform der vorliegenden Erfindung dar. 2 illustrates a cloud computing environment according to an embodiment of the present invention.

3 stellt Abstraktionsmodellschichten gemäß einer Ausführungsform der vorliegenden Erfindung dar. 3 illustrates abstraction model layers according to an embodiment of the present invention.

4 stellt ein Blockdiagramm dar, das die Architektur zum Einsatz des die Cloud erfassenden MapReduce darstellt. 4 Figure 12 is a block diagram illustrating the architecture for using the CloudRathering MapReduce.

5 stellt ein Flussdiagramm dar, das die Ressourcenzuweisung und die Verwaltung der Daten sowie die Anordnung der virtuellen Maschine veranschaulicht. 5 Figure 10 is a flow chart illustrating the resource allocation and management of the data as well as the placement of the virtual machine.

6 stellt einen Flussgraphen dar, der eine Beispielnetzwerktopologie für die Datenanordnung veranschaulicht. 6 Figure 12 illustrates a flow graph illustrating a sample network topology for the data arrangement.

7 stellt einen Flussgraphen für eine beispielhafte Anordnung der Daten dar. 7 FIG. 4 illustrates a flow graph for an exemplary arrangement of the data. FIG.

8 stellt einen Flussgraphen für die Anordnung einer virtuellen Maschine dar. 8th represents a flow graph for the arrangement of a virtual machine.

9 stellt eine Tabelle mit Werten dar, die dem Flussgraphen für die Anordnung der virtuellen Maschine und zur Knotenkatalogisierung zugeordnet werden. 9 represents a table of values that are mapped to the flowchart for the virtual machine placement and for node cataloging.

10 stellt ein Ablaufdiagramm dar, das einem Prozess der Auswertung und Nutzung der Topologie der physischen und virtuellen Maschine in einem gemeinsamen Pool von Ressourcen veranschaulicht. 10 Figure 12 is a flow chart illustrating a process of evaluating and utilizing the topology of the physical and virtual machine in a common pool of resources.

11 stellt ein Flussdiagramm dar, das die Schritte zur Unterstützung des Aspekts der Nutzung der Speichertopologie des gemeinsamen Pools von Ressourcen veranschaulicht. 11 FIG. 12 illustrates a flowchart illustrating the steps to support the use of the storage topology of the shared pool of resources.

12 stellt ein Blockdiagramm dar, das in einem Computersystem integrierte Tools zur Unterstützung einer Technik veranschaulicht, die zur Auswertung der Ressourcennutzung für die Zuweisung eines Jobs in einem gemeinsamen Pool von Ressourcen zum Einsatz kommt. 12 FIG. 10 is a block diagram illustrating tools in a computer system supporting a technique used to evaluate resource usage for assigning a job to a common pool of resources.

13 stellt ein Blockdiagramm dar, das ein System zur Implementierung einer Ausführungsform der vorliegenden Erfindung zeigt. 13 FIG. 12 is a block diagram showing a system for implementing an embodiment of the present invention. FIG.

Detaillierte Beschreibung Detailed description

Es ist einfach einsehbar, dass die Komponenten der vorliegenden Erfindung, wie in den Figuren hier allgemein beschrieben und veranschaulicht, in einer breiten Vielzahl unterschiedlicher Konfigurationen angeordnet und gestaltet sein können. Somit ist die folgende detaillierte Beschreibung der Ausführungsformen der Vorrichtung, des Systems und des Verfahrens der vorliegenden Erfindung, wie in den Figuren dargestellt, nicht dazu gedacht, den Umfang der Erfindung gemäß den Ansprüchen einzuschränken, sondern steht nur für ausgewählte Ausführungsformen der Erfindung.It will be readily appreciated that the components of the present invention, as generally described and illustrated in the figures herein, may be arranged and configured in a wide variety of different configurations. Thus, the following detailed description of the embodiments of the apparatus, system, and method of the present invention, as illustrated in the figures, is not intended to limit the scope of the invention according to the claims, but is representative of only selected embodiments of the invention.

Die in dieser Patentschrift beschriebenen Funktionseinheit(en) wurden mit Tools in der Form von Manager(n) und Director(s) gekennzeichnet. Ein Manager oder Director kann in programmierbaren Hardwarevorrichtungen implementiert werden, wie feldprogrammierbaren Gate-Arrays (bzw. Universalschaltkreise, Field Programmable Gate Arrays) programmierbarer Array-Logik, programmierbaren logischen Vorrichtungen oder Ähnliches. Der bzw. die Manager oder Director(s) können auch in Software zur Verarbeitung durch verschiedene Prozessortypen implementiert werden. Ein aus ausführbaren Code bestehender identifizierter Manager oder Director kann zum Beispiel einen oder mehrere physische oder logische Blöcke an Computeranweisungen aufweisen, die zum Beispiel als ein Objekt, eine Prozedur, eine Funktion oder ein anderes Konstrukt organisiert sein können. Dennoch muss der ausführbare Code eines identifizierten Managers oder Directors sich nicht physisch an einem einzigen Ort befinden, sondern kann voneinander getrennte Anweisungen aufweisen, die an verschiedenen Speicherorten gespeichert sind, die dann bei der logischen Verknüpfung die Manager und Director enthalten und den angegebenen Zweck der Manager und Director verwirklichen.The functional unit (s) described in this specification have been marked with tools in the form of manager (s) and director (s). A manager or director may be implemented in programmable hardware devices, such as field programmable gate arrays (programmable array arrays), programmable array logic, programmable logic devices, or the like. The manager (s) or director (s) may also be implemented in software for processing by different types of processors. For example, an executable code identified manager or director may include one or more physical or logical blocks of computer instructions that may be organized, for example, as an object, procedure, function, or other construct. However, the executable code of an identified manager or director need not be physically located in a single location, but may have separate instructions stored in different locations, which at the logical link will include the managers and directors and the stated purpose of the manager and Director realize.

De facto kann ein aus ausführbaren Code bestehender Manager oder Director eine einzelne Anweisung oder viele Anweisungen sein und kann sogar über verschiedene Codesegmente, über verschiedene Anwendungen und über verschiedene Speichervorrichtungen verteilt sein. Ebenso können operative Daten im Manager oder Director hier identifiziert und veranschaulicht werden und können in jeder geeigneten Form ausgeführt sein und in jedem geeigneten Datenstrukturtyp organisiert sein. Die operativen Daten können als einzelnes Datenset erfasst werden oder können über verschiedene Speicherorte verteilt sein, darunter über verschiedene Speichervorrichtungen, und können, wenigstens teilweise, als elektronische Signale auf einem System oder Netzwerk vorliegen.In fact, an executable code manager or director may be a single instruction or many instructions, and may even be distributed across different code segments, across different applications and across different storage devices. Similarly, operational data in the manager or director may be identified and illustrated here and may be embodied in any suitable form and organized in any suitable data structure type. The operational data may be collected as a single dataset or may be distributed across different storage locations, including various storage devices, and may be, at least in part, as electronic signals on a system or network.

Jede Bezugnahme in dieser Beschreibung auf „eine ausgewählte Ausführungsform”, „eine einzelne Ausführungsform”, „eine Ausführungsform“ bedeutet, dass ein bestimmtes Merkmal, eine Struktur oder eine Eigenschaft, die in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform der Erfindung enthalten ist. Somit beziehen sich die Vorkommen der Ausdrücke „eine ausgewählte Ausführungsform”, „in einer einzelnen Ausführungsform“, „in einer Ausführungsform“ an verschiedenen Stellen in dieser Patentschrift nicht unbedingt auf die gleiche Ausführungsform.Any reference in this specification to "a selected embodiment," "a single embodiment," "an embodiment" means that a particular feature, structure, or characteristic described in connection with the embodiment is in at least one embodiment of the invention is included. Thus, the occurrences of the terms "a selected embodiment", "in a single embodiment", "in one embodiment" at various points in this specification do not necessarily refer to the same embodiment.

Weiterhin können die beschriebenen Merkmale, Strukturen oder Eigenschaften in jeder geeigneten Weise in einer oder in mehreren Ausführungsformen kombiniert werden. In der folgenden Beschreibung werden vielfältige spezifische Details bereitgestellt, wie Beispiele eines Topologiemanagers, eines Hook-Managers, eines Speichertopologiemanagers, eines Ressourcennutzungsmanagers, eines Anwendungsmanagers, eines Directors usw., um ein fundiertes Verständnis der Ausführungsformen der Erfindung zu ermöglichen. Für Fachleute in diesem Gebiet wird es jedoch ersichtlich sein, dass die Erfindung ohne ein oder mehrere der spezifischen Details oder mit anderen Verfahren, Komponenten, Materialien usw. ausgeübt werden kann. In anderen Instanzen werden bekannte Strukturen, Materialien oder Operationen nicht dargestellt oder im Detail beschrieben, um zu vermeiden, dass Aspekte der Erfindung verschleiert werden.Furthermore, the described features, structures, or properties may be combined in any suitable manner in one or more embodiments. In the following description, various specific details are provided, such as examples of a topology manager, a hook manager, a storage topology manager, a resource utilization manager, an application manager, of a director, etc. in order to provide a thorough understanding of the embodiments of the invention. However, it will be apparent to those skilled in the art that the invention may be practiced without one or more of the specific details, or with other methods, components, materials, and so forth. In other instances, well-known structures, materials, or operations are not illustrated or described in detail to avoid obscuring aspects of the invention.

Die veranschaulichte Ausführungsformen der Erfindung werden am besten durch Bezugnahme auf die Zeichnungen verständlich, wobei ähnliche Elemente mit ähnlichen Bezugszeichen bezeichnet werden. Die folgende Beschreibung soll nur als Beispiel dienen und veranschaulicht einfach gewisse ausgewählte Ausführungsformen der Vorrichtungen, Systeme und Prozesse, die mit der hier beanspruchten Erfindung konsistent sind. The illustrated embodiments of the invention will be best understood by reference to the drawings, wherein like elements will be denoted by like reference numerals. The following description is intended to be exemplary only and simply illustrates certain selected embodiments of the devices, systems and processes consistent with the invention claimed herein.

Eine Cloud-Computingumgebung ist serviceorientiert, wobei eine Ausrichtung auf eine zustandslose, modulare und semantische Interoperabilität mit geringer Kopplung liegt. Cloud-Computing besteht im Kern aus einer Infrastruktur, die ein Netzwerk miteinander verbundener Knoten aufweist. Im Folgenden wird nun auf 1 Bezug genommen, in der eine schematische Darstellung eines Cloud-Computingknotens dargestellt wird. Der Cloud-Computingknoten (10) ist nur ein Beispiel eines geeigneten Cloud-Computingknotens und soll nicht auf eine Einschränkung bezüglich des Verwendungsumfangs oder der Funktionalität der Ausführungsformen der hier beschriebenen Erfindung verweisen. Unabhängig davon kann der Cloud-Computingknoten (10) implementiert werden und/oder eine beliebige oben ausgeführte Funktionalität ausführen. Im Cloud-Computingknoten (10) gibt es ein Computersystem/einen Server (12), das/der mit vielen anderen allgemeinen oder speziellen Computersystemumgebungen oder -konfigurationen zusammenarbeiten kann. Beispiele bekannter Computersysteme, Umgebungen und/oder Konfigurationen, die für den Einsatz mit dem Computersystem/Server (12) geeignet sein können, sind, ohne jedoch darauf beschränkt zu sein, Personal Computer-Systeme, Server-Computersysteme, Thin Clients, Thick Clients, portable oder Laptop-Vorrichtungen, Multiprozessorsysteme, Mikroprozessor-basierte Systeme, Set Top Boxes, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme und verteilte Cloud-Computingumgebungen, die beliebige der obigen Systeme oder Vorrichtungen enthalten, und Ähnliches.A cloud computing environment is service-oriented, with a focus on low-coupled, stateless, modular, and semantic interoperability. At its core, cloud computing consists of an infrastructure that has a network of interconnected nodes. The following will now be on 1 Reference is made in which a schematic representation of a cloud computing node is shown. The cloud computing node ( 10 ) is just one example of a suitable cloud computing node and is not intended to be a limitation on the scope or functionality of the embodiments of the invention described herein. Regardless, the cloud computing node ( 10 ) and / or perform any functionality outlined above. In the cloud computing node ( 10 ) there is a computer system / server ( 12 ) that can work with many other general or specific computer system environments or configurations. Examples of known computer systems, environments and / or configurations suitable for use with the computer system / server ( 12 ) may include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, portable or laptop devices, multiprocessor systems, microprocessor based systems, set top boxes, programmable consumer electronics, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments including any of the above systems or devices, and the like.

Das Computersystem/der Server (12) kann im allgemeinen Kontext von auf einem Computersystem ausführbaren Anweisungen beschrieben werden, wie Programmmodule, die von einem Computersystem ausgeführt werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. beinhalten, die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen implementieren. Das Computersystem/der Server (12) kann in verteilten Cloud-Computingumgebungen ausgeführt werden, in denen Jobs von entfernten Verarbeitungsvorrichtungen durchgeführt werden, die über ein Kommunikationsnetzwerk verbunden sind. In einer verteilten Cloud-Computingumgebung können sich Programmmodule sowohl auf lokalen als auch auf entfernten Speichermedien des Computersystems befinden, darunter Hauptspeicher-Speichervorrichtungen. The computer system / server ( 12 ) may be described in the general context of instructions executable on a computer system, such as program modules executed by a computer system. In general, program modules may include routines, programs, objects, components, logic, data structures, etc. that perform certain tasks or implement particular abstract data types. The computer system / server ( 12 ) can be performed in distributed cloud computing environments where jobs are performed by remote processing devices that are connected via a communication network. In a distributed cloud computing environment, program modules may reside on both local and remote storage media of the computer system, including main storage storage devices.

Wie in 1 dargestellt, wird ein Computersystem/Server (12) im Cloud-Computingknoten (10) als eine allgemeine Computingvorrichtung dargestellt. Die Komponenten eines Computersystems/Servers (12) können beinhalten, ohne jedoch darauf beschränkt zu sein, einen oder mehreren Prozessoren oder Verarbeitungseinheiten (16), einen Systemspeicher (28) und einen Bus (18), der verschiedene Systemkomponenten einschließlich des Systemspeichers (28) mit dem Prozessor (16) koppelt. Der Bus (18) stellt einen oder mehrere eines beliebigen von verschiedenen Busstrukturtypen dar, darunter einen Speicherbus oder eine Speichersteuereinheit (bzw. Speicher-Controller, Memory Controller), einen Peripheriebus, einen beschleunigten Grafikport („accelerated graphic port“) und einen Prozessor oder lokalen Bus, unter Verwendung einer beliebigen von verschiedenen Busarchitekturen. Zu diesen Architekturen gehören zum Beispiel, ohne dies als Einschränkung zu verstehen, der Industry Standard Architecture(ISA)-Bus, der Micro Channel Architecture(MCA)-Bus, der Enhanced ISA(EISA)-Bus, der lokale Video Electronics Standards Association(VESA)-Bus und der Peripheral Component Interconnect(PCI)-Bus. Zu dem Computersystem/Server (12) gehört in der Regel eine Vielzahl an computerlesbaren Medien. Solche Medien können beliebige verfügbare Medien sein, auf die ein Computersystem/Server (12) zugreifen kann, und es beinhaltet sowohl flüchtige wie auch nicht flüchtige Medien, entfernbare und nicht entfernbare Medien. As in 1 shown, a computer system / server ( 12 ) in the cloud computing node ( 10 ) as a general computing device. The components of a computer system / server ( 12 ) may include, but are not limited to, one or more processors or processing units ( 16 ), a system memory ( 28 ) and a bus ( 18 ), which contains various system components including the system memory ( 28 ) with the processor ( 16 ) couples. The bus ( 18 ) represents one or more of any of a variety of bus structure types, including a memory bus or memory controller (memory controller), a peripheral bus, an accelerated graphic port, and a processor or local bus Use of any of various bus architectures. For example, these architectures include, but are not limited to, the Industry Standard Architecture (ISA) bus, the Micro Channel Architecture (MCA) bus, the Enhanced ISA (EISA) bus, the local Video Electronics Standards Association ( VESA) bus and the Peripheral Component Interconnect (PCI) bus. To the computer system / server ( 12 ) usually includes a variety of computer-readable media. Such media may be any available media to which a computer system / server ( 12 ) and includes both volatile and non-volatile media, removable and non-removable media.

Der Systemspeicher (28) kann von einem Computersystem lesbare Medien in Form flüchtigen Speichers, wie Direktzugriffsspeicher (RAM, Random Access Memory) (30) und/oder Cache-Speicher (32) beinhalten. Das Computersystem/der Server (12) kann weiterhin andere entfernbare/nicht entfernbare Speichermedien des Computersystems beinhalten. Es kann zum Beispiel ein Speichersystem (34) bereitgestellt werden, um nicht entfernbare, nicht flüchtige magnetische Medien zu lesen und darauf zu schreiben (nicht dargestellt und in der Regel als „Festplatte“ bezeichnet). Obwohl nicht dargestellt, kann ein magnetisches Plattenlaufwerk zum Lesen von und zum Schreiben auf ein entfernbares, nicht flüchtiges magnetisches Plattenmedium (wie einer „Diskette“) und ein optisches Plattenlaufwerk zum Lesen von oder Schreiben auf ein entfernbares, nicht flüchtiges optisches Plattenmedium, wie eine CD-ROM, DVD-ROM oder ein anderes optisches Medium bereitgestellt werden. In solchen Fällen kann ein jedes mit dem Bus (18) durch eine oder mehrere Datenmedienschnittstellen verbunden sein. Wie im Folgenden weiter dargestellt und beschrieben wird, kann ein Speicher (28) wenigstens ein Programmprodukt mit einem Set von (z. B. wenigstens einem) Programmmodulen enthalten, die dazu ausgebildet sind, die Funktionen der Ausführungsformen der Erfindung auszuführen. The system memory ( 28 ) can be readable by a computer system in the form of volatile memory, such as Random Access Memory (RAM) ( 30 ) and / or cache memory ( 32 ). The computer system / server ( 12 ) may further include other removable / non-removable storage media of the computer system. For example, a storage system ( 34 ) to read and write non-removable non-volatile magnetic media (not shown) and usually referred to as a "hard drive"). Although not shown, a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk medium (such as a "floppy disk") and an optical disk drive for reading or writing to a removable non-volatile optical disk medium, such as a CD ROM, DVD-ROM or other optical media. In such cases, each one can take the bus ( 18 ) through one or more data media interfaces. As further illustrated and described below, a memory ( 28 ) comprise at least one program product having a set of (eg, at least one) program modules configured to perform the functions of embodiments of the invention.

Ein Programm/Dienstprogramm (bzw. Utility) (40) mit einem Set von (wenigstens einem) Programmmodulen (42) kann zum Beispiel und ohne Einschränkung im Speicher (Memory) (28) gespeichert werden, wie auch ein Betriebssystem, ein oder mehrere Anwendungsprogramme, weitere Programmmodule und Programmdaten. Ein jedes von den Betriebssystemen, einen oder mehreren Anwendungsprogrammen, weiteren Programmmodulen und Programmdaten oder einer bestimmten Kombination daraus kann eine Implementierung einer Netzwerkumgebung beinhalten. Programmmodule (42) führen im Allgemeinen die Funktionen und/oder Methodologien der Ausführungsformen der Erfindung, wie in diesem Dokument beschrieben, aus. A program / utility (or utility) ( 40 ) with a set of (at least one) program modules ( 42 ) can, for example and without limitation, be stored in memory (Memory) ( 28 ), as well as an operating system, one or more application programs, other program modules and program data. Each of the operating systems, one or more application programs, other program modules and program data, or some combination thereof may include an implementation of a network environment. Program modules ( 42 ) generally perform the functions and / or methodologies of embodiments of the invention as described in this document.

Das Computersystem/der Server (12) kann auch mit einer oder mehreren externen Vorrichtungen (14) kommunizieren, wie einer Tastatur, einer Zeigevorrichtung, einer Anzeige (24) usw.; einer oder mehreren Vorrichtungen, die einem Benutzer ermöglichen, mit dem Computersystem/Server (12) zu interagieren; und/oder beliebige Vorrichtungen (z. B. Netzwerkkarte, Modem usw.), die einem Computersystem/Server (12) ermöglichen, mit einem oder mehreren anderen Computingvorrichtungen zu kommunizieren. Eine solche Kommunikation kann über Input/Output(I/O bzw. Eingabe/Ausgabe)-Schnittstellen (22) erfolgen. Und ferner kann ein Computersystem/Server (12) mit einem oder mehreren Netzwerken über einen Netzwerkadapter (20) kommunizieren, wie einem lokalen Netzwerk (LAN, Local Area Network), einem allgemeinen Weitbereichsnetzwerk (WAN, Wide Area Network) und/oder einem öffentlichen Netzwerk (z. B. das Internet). Wie dargestellt, kommuniziert der Netzwerkadapter (20) mit den anderen Komponenten des Computersystems/Servers (12) über den Bus (18). Es sollte verständlich sein, dass auch wenn nicht dargestellt, weitere Hardware- und/oder Softwarekomponenten in Verbindung mit dem Computersystem/Server (12) verwendet werden können. Zu den Beispielen gehören, ohne jedoch darauf beschränkt zu sein: Microcode, Gerätetreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerk-Arrays, RAID-Systeme, Bandlaufwerke und Speichersysteme zur Datenarchivierung usw. The computer system / server ( 12 ) can also be used with one or more external devices ( 14 ), such as a keyboard, a pointing device, a display ( 24 ) etc .; one or more devices allowing a user to communicate with the computer system / server ( 12 ) to interact; and / or any devices (eg, network card, modem, etc.) connected to a computer system / server (e.g. 12 ) to communicate with one or more other computing devices. Such communication can be achieved via input / output (I / O) interfaces ( 22 ) respectively. And further, a computer system / server ( 12 ) with one or more networks via a network adapter ( 20 ), such as a local area network (LAN), a wide area network (WAN), and / or a public network (eg, the Internet). As shown, the network adapter communicates ( 20 ) with the other components of the computer system / server ( 12 ) over the bus ( 18 ). It should be understood that although not shown, other hardware and / or software components associated with the computer system / server ( 12 ) can be used. Examples include, but are not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archival storage systems, etc.

Es wird nun auf 2 Bezug genommen, in der zur Veranschaulichung eine Cloud-Computingumgebung (50) dargestellt ist. Wie dargestellt, weist die Cloud-Computingumgebung (50) einen oder mehrere Cloud-Computingknoten (10) auf, mit denen von Cloud-Consumern verwendete lokale Computingvorrichtungen, wie beispielsweise ein persönlicher digitaler Assistent (PDA, Personal Digital Assistant) oder ein Mobiltelefon (54A), ein Desktopcomputer (54B), ein Laptop-Computer (54C) und/oder ein Automobilcomputersystem (54N), kommunizieren können. Knoten (10) können miteinander kommunizieren. Sie können physisch oder virtuell in einem oder mehreren Netzwerken, in Form von privaten, Community-, öffentlichen oder hybriden Clouds, wie oben beschrieben, oder in einer Kombination davon gruppiert werden (nicht dargestellt). Dies ermöglicht einer Cloud-Computingumgebung (50) eine Infrastruktur, Plattformen und/oder Software as Services anzubieten, für die ein Cloud-Consumer keine Ressourcen auf einem lokalen Computinggerät vorhalten muss. Es versteht sich, dass die in 2 dargestellten Typen von Computingvorrichtungen (54A54N) nur der Veranschaulichung dienen und dass Computingknoten (10) und die Cloud-Computingumgebung (50) mit jedem beliebigen Typ von computerbasierter Vorrichtung über jeden beliebigen Netzwerktyp und/oder in einem Netzwerk adressierbaren Verbindung (z. B. mit einem Web-Browser) kommunizieren können. It will be up now 2 Reference is made to the illustration of a cloud computing environment ( 50 ) is shown. As shown, the cloud computing environment ( 50 ) one or more cloud computing nodes ( 10 ) using local computing devices used by cloud consumers, such as a Personal Digital Assistant (PDA) or a mobile phone ( 54A ), a desktop computer ( 54B ), a laptop computer ( 54C ) and / or an automobile computer system ( 54N ), to be able to communicate. Node ( 10 ) can communicate with each other. They may be grouped physically or virtually in one or more networks, in the form of private, community, public or hybrid clouds, as described above, or in a combination thereof (not shown). This allows a cloud computing environment ( 50 ) to provide infrastructure, platforms and / or software as services for which a cloud consumer does not need to maintain resources on a local computing device. It is understood that in 2 illustrated types of computing devices ( 54A - 54N ) are illustrative only and that computing nodes ( 10 ) and the cloud computing environment ( 50 ) can communicate with any type of computer-based device over any type of network and / or network-addressable connection (eg, with a web browser).

Im Folgenden wird nun auf 3 Bezug genommen, wo eine Gruppe von der Cloud-Computingumgebung (50) bereitgestellten funktionalen Abstraktionsschichten dargestellt ist. Es versteht sich im Vorhinein, dass die in 3 dargestellten Komponenten, Schichten und Funktionen nur der Veranschaulichung dienen sollen und Ausführungsformen der Erfindung nicht auf diese beschränkt sind. Wie dargestellt, werden die folgenden Schichten und entsprechende Funktionen bereitgestellt: Hardware- und Softwareschicht (60), Virtualisierungsschicht (62), Managementschicht (64) und Workload-Schicht (66). Die Hardware- und Softwareschicht (60) beinhaltet die Hardware- und Softwarekomponenten. Zu den Beispielen von Hardwarekomponenten gehören Mainframes, in einem Beispiel Systeme der IBM® zSeries®; Server, die auf der RISC(Reduced Instruction Set Computer)-Architektur basieren, in einem Beispiel Systeme der IBM pSeries®; Systeme der IBM xSeries®; Systeme des IBM BladeCenter®; Speichervorrichtungen; Netzwerke und Netzwerkkomponenten. Zu den Beispielen der Softwarekomponenten gehören Software für den Netzwerkanwendungsserver, in einem Beispiel Software für den IBM WebSphere®-Anwendungsserver; und Datenbanksoftware, in einem Beispiel die Datenbanksoftware IBM DB2®. (IBM, zSeries, pSeries, xSeries, BladeCenter, WebSphere und DB2 sind Markenzeichen der International Business Machines Corporation und in vielen Gerichtsbarkeiten weltweit eingetragen). The following will now be on 3 Reference is made to where a group from the cloud computing environment ( 50 ) is presented functional abstraction layers. It goes without saying that the in 3 illustrated components, layers and functions are for illustration only and embodiments of the invention are not limited to these. As shown, the following layers and corresponding functions are provided: Hardware and software layer ( 60 ), Virtualization layer ( 62 ), Management layer ( 64 ) and workload layer ( 66 ). The hardware and software layer ( 60 ) contains the hardware and software components. Examples of hardware components include mainframes, in one example, the IBM zSeries ® ® systems; Servers based on the RISC (Reduced Instruction Set Computer) architecture, in an example of systems of IBM pSeries ®; Systems of IBM ® xSeries; Systems of IBM Blade Center ®; Storage devices; Networks and network components. Examples of the software components include software for the network application server, in an example software for the IBM WebSphere application server ®; and database software, in one example the Database software IBM DB2 ® . (IBM, zSeries, pSeries, xSeries, BladeCenter, WebSphere, and DB2 are trademarks of International Business Machines Corporation and registered in many jurisdictions worldwide).

Eine Virtualisierungsschicht (62) stellt eine Abstraktionsschicht bereit, aus der die folgenden Beispiele virtueller Entitäten bereitgestellt werden können: virtuelle Server; virtueller Speicher; virtuelle Netzwerke, darunter virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme; und virtuelle Clients. A virtualization layer ( 62 ) provides an abstraction layer from which the following virtual entity examples can be provided: virtual servers; virtual memory; virtual networks, including virtual private networks; virtual applications and operating systems; and virtual clients.

In einem Beispiel kann die Managementschicht (64) die folgenden Funktionen bereitstellen: Bereitstellen von Ressourcen, Verbrauchsmessungen („metering“) und Preisbildung, Benutzerportal, Service Level Management und SLA-Planung und -Ausführung (Fulfillment). Die Funktionen werden im Folgenden beschrieben. Die Bereitstellung von Ressourcen ermöglicht die dynamische Beschaffung von Computingressourcen und anderer Ressourcen, die zur Durchführung von Jobs in der Cloud-Computingumgebung genutzt werden. Die Messung und Preisbildung ermöglicht die Verfolgung der Kosten, wenn Ressourcen in der Cloud-Computingumgebung genutzt werden, sowie die Abrechnung oder Rechnungsstellung für die Nutzung dieser Ressourcen. In einem Beispiel können diese Ressourcen Anwendungssoftware-Lizenzen umfassen. Die Sicherheit ermöglicht die Verifizierung der Identität für Cloud-Consumer und Jobs sowie einen Schutz der Daten und anderer Ressourcen. Ein Benutzerportal ermöglicht den Zugriff auf die Clouds-Computingumgebung für Consumer und Systemadministratoren. Ein Service Level Management ermöglicht die Zuweisung und das Management der Cloud-Computingressourcen, sodass die erforderlichen Service-Level erfüllt werden. Die Planung und Erfüllung des Service Level Agreements (SLA) ermöglicht das vorbereitende Arrangement für und die Beschaffung von Cloud-Computingressourcen, für die in Übereinstimmung mit der SLA eine zukünftige Anforderungen vorweggenommen wird. In one example, the management layer ( 64 ) provide the following functions: resource provisioning, metering and pricing, user portal, service level management, and SLA planning and execution (fulfillment). The functions are described below. Resource provisioning dynamically procures computing resources and other resources used to perform jobs in the cloud computing environment. Metering and pricing enables tracking of costs when using resources in the cloud computing environment, as well as billing or billing for using those resources. In one example, these resources may include application software licenses. Security enables identity verification for cloud consumers and jobs, as well as protection of data and other resources. A user portal provides access to the cloud computing environment for consumers and system administrators. Service level management enables the allocation and management of cloud computing resources to meet the required service levels. The planning and fulfillment of the Service Level Agreement (SLA) allows for the preliminary arrangement and procurement of cloud computing resources that will anticipate future needs in accordance with the SLA.

Eine Workload-Schicht (66) stellt Beispiele der Funktionalität bereit, für die die Cloud-Computingumgebung genutzt werden kann. Zu den Beispielen der Workloads und Funktionen, die über diese Schicht bereitgestellt werden können, gehören, ohne jedoch darauf beschränkt zu sein: Zuordnung (Mapping) und Navigation, Softwareentwicklung und Lifecycle-Management, die Bereitstellung von Schulungen in virtuellen Schulungsumgebungen, die Verarbeitung von Datenanalysen, die Verarbeitung von Jobs und die Verarbeitung von einem oder mehreren Jobs in Reaktion auf die Hierarchie der virtuellen Ressourcen in der Cloud-Computingumgebung.A workload layer ( 66 ) provides examples of the functionality for which the cloud computing environment can be used. Examples of the workloads and capabilities that can be deployed through this layer include, but are not limited to: mapping and navigation, software development and lifecycle management, providing training in virtual training environments, processing data analytics , the processing of jobs and the processing of one or more jobs in response to the hierarchy of virtual resources in the cloud computing environment.

Eine virtuelle Maschine ist eine Software- und/oder Hardwareimplementierung eines Computers, die Programme ähnlich einer physischen Maschine ausführt. Die virtuelle Maschine unterstützt eine Instanz eines Betriebssystems zusammen mit einer oder mehreren Anwendungen, um auf einer isolierten Partition auf dem Computer ausgeführt zu werden. In einer Ausführungsform ermöglicht die virtuelle Maschine die gleichzeitige Ausführung verschiedener Betriebssysteme auf dem gleichen Computer. Eine physische Maschine kann mehrere virtuelle Maschinen unterstützen. Mehrere Betriebssysteme können auf der gleichen physischen Maschine ausgeführt werden, und jede der virtuellen Maschinen kann Jobs mit verschiedenen Betriebssystemen verarbeiten. Dementsprechend unterstützt die Verwendung von einer oder mehreren virtuellen Maschinen den effizienten Einsatz der Hardware bei der Verarbeitung mehrerer Jobs.A virtual machine is a software and / or hardware implementation of a computer that executes programs similar to a physical machine. The virtual machine supports an instance of an operating system along with one or more applications to run on an isolated partition on the computer. In one embodiment, the virtual machine enables concurrent execution of different operating systems on the same computer. A physical machine can support multiple virtual machines. Multiple operating systems can run on the same physical machine, and each of the virtual machines can handle jobs with different operating systems. Accordingly, the use of one or more virtual machines supports the efficient use of hardware in processing multiple jobs.

Die effiziente Verwendung einer Konfiguration einer virtuellen Maschine in einem Cloud-Computingsystem stellt aufgrund der verteilten Natur der physischen Topologie der physischen Maschinen, d. h. den Knoten, eine Herausforderung dar. Im Besonderen bestehen Schwierigkeiten bei der Auswertung und Wiedergabe der physischen Topologie, die der virtuellen Topologie des Cloud-Computingsystems zugrundeliegt, und der Nutzung der Jobverarbeitung in Reaktion auf die physische und virtuelle Topologie.The efficient use of a virtual machine configuration in a cloud computing system, because of the distributed nature of the physical topology of the physical machines, i. H. In particular, there are difficulties in evaluating and rendering the physical topology underlying the virtual topology of the cloud computing system and the use of job processing in response to the physical and virtual topology.

Eine Cloud-Plattform, die in diesem Dokument als CAM bezeichnet wird, wird bereitgestellt, um ein Cluster-Dateisystem mit einer Ressourcenplanung zu kombinieren. CAM weist einen dreistufigen Ansatz auf, um Anomalien bei der Anordnung zu vermeiden, wobei die drei Ebenen die Anordnung der Daten, die Anordnung des Jobs der virtuellen Maschine und die Jobanordnung beinhalten. Bezüglich der Datenanordnung werden Daten im Cluster basierend auf einem Offline-Profiling der Jobs angeordnet, die am häufigsten für die Daten ausgeführt werden. Die Anordnung von Jobs wird von CAM beeinflusst, die den/die besten möglichen physischen Knoten zur Anordnung der einem Job zugeordneten Sets von virtuellen Maschinen auswählt. Um die Möglichkeit einer Anordnungsanomalie weiter zu minimieren, stellt CAM andernfalls verborgene Computing-, Speicher- und Netzwerktopologien dem Job-Scheduler dar, sodass er die optimalen Jobzuweisungen vornehmen kann. CAM stimmt die Zuweisung von Ressourcen mit einer Vielzahl anderer im Wettstreit stehenden Bedingungen, wie der Speichernutzung, der Änderung der CPU-Last und der Netzwerkverbindungskapazitäten unter Verwendung eines Algorithmus ab, der auf einem Flussnetzwerk basiert, mit dem die angegebenen Bedingungen sowohl für die anfängliche Anordnung und für die Neuanpassung bei der Migration der virtuellen Maschine und der Daten gleichzeitig reduziert werden können.A cloud platform, referred to as CAM in this document, is provided to combine a cluster file system with resource planning. CAM has a three-step approach to avoid anomalies in placement, with the three levels including the arrangement of the data, the placement of the virtual machine job, and job placement. Regarding the data arrangement, data is clustered based on offline profiling of the jobs that are most frequently run on the data. The arrangement of jobs is affected by CAM, which selects the best possible physical node (s) to arrange the sets of virtual machines associated with a job. To further minimize the possibility of an array anomaly, CAM otherwise exposes hidden computing, storage, and network topologies to the job scheduler so that it can make the best job assignments. CAM tunes the allocation of resources with a variety of other competing conditions, such as memory usage, CPU load change, and network connectivity capacity, using an algorithm based on a flow network that supports the specified ones Conditions for both the initial placement and for the rebalancing in the migration of the virtual machine and the data can be reduced simultaneously.

4 ist ein Blockdiagramm (400), das die Gesamtarchitektur zur Verwendung von CAM veranschaulicht. Die physischen Ressourcen zur Unterstützung der Cloud bestehen aus einem Cluster physischer Knoten, wobei der lokale Speicher direkt den einzelnen Knoten zugeordnet ist. Wie dargestellt, verwendet CAM ein Dateisystem, das in einer Ausführungsform ein General Parallel File System-Shared Nothing Cluster (410) sein kann, um die Speicherschicht dafür bereitzustellen. GPFS-SNC ist als eine Cloud-Speicherplattform ausgelegt, die die zeitgerechte und ressourceneffiziente Bereitstellung virtueller Maschinen in der Cloud unterstützt. GPFS-SNC verwaltet die lokalen Platten, die einem Cluster handelsüblicher physischer Maschinen direkt zugeordnet sind. 4 is a block diagram ( 400 ) that illustrates the overall architecture for using CAM. The physical resources to support the cloud consist of a cluster of physical nodes, with local storage mapped directly to each node. As shown, CAM uses a file system which in one embodiment is a General Parallel File System Shared Nothing Cluster (FIG. 410 ) to provide the storage layer therefor. GPFS-SNC is designed as a cloud storage platform that supports the timely and resource efficient provisioning of virtual machines in the cloud. GPFS SNC manages the local disks that are directly mapped to a cluster of off-the-shelf physical machines.

Wie gezeigt, wird die physikalische Schicht (420) in Form drei handelsüblicher physischer Maschinen (430), (440) und (450) veranschaulicht. Die Anzahl der hier dargestellten physischen Maschinen dient nur der Veranschaulichung. In einer Ausführungsform kann die Anzahl eine kleinere oder größere Anzahl von handelsüblichen physischen Maschinen beinhalten. Jede dieser Maschinen verfügt jeweils über eine lokale Platte (432), (442) und (452). Das Dateisystem (410) unterstützt eine gemeinsame Anordnung aller Blöcke einer Datei an einem Speicherort anstatt die Datei über das Netzwerk (mittels Striping) zu verteilen. Dadurch kann eine I/O-Anforderung einer virtuellen Maschine lokal vom gespeicherten Speicherort anstatt entfernt über physische Hosts über das Netzwerk bedient werden. CAM nutzt diese Funktion, um sicherzustellen, dass an einem gemeinsamen (co-located) Speicherplatz befindliche Images (Abbilder) einer virtuellen Maschine an einem Speicherort gespeichert werden und in effizienter Weise darauf zugegriffen werden kann.As shown, the physical layer ( 420 ) in the form of three commercial physical machines ( 430 ) 440 ) and ( 450 ). The number of physical machines shown here is for illustrative purposes only. In one embodiment, the number may include a smaller or larger number of commercially available physical machines. Each of these machines has a local disk ( 432 ) 442 ) and ( 452 ). The file system ( 410 ) supports a common arrangement of all blocks of a file in a location instead of distributing the file over the network (by striping). This allows a virtual machine I / O request to be serviced locally from the stored location rather than remotely over physical hosts over the network. CAM uses this feature to ensure that images (images) of a virtual machine (co-located) of a virtual machine are stored in a location and can be efficiently accessed.

Das Dateisystem (410) unterstützt auch ein effizientes, auf Blockebene durchgeführtes (pipelined) Replikationsschema, das ein schnelles verteiltes Recovery (Wiederherstellung) und hohen I/O-Durchsatz über schnelle parallele Lesevorgänge sicherstellt. Diese Funktion ist für CAM von Vorteil, um ein effizientes Recovery bei Ausfällen zu erzielen. Darüber hinaus gibt das Dateisystem (410) eine Anwendungsprogrammschnittstelle (API, Application Program Interface) auf Benutzerebene an, mit der physische Speicherorte von Dateien abgefragt werden können. CAM ruft mit diesem API konkrete Blockspeicherortinformationen ab, um die Nähe der Speicherung für die Anordnung von Daten und virtuellen Maschinen zu bestimmen.The file system ( 410 Also supports an efficient, pipelined replication scheme that ensures fast distributed recovery and high I / O through fast parallel read operations. This feature is beneficial for CAM for efficient failure recovery. In addition, the file system ( 410 ) an application-level user-level API (API) that can be used to query physical locations of files. CAM uses this API to get specific block location information to determine the proximity of storage for the array of data and virtual machines.

CAM nutzt drei Komponenten, um stets über die Topologie informiert zu sein. Wie dargestellt, wird ein Server (460) in Kommunikation mit der physikalischen Schicht (420) bereitgestellt. Der Server (460), der in diesem Dokument auch als CAM-Topologieserver bezeichnet wird, stellt Topologieinformationen bereit, die erforderlich sind, damit ein Scheduler die optimale Jobzuweisung vornehmen kann. Die vom Server (460) dargestellten Informationen bestehen aus Netzwerk-und Speichertopologien und anderen dynamischen Informationen auf Knotenebene, wie die CPU-Last. Weiterhin, wie dargestellt, weist jede der physischen Maschinen (430), (440) und (450) jeweils einen Agent (434), (444) und (454) auf. Jeder Agent wird auf der entsprechenden physischen Maschine ausgeführt und erhebt und übermittelt verschiedene Datenstücke bezüglich der jeweiligen Maschine an den Server (460), wie die Nutzung der ausgehenden und eingehenden Netzwerkbandbreite, der I/O-Nutzung und der CPU-, Speicher (Memory)- und Speicher(Storage)-Last. Der Server (460) konsolidiert die dynamische Information, die er von den Agents (434), (444) und (454) erhält, und verarbeitet sie zusammen mit Topologieinformationen über jeden in dem Cluster ausgeführten Job. Die Topologieinformationen werden von der Anordnungskonfiguration der bestehenden virtuellen Maschinen abgeleitet. Ein Job-Scheduler (470) bildet eine Schnittstelle mit dem Server (460), um exakte und aktuelle Topologieinformationen zu erhalten. Der Scheduler (470) passt die Jobanordnung bei jeder beobachteten Änderung der Konfiguration dementsprechend neu an. Dementsprechend greift der Job-Scheduler auf die Nutzung der Speicher- und physischen Hostressourcen in CAM zurück.CAM uses three components to always be informed about the topology. As shown, a server ( 460 ) in communication with the physical layer ( 420 ) provided. The server ( 460 ), also referred to as a CAM topology server in this document, provides topology information necessary for a scheduler to perform the optimal job assignment. The server ( 460 ) consist of network and storage topologies and other node-level dynamic information, such as the CPU load. Furthermore, as shown, each of the physical machines ( 430 ) 440 ) and ( 450 ) one agent each ( 434 ) 444 ) and ( 454 ) on. Each agent runs on the appropriate physical machine and collects and sends various pieces of data related to each machine to the server ( 460 ), such as the use of outbound and inbound network bandwidth, I / O usage, and CPU, memory, and storage (storage) loads. The server ( 460 ) consolidates the dynamic information it receives from the agents ( 434 ) 444 ) and ( 454 ), and process them along with topology information about each job running in the cluster. The topology information is derived from the layout configuration of existing virtual machines. A job scheduler ( 470 ) forms an interface with the server ( 460 ) to get accurate and up-to-date topology information. The scheduler ( 470 ) adjusts job order accordingly every time a configuration change is observed. Accordingly, the job scheduler relies on the use of memory and physical host resources in CAM.

Netzwerktopologieinformationen werden über eine Distanzmatrix dargestellt, die eine Distanz zwischen jedem Paar virtueller Maschinen als über Racks, Knoten oder virtuelle Maschinen kodiert. Wenn zwei virtuelle Maschinen auf dem gleichen Knoten angeordnet werden, werden sie durch eine virtuelle Netzwerkverbindung verbunden. Aufgrund der Tatsache, dass die virtuellen Maschinen die gleiche Knotenhardware nutzen, stellt das virtuelle Netzwerk ein Hochgeschwindigkeitsmedium bereit, das wesentlich schneller ist als Links (bzw. Verbindungen) zwischen Knoten oder zwischen Racks. Der Netzwerkverkehr zwischen virtuellen Maschinen auf dem gleichen Knoten muss kein Hardwarelink (bzw. Hardwareverbindung) durchlaufen. Die virtuelle Netzwerkvorrichtung leitet den Datenverkehr im Hauptspeicher über hochgradig optimierte Ringpuffer weiter.Network topology information is represented by a distance matrix that encodes a distance between each pair of virtual machines as through racks, nodes, or virtual machines. When two virtual machines are placed on the same node, they are connected by a virtual network connection. Due to the fact that the virtual machines use the same node hardware, the virtual network provides a high-speed medium that is much faster than links (or links) between nodes or between racks. Network traffic between virtual machines on the same node does not have to go through a hardware link (or hardware connection). The virtual network device forwards traffic in main memory via highly optimized ring buffers.

Speichertopologieinformationen werden als eine Zuordnung (Mapping) zwischen jeder das Datenset enthaltende virtuellen Vorrichtung und der virtuellen Maschine, für die sie lokal ist, bereitgestellt. In einem nativen Hardwarekontext kann auf eine einem Knoten zugeordnete Platte direkt über einen PCI-Bus zugegriffen werden. In der Cloud können die physischen Blöcke, die zu einem Image einer virtuellen Maschine gehören, das einer virtuellen Maschine zugeordnet ist, sich jedoch auf einem anderen Knoten befinden. Selbst wenn eine virtuelle Vorrichtung direkt mit der virtuellen Maschine verbunden zu sein scheint, kann die Image-Datei, die als Sicherung für die Vorrichtung fungiert, sich an einer anderen Stelle im Netzwerk befinden und sich möglicherweise näher zu einer anderen virtuellen Maschine im Cluster als zu der direkt zugeordneten virtuellen Maschine befinden. Der Server (460) frägt den Speicherort des physischen Images über eine API ab und stellt dem Scheduler (470) Informationen bereit.Storage topology information is provided as a mapping between each virtual device containing the data set and the virtual machine for which it is local. In one native hardware context, a disk associated with a node can be accessed directly via a PCI bus. In the cloud, the physical blocks that belong to an image of a virtual machine that is associated with a virtual machine can be on a different node. Even if a virtual device appears to be directly attached to the virtual machine, the image file that is backing up the device may be located elsewhere on the network and may be closer to another virtual machine in the cluster than to the directly mapped virtual machine. The server ( 460 ) queries the location of the physical image via an API and presents the scheduler ( 470 ) Information ready.

Beispiele spezieller vom Server (460) bereitgestellte APIs werden in Tabelle 1 nachfolgend beschrieben: API Beschreibung Int get_VM_distance (string vm1, string vm2) Gibt die Distanz zwischen zwei virtuellen Maschinen zurück struct block_location get_block_location (string src, long offset, long length) Gibt den tatsächlichen Speicherort von Blöcken zurück int get_vm_networking (string vm, struct networkinfo) Gibt Netzwerknutzungsinformationen des physischen Hosts zurück, auf dem die virtuelle Maschine ausgeführt wird int get_vm_diskinfo (string vm, string device, struct diskinfo) Gibt Plattennutzungsinformationen zurück int get_vm_cpuinfo (string vm, struct cpuinfo) Gibt CPU-Nutzungsinformationen des physischen Hosts zurück, auf dem die virtuelle Maschine ausgeführt wird Tabelle 1 Examples more specific from the server ( 460 APIs provided are described in Table 1 below: API description Int get_VM_distance (string vm1, string vm2) Returns the distance between two virtual machines struct block_location get_block_location (string src, long offset, long length) Returns the actual location of blocks int get_vm_networking (string vm, struct networkinfo) Returns network usage information of the physical host on which the virtual machine is running int get_vm_diskinfo (string vm, string device, struct diskinfo) Returns disk usage information int get_vm_cpuinfo (string vm, struct cpuinfo) Returns CPU usage information of the physical host on which the virtual machine is running Table 1

Die Anweisung get_vm_distance stellt dem Job-Scheduler (470) Jobs mit Hinweisen zur Netzwerkdistanz zwischen zwei virtuellen Maschinen bereit. Die Distanz wird basierend auf den beobachteten Datenübertragungsraten zwischen den virtuellen Maschinen geschätzt, und in einer Ausführungsform wird sie in Einheiten der Bandbreite ausgedrückt. Die Anweisung get_block_location unterstützt den Abruf des konkreten Blockspeicherorts anstelle des Speicherorts der virtuellen Maschine, wodurch die Lokalität sichergestellt wird. Die Anweisungen get_vm_networkinfo, get_vm_diskinfo und get_vm_cpuinfo stellen für den Job-Scheduler (470) bezüglich der Abfrage der Informationen zu I/O- und CPU-Zugriffskonflikten, die sich auf die Netzwerk- und Plattennutzung beziehen, eine Vereinfachung dar. In einer Ausführungsform kann der Scheduler (470) diese zusätzlichen Informationen für intelligentere Entscheidungen nutzen, darunter in einer Ausführungsform die Anordnung I/O-intensiver Jobs auf physischen Hosts, die über I/O-Ressourcen im Leerlauf verfügen.The get_vm_distance statement represents the job scheduler ( 470 ) Jobs with hints about the network distance between two virtual machines ready. The distance is estimated based on the observed data transmission rates between the virtual machines, and in one embodiment is expressed in units of bandwidth. The get_block_location instruction supports fetching the actual block location instead of the virtual machine location, which ensures locality. The instructions get_vm_networkinfo, get_vm_diskinfo, and get_vm_cpuinfo provide for the job scheduler ( 470 ) simplify the retrieval of information on I / O and CPU access conflicts related to network and disk usage. In one embodiment, the scheduler (FIG. 470 ) use this additional information to make smarter decisions, including, in one embodiment, placing I / O-intensive jobs on physical hosts that have idle I / O resources.

5 ist ein Flussdiagramm (500), das die Ressourcenzuweisung und die Datenverwaltung sowie die Anordnung der virtuellen Maschine veranschaulicht. Wie beschrieben, ist CAM eine Cloud-Plattform mit speziellen Schnittstellen und unterstützt die Ausführung von MapReduce-Jobs. Ein zu verarbeitendes Datenset wird anfangs auf einem allgemeinen Dateisystem (GPFS, General Purpose Filesystem) abgelegt. Im Besonderen sind die Speicher- und Computingressourcen nicht voneinander isoliert. Ein MapReduce-Job wird abgesetzt, indem die Anwendung, z. B. relevante Java-Klassendateien, die ein zuvor hochgeladenes Datenset für den Job angeben, und die Anzahl und der Typ der für den Job (502) zu verwendenden virtuellen Maschinen bereitgestellt werden. In einer Ausführungsform unterstützt jede virtuelle Maschine mehrere MapReduce-Jobslots (Bereiche für Jobs, Jobs Slots) in Abhängigkeit von der Anzahl der jeder virtuellen Maschine zugewiesenen virtuellen CPUs und virtuellem RAM. Je höher die Anzahl der einem Job zugewiesenen virtuellen Maschinen ist, umso schneller wird der Job fertiggestellt. 5 is a flowchart ( 500 ), which illustrates the resource allocation and data management, as well as the virtual machine location. As described, CAM is a cloud platform with special interfaces and supports the execution of MapReduce jobs. A dataset to be processed is initially placed on a general file system (GPFS). In particular, the storage and computing resources are not isolated from each other. A MapReduce job is issued by the application, for Relevant Java class files that specify a previously uploaded dataset for the job and the number and type of job ( 502 ) to be used to be used virtual machines. In one embodiment, each virtual machine supports multiple MapReduce job slots (ranges for jobs, job slots) depending on the number of virtual CPUs assigned to each virtual machine and virtual RAM. The higher the number of virtual machines assigned to a job, the faster the job will be completed.

CAM bestimmt eine optimale Anordnung für das Set der angeforderten neuen virtuellen Maschinen (504), indem Faktoren berücksichtigt werden wie, ohne jedoch darauf beschränkt zu sein, die aktuelle Workload-Verteilung auf den Clusterknoten, die Verteilung der für den Job erforderlichen Eingabedatensets und der physischen Speicherorte der erforderlichen Master Images der virtuellen Maschine. Die Images von virtuellen Maschinen, die zum Booten der virtuellen Maschinen auf den ausgewählten Knoten erforderlich sind, werden aus den jeweiligen Master Images (506) erstellt. In einer Ausführungsform wird ein von dem allgemeinen Dateisystem bereitgestellter Mechanismus für das Kopieren bei Schreibvorgängen (Copy-on-Write Mechanism) zum Erstellen der virtuellen Maschine genutzt, da dadurch schnell eine Instanz eines Images einer virtuellen Maschine bereitgestellt werden kann, ohne dass eine Datenkopie des Master Images erforderlich ist. Im folgenden Schritt (506) werden die Klassendateien des Jobs auf ein kopiertes Image der virtuellen Maschine (508) kopiert. In einer Ausführungsform findet das Kopieren in Schritt (508) statt, indem das Image als ein Loop-Back-Dateisystem gemountet wird. Schließlich werden die Daten-Images der virtuellen Maschine zugeordnet und die entsprechenden Dateien werden in der virtuellen Maschine (510) gemountet, da so Jobs auf die hierin enthaltenen Daten zugreifen können. Es wird nun auf 4 Bezug genommen, in der jede physische Maschine (430), (440) und (450) jeweils mit lokalen Platten (432), (442) und (452) ausgestattet ist. Ein verteiltes Dateisystem (410), das in diesem Dokument auch als GPFS-SNC bezeichnet wird, ist auf den physischen Maschinen (430), (440) und (450) installiert. Die Images der virtuellen Maschinen (436), (446) und (456) werden im verteilten Dateisystem (410) gespeichert. In einer Ausführungsform weist ein Cloud-Manager Jobs Ressourcen zu und verwaltet die Datenanordnung und die Anordnung der virtuellen Maschine.CAM determines an optimal arrangement for the set of requested new virtual machines ( 504 ) by considering factors such as, but not limited to, the current workload distribution on the cluster nodes, the distribution of the input datasets required for the job, and the physical locations of the required virtual machine master images. The virtual machine images required to boot the virtual machines on the selected nodes are taken from the respective master images ( 506 ) created. In one embodiment, a copy-on-write mechanism provided by the general file system is provided Mechanism) is used to create the virtual machine because it can quickly provision an instance of a virtual machine image without requiring a copy of the master image. In the following step ( 506 ), the class files of the job are copied to a copied image of the virtual machine ( 508 ) copied. In one embodiment, the copying in step ( 508 ) by mounting the image as a loop-back file system. Finally, the data images are mapped to the virtual machine and the corresponding files are stored in the virtual machine ( 510 ), because this allows Jobs to access the data contained therein. It will be up now 4 Reference is made in which each physical machine ( 430 ) 440 ) and ( 450 ) each with local disks ( 432 ) 442 ) and ( 452 ) Is provided. A distributed file system ( 410 ), also referred to as GPFS SNC in this document, is present on the physical machines ( 430 ) 440 ) and ( 450 ) Installed. The images of the virtual machines ( 436 ) 446 ) and ( 456 ) are used in the distributed file system ( 410 ) saved. In one embodiment, a cloud manager allocates resources to jobs and manages the data arrangement and arrangement of the virtual machine.

Die Anordnung der Daten und virtuellen Maschinen sind Aspekte, die hinsichtlich der Kosten in Betracht gezogen werden müssen. Im Besonderen wird bei der Anordnung berücksichtigt, dass die Nähe der virtuellen Maschinen gewährleistet ist, dass Hotspots vermieden werden und dass die Nutzung des physischen Speichers unter Berücksichtigung der unterschiedlichen Jobtypen ausgeglichen ist. Die Nähe der virtuellen Maschine drückt die Kosten des Datenzugriffs aus und erfasst, wie Daten bezüglich der zugeordneten virtuellen Maschinen angeordnet werden sollten, um die Zugriffszeiten zu minimieren. Der Hotspots-Faktor drückt die erwartete Last für eine Maschine aus und identifiziert Maschinen, die über nicht ausreichend Rechenressourcen zur Unterstützung der zugewiesenen virtuellen Maschinen verfügen. Um einen Hotspot zu vermeiden, müssen die Daten auf der Maschine mit der geringsten Last angeordnet werden. Dies kann bestimmt werden, indem die der Maschine aktuell zugewiesenen Rechenressourcen gemessen werden und dazu die erwartete Zuweisungsanforderung der virtuellen Maschinen addiert wird, die mit den auf der Maschine anzuordnenden Daten arbeiten würden. Schließlich gibt die Speichernutzung einen Prozentsatz des gesamten verwendeten Speicherbereichs der physischen Maschine an.The arrangement of data and virtual machines are aspects that must be considered in terms of cost. In particular, the arrangement takes into account that the proximity of the virtual machines is ensured, that hotspots are avoided and that the use of the physical memory is balanced taking into account the different job types. The proximity of the virtual machine expresses the cost of data access and how data should be located relative to the associated virtual machines to minimize access times. The hotspot factor expresses the expected load for a machine and identifies machines that have insufficient computational resources to support the assigned virtual machines. To avoid a hotspot, the data must be placed on the machine with the lowest load. This can be determined by measuring the computational resources currently allocated to the machine and adding to it the expected allocation request of the virtual machines that would work with the data to be placed on the machine. Finally, memory usage indicates a percentage of the total memory used by the physical machine.

Die folgende Tabelle, Tabelle 2, zeigt eine Tabelle, die die Bedeutung der drei oben ausgeführten Faktoren, die die Leistung unter verschiedenen Workloads beeinflussen, veranschaulicht. Jobtyp Nähe der virtuellen Maschine Hotspot-Faktor Speichernutzung Zuordnungs- und Reduzierungsintensiv Ja Ja Ja Zuordnungsintensiv Nein Ja Ja Reduzierungsintensiv Nein Nein Ja Tabelle 2 The following table, Table 2, shows a table that illustrates the importance of the three factors outlined above that affect performance across different workloads. job type Near the virtual machine Hotspot factor memory usage Allocation and reduction intensive Yes Yes Yes intensive assignment No Yes Yes intensive reduction No No Yes Table 2

Bei sowohl zuordnungs- (Map) wie auch reduzierungsintensiven (Reduce) Workloads sollten die zugehörenden Daten nahe zueinander und auf der Maschine mit der geringsten Last angeordnet werden. Bei zuordnungsintensiven Workloads sollten die Daten auf der Maschine mit der geringsten Last angeordnet werden, sie müssen aber nicht unbedingt nahe beieinander angeordnet sein, da bei einer solchen Workload ein mäßiger Datenverkehr (Light Shuffle Traffic)) auftritt. Bei reduzierungsintensiven Workloads ist nur die Speichernutzung der Maschine zu berücksichtigen, auf der die virtuelle Maschine angeordnet werden soll. Bei allen Workload-Typen ist es erstrebenswert, die Daten gleichmäßig über die Racks zu verteilen, um die Erfordernis der Neuanordnung der Daten im Laufe der Zeit zur Unterstützung der Migration virtueller Maschinen zu minimieren.For both assignment (map) and reductive workloads, the associated data should be placed close to each other and on the machine with the lowest load. For assignment-intensive workloads, the data should be placed on the machine with the least load, but not necessarily close to each other, as this workload will experience moderate light shuffle traffic. Reduction-intensive workloads take into account only the memory usage of the machine on which the virtual machine is to be located. For all types of workloads, it is desirable to distribute the data evenly across the racks to minimize the need to re-arrange the data over time to support virtual machine migration.

Die in Tabelle 2 angegebenen Faktoren werden bei der Erstellung eines Flussgraphen mit den geringsten Kosten (Min-cost Flow Graph) verwendet, in dem die Faktoren kodiert werden. 6 stellt einen Flussgraphen (600) dar, der eine Beispielnetzwerktopologie für die Anordnung der Daten veranschaulicht. Im Besonderen besteht die Beispielnetzwerktopologie aus sechs physischen Knoten (p1, p2, p3, p4, p5, p6), die als (610), (612), (614), (616), (618) und (620) identifiziert werden. Die physischen Knoten sind in drei Racks (r1, r2, r3), die als (630), (632) und (634) bezeichnet werden, organisiert. Ein Master-Rack r4, wie ein Switch, das als (650) bezeichnet wird, verbindet die Racks. In einer Ausführungsform kann die hier dargestellte Topologie jede Topologie unterstützen, in der der Datenverkehr im Netzwerk geschätzt werden kann. Die Einheit der Datenanordnung ist ein Image einer virtuellen Maschine, um sicherzustellen, dass an einem Speicherort ein vollständiges Image verfügbar ist.The factors shown in Table 2 are used when creating a least-cost flow graph that encodes the factors. 6 make a flow graph ( 600 ), which illustrates a sample network topology for the arrangement of the data. In particular, the example network topology consists of six physical nodes (p 1 , p 2 , p 3 , p 4 , p 5 , p 6 ) that are considered as ( 610 ) 612 ) 614 ) 616 ) 618 ) and ( 620 ) be identified. The physical nodes are in three racks (r 1 , r 2 , r 3 ) that are called ( 630 ) 632 ) and ( 634 ) are organized. A master rack r 4 , like a switch, which acts as ( 650 ) connects the racks. In one embodiment, the topology shown here may support any topology in which network traffic can be estimated. The data arrangement unit is a virtual machine image to ensure that a full image is available at a storage location.

Basierend auf dem Flussgraphen von 6 wird in 7 ein zweiter Flussgraph (700) zur beispielhaften Anordnung von Daten dargestellt. Zwei Datenelemente, d1, (702) und d2, (704), mit Anforderungen für jeweils fünf und zwei Images virtueller Maschinen werden an die Cloud übergeben, z. B. einen gemeinsamen Pool an Ressourcen. Die Anzahl der von einem Datenelement angeforderten Images der virtuellen Maschine wird als Eingabe (Supply) des Datenelements für den Flussgraphen bezeichnet. Ein Knoten ohne Nachfolger (Sink Node), S (790), wird dem Graphen zur Unterstützung virtueller Maschinen hinzugefügt. Die Anzahl der virtuellen Maschinen, die ein Knoten ohne Nachfolger verwalten kann, wird als Sollwert (Demand Value) zugewiesen. In dem hier dargestellten Beispiel weist der Knoten ohne Nachfolger (790) einen Sollwert von 7 auf, und es ist die einzige Stelle, die alle Flüsse erhalten kann. Jeder Kante des Flussgraphen sind zwei Parameter zugeordnet, darunter die Kapazität der Kante und die Kosten für einen durch diese Kante verlaufenden Flusses. Die Datenknoten d1 (702) und d2 (704) verfügen über ausgehende Links (bzw. Linienverbindungen) zu jedem Rack, wobei die Nähe zur virtuellen Maschine die Kosten bilden. Wie dargestellt, verfügt der Datenknoten d1 (702) über einen Link (bzw. Linienverbindung) (712), der zu Rack r1 (722) verläuft, der Datenknoten d1 (702) verfügt über einen Link (714), der zu Rack r2 (724) verläuft; der Datenknoten d1 (702) verfügt über einen Link (716), der zu Rack r3 (726) verläuft; der Datenknoten d1 (702) verfügt über einen Link (718), der zu Rack r4 (728) verläuft; der Datenknoten d2 (704) verfügt über einen Link (732), der zu Rack r1 (722) verläuft; der Datenknoten d2 (704) verfügt über einen (734), der zu Rack r2 (724) verläuft; der Datenknoten d2 (704) verfügt über einen Link (736), der zu Rack r3 (726) verläuft und der Datenknoten d2 (704) verfügt über einen Link (738), der zu Rack r4 (728) verläuft. Hier werden sechs physische Knoten dargestellt, im Einzelnen sind dies p1 (740), p2 (742), p3 (744), p4 (746), p5 (748) und p6 (750). Der Hotspot-Faktor ist in den Links (750), (752), (754), (756), (758) und (760) von den Racks zu jedem physischen Knoten p innerhalb des Geltungsbereichs davon kodiert. Auch wenn r4 (728) als ein Switch zwischen den Racks fungiert, wird es als mit allen physischen Knoten direkt verbunden dargestellt, um sicherzustellen, dass die Maschine mit der geringsten Last für zuordnungsintensive Jobs gewählt werden kann, ohne durch die Netzwerktopologie beschränkt zu werden. Based on the flow graph of 6 is in 7 a second flow graph ( 700 ) for exemplary arrangement of data. Two data elements, d 1 , ( 702 ) and d 2 , ( 704 ), with requests for every five and two virtual machine images are passed to the cloud, e.g. A shared pool of resources. The number of virtual machine images requested by a data item is referred to as the input to the data element for the flow graph. A node without successor (sink node), S ( 790 ) is added to the graph to support virtual machines. The number of virtual machines a node with no successor can manage is assigned as a Demand Value. In the example shown here, the node without successor ( 790 ) a setpoint of 7 on, and it's the only place that can receive all the rivers. Each edge of the flow graph is assigned two parameters, including the capacity of the edge and the cost of a flow passing through that edge. The data nodes d 1 ( 702 ) and d 2 ( 704 ) have outgoing links (or line connections) to each rack, with the cost of being close to the virtual machine. As shown, the data node d 1 ( 702 ) via a link (or line connection) ( 712 ) leading to rack r 1 ( 722 ), the data node d 1 ( 702 ) has a link ( 714 ) leading to rack r 2 ( 724 ) runs; the data node d 1 ( 702 ) has a link ( 716 ) leading to rack r 3 ( 726 ) runs; the data node d 1 ( 702 ) has a link ( 718 ) to rack r 4 ( 728 ) runs; the data node d 2 ( 704 ) has a link ( 732 ) leading to rack r 1 ( 722 ) runs; the data node d 2 ( 704 ) has a ( 734 ) leading to rack r 2 ( 724 ) runs; the data node d 2 ( 704 ) has a link ( 736 ) leading to rack r 3 ( 726 ) and the data node d 2 ( 704 ) has a link ( 738 ) to rack r 4 ( 728 ) runs. Here, six physical nodes are represented, in detail these are p 1 ( 740 ), p 2 ( 742 ), p 3 ( 744 ), p 4 ( 746 ), p 5 ( 748 ) and p 6 ( 750 ). The hotspot factor is in the links ( 750 ) 752 ) 754 ) 756 ) 758 ) and ( 760 ) from the racks to each physical node p within the scope thereof. Even though r 4 ( 728 ), acting as a switch between the racks, is shown as being directly connected to all physical nodes to ensure that the machine with the lowest load can be chosen for assignment-intensive jobs without being constrained by the network topology.

Alle physischen Knoten p1 (740), p2 (742), p3 (744), p4 (746), p5 (748) und p6 (750) sind mit dem Knoten ohne Nachfolger (790) verbunden, wobei die Speichernutzung die Linkkosten bildet. Es gibt keinen direkten Link von dem Datenelementknoten dj zum zugehörigen physischen Host pi. Der Grund hierfür liegt in der Unterstützung des Hochskalierens des Systems. Die folgende Tabelle, Tabelle 3, enthält die Werte, die dem Flussgraphen für die Anordnung der Daten zugewiesen sind. Datenset dj Rack rk Physischer Host Knoten ohne Nachfolger Eingabe ∑(Ndj) 0 0 –∑(Ndj) Eingehender Link von N/ Ndj Rack rk Physischer Host Ausgehender Link (Kapazität, Kosten) Zum Rack (Ndj, αjk) Zum physischen Host (Capi, βi) Zum Knoten ohne Nachfolger (Capi, γi) N/A Tabelle 3 All physical nodes p 1 ( 740 ), p 2 ( 742 ), p 3 ( 744 ), p 4 ( 746 ), p 5 ( 748 ) and p 6 ( 750 ) are with the node without successor ( 790 ), the memory usage being the link cost. There is no direct link from the data element node d j to the associated physical host p i . The reason for this is the support of scaling up the system. The following table, Table 3, contains the values assigned to the flow graph for the arrangement of the data. Data set d j Rack r k Physical host Node without successor input Σ (Nd j ) 0 0 -Σ (nd j ) Incoming link from N / Nd j Rack rk Physical host Outgoing link (capacity, costs) To the rack (Nd j , α jk ) To the physical host (Cap i , β i ) To the node without successor (Cap i , γ i ) N / A Table 3

Wie dargestellt, ist Ndj die Anzahl der vom Datenset dj, αjk angeforderten Images der virtuellen Maschinen, um die Nähe der virtuellen Maschinen zu erfassen. Die Kosten, αjk, des ausgehenden Links vom Datenset dj zum physischen Host pi, auf dem die Daten auf dem Rack rk angeordnet werden, werden anhand des Datenverkehrs in der Shuffle-Phase wie folgt in konservativer Weise geschätzt:

Figure 00260001
wobei distancemax die Netzwerkdistanz zwischen zwei beliebigen Knoten im Rack rk ist.As shown, Nd j to detect the number of requested from the dataset d j, α jk Images of the virtual machines, the vicinity of the virtual machines. The cost, α jk , of the outgoing link from data set d j to the physical host p i on which the data is placed on rack r k is conservatively estimated from the shuffle traffic as follows:
Figure 00260001
where distance max is the network distance between any two nodes in the rack r k .

Der Hotspot-Faktor wird mit βi für den physischen Knoten pi erfasst und anhand der aktuellen und erwarteten Last (Load) wie folgt geschätzt: βi = a·(loadexp + loadcurr – loadmin) wobei loadcurr und loadmin jeweils die aktuelle Last und die minimale aktuelle Last darstellen, und a ein Parameter ist, der als Möglichkeit (“Knopf”, Knob) der Feineinstellung der Gewichtung des Hotspot-Faktors bezüglich anderer Kosten dient. Die erwartete Last, loadexp, lautet wie folgt: loadexp = ∑j (pj/(1 – pj)·C Res(dj) wobei pj = λjj, und λj die Anzahl der dj zugeordneten Jobs darstellt, die in einem bestimmten Zeitintervall eingehen, und μj für jede virtuelle Maschine die mittlere Zeit zur Verarbeitung eines Blocks angegeben.The hotspot factor is detected with β i for the physical node p i and estimated from the current and expected load as follows: β i = a · (load exp + load curr - load min ) where load curr and load min respectively represent the current load and the minimum current load, and a is a parameter that serves as a possibility ("Knob") of fine-tuning the weighting of the hotspot factor for other costs. The expected load, load exp , is as follows: load = Σ exp j (p j / (1 - p j) · C Res (d j) where p j = λ j represents / μ j and λ j is the number of d j assigned to jobs that are received in a certain time interval, and μ j specified, the average time to process a block for each virtual machine.

Die Speichernutzung eines physischen Knotens pi wird durch γi erfasst, das durch die aktuelle Speichernutzung im Vergleich zur minimalen Speichernutzung aller pis wie folgt bestimmt wird: γi = b·(storageUtilization pi – storageUtilizationmin) wobei b ein Parameter ist, um die Gewichtung der Speichernutzung bezüglich anderer Faktoren feinabzustimmen. Schließlich wird für die Kapazität die folgende Formel als Schätzung der Kapazität für jeden physischen Host verwendet: Capi = freespacepi/sizeVMImg The memory usage of a physical node p i is detected by γ i , which is determined by the current memory usage as compared to the minimum memory usage of all p i s as follows: γ i = b · (storageUtilization p i - storageUtilization min ) where b is a parameter to fine-tune the weight of memory usage for other factors. Finally, for capacity, the following formula is used as an estimate of the capacity for each physical host: Cap i = freespace pi / size VMImg

Damit die Korrelation zwischen den Anordnungen der Images der virtuellen Maschine für eine Datenanforderung im Graphen erfasst werden kann, wird ein Splitfaktor-Parameter bereitgestellt, um anzugeben, ob die Flüsse von einem Knoten über verschiedene Links aufgeteilt werden können. In einer Ausführungsform wird der Wert dieses Parameters als wahr (True) oder falsch (False) definiert. Wenn zum Beispiel der Splitfaktor für alle Links von d1 und d2 „wahr“ ergibt, verlaufen alle Flüsse von Datenknoten durch eines von r1, r2, r3, r4, werden aber nicht zwischen den Racks aufgeteilt. Sobald eine neue Anforderung zum Hochladen von Daten empfangen wird, aktualisiert der Cloud-Server den Graphen und berechnet basierend auf der berechneten Lösung für die neu aktualisierten Daten eine globale optimale Lösung. Dementsprechend wird der Scheduler in periodischen Abständen basierend auf der neuen Lösung aktualisiert und kann variierende Lasten berücksichtigen.In order to capture the correlation between the virtual machine image arrays for a data request in the graph, a split factor parameter is provided to indicate whether the flows from a node can be split across different links. In one embodiment, the value of this parameter is defined as true (true) or false (false). For example, if the split factor for all links of d 1 and d 2 is true, all flows of data nodes will pass through one of r 1 , r 2 , r 3 , r 4 but will not be split between the racks. Once a new request to upload data is received, the cloud server updates the graph and calculates a global optimal solution based on the calculated solution for the newly updated data. Accordingly, the scheduler is periodically updated based on the new solution and can accommodate varying loads.

Das Ziel der Anordnung der virtuellen Maschine ist die Maximierung der Lokalität (Locality) der globalen Daten und des Jobdurchsatzes. Unser Modell berücksichtigt sowohl die Migration der virtuellen Maschinen und die verzögerte Planung eines Jobs als Bestandteil der optimalen Lösung. Die Verzögerung bei einem Job wird dazu genutzt, bessere Möglichkeiten der Lokalität von Daten zu untersuchen, die in naher Zukunft entstehen können, wobei gleichzeitig die beim Warten aufgewendete Zeit minimiert wird. Durch die Migration einer zu einem Job gehörenden virtuellen Maschine kann der Scheduler Raum für andere geeignete Jobs schaffen oder bessere Möglichkeiten bezüglich des Speicherorts bestimmen.The goal of the virtual machine placement is to maximize the locality of the global data and the job throughput. Our model considers both the migration of virtual machines and the delayed scheduling of a job as part of the optimal solution. The delay in a job is used to examine better ways of locating data that may arise in the near future, while minimizing the time spent waiting. By migrating a virtual machine belonging to a job, the scheduler can create space for other suitable jobs or better location options.

8 stellt einen Flussgraphen (800) für die Anordnung virtuellen Maschinen dar. Jeder Job vj (802) und (804) wird an das System an dem Quellknoten mit der Anzahl der angeforderten virtuellen Maschinen, Nvj, als Eingabewert übergeben. Das Ziel der Zuweisungsfunktion (Allocator) der virtuellen Maschinen besteht darin, den Job als nicht geplant (bzw. nicht zur Ausführung geplant, unscheduled, im Folgenden nur: nicht geplant) beizubehalten, z. B. jeder Anforderung 0 oder Nvj, virtuelle Maschinen zuzuordnen. Es gibt einen Knoten S ohne Nachfolger (890) mit einem Sollwert gleich bis abzüglich der Summe des Eingabewertes. Die Anforderung eines jeden Jobs fungiert als ein Fluss (Flow), der entweder durch die Rack-Knoten (810), (812), (814) und (816) oder durch die nicht geplanten Knoten (820), (822) und (824) und schließlich zum Knoten ohne Nachfolger (890) verläuft. Wenn ein Job nicht geplant ist, werden keine seiner virtuellen Maschinen zugewiesen. Andernfalls verläuft der Fluss durch die physischen Knoten (830), (832), (834), (836), (838) und (840). Basierend auf der Lösung der geringsten Kosten kann ein Zuweisungsschema mit den geringsten Kosten abgeleitet werden. Wenn die virtuellen Maschinen dem Rack der obersten Ebene zugeordnet werden, gibt dies an, dass die virtuellen Maschinen jedem Set von Knoten in den virtuellen Maschinen auf dem Rack beliebig zugeordnet werden können. 8th make a flow graph ( 800 ) for the arrangement of virtual machines. Each job v j ( 802 ) and ( 804 ) is passed to the system at the source node with the number of requested virtual machines, N vj , as the input value. The goal of the allocator function of the virtual machines is to keep the job as unplanned (or not scheduled to run, unscheduled, hereafter just: not scheduled). For example, assign each request 0 or N vj to virtual machines. There is a node S without successor ( 890 ) with a setpoint equal to minus the sum of the input value. The request of each job acts as a flow that flows through either the rack nodes ( 810 ) 812 ) 814 ) and ( 816 ) or through the unscheduled nodes ( 820 ) 822 ) and ( 824 ) and finally to the node without successor ( 890 ) runs. If a job is not scheduled, none of its virtual machines will be assigned. Otherwise, the flow passes through the physical nodes ( 830 ) 832 ) 834 ) 836 ) 838 ) and ( 840 ). Based on the least cost solution, a least cost allocation scheme can be derived. Assigning the virtual machines to the top-level rack indicates that the virtual machines can be arbitrarily assigned to any set of nodes in the virtual machines on the rack.

Die Jobtypinformationen werden als die Kosten der Kante von jedem Job zu den Rack-Knoten im flussbasierten Graphen modelliert. Das Rack der höheren Ebene weist hinsichtlich des reduzierten Datenverkehrs höhere Kosten auf als das Rack der untergeordneten Ebene. In einer Ausführungsform werden die Kosten des Racks der obersten Ebene durch eine Anordnung der virtuellen Maschinen im Fall der schlechtesten Zuordnung und des reduzierten Datenverkehrs geschätzt. Die Kosten der Kanten der nicht geplanten Knoten werden so festgelegt, dass sie im Laufe der Zeit erhöht werden, so dass verzögerte Jobs schneller zugewiesen werden als vor kurzem abgesetzte Jobs. Diese Kosten steuern auch, wann ein Job anhält und auf eine bessere Lokalität wartet, und bieten daher eine Einstellungsmöglichkeit, um den Kompromiss zwischen Lokalität der Daten und der Latenz zu optimieren. Die nicht geplanten aggregierten Knoten steuern, wie viele virtuelle Maschinen in einem nicht geplanten Zustand verbleiben können, um die Nutzung der Systemressourcen und den Kompromiss bei der Lokalität der Daten zu steuern. Die Kosten der Kanten zum ausführenden Knotenset steigen im Laufe der Zeit an und berücksichtigen den Fortschritt der Jobausführung.The job type information is modeled as the cost of the edge of each job to the rack nodes in the flow-based graph. The higher-level rack is more expensive in terms of reduced traffic than the lower-level rack. In one embodiment, the cost of the top-level rack is estimated by an array of virtual machines in the case of worst allocation and reduced traffic. The cost of the edges of the unplanned nodes are set to increase over time, so that delayed jobs are allocated more quickly be as recently detached jobs. These costs also control when a job stops and wait for a better location, and therefore provide an adjustment option to optimize the trade-off between data locality and latency. The unscheduled aggregated nodes control how many virtual machines can remain in an unplanned state to control the use of system resources and the compromise in the locality of the data. The cost of the edges to the executing node set increases over time and takes into account the progress of job execution.

9 stellt eine Tabelle (900) mit Werten dar, die dem Flussgraphen für die Anordnung der virtuellen Maschine und der Knotenkategorisierung zugewiesen werden. Verschiedene Knoten im Graphen werden als unterschiedliche Typen kategorisiert, wie in der Tabelle gezeigt. Ein bevorzugtes Knotenset ist ein Set (prj) (910) aus Graphenknoten, die auf ein Set physischer Knoten pi zeigen, die ein dem Job vj zugeordnetes darin gespeichertes Datenset aufweisen. Eine Kante von einem bevorzugten Knoten zu einen physischen Knoten pi hat die Kosten 0 und die Kapazität der Anzahl der auf den physischen Knoten pi gespeicherten Platten-Images der virtuellen Maschinen. Ein ausgeführtes Knotenset (ruj) (920) ist ein Set dynamischer hinzugefügten Knoten, die auf physische Knoten (pi s) zeigen, die aktuell die virtuellen Maschinen der Jobs (vj) hosten. Eine Kante von ruj zu pi hat die Kosten 0 und die Kapazität in der Anzahl der virtuellen Maschinen, die auf den physischen Knoten pi ausgeführt werden. Ein nicht geplantes Knotenset, uj, (930) ist ein Knotenset, dass Informationen über aktuell nicht geplante Jobs bereitstellt. Das nicht geplante Knotenset, uj, hat eine ausgehende Kante mit der Kapazität Nvj und dem Code 0 zu einem nicht geplanten Aggregator. Ein nicht geplanter Aggregatknoten, u, (940) hat eine ausgehende Kante mit Kosten 0 zum Knoten ohne Nachfolger, wobei die Kapazität definiert ist als: Nunsched = ∑(Nvj) – M + Midle wobei M die Gesamtzahl der virtuellen Maschinen ist, die im Cluster unterstützt werden können, und Midle die im Cluster zulässige Anzahl der im Leerlauf befindlichen virtuellen Maschinenslots angibt. 9 presents a table ( 900 ) with values assigned to the flowchart for the virtual machine placement and node categorization. Different nodes in the graph are categorized as different types, as shown in the table. A preferred node set is a set (pr j ) ( 910 ) from graph nodes pointing to a set of physical nodes p i having a data set stored therein associated with the job v j . An edge from a preferred node to a physical node p i has the cost 0 and the capacity of the number of virtual machine disk images stored on the physical node p i . An executed node set (ru j ) ( 920 ) is a set of dynamically added nodes that point to physical nodes (p i s) currently hosting the jobs' virtual machines (v j ). An edge from ru j to p i has the cost 0 and the capacity in the number of virtual machines that are executed on the physical node p i . An unplanned node set, u j , ( 930 ) is a node set that provides information about currently unplanned jobs. The unscheduled node set, u j , has an outgoing edge with the capacity N vj and code 0 to an unscheduled aggregator. An unscheduled aggregate node, u, ( 940 ) has an outgoing cost 0 lead to the node without a successor, with the capacity defined as: N unsched = Σ (N vj ) - M + M idle where M is the total number of virtual machines that can be supported in the cluster, and M idle specifies the number of idle virtual machine slots allowed in the cluster.

Das Rack-Knotenset, rk, (950) stellt in der Topologie des Clusters ein Rack dar. Es hat ausgehende Links mit den Kosten 0 zu den untergeordneten Racks, oder wenn es sich auf der untersten Ebene befindet, zu physischen Knoten. Die Links haben die Kapazität Nrk, dies ist die Gesamtzahl der virtuellen Maschinen-Slots, die von den zugrunde liegenden Knoten bedient werden können. Das physische Hostknotenset, pi, (960) verfügt über einen ausgehenden Link zu dem Knoten ohne Nachfolger, wobei die Kapazität die Anzahl der virtuellen Maschinen ist, die auf dem physischen Host Nvm vorhanden sein können, und die Kosten 0. Der Graph verfügt über einen Knoten ohne Nachfolger (970) mit einem Sollwert, der als ∑(Nvj) dargestellt wird. Das Jobknotenset, vj, (980) stellt jeden Jobknoten vj mit der Eingabe Nvj dar. Es weist mehrere ausgehende Kanten auf, die den möglichen Zuweisungsentscheidungen der virtuellen Maschinen für das Jobset entsprechen.The rack node set, r k , ( 950 ) represents a rack in the topology of the cluster. It has outbound links with the cost 0 to the child racks, or if it is at the lowest level, to physical nodes. The links have the capacity N rk , which is the total number of virtual machine slots that can be served by the underlying nodes. The physical host node set, p i , ( 960 ) has an outbound link to the node without a successor, where the capacity is the number of virtual machines that can be present on the physical host N vm , and the cost is 0. The graph has a node with no successor ( 970 ) with a setpoint represented as Σ (N vj ). The job node set, v j , ( 980 ) represents each job node v j with the input n vj . It has several outgoing edges corresponding to the possible assignment decisions of the virtual machines for the job set.

Zu den Kanten gehören ein Rack-Knotenset, ein bevorzugtes Knotenset, ein ausgeführtes Knotenset und ein nicht geplantes Knotenset. Das Rack-Knotenset, rk, weist eine Kante zu rk auf, die angibt, dass rk vj aufnehmen kann. Die Kosten der Kante lauten pj, die durch die Zuordnung (Map) berechnet werden und Datenverkehrskosten reduzieren. Wenn die Kapazität der Kante größer ist als Nvj, gibt dies an, dass die virtuellen Maschinen von vj einigen bevorzugten Knoten im Rack zugewiesen werden. Das bevorzugte Knotenset, prj, hat eine Kante vom Job vj zu dem für den gesamten Job bevorzugten Knotenset, prj, es hat eine Kapazität Nvj und Kosten θ. Die Kosten werden nur anhand des Datenverkehrs in der reduzierten Phase geschätzt, da in diesem Fall von einem zugeordneten Datenverkehr von 0 ausgegangen wird. Das ausgeführte Knotenset, ruj, hat einen Link von Job vj, eine Kapazität Nvj und cost ø = c·T, wobei T die Zeit ist, die der Job auf dem Set der Maschinen ausgeführt wurde, und c eine Konstante ist, mit der die Kosten relativ zu den anderen Kosten angepasst werden. Das nicht geplante Knotenset, uj, besitzt eine Kante zu dem im gesamten Job nicht geplanten Knoten uj mit der Kapazität Nvj und den Kosten ∊j, die der Strafe entsprechen, dass der Job vj nicht geplant wurde. ∊j = d·T, wobei T die Zeit ist, die der Job vj nicht geplant ist, und d eine Konstante ist, mit der die Kosten relativ zu anderen Kosten angepasst werden. Der Splitfaktor für diesen Link wird als wahr gekennzeichnet, das heißt, die Zuweisungen aller virtuellen Maschinen sind entweder erfüllt oder werden bis zur nächsten Runde aufgeschoben.The edges include a rack node set, a preferred node set, a running node set, and an unscheduled node set. The rack node set, r k , has an edge to r k indicating that r k can accept v j . The cost of the edge is pj , which is calculated by mapping and reduces traffic costs. If the capacity of the edge is greater than N vj , this indicates that the virtual machines of v j are assigned to some preferred nodes in the rack. The preferred node set, p rj , has an edge from job v j to the node-wide preferred set of nodes, p rj , has a capacity N vj and cost θ. The costs are only estimated based on the traffic in the reduced phase, since in this case an allocated data traffic of 0 is assumed. The executed node set, r uj , has a link from job v j , a capacity N vj, and cost ø = c · T, where T is the time that the job was run on the set of machines, and c is a constant, with which the costs are adjusted relative to the other costs. The unscheduled node set, u j , has an edge to the node u j not scheduled throughout the job with the capacity N vj and the cost ε j corresponding to the penalty that the job v j was not scheduled. Ε j = d · T, where T is the time that the job v j is not scheduled, and d is a constant by which the cost is adjusted relative to other costs. The split factor for this link is marked as true, that is, the allocations of all virtual machines are either met or postponed until the next round.

Basierend auf einer Ausgabe einer Flusslösung mit minimalen Kosten kann die Zuordnung der Zuweisung der virtuellen Maschinen aus dem Graphen erhalten werden, indem ermittelt wird, wohin für jede Anforderung von vj einer virtuellen Maschine der zugehörige Fluss hinführt. Der Fluss zu einem nicht geplanten Knoten gibt an, dass die Anforderung der virtuellen Maschine in der aktuellen Runde übergangen wird. Wenn der Fluss zu einem bevorzugten Knotenset führt, wird die Anforderung der virtuellen Maschine für dieses Knotenset geplant. Wenn der Fluss zu einem Rack-Knoten verläuft, gibt dies an, dass die virtuellen Maschinen des Jobs beliebigen Hosts in diesem Rack zugeordnet werden.Based on an output of a flux solution having a minimum cost, the allocation of the allocation of the virtual machines can be obtained from the graph by determining where for each request from v j of a virtual machine, the associated flow leads. The flow to an unscheduled node indicates that the virtual machine request is being skipped in the current round. If the flow leads to a preferred node set, the virtual machine request for it will be Knot set planned. When the flow goes to a rack node, it indicates that the job's virtual machines are mapped to any host in that rack.

Die Anzahl der Flüsse, die auf einem physischen Host über Rack-Knoten oder ein Set bevorzugter Knoten festgelegt werden, ist niedriger als die Anzahl der verfügbaren virtuellen Maschinen eines jeden physischen Hosts. Dies wird durch die angegebene Linkkapazität vom physischen Host zum Knoten ohne Nachfolger sichergestellt. Dementsprechend werden alle Anforderungen virtueller Maschinen, die zugewiesen werden, einem entsprechenden physischen Host zugeordnet.The number of flows set on a physical host through rack nodes or a set of preferred nodes is less than the number of available virtual machines of each physical host. This is ensured by the specified link capacity from the physical host to the non-successor node. Accordingly, all virtual machine requests that are assigned are assigned to a corresponding physical host.

10 stellt ein Ablaufdiagramm (1000) dar, das einen Prozess der Auswertung und Nutzung der Topologie der physischen und virtuellen Maschinen in einem gemeinsamen Pool von Ressourcen veranschaulicht. Der Status der virtuellen Maschinen im gemeinsamen Pool wird erhoben (1002). Es ist ersichtlich, dass eine oder mehrere virtuelle Maschinen einem einzelnen physischen Host zugeordnet werden können, wodurch die Virtualisierung einer zugrundeliegenden physischen Maschine unterstützt wird. Basierend auf den erhobenen Daten werden zugehörige Topologieinformationen erfasst und einem Server an einem Root-Knoten der hierarchischen Organisation der physischen und virtuellen Maschinen kommuniziert (1004). 10 represents a flowchart ( 1000 ), which illustrates a process of evaluating and utilizing the topology of the physical and virtual machines in a common pool of resources. The status of the virtual machines in the shared pool is collected ( 1002 ). It can be seen that one or more virtual machines can be mapped to a single physical host, thereby supporting the virtualization of an underlying physical machine. Related topology information is collected and communicated to a server at a root node of the hierarchical organization of physical and virtual machines based on the collected data ( 1004 ).

Jede virtuelle Maschine wird mit einem integrierten Agent bereitgestellt, und jede physische Maschine, der die virtuellen Maschinen zugewiesen sind, wird mit einem integrierten Monitor bereitgestellt. Eine Servermaschine wird in Kommunikation mit einer jeden der physischen Maschinen bereitgestellt und ihre Funktion besteht darin, in periodischen Abständen Informationen von den integrierten Monitoren der zugrundeliegenden physischen Maschinen zu erheben. Die Funktion der integrierten Monitore besteht darin, lokale Topologie-, Platten- und Netzwerkinformationen zu erfassen. In einer Ausführungsform liegen die integrierten Monitore in Form von Software vor, die auf der physischen Maschine ausgeführt wird, um Statusdaten der zugehörigen virtuellen Maschinen zu erheben. Ebenso kommuniziert der integrierte Agent einer jeden virtuellen Maschine die konkrete Topologie- und Systemnutzungsinformationen an die Servermaschine. Dementsprechend enthält jede virtuelle und physische Maschine integrierte Tools, um zur Topologie gehörende Nutzungsinformationen zu erfassen und die erfassten Informationen an die Servermaschine zu übertragen.Each virtual machine is deployed with a built-in agent, and each physical machine that the virtual machines are assigned to is provided with a built-in monitor. A server machine is provided in communication with each of the physical machines and its function is to periodically gather information from the integrated monitors of the underlying physical machines. The role of integrated monitors is to capture local topology, disk, and network information. In one embodiment, the integrated monitors are in the form of software executing on the physical machine to collect status data of the associated virtual machines. Likewise, the integrated agent of each virtual machine communicates the specific topology and system utilization information to the server machine. Accordingly, each virtual and physical machine includes built-in tools to capture usage information associated with the topology and to transfer the captured information to the server machine.

Nach dem Schritt des Erfassens der topologischen Daten in Schritt (1004) werden die erfassten Daten an einem einzelnen Speicherort organisiert (1006). In einer Ausführungsform kann der einzelne Speicherort ein Root-Knoten sein, der einen physischen Server darstellt, der sich in Kommunikation mit jeder der virtuellen Maschinen und deren zugehörigen physischen Maschine befindet. Wie in Schritt (1004) dargestellt, enthalten die von den integrierten Agents der virtuellen Maschinen kommunizierten Daten die konkrete Topologie- und Systemnutzungsinformationen. Die im Schritt (1004) erfassten Daten weisen eine Speichertopologie, die einer virtuellen Topologie des gemeinsamen Pools von Ressourcen zugrundeliegt, zusammen mit den zugehörigen Ressourcennutzungsinformationen auf. Ein Job wird in Kenntnis der erfassten Daten einer ausgewählten virtuellen Maschine im gemeinsamen Pool zugeordnet, wobei bei der Zuordnung die organisierten Speichertopologieinformationen genutzt werden (1008). In einer Ausführungsform ist die Jobzuweisung in Schritt (1008) dazu ausgelegt, die effiziente Leistung des zum Job gehörenden I/O zu unterstützen. Dementsprechend können Jobs durch den Prozess der Erfassung und des Organisierens der lokalen Topologieinformationen einer ausgewählten virtuellen Maschine auf intelligente Weise zugeordnet werden.After the step of collecting the topological data in step ( 1004 ), the collected data is organized in a single location ( 1006 ). In one embodiment, the single storage location may be a root node that represents a physical server that is in communication with each of the virtual machines and their associated physical machine. As in step ( 1004 ), the data communicated by the integrated virtual machine agents contains the actual topology and system utilization information. The in step ( 1004 ) comprise a memory topology underlying a virtual topology of the shared pool of resources, along with the associated resource usage information. A job, knowing the collected data, is assigned to a selected virtual machine in the shared pool, using the organized storage topology information in the association ( 1008 ). In one embodiment, the job assignment is in step ( 1008 ) are designed to support the efficient performance of the job-associated I / O. Accordingly, jobs can be intelligently mapped to a selected virtual machine through the process of collecting and organizing the local topology information.

Die Jobzuordnung in Schritt (1008) kann an eine virtuelle Maschine oder an mehrere virtuelle Maschinen erfolgen. Ebenso kann der Job ein Lesejob oder ein Schreibjob sein. In beiden Szenarien wird in Reaktion auf die Jobzuweisung eine virtuelle topologische Distanz zurückgegeben (1010). Die virtuelle topologische Distanz kann eine Distanz zwischen zwei oder mehreren virtuellen Maschinen sein, wenn der Job mehreren Maschinen zugewiesen wird, oder die virtuelle topologische Distanz kann zwischen einer virtuellen Maschine und einem Datenblock bestehen, wenn der Job eine einzelne virtuelle Maschine für einen Lese- oder Schreibjob unterstützt. Im folgenden Schritt (1010) wird bestimmt, ob die zurückgegebene topologische Distanz zwischen mindestens zwei virtuellen Maschinen (1012) besteht. Fällt die Antwort auf die Bestimmung in Schritt (1012) positiv aus, wird ein Shared Memory-Channel für die Datenkommunikation zwischen virtuellen Maschinen zwischen zwei virtuellen Maschinen erstellt, die auf der gleichen physischen Maschine lokal vorhanden sind (1014). Durch Erstellen des Shared Memory-Channels wird die effiziente Datenübertragung zwischen den beiden virtuellen Maschinen unterstützt. Im Besonderen kann eine Speicherkopie für die Kommunikation zwischen den virtuellen Maschinen genutzt werden, wodurch die Kommunikation über einen virtuellen Netzwerkstapel vermieden wird (1016). Umgekehrt wird bei einer negativen Antwort auf die Bestimmung in Schritt (1012) in der Folge der virtuelle Netzwerkstapel zur Kommunikation zwischen den virtuellen Maschinen genutzt, die den zugewiesenen Job (1018) unterstützen. Dementsprechend kann die physische Nähe der virtuellen Maschinen zu einer effizienten Übertragung der Kommunikation zwischen virtuellen Maschinen beitragen.Job assignment in step ( 1008 ) can be to a virtual machine or multiple virtual machines. Likewise, the job can be a read job or a write job. In both scenarios, a virtual topological distance is returned in response to the job assignment ( 1010 ). The virtual topological distance may be a distance between two or more virtual machines when the job is assigned to multiple machines, or the virtual topological distance may be between a virtual machine and a data block if the job is a single virtual machine for a read or write Write job supported. In the following step ( 1010 ) determines whether the returned topological distance between at least two virtual machines ( 1012 ) consists. If the answer to the determination falls in step ( 1012 ), creates a shared memory channel for data communication between virtual machines between two virtual machines that reside locally on the same physical machine ( 1014 ). Creating the shared memory channel supports efficient data transfer between the two virtual machines. In particular, a memory copy may be used for communication between the virtual machines, thereby avoiding communication over a virtual network stack ( 1016 ). Conversely, if there is a negative answer to the determination in step ( 1012 ) used in the sequence of virtual network stacks for communication between the virtual machines that the assigned job ( 1018 ) support. Accordingly, the physical proximity of the virtual machines can contribute to an efficient transmission of the communication between virtual machines.

Eine physische Maschine unterstützt die virtuelle Maschine und Datenblöcke unterstützen den Job. Der Speicherort der Datenblöcke im gemeinsamen Pool wirkt sich auf die Zuweisung des Jobs zur physische Maschine und die zugehörige(n) virtuelle(n) Maschine(n) aus. Im Besonderen stellt eine effiziente Verwendung der Ressourcen im gemeinsamen Pool die physische Nähe der physischen Maschine zu den Datenblöcken sicher. In einer Ausführungsform wird der Job einer physischen Maschine im gleichen physischen Datencenter wie die abhängigen Datenblöcke zugeordnet. Dementsprechend besteht ein Teil des Zuweisungsprozesses des Jobs in Schritt (1008) in der Sicherstellung, dass ein physischer Speicherort der Datenblöcke im gemeinsamen Pool den Job unterstützt. Zusätzlich zum Speicherort der Blöcke ist die Bandbreite der zugrundeliegenden physischen Maschine zur Unterstützung des Jobs entscheidend. Der Schritt der Nutzung der Speichertopologieinformationen in Schritt (1008) kann einen oder mehrere weitere Schritte erforderlich machen. 11 ist ein Flussdiagramm (1100), das die weiteren Schritte zur Unterstützung des Aspekts der Speichertopologienutzung des gemeinsamen Pools von Ressourcen veranschaulicht. Wie oben beschrieben, wird als Reaktion auf die Speichertopologie eine virtuelle Maschine angegeben, die den Job zur Verarbeitung erhält (1102). Vor der konkreten Jobverarbeitung werden Nutzungsinformationen der physischen Maschine, die für die virtuelle Maschine lokal vorliegt, bestimmt (1104). Die Nutzungsinformationen beinhalten, ohne jedoch darauf beschränkt zu sein, die Verarbeitungseinheit und Netzwerknutzungsinformationen. Es wird bestimmt, ob die zugrundeliegende physische Maschine über die Bandbreite und die Fähigkeit zur Unterstützung des Jobs verfügt (1106). Bei einer negativen Antwort auf die Bestimmung in Schritt (1106) wird zur Auswahl und Zuordnung einer anderen virtuellen Maschine im gemeinsamen Pool zurückgegangen. Demgegenüber ist eine positive Antwort für die Bestimmung in Schritt (1106) ein Hinweis darauf, dass die ausgewählte virtuelle Maschine sowohl eine ausreichende Bandbreite zur Unterstützung des Jobs als auch eine nahe topologische Distanz zum physischen Speicherort des den Job unterstützenden Datenblocks/der Datenblöcke besitzt (1108). In einer Ausführungsform beinhaltet die nahe topologische Distanz, ohne jedoch darauf beschränkt zu sein, Daten, die sich im gleichen Datencenter wie die virtuelle Maschine befinden. Demgemäß beinhaltet der Aspekt der Speichertopologienutzung eine Auswertung der Operation der Maschine zusammen mit dem Speicherort der den Job unterstützenden Daten. A physical machine supports the virtual machine and data blocks support the job. The location of the data blocks in the shared pool affects the assignment of the job to the physical machine and the associated virtual machine (s). In particular, efficient use of resources in the shared pool ensures the physical proximity of the physical machine to the data blocks. In one embodiment, the job is assigned to a physical machine in the same physical datacenter as the dependent data blocks. Accordingly, part of the assignment process of the job is in step ( 1008 ) ensuring that a physical location of the data blocks in the shared pool supports the job. In addition to the location of the blocks, the bandwidth of the underlying physical machine to support the job is critical. The step of using the storage topology information in step ( 1008 ) may require one or more additional steps. 11 is a flowchart ( 1100 ) illustrating the further steps to support the storage topology usage of the shared pool of resources. As described above, in response to the storage topology, a virtual machine is specified that receives the job for processing ( 1102 ). Before the actual job processing, usage information of the physical machine that is local to the virtual machine is determined ( 1104 ). The usage information includes, but is not limited to, the processing unit and network usage information. It determines if the underlying physical machine has the bandwidth and ability to support the job ( 1106 ). If there is a negative answer to the determination in step ( 1106 ) will go back to the selection and assignment of another virtual machine in the shared pool. In contrast, a positive answer for the determination in step ( 1106 ) an indication that the selected virtual machine has both sufficient bandwidth to support the job and a near topological distance to the physical location of the job supporting data block (s) ( 1108 ). In one embodiment, the near topological distance includes, but is not limited to, data residing in the same data center as the virtual machine. Accordingly, the memory topology usage aspect includes an evaluation of the operation of the machine along with the location of the data supporting the job.

Wie in 1011 dargestellt, ist ein Verfahren vorgesehen, um die topologische Organisation der Maschinen zusammen mit dem Speicherort der den Job unterstützenden Datenblöcke für eine intelligente Zuweisung eines Jobs zu nutzen. Der Job wird einer Maschine zugeordnet, für die ausgewertet wurde, dass sie eine effiziente Verarbeitung unterstützt. 12 stellt ein Blockdiagramm (1200) dar, das in einem Computersystem integrierte Tools zur Unterstützung einer Technik veranschaulicht, die für die Auswertung der Ressourcennutzung für die Zuweisung eines Jobs in einem gemeinsamen Pool von Ressourcen zum Einsatz kommen. Im Besonderen wird ein gemeinsamer Pool konfigurierbar Computerressourcen mit einem ersten Datencenter (1210), einem zweiten Datencenter (1230) und einem dritten Datencenter (1250) dargestellt. Obwohl in dem Beispiel drei Datencentren dargestellt werden, sollte die Erfindung nicht auf diese Anzahl von Datencentern im Computersystem beschränkt sein. Ein jedes der Datencenter stellt eine Computingressource dar. Demgemäß können ein oder mehrere Datencenter eingesetzt werden, um die effiziente und intelligente Zuweisung von Jobs bezüglich der Ressourcennutzung und der Nähe zu den den Job/die Jobs unterstützenden Datenblöcken zu unterstützen.As in 10 - 11 A method is provided for utilizing the topological organization of the machines along with the location of the job supporting data blocks for intelligent assignment of a job. The job is assigned to a machine that has been evaluated to support efficient processing. 12 represents a block diagram ( 1200 ), which illustrates technology support tools integrated into a computer system that are used to evaluate resource usage for assigning a job to a common pool of resources. In particular, a shared pool will be configurable computer resources with a first data center ( 1210 ), a second data center ( 1230 ) and a third data center ( 1250 ). Although three data centers are shown in the example, the invention should not be limited to this number of data centers in the computer system. Each of the datacenters represents a computing resource. Accordingly, one or more datacenters may be employed to assist the efficient and intelligent allocation of jobs in resource utilization and proximity to the job / job supporting data blocks.

Ein jedes der Datencenter im System wird mit wenigstens einem Server bereitgestellt, der in Kommunikation mit dem Datenspeicher steht. Im Besonderen wird das erste Datencenter (1210) mit einem ersten Server (1220) mit einer Verarbeitungseinheit (1222) bereitgestellt, die über einen Bus (1226) mit einem Speicher (1224) in Kommunikation steht und in Kommunikation mit einem Datenspeicher (1228) steht; das zweite Datencenter (1230) wird mit einem zweiten Server (1240) bereitgestellt, der eine Verarbeitungseinheit (1242) aufweist, die über einen Bus (1246) in Kommunikation mit einem Speicher (1244) steht und in Kommunikation mit einem zweiten lokalen Speicher (1248) steht; und das dritte Datencenter (1250) wird mit einem dritten Server (1260) mit einer Verarbeitungseinheit (1262) bereitgestellt, die über einen Bus (1266) mit einem Speicher (1264) in Kommunikation steht und mit einem dritten lokalen Speicher (1268) in Kommunikation steht. Der erste Server (1022) wird in diesem Dokument auch alles ein physischer Host bezeichnet. Die Kommunikation zwischen den Datencentern wird über eine oder mehrere Netzwerkverbindungen (1205) unterstützt.Each of the data centers in the system is provided with at least one server in communication with the data store. In particular, the first data center ( 1210 ) with a first server ( 1220 ) with a processing unit ( 1222 ) provided via a bus ( 1226 ) with a memory ( 1224 ) is in communication and in communication with a data store ( 1228 ) stands; the second data center ( 1230 ) is connected to a second server ( 1240 ), comprising a processing unit ( 1242 ), which via a bus ( 1246 ) in communication with a memory ( 1244 ) and in communication with a second local memory ( 1248 ) stands; and the third data center ( 1250 ) is connected to a third server ( 1260 ) with a processing unit ( 1262 ) provided via a bus ( 1266 ) with a memory ( 1264 ) is in communication with a third local memory ( 1268 ) is in communication. The first server ( 1022 ), everything in this document is called a physical host. Communication between the data centers is through one or more network connections ( 1205 ) supported.

Der zweite Server (1240) enthält zwei virtuelle Maschinen (1232) und (1236). Die erste virtuelle Maschine (1232) verfügt über einen integrierten Agent (1232a), und die zweite virtuelle Maschine (1236) verfügt über einen integrierten Agent (1236a). Darüber hinaus enthält der zweites Server (1240) einen Monitor (1234), um die Kommunikation jeweils mit der ersten und der zweiten virtuellen Maschine (1232) und (1236) zu vereinfachen. Der dritte Server (1260) enthält zwei virtuelle Maschinen (1252) und (1256). Die erste virtuelle Maschine (1252) verfügt über einen integrierten Agent (1252a), und die zweite virtuelle Maschine (1256) verfügt über einen integrierten Agent (1256a). Darüber hinaus enthält der dritte Server (1260) einen Monitor (1254), um die Kommunikation jeweils mit der ersten und zweiten virtuellen Maschine (1252) und (1256) zu vereinfachen. Obwohl nur zwei virtuelle Maschinen (1232) und (1236) als in Kommunikation mit dem zweiten Server (1240) befindlich dargestellt sind und nur zwei virtuelle Maschinen (1252) und (1256) als in Kommunikation mit dem dritten Server (1260) befindlich dargestellt sind, soll die Erfindung nicht auf diese Anzahl beschränkt sein, da diese Anzahl nur zum Zwecke der Veranschaulichung verwendet wird. Die Anzahl der virtuellen Maschinen, die jeweils in Kommunikation mit dem zweiten und dritten Server (1240) und (1260) stehen, kann jeweils erhöht oder verringert werden.The second server ( 1240 ) contains two virtual machines ( 1232 ) and ( 1236 ). The first virtual machine ( 1232 ) has an integrated agent ( 1232a ), and the second virtual machine ( 1236 ) has an integrated agent ( 1236a ). In addition, the second server ( 1240 ) a monitor ( 1234 ), around communication with each of the first and second virtual machines ( 1232 ) and ( 1236 ). The third server ( 1260 ) contains two virtual machines ( 1252 ) and ( 1256 ). The first virtual machine ( 1252 ) has an integrated agent ( 1252a ), and the second virtual machine ( 1256 ) has an integrated agent ( 1256a ). In addition, the third server ( 1260 ) a monitor ( 1254 ) to communicate with each of the first and second virtual machines ( 1252 ) and ( 1256 ). Although only two virtual machines ( 1232 ) and ( 1236 ) than in communication with the second server ( 1240 ) and only two virtual machines ( 1252 ) and ( 1256 ) than in communication with the third server ( 1260 ) are shown, the invention should not be limited to this number, since this number is used only for the purpose of illustration. The number of virtual machines, each in communication with the second and third servers ( 1240 ) and ( 1260 ) can each be increased or decreased.

Wie in diesem Dokument dargestellt, unterstützt jeweils jeder von zweitem und drittem Server (1240) und (1260) jeweils zwei virtuelle Maschinen (1232), (1236) und (1252), (1256). Der Monitor (1234) des Servers (1230) erhebt Statusdaten von jeder der virtuellen Maschinen (1232) und (1236). Der Monitor (1234) kommuniziert mit integrierten Agents (1232a) und (1236a), um jeweils den virtuellen Maschinen-Status von den virtuellen Maschinen (1232) und (1236) zu erheben. Ebenso erhebt der Monitor (1254) Statusdaten jeweils von jeder der virtuellen Maschinen (1252) und (1256) und im Besonderen von den integrierten Agents (1252a) und (1256a).As shown in this document, each of the second and third servers ( 1240 ) and ( 1260 ) each two virtual machines ( 1232 ) 1236 ) and ( 1252 ) 1256 ). The display ( 1234 ) of the server ( 1230 ) collects status data from each of the virtual machines ( 1232 ) and ( 1236 ). The display ( 1234 ) communicates with integrated agents ( 1232a ) and ( 1236a ) to view the virtual machine status of the virtual machines ( 1232 ) and ( 1236 ) to raise. Likewise, the monitor ( 1254 ) Status data from each of the virtual machines ( 1252 ) and ( 1256 ) and in particular the integrated agents ( 1252a ) and ( 1256a ).

Der erste Server (1220) wird mit einer Funktionseinheit (1270) bereitgestellt, die eine oder mehrere Tools zur Unterstützung der intelligenten Zuweisung von einem oder mehreren Jobs im gemeinsamen Pool von Ressourcen aufweist. Die Funktionseinheit (1270) wird für das erste Datencenter (1210) lokal und im Besonderen in Kommunikation mit dem Speicher (1224) dargestellt. In einer Ausführungsform kann die Funktionseinheit (1270) lokal zu einem der Datencenter in dem gemeinsamen Pool von Ressourcen angeordnet sein. Die in der Funktionseinheit (1270) integrierten Tools beinhalten, ohne jedoch darauf beschränkt zu sein, einen Director (1272), einen Topologiemanager (1274), einen Hook-Manager (1276), einen Speichertopologiemanager (1278), einen Ressourcennutzungsmanager (1280) und einen Anwendungsmanager (1282).The first server ( 1220 ) is connected to a functional unit ( 1270 ), which includes one or more tools to help intelligently assign one or more jobs to the common pool of resources. The functional unit ( 1270 ) is used for the first data center ( 1210 ) locally and in particular in communication with the memory ( 1224 ). In one embodiment, the functional unit ( 1270 ) may be located locally to one of the datacenters in the shared pool of resources. The in the functional unit ( 1270 integrated tools include, but are not limited to, a director ( 1272 ), a topology manager ( 1274 ), a hook manager ( 1276 ), a memory topology manager ( 1278 ), a Resource Usage Manager ( 1280 ) and an application manager ( 1282 ).

Der Director (1272) ist in dem gemeinsamen Pool vorgesehen, um in periodischen Abständen mit den Monitoren (1234) und (1254) zu kommunizieren, um eine Speichertopologie, die einer virtuellen Topologie des gemeinsamen Pools von Ressourcen zugrundeliegt, zusammen mit zugehörigen Ressourcennutzungsinformationen an einem einzelnen Speicherort zu organisieren und beizubehalten. Im Besonderen unterstützt die Kommunikation des Director (1272) mit den Monitoren (1234) und (1254) das Erfassen und Organisieren der Topologie des gemeinsamen Pools von Ressourcen. Durch das Organisieren und das Verständnis der Topologiedaten kann der Director (1272) die Ressourcennutzungsinformationen zur intelligenten Zuweisung eines Jobs an eine oder mehrere der gemeinsamen Ressourcen im Pool nutzen, und das auf eine Weise, die die effiziente Leistung des zum Job gehörenden I/O unterstützt. Demgemäß erfasst der Director (1272) die Topologie und nutzt diese, um die effiziente Verarbeitung von Lese- und Schreibjobs im gemeinsamen Pool von Ressourcen zu unterstützen.The Director ( 1272 ) is provided in the common pool to periodically communicate with the monitors ( 1234 ) and ( 1254 ) to organize and maintain a storage topology underlying a virtual topology of the shared pool of resources along with associated resource utilization information in a single storage location. In particular, the communication of the Director ( 1272 ) with the monitors ( 1234 ) and ( 1254 ) capturing and organizing the topology of the shared pool of resources. By organizing and understanding the topology data, the director ( 1272 ) use the resource utilization information to intelligently assign a job to one or more of the shared resources in the pool in a manner that supports the efficient performance of the job-associated I / O. Accordingly, the Director ( 1272 ) the topology and uses it to support the efficient processing of read and write jobs in the shared pool of resources.

Wie oben beschrieben, werden verschiedene Manager zur Unterstützung der Funktionalität des Directors (1272) bereitgestellt. Der Topologiemanager (1274), der mit dem Director (1272) in Kommunikation steht, gibt in seiner Funktion dem Director (1272) virtuelle topologische Distanzdaten zurück. Zu den virtuellen topologischen Distanzdaten gehören, ohne jedoch darauf beschränkt zu sein, eine Distanz zwischen zwei virtuellen Maschinen und eine Distanz zwischen einer virtuellen Maschine und einem Datenblock. Zum Beispiel werden zwei virtuelle Maschinen, die mit dem gleichen Server in Kommunikation stehen, als in einer vergleichsweisen engen Nähe zueinander befindlich betrachtet. Eine zweite virtuelle Maschine, die mit einem zweiten Server in Kommunikation steht, und eine dritte virtuelle Maschine, die mit einen dritten Server in Kommunikation steht, werden jedoch im Vergleich zu den zwei virtuellen Maschinen, die in Kommunikation mit dem gleichen Server stehen, als vergleichsweise entfernt betrachtet. Der Speichertopologiemanager (1278), der mit dem Director (1272) in Kommunikation steht, gibt in seiner Funktion einen physischen Speicherort von einem oder mehreren Datenblöcken zur Unterstützung eines Jobs im gemeinsamen Pool von Ressourcen zurück. In einer Ausführungsform gibt der Speichertopologiemanager (1278) den physischen Speicherort der Datenblöcke dem Director (1272) zurück, wodurch der Director einer virtuellen Maschine auf intelligente Weise einen Job als Reaktion auf den Speicherort des/der abhängigen Datenblocks/Datenblöcke zuweisen kann. Demgemäß adressiert der Topologiemanager (1274) in seiner Funktion Distanzen in der Hierarchie bezüglich der effizienten Jobverarbeitung, und der Speichertopologiemanager (1278) adressiert in seiner Funktion den Speicherort des den Job unterstützenden Datenblocks.As described above, various managers are supported to support the functionality of the director ( 1272 ) provided. The topology manager ( 1274 ), who works with the director ( 1272 ) communicates in its function to the Director ( 1272 ) return topological distance data. Virtual topological distance data includes, but is not limited to, a distance between two virtual machines and a distance between a virtual machine and a data block. For example, two virtual machines in communication with the same server are considered to be in relatively close proximity to each other. However, a second virtual machine in communication with a second server and a third virtual machine in communication with a third server are considered to be relatively comparable to the two virtual machines in communication with the same server considered remotely. The memory topology manager ( 1278 ), who works with the director ( 1272 ) is in its function to return a physical location of one or more blocks of data to support a job in the common pool of resources. In one embodiment, the memory topology manager ( 1278 ) the physical location of the data blocks to the director ( 1272 ), which allows the director of a virtual machine to intelligently assign a job in response to the location of the dependent data block (s). Accordingly, the topology manager ( 1274 ) in its function distances in the hierarchy with regard to the efficient job processing, and the memory topology manager ( 1278 ) addresses in its function the location of the data block supporting the job.

Ferner werden drei weitere Manager bereitgestellt, darunter ein Ressourcennutzungsmanager (1280), ein Anwendungsmanager (1282) und ein Hook-Manager (1274). Der Ressourcennutzungsmanager (1280) verwaltet in seiner Funktion die Nutzung von einer oder mehreren physischen oder virtuellen Ressourcen. Jede Ressource hat ihre eigenen Beschränkungen. Der Ressourcennutzungsmanager (1280) gibt Nutzungsinformationen einer Verarbeitungseinheit und Netzwerknutzungsinformationen, die zu den zugrundeliegenden physischen und virtuellen Maschinen gehören, an den Director (1272) zurück. Der Anwendungsmanager (1282), der in Kommunikation mit dem Ressourcennutzungsmanager (1280) steht, weist den Job einer virtuellen Maschine in Reaktion auf die Ressourcennutzungsinformationen zu. Im Besonderen stellt der Anwendungsmanager (1282) sicher, dass die Zuweisung eines Jobs zu einer Maschine in der Topologie sicherstellt, dass die Maschine über eine ausreichende Bandbreite zur Unterstützung des Jobs wie auch eine ausreichende nahe topologische Distanz zu den den Job unterstützenden Datenblöcken verfügt. Dementsprechend werden vom Ressourcennutzungsmanager (1280) und den Anwendungsmanager (682) jeweils sowohl die Nutzung wie auch die Bandbreite berücksichtigt.It will also provide three additional managers, including a Resource Usage Manager ( 1280 ), an application manager ( 1282 ) and a hook manager ( 1274 ). The Resource Usage Manager ( 1280 ) manages in its function the use of one or more physical or virtual resources. Each resource has its own limitations. The Resource Usage Manager ( 1280 ) gives Usage information of a processing unit and network usage information belonging to the underlying physical and virtual machines to the director ( 1272 ) back. The application manager ( 1282 ) in communication with the Resource Usage Manager ( 1280 ) assigns the job to a virtual machine in response to the resource usage information. In particular, the application manager ( 1282 ) sure that assigning a job to a machine in the topology ensures that the machine has sufficient bandwidth to support the job as well as a sufficient near-topological distance to the data blocks supporting the job. Accordingly, the Resource Usage Manager ( 1280 ) and the application manager ( 682 ) takes into account both the usage and the bandwidth.

Zusätzlich zu den detailliert oben beschriebenen Managern dient der Hook-Manager (674) zur Vereinfachung der Kommunikation zwischen virtuellen Maschinen. Im Besonderen wird der Hook-Manager (674), der in Kommunikation mit dem Director (672) steht, bereitgestellt, um einen Shared Memory-Channel für die Kommunikation zwischen virtuellen Maschinen zu erstellen. Der Shared Memory-Channel vereinfacht die Kommunikation zwischen zwei virtuellen Maschinen, die sich auf der gleichen physischen Maschine befinden, indem ermöglicht wird, dass die Datenübertragung zwischen zwei solchen virtuellen Maschinen im gleichen Speicherstapel stattfinden kann, z. B. über den Memory-Channel. Dementsprechend unterstützt der vom Hook-Manager (674) erstellte Shared Memory-Channel die effiziente Datenkommunikation in der hierarchischen Struktur des gemeinsamen Pools von Ressourcen.In addition to the managers described in detail above, the Hook Manager ( 674 ) to facilitate communication between virtual machines. In particular, the hook manager ( 674 ), who in communication with the Director ( 672 ) is provided to create a shared memory channel for communication between virtual machines. The shared memory channel facilitates communication between two virtual machines residing on the same physical machine by allowing data transfer between two such virtual machines to occur in the same memory stack, e.g. B. over the memory channel. Accordingly, the hook manager ( 674 ) created shared memory channel efficient data communication in the hierarchical structure of the pool of resources.

Wie oben bestimmt, werden der Director (1272), der Topologiemanager (1274), der Hook-Manager (1276), der Speichertopologiemanager (1278), der Ressourcennutzungsmanager (1280) und der Anwendungsmanager (1282) lokal im ersten Datencenter (1210) als in der Funktionseinheit (1270) des Servers (1220) befindlich dargestellt. Obwohl in einer Ausführungsform die Funktionseinheit (1270) und der jeweils zugeordnete Director und die Manager als Hardwaretools extern zum Speicher (1224) des Servers (1220) des ersten Datencenters (1210) vorhanden sein können, können sie als eine Kombination aus Hardware und Software implementiert werden, oder sie können sich lokal im zweiten Datencenter (1230) oder im dritten Datencenter (1250) im gemeinsamen Pool von Ressourcen befinden. Ebenso können in einer Ausführungsform der Director und die Manager in einem einzelnen Funktionselement vereint werden, das die Funktionalität der einzelnen Elemente beinhaltet. Wie in diesem Dokument dargestellt, ist jeder von Director und den Managern in einem Datencenter lokal dargestellt. In einer Ausführungsform können sie jedoch zusammen oder einzeln über den gemeinsamen Pool der konfigurierbaren Computerressourcen verteilt sein und als Einheit fungieren, um die Topologie der Verarbeitungseinheiten und der Datenspeicherung im gemeinsamen Pool auszuwerten, und um einen oder mehrere Jobs in Reaktion auf die Hierarchie zu verarbeiten. Dementsprechend können die Manager als Softwaretools, Hardwaretools oder eine Kombination aus Software- und Hardwaretools implementiert werden.As stated above, the Director ( 1272 ), the topology manager ( 1274 ), the hook manager ( 1276 ), the storage topology manager ( 1278 ), the Resource Usage Manager ( 1280 ) and the application manager ( 1282 ) locally in the first data center ( 1210 ) than in the functional unit ( 1270 ) of the server ( 1220 ) are shown. Although in one embodiment the functional unit ( 1270 ) and its associated director and managers as hardware tools external to memory ( 1224 ) of the server ( 1220 ) of the first data center ( 1210 ) can be implemented as a combination of hardware and software, or they can be located locally in the second data center ( 1230 ) or in the third data center ( 1250 ) are located in the common pool of resources. Similarly, in one embodiment, the director and the managers may be merged into a single functional element that incorporates the functionality of the individual elements. As shown in this document, each of Director and the managers in a datacenter is represented locally. However, in one embodiment, they may be distributed together or individually over the common pool of configurable computer resources and act as a unit to evaluate the topology of the processing units and data storage in the shared pool and to process one or more jobs in response to the hierarchy. Accordingly, the managers may be implemented as software tools, hardware tools, or a combination of software and hardware tools.

Fachleute werden verstehen, dass Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt ausgeführt werden können. Demgemäß können Aspekte der vorliegenden Erfindung die Form einer reinen Hardwareausführungsform annehmen, einer reinen Softwareausführungsform (einschließlich Firmware, speicherresidenter Software, Mikrocode usw.) oder einer Ausführungsform, die Software- und Hardwareaspekte vereint, die im Allgemeinen hier alle als „Schaltkreis“, „Modul“ oder „System“ bezeichnet werden können. Weiterhin können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem computerlesbaren Medium oder mehreren computerlesbaren Medien, die computerlesbaren Programmcode enthalten, verkörpert ist.Those skilled in the art will appreciate that aspects of the present invention may be practiced as a system, method, or computer program product. Accordingly, aspects of the present invention may take the form of a pure hardware embodiment, a pure software embodiment (including firmware, memory resident software, microcode, etc.), or an embodiment that combines software and hardware aspects, generally referred to herein as "circuit," "module "Or" system "can be called. Further, aspects of the present invention may take the form of a computer program product embodied in a computer readable medium or multiple computer readable media containing computer readable program code.

Jede Kombination aus einem computerlesbaren Medium oder mehreren computerlesbaren Medien kann verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann zum Beispiel, ohne jedoch darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, -vorrichtung, -einrichtung oder jede geeignete Kombination aus den Vorhergehenden sein. Zu den weiteren speziellen Beispielen (eine nicht erschöpfende Liste) von computerlesbaren Speichermedien gehören folgende: eine elektrische Verbindung mit einem oder mehreren Kabeln, eine tragbare Computerdiskette, eine Festplatte, Direktzugriffsspeicher (RAM bzw. Random Access Memory), Festspeicher (ROM bzw. Read-only Memory), ein löschbarer programmierbarer Festspeicher (EPROM- oder Flash-Speicher), eine Glasfaser, ein tragbarer Compact Disc-Festspeicher (CD-ROM bzw. Compact Disc Read-only Memory), eine optische Speichervorrichtung, eine magnetische Speichervorrichtung oder jede geeignete Kombination des Vorhergehenden. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes materielle Medium sein, das ein Programm für die Verwendung durch oder in Verbindung mit einem Anweisungsausführungssystem, einer Anweisungsausführungsvorrichtung oder einem Anweisungsausführungsvorrichtung speichern kann.Any combination of a computer-readable medium or multiple computer-readable media may be used. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. For example, a computer-readable storage medium may be, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, device, device, or any suitable combination of the foregoing. Other specific examples (non-exhaustive list) of computer readable storage media include: an electrical connection to one or more cables, a portable computer diskette, a hard disk, Random Access Memory (RAM), Read Only Memory (ROM). only memory), an erasable programmable read only memory (EPROM or flash memory), a glass fiber, a compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device or any other suitable Combination of the foregoing. In the context of this document, a computer readable storage medium may be any material medium that includes a program for use by or in connection with a computer program An instruction execution system, an instruction execution device, or an instruction execution device.

Zu den computerlesbaren Signalmedien kann ein weitergeleitetes Datensignal mit computerlesbarem Programmcode darin gehören, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Solch ein weitergeleitetes Signal kann eine beliebige einer Vielzahl an Formen annehmen, einschließlich, ohne jedoch darauf beschränkt zu sein, eine elektromagnetische Form, optische Form oder jede geeignete Kombination davon. Ein computerlesbares Signalmedium kann ein beliebiges computerlesbares Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung oder in Verbindung mit einem Anweisungsausführungssystem, einer Anweisungsausführungsvorrichtung oder einem Anweisungsausführungsvorrichtung kommunizieren, weiterleiten oder transportieren kann.The computer readable signal media may include a forwarded data signal having computer readable program code therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, an electromagnetic form, optical form, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that may communicate, forward, or transport a program for use or in connection with an instruction execution system, an instruction execution device, or an instruction execution device.

Auf einem computerlesbaren Medium enthaltener Programmcode kann mit einem angemessenen Medium übertragen werden, darunter, ohne jedoch darauf beschränkt zu sein, Funk, Kabel, Glasfaser, HF oder jede geeignete Kombination aus dem vorhergehenden.Program code contained on a computer-readable medium may be transmitted with an appropriate medium including, but not limited to, radio, cable, fiber, HF, or any suitable combination of the foregoing.

Computerprogrammcode zum Ausführen der Operationen für Aspekte der vorliegenden Erfindung kann in jeder beliebigen Kombination einer oder mehrerer Sprachen geschrieben sein, darunter objektorientierte Programmiersprachen wie Java, Smalltalk, C++ oder Ähnliches und herkömmliche prozedurale Programmiersprachen, wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Der Programmcode kann ganz auf dem Rechner des Benutzers ausgeführt werden, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernten Computer oder ganz auf dem entfernten Computer oder Server. Im letzteren Szenario kann der Ferncomputer mit dem Computer des Benutzers über jede Art von Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN bzw. Local Area Network) oder ein Weitverkehrsnetzwerk (WAN bzw. Wide Area Network), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet mit einem Internetdienstanbieter).Computer program code for performing the operations for aspects of the present invention may be written in any combination of one or more languages, including object-oriented programming languages such as Java, Smalltalk, C ++ or the like and conventional procedural programming languages such as the "C" programming language or similar programming languages. The program code may be executed entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be to an external network Computer (for example, over the Internet with an internet service provider).

Aspekte der vorliegenden Erfindung werden in diesem Dokument mit Bezugnahme auf Flussdiagrammabbildungen und/oder Blockdiagramme von Verfahren, Vorrichtungen (Systeme) und Computerprogrammprodukten gemäß den Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Flussdiagrammabbildungen und/oder Blockdiagramme und Kombinationen der Blöcke in den Flussdiagrammabbildungen und/oder Blockdiagrammen durch Computerprogrammanweisungen implementiert werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Standardcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zur Implementierung der im Flussdiagramm und/oder Blockdiagrammblock bzw. -blöcken angegebenen Funktionen/Vorgänge erstellen.Aspects of the present invention will be described in this document with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It is understood that each block of the flowchart illustrations and / or block diagrams and combinations of the blocks in the flowchart illustrations and / or block diagrams can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a standard computer, a special purpose computer, or other programmable computing device to generate a machine such that the instructions executed via the processor of the computer or other programmable computing device include means for implementing the flowchart and / or or block block or blocks specified functions / operations.

Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Vorrichtungen anweisen kann, in einer bestimmten Weise zu funktionieren, sodass die auf dem computerlesbaren Medium gespeicherten Anweisungen ein Produkt erstellen, das Anweisungen aufweist, die die Funktion/den Vorgang implementieren, der/die im Flussdiagramm und/oder Blockdiagrammblock bzw. -blöcke angegeben sind.These computer program instructions may also be stored in a computer readable medium that may instruct a computer, other programmable computing device, or other devices to function in a particular manner such that the instructions stored on the computer readable medium produce a product having instructions that include the instructions To implement the function / task specified in the flowchart and / or block diagram block (s).

Die Computerprogrammanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Vorrichtungen geladen werden, um die Durchführung einer Reihe operativer Schritte auf dem Computer oder auf anderen programmierbaren Vorrichtungen oder anderen Vorrichtungen zu veranlassen, um einen computerimplementierten Prozess zu erzeugen, sodass die auf dem Computer oder der programmierbaren Vorrichtung ausgeführten Anweisungen die Prozesse zum Implementieren der Funktionen/Vorgänge bereitstellen, die in dem Flussdiagramm und/oder Blockdiagrammblock bzw. -blöcken angegeben sind.The computer program instructions may also be loaded onto a computer, other programmable computing device, or other device to cause a series of operational steps to be performed on the computer or other programmable devices or other devices to generate a computer-implemented process Instructions provided by the computer or the programmable device provide the processes for implementing the functions / operations indicated in the flowchart and / or block diagram blocks.

Es wird nun auf 13 Bezug genommen, die ein Blockdiagramm (1300) darstellt, das ein System zur Implementierung einer Ausführungsform der vorliegenden Erfindung darstellt. Das Computersystem enthält eine oder mehrere Prozessoren, wie einen Prozessor (1302). Der Prozessor (1302) ist mit einer Kommunikationsinfrastruktur (1304) verbunden (z. B. einem Kommunikationsbus, einer Cross-Over-Verbindung oder einem Netzwerk). Das Computersystem kann eine Anzeigeschnittstelle (1306) enthalten, die Grafiken, Text und andere Daten von der Kommunikationsinfrastruktur (1304) (oder von einem nicht dargestellten Frame Buffer) zur Anzeige auf eine Anzeigeeinheit (1308) weiterleitet. Das Computersystem kann auch einen Hauptspeicher (1310) enthalten, vorzugsweise einen Direktzugriffsspeicher (RAM, Random Access Memory), und es kann auch einen sekundären Speicher (1312) enthalten. Der sekundäre Speicher (1312) kann beispielsweise ein Festplattenlaufwerk (1314) und/oder ein Laufwerk für entfernbare Speichermedien (1316) enthalten, das zum Beispiel ein Diskettenlaufwerk, ein Magnetbandlaufwerk oder ein Laufwerk für optische Speichermedien darstellt. Das Laufwerk für entfernbare Speichermedien (1316) liest von und/oder schreibt auf eine entfernbare Speichermedieneinheit (1318) in einer Weise, die Fachleuten wohlbekannt ist. Die entfernbare Speichereinheit (1318) stellt zum Beispiel eine Diskette, eine CD, ein Magnetband oder eine optische Platte usw. dar, die von dem Laufwerk für entfernbare Speichermedien (1316) gelesen sowie davon darauf geschrieben wird. Dabei ist zu beachten, dass die entfernbare Speichereinheit (1318) ein computerlesbares Medium enthält, auf dem die Computersoftware und/oder die Daten gespeichert sind. In alternativen Ausführungsformen kann der zweite Speicher (1312) andere ähnliche Mittel enthalten, damit Computerprogramme oder andere Anweisungen auf das Computersystem geladen werden können. Zu diesen Mitteln können beispielsweise eine entfernbare Speichereinheit (1320) und eine Schnittstelle (1322) gehören. Zu den Beispielen dieser Mittel können ein Programmpaket und eine Paketschnittstelle (wie sie im Videospielgeräten zu finden sind), ein entfernbarer Speicherchip (wie ein EPROM oder PROM) und ein zugehöriges Socket und andere entfernbare Speichereinheiten (1320) und Schnittstellen (1322) gehören, mit denen Software und Daten von der entfernbaren Speichereinheit (1320) auf das Computersystem übertragen werden können.It will be up now 13 Reference is made to a block diagram ( 1300 ), which is a system for implementing an embodiment of the present invention. The computer system includes one or more processors, such as a processor ( 1302 ). The processor ( 1302 ) is connected to a communication infrastructure ( 1304 ) (eg a communication bus, a cross-over connection or a network). The computer system may have a display interface ( 1306 ) containing graphics, text and other data from the communication infrastructure ( 1304 ) (or from a frame buffer, not shown) for display on a display unit ( 1308 ). The computer system can also store a main memory ( 1310 ), preferably a Random Access Memory (RAM), and may also include a secondary memory ( 1312 ) contain. The secondary storage ( 1312 ), for example, a hard disk drive ( 1314 ) and / or a drive for removable storage media ( 1316 ), which is, for example, a floppy disk drive, a magnetic tape drive, or an optical disk drive. The drive for removable storage media ( 1316 ) reads from and / or writes to a removable storage media device ( 1318 ) in a manner well known to those skilled in the art. The removable storage unit ( 1318 ) represents, for example, a floppy disk, a CD, a magnetic tape or an optical disk, etc., which are accessible from the removable storage drive (FIG. 1316 ) and written on it. It should be noted that the removable storage unit ( 1318 ) contains a computer readable medium storing the computer software and / or the data. In alternative embodiments, the second memory may be ( 1312 ) contain other similar means for loading computer programs or other instructions onto the computer system. For example, a removable storage unit ( 1320 ) and an interface ( 1322 ) belong. Examples of these means may include a program package and a package interface (as found in video game equipment), a removable memory chip (such as an EPROM or PROM), and an associated socket and other removable storage devices ( 1320 ) and interfaces ( 1322 ) containing software and data from the removable storage device ( 1320 ) can be transferred to the computer system.

Das Computersystem kann auch eine Kommunikationsschnittstelle (1324) enthalten. Die Kommunikationsschnittstelle (1324) ermöglicht, dass Software und Daten zwischen dem Computersystem und externen Vorrichtungen übertragen werden können. Zu den Beispielen von Kommunikationsschnittstellen (1324) können gehören ein Modem, eine Netzwerkschnittstelle (wie eine Ethernet-Karte), ein Datenübertragungsport oder ein PCMCIA-Slot und -Karte usw. Über die Kommunikationsschnittstelle (1324) übertragene Software und Daten liegen in Form von Signalen vor, die beispielsweise elektronische, elektromagnetische, optische oder andere Signale sein können, die von der Kommunikationsschnittstelle (1324) empfangen werden können. Diese Signale werden der Kommunikationsschnittstelle (1324) über einen Kommunikationspfad (d. h. Channel) (1326) bereitgestellt. Dieser Kommunikationspfad (1326) überträgt Signale und kann unter Verwendung von Verdrahtungen oder Kabeln, Glasfaserkabeln, einer Telefonleitung, einer Funktelefonverbindung, einer Hochfrequenz(HF)-Verbindung und/oder anderen Kommunikationskanälen implementiert werden.The computer system may also have a communication interface ( 1324 ) contain. The communication interface ( 1324 ) allows software and data to be transferred between the computer system and external devices. Examples of communication interfaces ( 1324 ) may include a modem, a network interface (such as an Ethernet card), a data transfer port or a PCMCIA slot and card, etc. 1324 ) transmitted software and data are in the form of signals, which may be, for example, electronic, electromagnetic, optical or other signals from the communication interface ( 1324 ) can be received. These signals are sent to the communication interface ( 1324 ) via a communication path (ie channel) ( 1326 ) provided. This communication path ( 1326 ) transmits signals and may be implemented using wirings or cables, fiber optic cables, a telephone line, a radiotelephone connection, a radio frequency (RF) connection, and / or other communication channels.

In dem vorliegenden Dokument werden die Begriffe „Computerprogrammmedium“, „von einem Computer verwendbares Medium“ und „computerlesbares Medium“ verwendet, um in allgemeiner Weise auf Medien Bezug zu nehmen, wie den Hauptspeicher (1310) und den sekundären Speicher (1312), das Laufwerk für entfernbare Speichermedien (1316) und eine im Festplattenlaufwerk (1314) installierte Festplatte.In the present document, the terms "computer program medium", "computer-usable medium" and "computer-readable medium" are used to refer generally to media, such as the main memory (FIG. 1310 ) and the secondary memory ( 1312 ), the drive for removable storage media ( 1316 ) and one in the hard disk drive ( 1314 ) installed hard disk.

Computerprogramme (auch alles Steuerlogik des Computers bezeichnet) werden im Hauptspeicher (1310) und/oder im sekundären Speicher (1312) gespeichert. Computerprogramme können auch über eine Kommunikationsschnittstelle (1324) empfangen werden. Diese Computerprogramme ermöglichen bei der Ausführung dem Computersystem, die Merkmale der vorliegenden Erfindung, wie in diesem Dokument beschrieben, auszuführen. Im Besonderen ermöglichen die Computerprogramme bei der Ausführung dem Prozessor (1302), die Merkmale des Computersystems auszuführen. Dementsprechend stellen diese Computerprogramme Steuereinheiten des Computersystems dar.Computer programs (also called computer control logic) are stored in main memory ( 1310 ) and / or in the secondary memory ( 1312 ) saved. Computer programs can also be accessed via a communication interface ( 1324 ) are received. These computer programs, when executed, allow the computer system to perform the features of the present invention as described in this document. In particular, the computer programs during execution enable the processor ( 1302 ) to execute the features of the computer system. Accordingly, these computer programs represent control units of the computer system.

Das Flussdiagramm und die Blockdiagramme in den Abbildungen (FIG.) veranschaulichen die Architektur, Funktionalität und Operation der möglichen Implementierungen der Systeme, Verfahren und Computerprogrammprodukte gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in den Flussdiagrammen oder Blockdiagrammen ein Modul, ein Segment oder einen Codeabschnitt darstellen, der eine oder mehrere ausführbare Anweisungen zur Implementierung der angegebenen logischen Funktion(en) aufweist. Es sollte ebenso beachtet werden, dass in einigen alternativen Implementierungen die im Block angegebenen Funktionen nicht in der in den FIG. angegeben Reihenfolge auftreten können. Zum Beispiel können in Abhängigkeit von der beinhalteten Funktionalität zwei aufeinanderfolgende Blöcke im Wesentlichen gleichzeitig ausgeführt werden, oder Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden. Es sollte auch beachtet werden, dass jeder Block in den Blockdiagramm- und/oder Flussdiagrammabbildungen und die Kombinationen der Blöcke in den Blockdiagramm- und/oder Flussdiagrammabbildungen durch hardwarebasierte Spezialsysteme, die die angegebenen Funktionen oder Vorgänge ausführen, oder Kombinationen von Spezialhardware und Computeranweisungen implementiert werden können.The flowchart and block diagrams in the figures (FIG. 1) illustrate the architecture, functionality, and operation of the possible implementations of the systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowcharts or block diagrams may represent a module, segment or code section having one or more executable instructions for implementing the specified logical function (s). It should also be noted that, in some alternative implementations, the functions specified in the block are not as shown in FIG. specified order may occur. For example, depending on the functionality involved, two consecutive blocks may be executed substantially simultaneously, or blocks may sometimes be executed in the reverse order. It should also be noted that each block in the block diagram and / or flowchart illustrations and the combinations of blocks in the block diagram and / or flowchart illustrations are implemented by specialized hardware-based systems that perform the specified functions or operations, or combinations of specialized hardware and computer instructions can.

Die hier verwendete Terminologie dient dem Zweck, nur bestimmte Ausführungsformen zu beschreiben und ist nicht dazu gedacht, die Erfindung einzuschränken. Wie hier verwendet, sind die Singularformen „ein“, „eine“ und „der“, „die” „das” dazu gedacht, auch die Pluralformen einzuschließen, sofern der Kontext dies nicht klar anders angibt. Es versteht sich, dass der Begriff „aufweist“ oder „aufweisend“, wenn er in dieser Beschreibung verwendet wird, zur Angabe des Vorhandenseins angegebener Merkmale, Ganzzahlen, Schritte, Operationen, Elemente und/oder Komponenten verwendet wird, dies aber nicht das Vorhandensein oder das Hinzufügen eines oder mehrerer Merkmale, einer oder mehrerer Ganzzahlen, einer oder mehrerer Schritte, einer oder mehrerer Operationen, eines oder mehrerer Elemente, einer oder mehrerer Komponenten und/oder Gruppen hiervon ausschließt.The terminology used herein is for the purpose of describing only particular embodiments and is not intended to limit the invention. As used herein, the singular forms "a," "an," and "the," "the" are intended to include plurals, unless the context clearly dictates otherwise. It should be understood that the term "comprising" or "comprising" when used in this specification is used to indicate the presence of specified features, integers, steps, operations, elements and / or components, but not the presence or absence thereof excludes adding one or more features, one or more integers, one or more steps, one or more operations, one or more elements, one or more components, and / or groups thereof.

Die zugehörigen Strukturen, Materialien, Vorgänge und Entsprechungen aller Mittel oder Schritte plus Funktionselemente in den folgenden Ansprüchen sind dazu gedacht, jede beliebige Struktur, jedes beliebige Material oder jeden beliebigen Vorgang einzuschließen, um die Funktion in Kombination mit anderen beanspruchten Elementen, wie im Besonderen beansprucht, auszuführen. Die Beschreibung der vorliegenden Erfindung wurde zum Zwecke der Veranschaulichung und Beschreibung dargelegt, es ist aber nicht beabsichtigt, dass sie erschöpfend oder auf die offengelegte Form der Erfindung beschränkt ist. Für Fachleute werden viele Veränderungen und Variationen ersichtlich sein, ohne dabei vom Umfang und Geist der Erfindung abzuweichen. Die Ausführungsform wurde gewählt und in der Reihenfolge beschrieben, um die Prinzipien der Erfindung und der praktischen Anwendung am besten zu erklären und um anderen Fachleuten zu ermöglichen, die Erfindung in verschiedenen Ausführungsformen mit verschiedenen Änderungen zu verstehen, wie sie für die bestimmte vorgesehene Verwendung geeignet sind. Dementsprechend unterstützt das verbesserte Cloud-Computingmodell die Flexibilität bezüglich der Anwendungsverarbeitung und dem Disaster Recovery (bzw. Wiederherstellung in Falle einer Katastrophe), einschließlich, ohne jedoch darauf beschränkt zu sein, der Unterstützung der Trennung des Speicherorts der Daten von dem Speicherort der Anwendung und die Auswahl eines angemessenen Recovery-Standorts.The associated structures, materials, acts, and equivalents of all means or steps plus functional elements in the following claims are intended to encompass any structure, material, or act to perform the function in combination with other claimed elements as specifically claimed to execute. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the disclosed form of the invention. Many changes and variations will be apparent to those skilled in the art without departing from the scope and spirit of the invention. The embodiment has been chosen and described in order to best explain the principles of the invention and the practical application, and to enable others skilled in the art to understand the invention in various embodiments with various changes as appropriate to the particular intended use , Accordingly, the enhanced cloud computing model supports the flexibility in application processing and disaster recovery, including, but not limited to, supporting the separation of the location of the data from the application's storage location and the disaster recovery Choosing an appropriate recovery location.

Wie in diesem Dokument beschrieben, wird eine Plattform mit einem Ressourcen-Scheduler bereitgestellt, um einer Leistungsverschlechterung von MapReduce-Jobs bei der Ausführung in der Cloud-Umgebung entgegenzuwirken. Das die Cloud erfassende MapReduce setzt einen dreistufigen Ansatz ein, um Anomalien bei der Anordnung aufgrund einer ineffizienten Ressourcenzuweisung zu vermeiden, darunter: Anordnung von Daten im Cluster, das die am häufigsten mit den Daten ausgeführten Jobs ausführt, Auswählen des für die physischen Knoten angemessenen Modus, um das einem Job zugewiesenen Set virtueller Maschinen anzuordnen, und Darstellen der Computing-, Speicher- und Netzwerktopologien für den Scheduler. CAM verwendet einen flussnetzwerkbasierten Algorithmus, der die Ressourcenzuweisung mit einer Vielzahl anderer im Wettbewerb stehenden Bedingungen in Einklang bringen kann, wie die Speichernutzung, Änderungen der Prozessorlast und die Netzwerkverbindungskapazitäten.As described in this document, a platform is provided with a resource scheduler to counteract performance degradation of MapReduce jobs when running in the cloud environment. The cloud-aware MapReduce uses a three-step approach to avoid anomalies in ordering due to inefficient resource allocation, including: arranging data in the cluster that executes the most frequently executed jobs, selecting the mode appropriate for the physical nodes to arrange the set of virtual machines assigned to a job, and to represent the computing, storage, and networking topologies for the scheduler. CAM uses a network-based algorithm that can reconcile resource allocation with a variety of other competing conditions, such as memory utilization, processor load changes, and network connectivity capabilities.

Alternative AusführungsformAlternative embodiment

Es ist hervorzuheben, dass obwohl spezielle Ausführungsformen der Erfindung hier zum Zwecke der Veranschaulichung beschrieben wurden, verschiedene Modifikationen vorgenommen werden können, ohne vom Geist und Umfang der Erfindung abzuweichen. Dementsprechend ist der Umfang der Erfindung nur durch die folgenden Ansprüche und deren Entsprechungen beschränkt.It should be understood that while particular embodiments of the invention have been described herein for purposes of illustration, various modifications may be made without departing from the spirit and scope of the invention. Accordingly, the scope of the invention is limited only by the following claims and their equivalents.

Claims (15)

Ein Verfahren, das aufweist: Erheben eines virtuellen Maschinen-Status einer oder mehreren virtuellen Maschinen in einem gemeinsamen Pool von Ressourcen, einschließlich eines physischen Hosts, der in Kommunikation mit wenigstens einer physischen Maschine steht, die eine oder mehrere virtuelle Maschinen unterstützt; Erfassen lokaler Topologieinformationen des gemeinsamen Pools von Ressourcen, einschließlich einer Kommunikation in periodischen Abständen mit einem integrierten Monitor der physischen Maschine; Organisieren der erfassten lokalen Topologieinformationen, einschließlich einer Speichertopologie, die einer virtuellen Topologie zugrundeliegt, und der zugehörigen Ressourcennutzungsinformationen; Nutzen der organisierten Topologieinformationen, einschließlich eine Zuweisung eines Jobs zu einer ausgewählten virtuellen Maschine im gemeinsamen Pool in Reaktion darauf, einschließlich der Jobzuweisung, die eine effiziente Leistung des zum Job gehörenden I/O unterstützt.A method comprising: Collecting a virtual machine state of one or more virtual machines in a common pool of resources, including a physical host in communication with at least one physical machine supporting one or more virtual machines; Collecting local topology information of the shared pool of resources, including periodic communication with an integrated monitor of the physical machine; Organizing the captured topology local information, including a storage topology underlying a virtual topology, and associated resource utilization information; Leverage organized topology information, including assigning a job to a selected virtual machine in the shared pool in response, including job assignment, which supports efficient job-related I / O performance. Das Verfahren nach Anspruch 1, weiterhin aufweisend, eine Rückgabe einer virtuellen topologischen Distanz, die dem Job zugeordnet ist, wobei die virtuelle topologische Distanz aus der Gruppe ausgewählt wird, die besteht aus: einer Distanz zwischen zwei virtuellen Maschinen und einer Distanz zwischen einer virtuellen Maschine und einem Datenblock.The method of claim 1, further comprising returning a virtual topological distance associated with the job, wherein the virtual topological distance is selected from the group, which consists of: a distance between two virtual machines and a distance between a virtual machine and a data block. Das Verfahren nach Anspruch 2, das weiterhin aufweist ein Erstellen eines Shared Memory-Channels zur Unterstützung des Jobs, wobei der Channel eine Datenkommunikation zwischen virtuellen Maschinen zwischen einer ersten virtuellen Maschine und einer zweiten virtuellen Maschine unterstützt, die sich auf der gleichen physischen Maschine befinden.The method of claim 2, further comprising creating a shared memory channel to support the job, wherein the channel supports data communication between virtual machines between a first virtual machine and a second virtual machine located on the same physical machine. Das Verfahren nach Anspruch 3, wobei der Shared Memory-Channel eine effiziente Datenübertragung sowohl für die erste als auch für die zweite virtuelle Maschine unterstützt.The method of claim 3, wherein the shared memory channel supports efficient data transfer for both the first and second virtual machines. Das Verfahren nach Anspruch 1, wobei der Schritt der Nutzung der organisierten Speichertopologieinformationen eine Rückgabe eines physischen Speicherorts von einem oder mehreren den Job unterstützenden Datenblöcken im gemeinsamen Pool aufweist.The method of claim 1, wherein the step of using the organized storage topology information includes returning a physical storage location of one or more job supporting data blocks in the shared pool. Das Verfahren nach Anspruch 5, das weiterhin eine Rückgabe von Nutzungsinformation einer Verarbeitungseinheit und Netzwerknutzungsinformationen der physischen Maschine, die lokal zur virtuellen Maschine vorliegt, aufweist.The method of claim 5, further comprising returning usage information of a processing unit and network usage information of the physical machine local to the virtual machine. Das Verfahren nach Anspruch 6, wobei der Schritt der Zuweisung des Jobs an eine virtuelle Maschine eine Auswahl einer virtuellen Maschine mit einer ausreichenden Bandbreite und einer nahen topologische Distanz zum physischen Speicherort von einem oder mehreren den Job unterstützenden Datenblöcken beinhaltet.The method of claim 6, wherein the step of assigning the job to a virtual machine includes selecting a virtual machine having a sufficient bandwidth and a near topological distance to the physical location of one or more job supporting data blocks. Ein System, das aufweist: einen gemeinsamen Pool an Ressourcen, wobei der gemeinsame Pool einen physischen Host aufweist, der in Kommunikation mit mehreren physischen Maschinen steht, wobei jede physische Maschine wenigstens eine virtuelle Maschine unterstützt, wobei jede physische Maschine über einen integrierten Monitor verfügt, um den virtuellen Maschinen-Status von einer lokalen virtuellen Maschine zu erheben, und wobei jede virtuelle Maschine über einen integrierten Agent verfügt; eine Funktionseinheit, die sich in Kommunikation mit dem physischen Host befindet, wobei die Funktionseinheit Tools aufweist, um eine effiziente Verarbeitung eines Jobs in Reaktion auf eine topologische Architektur des gemeinsamen Pools zu unterstützen, wobei die Tools aufweisen: einen Director, der sich in Kommunikation mit dem Host befindet, wobei der Director in periodischen Abständen mit jedem integrierten Monitor kommuniziert und eine Topologie erfasst und organisiert, die einer virtuellen Topologie zugrundeliegt, wobei die Topologie eine Speichertopologie des Datenspeichers im gemeinsamen Pool und zugeordnete Ressourcennutzungsinformationen aufweist; und wobei der Director die organisierte Topologie zur Zuweisung des Jobs an eine oder mehrere der gemeinsamen Ressourcen nutzt, wobei die Jobzuweisung eine effiziente Leistung des dem Job zugewiesenen I/O unterstützt.A system that has: a shared pool of resources, wherein the shared pool has a physical host in communication with multiple physical machines, each physical machine supporting at least one virtual machine, each physical machine having an integrated monitor, the virtual machine status from a local virtual machine, and each virtual machine has a built-in agent; a functional unit in communication with the physical host, the functional unit having tools to facilitate efficient processing of a job in response to a topology of the shared pool, the tools comprising: a director in communication with the host, the director communicating periodically with each integrated monitor, and collecting and organizing a topology underlying a virtual topology, the topology having a storage pool of the shared pool data store and associated resource utilization information ; and wherein the director uses the organized topology to assign the job to one or more of the shared resources, the job assignment supporting efficient performance of the job-assigned I / O. Das System nach Anspruch 8, weiterhin aufweisend einen Topologiemanager, der mit dem Director in Kommunikation steht, wobei der Topologiemanager eine virtuelle topologische Distanz zurückgibt, die aus der Gruppe ausgewählt wird, die besteht aus: einer Distanz zwischen zwei virtuellen Maschinen und einer Distanz zwischen einer virtuellen Maschine und einem Datenblock.The system of claim 8, further comprising a topology manager in communication with the director, wherein the topology manager returns a virtual topological distance selected from the group consisting of: a distance between two virtual machines and a distance between one virtual machine and a data block. Das System nach Anspruch 8, weiterhin aufweisend einen Hook-Manager, der mit einem integrierten Agent von einer der virtuellen Maschinen in Kommunikation steht und in Kommunikation mit dem Director steht, wobei der Hook-Manager einen Shared Memory-Channel für die Datenkommunikation zwischen virtuellen Maschinen zwischen einer ersten virtuellen Maschine und einer zweiten virtuellen Maschine erstellt, die sich auf der gleichen physischen Maschine befinden, und/oder wobei das System weiterhin einen Speichertopologiemanager aufweist, der mit dem Director in Kommunikation steht, wobei der Speichertopologiemanager einen physischen Speicherort von einem oder mehreren den Job unterstützenden Datenblöcken im gemeinsamen Pool zurückgibt.The system of claim 8, further comprising a hook manager in communication with an integrated agent of one of the virtual machines and in communication with the director, the hook manager providing a shared memory channel for data communication between virtual machines between a first virtual machine and a second virtual machine located on the same physical machine, and / or wherein the system further comprises a storage topology manager in communication with the director, the storage topology manager having a physical storage location of one or more returns data blocks supporting the job in the shared pool. Das System nach Anspruch 10, wobei der Shared Memory-Channel die effiziente Datenübertragung sowohl für die erste als auch für die zweite virtuelle Maschine unterstützt, und/oder wobei das System weiterhin einen Ressourcennutzungsmanager aufweist, der mit dem Director in Kommunikation steht, wobei der Ressourcennutzungsmanager Nutzungsinformationen einer Verarbeitungseinheit und Netzwerknutzungsinformationen der physischen Maschine, die lokal zur virtuellen Maschine vorliegt, zurückgibt, und/oder das System weiterhin aufweisend einen Anwendungsmanager, der mit dem Director in Kommunikation steht, wobei der Anwendungsmanager den Job einer virtuellen Maschine zuweist, die eine ausreichende Bandbreite zur Unterstützung des Jobs und eine nahe topologische Distanz zum physischen Speicherort von einem oder mehreren den Job unterstützenden Datenblöcken aufweist,The system of claim 10, wherein the shared memory channel supports efficient data transfer for both the first and second virtual machines, and / or wherein the system further comprises a resource utilization manager in communication with the director, wherein the resource utilization manager Returns usage information of a processing unit and network usage information of the physical machine local to the virtual machine, and / or the system further comprising an application manager in communication with the director, the application manager assigning the job to a virtual machine having sufficient bandwidth to support the job and a near-topological distance to the physical location of one or more of the job has supporting data blocks, Ein Computerprogrammprodukt, dass ein computerlesbares, nicht flüchtiges Speichermedium mit darauf enthaltenem computerlesbaren Programmcode aufweist, wobei der computerlesbare Programmcode bei der Ausführung auf einem Computer den Computer dazu veranlasst: Informationen von den Ressourcen im gemeinsamen Pool zu erheben, wobei die Information eine virtuellen Maschinen-Status von einer lokalen virtuellen Maschine im gemeinsamen Pool von Ressourcen und wenigstens einen Status einer physischen Maschinen aufweist, die eine oder mehrere virtuelle Maschinen unterstützt; Erfassen lokaler Topologieinformationen des gemeinsamen Pools von Ressourcen in periodischen Abständen und Kommunizieren der erfassten Informationen mit einem integrierten Monitor der physischen Maschine; Organisieren der erfassten lokalen Topologieinformationen, einschließlich einer Speichertopologie, die einer virtuellen Topologie zugrundeliegt und zugehörigen Ressourcennutzungsinformationen; und Nutzen der organisierten Speichertopologieinformationen und Zuweisung eines Jobs zu einer ausgewählten virtuellen Maschine im gemeinsamen Pool in Reaktion darauf, einschließlich der Zuweisung, die eine effiziente Leistung des zum Job gehörenden I/O unterstützt.A computer program product comprising a computer readable, non-transitory storage medium having computer readable program code thereon, the computer readable program code, when executed on a computer, causing the computer to: Collecting information from the resources in the shared pool, the information having a virtual machine status from a local virtual machine in the shared pool of resources, and at least one physical machine status supporting one or more virtual machines; Periodically collecting local topology information of the shared pool of resources and communicating the captured information with an integrated monitor of the physical machine; Organizing the captured local topology information, including a storage topology underlying a virtual topology and associated resource utilization information; and Leverage the organized storage topology information and assign a job to a selected virtual machine in the shared pool in response to it, including the assignment that supports efficient performance of the job-associated I / O. Das Computerprogrammprodukt nach Anspruch 12, das weiterhin Programmcode aufweist, um eine virtuelle topologische Distanz zurückzugeben, die aus der Gruppe ausgewählt wird, die besteht aus: einer Distanz zwischen zwei virtuellen Maschinen und einer Distanz zwischen einer virtuellen Maschine und einem Datenblock, und/oder das weiterhin Programmcode aufweist, um einen Shared Memory-Channel zur Datenkommunikation zwischen virtuellen Maschinen zwischen einer ersten virtuellen Maschine und einer zweiten virtuellen Maschine, die sich auf der gleichen physischen Maschine befinden, zu erstellen, und/oder wobei der Shared Memory-Channel eine effiziente Datenübertragung für die erste und auch die zweite virtuelle Maschine unterstützt, und/oder das weiterhin Programmcode aufweist, um einen physischen Speicherort von einem oder mehreren den Job unterstützenden Datenblöcken im gemeinsamen Pool zurückzugeben, und/oder das weiterhin Programmcode aufweist, um Nutzungsinformation einer Verarbeitungseinheit und Netzwerknutzungsinformation der physischen Maschine, die lokal zur virtuelle Maschine ist, zurückzugeben, und/oder das weiterhin Programmcode aufweist, um den Job einer virtuellen Maschine zuzuweisen, die eine ausreichende Bandbreite zur Unterstützung des Jobs und eine nahe topologische Distanz zum physischen Speicherort von einem oder mehreren den Job unterstützenden Datenblöcken aufweist.The computer program product of claim 12, further comprising program code to return a virtual topological distance selected from the group consisting of: a distance between two virtual machines and a distance between a virtual machine and a data block, and or further comprising program code for creating a shared memory channel for data communication between virtual machines between a first virtual machine and a second virtual machine located on the same physical machine, and or wherein the shared memory channel supports efficient data transfer for the first and the second virtual machine, and or which further comprises program code for returning a physical location of one or more data-supporting blocks in the common pool, and or further comprising program code for returning usage information of a processing unit and network usage information of the physical machine local to the virtual machine, and or further comprising program code for assigning the job to a virtual machine having sufficient bandwidth to support the job and a near-topological distance to the physical location of one or more job-supporting blocks of data. Ein in einem Computer implementiertes Verfahren, das aufweist: Erheben eines virtuellen Maschinen-Status von einer oder mehreren virtuellen Maschinen in einem gemeinsamen Pool von Ressourcen, einschließlich eines physischen Hosts, der in Kommunikation mit wenigstens einer physischen Maschine steht, die eine oder mehrere virtuelle Maschinen unterstützt; periodisches Erfassen lokaler Topologieinformationen einer hierarchischen Organisation von Ressourcen, die durch die physischen und virtuellen Maschinen dargestellt werden; Organisieren der Topologieinformationen; Zugreifen auf ein Nutzungsinformationen von Speicherressourcen und virtuellen Maschinen, die in der Topologie dargestellt werden; und Zuweisung eines Jobs zu einer oder mehreren ausgewählten virtuellen Maschinen im gemeinsamen Pool, wobei die Jobzuweisung die effiziente Leistung in Reaktion auf die Topologie und die Auswertung der Ressourcennutzung unterstützt.A method implemented in a computer, comprising: Collecting a virtual machine state of one or more virtual machines in a common pool of resources including a physical host in communication with at least one physical machine supporting one or more virtual machines; periodically collecting local topology information of a hierarchical organization of resources represented by the physical and virtual machines; Organizing the topology information; Accessing usage information of storage resources and virtual machines represented in the topology; and Assign a job to one or more selected virtual machines in the shared pool, with job assignment supporting efficient performance in response to the topology and resource utilization analysis. Das Verfahren nach Anspruch 14, das weiterhin das Bestimmen einer zum Job gehörenden topologischen Distanz aufweist, wobei die topologische Distanz aus der Gruppe ausgewählt wird, die besteht aus: einer Distanz zwischen zwei virtuellen Maschinen und einer Distanz zwischen einer virtuellen Maschine und einem Datenblock, und/oder das weiterhin das Erstellen eines Shared Memory-Channels zur Unterstützung des Jobs zwischen einer ersten virtuellen Maschine und einer zweiten virtuellen Maschine aufweist, die sich auf der gleichen physischen Maschine befinden.The method of claim 14, further comprising determining a topological distance associated with the job, wherein the topological distance is selected from the group consisting of: a distance between two virtual machines and a distance between a virtual machine and a data block, and / or continue to create a shared memory channel for support job between a first virtual machine and a second virtual machine that resides on the same physical machine.
DE102013207603.7A 2012-04-26 2013-04-25 Run jobs efficiently in a shared pool of resources Active DE102013207603B4 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US13/457,090 US8972983B2 (en) 2012-04-26 2012-04-26 Efficient execution of jobs in a shared pool of resources
US13/457,090 2012-04-26
US13/590,881 US20130290957A1 (en) 2012-04-26 2012-08-21 Efficient execution of jobs in a shared pool of resources
US13/590,881 2012-08-21

Publications (2)

Publication Number Publication Date
DE102013207603A1 true DE102013207603A1 (en) 2013-10-31
DE102013207603B4 DE102013207603B4 (en) 2020-06-18

Family

ID=49323442

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013207603.7A Active DE102013207603B4 (en) 2012-04-26 2013-04-25 Run jobs efficiently in a shared pool of resources

Country Status (1)

Country Link
DE (1) DE102013207603B4 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112988739A (en) * 2019-12-18 2021-06-18 阿里巴巴集团控股有限公司 Data management and processing method, device, computer system and readable storage medium
CN113468700A (en) * 2021-07-08 2021-10-01 安天科技集团股份有限公司 Topology information identification method and device, computing equipment and storage medium

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112988739A (en) * 2019-12-18 2021-06-18 阿里巴巴集团控股有限公司 Data management and processing method, device, computer system and readable storage medium
CN112988739B (en) * 2019-12-18 2024-04-19 阿里巴巴集团控股有限公司 Data management and processing method, device, computer system and readable storage medium
CN113468700A (en) * 2021-07-08 2021-10-01 安天科技集团股份有限公司 Topology information identification method and device, computing equipment and storage medium

Also Published As

Publication number Publication date
DE102013207603B4 (en) 2020-06-18

Similar Documents

Publication Publication Date Title
DE102016221811B4 (en) Allocation of resources with tiered storage
DE112012004336B4 (en) System, method and program product for cost-conscious selection of templates for providing shared resources
DE112017003710T5 (en) Procedures for configuring physical compute resources for workloads related to circuit-switched cases
DE112011101633B4 (en) Reorganization of storage levels taking virtualization and dynamic resource allocation into account
DE102013204186B4 (en) Determining priorities for cached objects to order the broadcast of changes to cached objects based on measured network bandwidth
DE102016205297A1 (en) SETTING MEMORY SITES FOR PLACING DATA SETS DURING THE PERFORMANCE OF TASKS IN A WORKFLOW
DE112012004238T5 (en) Discovery-based identification and migration of applications that are easy to move to the cloud
DE112017000337T5 (en) Specify a disaggregated data processing system
DE102013204508A1 (en) Method for dynamically reconfiguring memory system of e.g. computer system, involves determining expanding storage pools from multiple storage pools, and migrating source storage disks into appropriate objective storage pools
DE102015105884A1 (en) Reliable and deterministic live migration of virtual machines
DE112019000421B4 (en) WORKLOAD MANAGEMENT WITH DATA ACCESS DISCOVERY IN A COMPUTING CLUSTER
DE112011100094T5 (en) Method and system for abstracting a non-functional requirement based use of virtual machines
DE112020002189T5 (en) CONTAINER-BASED APPLICATIONS
DE112021005586T5 (en) AUTOMATICALLY SCALING A QUERY CONTROL ROUTINE FOR ENTERPRISE-SCALE BIG DATA WORKLOADS
DE102021125182A1 (en) SHARED ENTERPRISE CLOUD
DE102021127254A1 (en) Content-aware selecting nodes to create containers
DE112021003294T5 (en) SYSTEM MANAGEMENT BASED ON PERFORMANCE AND EFFICIENCY
DE112017005022T5 (en) Reload the tape processing to object storage
DE112021002487T5 (en) SHARING A GEOGRAPHICALLY CONCENTRATED WORKLOAD BETWEEN NEIGHBORHOOD MEC HOSTS OF MULTIPLE NETWORK OPERATORS
DE112019005392T5 (en) INCREASING DATA PERFORMANCE BY TRANSFERRING DATA BETWEEN STORAGE LEVELS USING WORKLOAD CHARACTERISTICS
DE112021003668T5 (en) ALLOCATE TASKS AND DATA USING MULTI-ACCESS EDGE COMPUTING
DE112018004415B4 (en) OPTIMIZATION OF CLOUD RESOURCES IN POLICY-BASED OPERATIONS IN TIERED STORAGE
DE102021130359A1 (en) RESOURCE ALLOCATION BASED ON A CONTEXTUAL SCENARIO
DE102021122508A1 (en) BALANCING MAINPLANER AND DISTRIBUTED WORKLOADS BASED ON PERFORMANCE AND COST
DE102014116744A1 (en) Management of information technology resources

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES DANNER & PARTNER PATENTANWAELTE PARTNERS, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final