DE112015000216T5 - Select a host for a virtual machine using a hardware multithreading parameter - Google Patents

Select a host for a virtual machine using a hardware multithreading parameter Download PDF

Info

Publication number
DE112015000216T5
DE112015000216T5 DE112015000216.2T DE112015000216T DE112015000216T5 DE 112015000216 T5 DE112015000216 T5 DE 112015000216T5 DE 112015000216 T DE112015000216 T DE 112015000216T DE 112015000216 T5 DE112015000216 T5 DE 112015000216T5
Authority
DE
Germany
Prior art keywords
hardware
host computer
computer system
cpus
hardware multithreading
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112015000216.2T
Other languages
German (de)
Inventor
Jeffrey Wayne Tenner
Joseph William Cropper
Kyle Lane Henderson
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 US14/297,724 external-priority patent/US9304805B2/en
Priority claimed from US14/297,677 external-priority patent/US9384027B2/en
Priority claimed from US14/297,707 external-priority patent/US9400672B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority claimed from PCT/IB2015/054229 external-priority patent/WO2015186088A1/en
Publication of DE112015000216T5 publication Critical patent/DE112015000216T5/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • 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
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Hardware Redundancy (AREA)

Abstract

Ein Cloud-Manager überwacht verfügbare Ressourcen auf Host-Computersystemen einschließlich einer Anzahl von Hardware-Threads, die durch CPUs auf den Host-Computersystemen unterstützt werden. Der Cloud-Manager empfängt eine Anforderung zum Bereitstellen einer virtuellen Maschine (VM), die einen Hardware-Multithreading-Parameter enthält, der das Ausmaß von Hardware-Multithreading angibt, das auf dem Host-Computersystem erforderlich ist. Der Cloud-Manager wählt anschließend ein Host-Computersystem für die VM aus und berücksichtigt hierbei den Hardware-Multithreading-Parameter.A cloud manager monitors available resources on host computer systems, including a number of hardware threads supported by CPUs on the host computer systems. The cloud manager receives a request to deploy a virtual machine (VM) that contains a hardware multithreading parameter that indicates the amount of hardware multithreading that is required on the host computer system. The cloud manager then selects a host computer system for the VM, taking into account the hardware multithreading parameter.

Description

HINTERGRUNDBACKGROUND

Technisches GebetTechnical prayer

Diese Offenbarung betrifft allgemein das Bereitstellen virtueller Maschinen für Host-Computersysteme und insbesondere das Auswählen eines Hosts für eine virtuelle Maschine unter Verwendung eines Hardware-Multithreading-Parameters.This disclosure generally relates to providing virtual machines to host computer systems, and more particularly to selecting a host for a virtual machine using a hardware multithreading parameter.

Technischer HintergrundTechnical background

In einer Cloud-Umgebung stellt ein Cloud-Manager virtuelle Maschinen für Host-Computersysteme bereit, um virtuelle Server zu erzeugen. Normalerweise empfängt der Cloud-Manager eine Anforderung, die angibt, was das Image (Abbild) der virtuellen Maschine als Systemressourcen benötigt, zum Beispiel Speicher, Festplatte und CPU. Der Cloud-Manager ermittelt anschließend verfügbare Host-Computersysteme, auf denen die erforderlichen Systemressourcen zur Verfügung stehen, wählt eines der verfügbaren Host-Computersysteme aus und stellt die virtuelle Maschine auf dem ausgewählten Host-Computersystem bereit.In a cloud environment, a cloud manager provides virtual machines for host computer systems to create virtual servers. Typically, the cloud manager receives a request indicating what the virtual machine image (image) needs as system resources, such as memory, hard disk, and CPU. The cloud manager then determines available host computer systems on which the required system resources are available, selects one of the available host computer systems, and provides the virtual machine on the selected host computer system.

OpenStack ist eine Open-Source-Software zum Aufbau privater und öffentlicher Clouds. In OpenStack geben Vorlagen für virtuelle Hardware, die als „Flavors” (Typen) bezeichnet werden, Systemressourcen an, die für virtuelle Maschinen benötigt werden. Beispielsweise kann ein Typ in OpenStack eine Größe des Speichers, eine Stammdatenträgergröße und eine Anzahl virtueller CPUs für eine virtuelle Maschine angeben. Wenn eine virtuelle Maschine bereitgestellt werden muss, wird ein Aufruf an den Cloud-Manager übermittelt, wobei der Typ die benötigten Ressourcen für die virtuelle Maschine angibt. Der Cloud-Manager sucht anschließend ein oder mehrere Host-Computersysteme, auf dem die im Typ angegebenen Ressourcen zur Verfügung stehen, und stellt die virtuelle Maschine auf einem der Host-Computersysteme bereit, die dem Typ entsprechen.OpenStack is an open source software for building private and public clouds. In OpenStack, virtual hardware templates, called "flavors", specify the system resources needed for virtual machines. For example, a type in OpenStack can specify a size of memory, a root volume size, and a number of virtual CPUs for a virtual machine. When a virtual machine needs to be provisioned, a call is sent to the cloud manager, with the type indicating the resources needed for the virtual machine. The cloud manager then locates one or more host computer systems that have the resources specified in the type and provides the virtual machine on one of the host computer systems that matches the type.

Hardware-Multithreading in einem Host kann das Bereitstellen virtueller Maschinen für ein Host-Computersystem erschweren. Nach dem Stand der Technik wird, sofern Hyperthreading auf dem Host-Computersystem aktiviert ist, die Anzahl von Hardware-Threads beim Auswählen eines Host-Computersystems für eine virtuelle Maschine berücksichtigt, und virtuelle CPUs werden Hardware-Threads ungeachtet der physischen Kerne zugeordnet. Sofern Hyperthreading auf dem Host-Computersystem nicht aktiviert ist, werden beim Auswählen eines Host-Computersystems für eine virtuelle Maschine nur physische Prozessorkerne berücksichtigt, und virtuelle CPUs werden physischen Prozessorkernen nur zugeordnet, wenn eine VM (virtuelle Maschine) auf dem ausgewählten Host-Computersystem bereitgestellt ist. Bei modernen Prozessorarchitekturen wie zum Beispiel POWER, die viele Hardware-Threads in jedem Kern enthalten, ist das Ergebnis eine sehr ineffiziente Verwendung von Prozessorressourcen.Hardware multithreading in a host can make it difficult to deploy virtual machines to a host computer system. In the prior art, if hyperthreading is enabled on the host computer system, the number of hardware threads is considered when selecting a host computer system for a virtual machine, and virtual CPUs are assigned to hardware threads regardless of the physical cores. Unless hyperthreading is enabled on the host computer system, selecting a host computer system for a virtual machine only considers physical processor cores, and assigns virtual CPUs only to physical processor cores when deploying a virtual machine (VM) on the selected host computer system is. In modern processor architectures, such as POWER, which contain many hardware threads in each core, the result is a very inefficient use of processor resources.

Das Bereitstellen virtueller Maschinen kann ferner erschwert werden, wenn Prozessoren geteilte Kerne enthalten. Der Begriff „Prozessoren mit geteilten Kernen” bezeichnet einen CPU-Kern, der in mehrere Teilkerne aufgeteilt sein kann, die jeweils mehrere Hardware-Threads enthalten und bei denen der Teilkern einem Gastbetriebssystem gegenüber als Kern erscheint. Zum Beispiel kann ein Kern, der als geteilter Kern mit 8 Hardware-Threads fungieren kann, in 4 Teilkerne aufgeteilt sein, die jeweils 2 Hardware-Threads unterstützen können. Die Aktivierung von geteilten Kernen geschieht dynamisch, was bedeutet, dass die Aufteilung programmtechnisch auf dem Host-Betriebssystem geändert werden kann. Bekannte Cloud-Manager behandeln Prozessoren mit geteilten Kernen in keiner Weise anders als Prozessoren ohne geteilte Kerne. Infolgedessen können bekannte Cloud-Manager beim Bereitstellen virtueller Maschinen die Vorteile der Verwendung von Prozessoren mit geteilten Kernen nicht realisieren.Providing virtual machines can also be made more difficult if processors contain shared cores. The term "split-core processors" refers to a CPU core that can be divided into multiple sub-cores, each containing multiple hardware threads, where the sub-core appears as a core to a guest operating system. For example, a core that can act as a shared core with 8 hardware threads can be divided into 4 sub-cores, each of which can support 2 hardware threads. Activation of shared cores happens dynamically, which means that the partitioning can be programmatically changed on the host operating system. Well-known cloud managers treat processors with shared cores in no different way than processors without shared cores. As a result, known cloud managers can not realize the benefits of using shared core processors when deploying virtual machines.

KURZDARSTELLUNGSUMMARY

Gemäß einem ersten Aspekt wird eine Vorrichtung bereitgestellt, umfassend: mindestens einen Prozessor; einen Speicher, der mit dem mindestens einen Prozessor verbunden ist; einen Cloud-Manager, der sich im Speicher befindet und durch den mindestens einen Prozessor ausgeführt wird, wobei der Cloud-Manager aufweist: einen Host-Überwachungsmechanismus, der eine Anzahl von CPUs ermittelt, die auf einer Mehrzahl von Host-Computersystemen zur Verfügung stehen, auf denen virtuelle Maschinen bereitgestellt werden könnten, und der ferner eine Anzahl von Hardware-Threads ermittelt, die durch jede CPU auf der Mehrzahl von Host-Computersystemen unterstützt werden; und einen Host-Auswahlmechanismus, der eine Virtuelle-Maschine-Anforderung (VM-Anforderung) empfängt, die eine Anzahl virtueller CPUs und einen Hardware-Multithreading-Parameter enthält, wobei der Host-Auswahlmechanismus eines der Mehrzahl von Host-Computersystemen auswählt, das eine Anzahl von CPUs mit einer Anzahl von Hardware-Threads enthält, die der VM-Anforderung entsprechen.According to a first aspect, there is provided an apparatus comprising: at least one processor; a memory connected to the at least one processor; a cloud manager located in memory and executed by the at least one processor, the cloud manager comprising: a host monitoring mechanism that determines a number of CPUs, which are available on a plurality of host computer systems on which virtual machines could be provided, and which further determines a number of hardware threads supported by each CPU on the plurality of host computer systems; and a host selection mechanism receiving a virtual machine request containing a number of virtual CPUs and a hardware multithreading parameter, wherein the host selection mechanism selects one of the plurality of host computer systems that has a Number of CPUs containing a number of hardware threads that match the VM request.

Gemäß einem zweiten Aspekt wird ein mittels Computer realisiertes Verfahren bereitgestellt, das durch mindestens einen Prozessor ausgeführt wird, um ein Host-Computersystem zum Bereitstellen einer virtuellen Maschine auszuwählen, wobei das Verfahren umfasst: Ermitteln einer Anzahl von CPUs, die auf einer Mehrzahl von Host-Computersystemen zur Verfügung stehen, auf denen virtuelle Maschinen bereitgestellt werden könnten; Ermitteln einer Anzahl von Hardware-Threads, die durch jede CPU auf der Mehrzahl von Host-Computersystemen unterstützt werden; Empfangen einer Virtuelle-Maschine-Anforderung (VM-Anforderung), die eine Anzahl virtueller CPUs und einen Hardware-Multithreading-Parameter enthält; und Auswählen eines der Mehrzahl von Host-Computersystemen, das eine Anzahl von CPUs mit einer Anzahl von Hardware-Threads enthält, die der VM-Anforderung entsprechen.According to a second aspect, there is provided a computer-implemented method executed by at least one processor to select a host computer system for providing a virtual machine, the method comprising: determining a number of CPUs running on a plurality of host machines; Computer systems on which virtual machines could be deployed; Determining a number of hardware threads supported by each CPU on the plurality of host computer systems; Receiving a virtual machine request (VM request) containing a number of virtual CPUs and a hardware multithreading parameter; and selecting one of the plurality of host computer systems that includes a number of CPUs having a number of hardware threads that conform to the VM request.

Die Erfindung kann als Computerprogramm realisiert sein.The invention can be realized as a computer program.

Gemäß einer bevorzugten Ausführungsform überwacht ein Cloud-Manager verfügbare Ressourcen auf Host-Computersystemen einschließlich einer Anzahl von Hardware-Threads, die durch CPUs auf den Host-Computersystemen unterstützt werden. Der Cloud-Manager empfängt eine Anforderung zum Bereitstellen einer virtuellen Maschine (VM), die einen Hardware-Multithreading-Parameter enthält, der das Ausmaß von Hardware-Multithreading angibt, das auf dem Host-Computersystem erforderlich ist. Der Cloud-Manager wählt anschließend ein Host-Computersystem für die VM aus und berücksichtigt hierbei den Hardware-Multithreading-Parameter.In accordance with a preferred embodiment, a cloud manager monitors available resources on host computer systems, including a number of hardware threads supported by CPUs on the host computer systems. The cloud manager receives a request to deploy a virtual machine (VM) that contains a hardware multithreading parameter that indicates the amount of hardware multithreading that is required on the host computer system. The cloud manager then selects a host computer system for the VM, taking into account the hardware multithreading parameter.

Gemäß einer Ausführungsform wird eine Lösung bereitgestellt, die sich mit dem Platzieren virtueller CPUs unter Verwendung eines Hardware-Multithreading-Parameters beschäftigt.According to one embodiment, a solution is provided that deals with placing virtual CPUs using a hardware multithreading parameter.

Gemäß einer Ausführungsform betrifft diese Offenbarung allgemein das Bereitstellen virtueller Maschinen für Host-Computersysteme und insbesondere das Bereitstellen virtueller CPUs für ein Host-Computersystem unter Verwendung eines Hardware-Multithreading-Parameters.In one embodiment, this disclosure generally relates to providing virtual machines to host computer systems and, more particularly, to providing virtual CPUs to a host computer system using a hardware multithreading parameter.

Gemäß einer Ausführungsform wird eine Lösung zum Bereitstellen virtueller CPUs unter Verwendung eines Hardware-Multithreading-Parameters in Hosts mit geteilten Kernen bereitgestellt.According to one embodiment, a solution for providing virtual CPUs using a hardware multithreading parameter in shared-core hosts is provided.

Gemäß einer Ausführungsform betrifft diese Offenbarung allgemein das Bereitstellen virtueller Maschinen für Host-Computersysteme und insbesondere das Bereitstellen virtueller CPUs unter Verwendung eines Hardware-Multithreading-Parameters für ein Host-Computersystem, das einen oder mehrere Kerne mit geteilten Prozessoren enthält.In one embodiment, this disclosure generally relates to providing virtual machines to host computer systems, and more particularly, to providing virtual CPUs using a hardware multithreading parameter for a host computer system that includes one or more shared processor cores.

Gemäß einer Ausführungsform wird eine Vorrichtung bereitgestellt, umfassend: mindestens einen Prozessor; einen Speicher, der mit dem mindestens einen Prozessor verbunden ist; einen Cloud-Manager, der sich im Speicher befindet und durch den mindestens einen Prozessor ausgeführt wird, wobei der Cloud-Manager aufweist: einen Host-Überwachungsmechanismus, der eine Anzahl von CPUs ermittelt, die auf einer Mehrzahl von Host-Computersystemen zur Verfügung stehen, auf denen virtuelle Maschinen bereitgestellt werden könnten, und der ferner eine Anzahl von Hardware-Threads ermittelt, die durch jede CPU auf der Mehrzahl von Host-Computersystemen unterstützt werden; einen Host-Auswahlmechanismus, der eine Virtuelle-Maschine-Anforderung (VM-Anforderung) empfängt, die eine Anzahl virtueller CPUs und einen Hardware-Multithreading-Parameter enthält, wobei der Host-Auswahlmechanismus eines der Mehrzahl von Host-Computersystemen auswählt, das eine Anzahl von CPUs mit einer Anzahl von Hardware-Threads enthält, die der VM-Anforderung entsprechen; und einen Platzierungsmechanismus für virtuelle CPUs (vCPU-Platzierungsmechanismus), der den Hardware-Multithreading-Parameter verwendet, um eine Mehrzahl virtueller CPUs (vCPUs) auf dem ausgewählten Host-Computersystem zu platzieren.According to one embodiment, there is provided an apparatus comprising: at least one processor; a memory connected to the at least one processor; a cloud manager located in memory and executed by the at least one processor, the cloud manager comprising: a host monitoring mechanism that determines a number of CPUs available on a plurality of host computer systems, on which virtual machines could be provided, and further determines a number of hardware threads supported by each CPU on the plurality of host computer systems; a host selection mechanism that receives a virtual machine (VM) request that includes a number of virtual CPUs and a hardware multithreading parameter, wherein the host selection mechanism selects one of the plurality of host computer systems that has a number of CPUs containing a number of hardware threads that match the VM request; and a virtual CPU placement mechanism (vCPU placement mechanism) that uses the hardware multithreading parameter to place a plurality of virtual CPUs (vCPUs) on the selected host computer system.

Gemäß einer Ausführungsform wird ein mittels Computer realisiertes Verfahren bereitgestellt, das durch mindestens einen Prozessor ausgeführt wird, um eine Mehrzahl virtueller CPUs (vCPUs) auf einem Host-Computersystem zu platzieren, wobei das Verfahren umfasst Ermitteln einer Anzahl von CPUs, die auf einer Mehrzahl von Host-Computersystemen zur Verfügung stehen, auf denen virtuelle Maschinen bereitgestellt werden könnten; Ermitteln einer Anzahl von Hardware-Threads, die durch jede CPU auf der Mehrzahl von Host-Computersystemen unterstützt werden; Empfangen einer Virtuelle-Maschine-Anforderung (VM-Anforderung), die eine Anzahl virtueller CPUs und einen Hardware-Multithreading-Parameter enthält; Auswählen eines der Mehrzahl von Host-Computersystemen, das eine Anzahl von CPUs mit einer Anzahl von Hardware-Threads enthält, die der VM-Anforderung entsprechen; und Verwenden des Hardware-Multithreading-Parameters, um die Mehrzahl virtueller CPUs auf dem ausgewählten Host-Computersystem zu platzieren.According to one embodiment, there is provided a computer-implemented method executed by at least one processor to place a plurality of virtual CPUs (vCPUs) on a host computer system, the method comprising determining a number of CPUs residing on a plurality of CPUs Host computer systems are available on which virtual machines could be provided; Determining a number of hardware threads supported by each CPU on the plurality of host computer systems; Receive a virtual machine request (VM request) containing a number of virtual CPUs and a hardware multithreading parameter; Selecting one of the plurality of host computer systems that includes a number of CPUs having a number of hardware threads that conform to the VM request; and using the hardware multithreading parameter to place the plurality of virtual CPUs on the selected host computer system.

Gemäß einer Ausführungsform wird ein mittels Computer realisiertes Verfahren bereitgestellt, das durch mindestens einen Prozessor ausgeführt wird, um eine Mehrzahl virtueller CPUs (vCPUs) auf einem Host-Computersystem zu platzieren, wobei das Verfahren umfasst: Ermitteln einer Anzahl von CPUs, einer Speichergröße und einer Plattenspeicherplatzgröße, die auf einer Mehrzahl von Host-Computersystemen zur Verfügung stehen, auf denen virtuelle Maschinen bereitgestellt werden könnten; Ermitteln einer Anzahl von Hardware-Threads, die durch jede CPU auf der Mehrzahl von Host-Computersystemen unterstützt werden; Empfangen einer Virtuelle-Maschine-Anforderung (VM-Anforderung), die enthält: einen Speicherbedarf, der eine Mindestspeichergröße für die VM angibt; einen Plattenbedarf, der eine Mindestplattengröße für die VM angibt; und einen CPU-Bedarf, der eine Anzahl virtueller CPUs für die VM und einen Hardware-Multithreading-Parameter angibt, wobei ein erster Wert des Hardware-Multithreading-Parameters anzeigt, dass Hardware-Multithreading ausgeschaltet ist, ein zweiter Wert des Hardware-Multithreading-Parameters einen numerischen Wert für eine Anzahl von Hardware-Threads anzeigt und ein dritter Wert des Hardware-Multithreading-Parameters anzeigt, dass das ausgewählte Host-Computersystem unabhängig davon ausgewählt wird, ob Hardware-Threading auf dem ausgewählten Host-Computersystem ein- oder ausgeschaltet ist; Auswählen eines der Mehrzahl von Host-Computersystemen, das eine Anzahl von CPUs mit einer Anzahl von Hardware-Threads enthält, die der VM-Anforderung entsprechen; und Verwenden des Hardware-Multithreading-Parameters, um die Mehrzahl von vCPUs auf dem ausgewählten Host-Computersystem zu platzieren, indem jede vCPU in der VM auf einem anderen physischen Kern in dem ausgewählten Host-Computersystem platziert wird, wenn der Hardware-Multithreading-Parameter anzeigt, dass Hardware-Multithreading ausgeschaltet ist, und indem jede vCPU in der VM auf einem anderen Hardware-Thread im ausgewählten Host-Computersystem platziert wird, wenn der Hardware-Multithreading-Parameter die Anzahl von Hardware-Threads anzeigt.According to one embodiment, there is provided a computer implemented method executed by at least one processor to place a plurality of virtual CPUs (vCPUs) on a host computer system, the method comprising: determining a number of CPUs, a memory size, and a Disk space size available on a plurality of host computer systems on which virtual machines could be deployed; Determining a number of hardware threads supported by each CPU on the plurality of host computer systems; Receiving a virtual machine request (VM request) that includes: a memory requirement indicating a minimum amount of memory for the VM; a disk requirement indicating a minimum disk size for the VM; and a CPU demand indicating a number of virtual CPUs for the VM and a hardware multithreading parameter, wherein a first value of the hardware multithreading parameter indicates that hardware multithreading is disabled, a second value of the hardware multithreading Parameters displays a numeric value for a number of hardware threads, and a third value of the hardware multithreading parameter indicates that the selected host computer system is selected regardless of whether hardware threading is on or off on the selected host computer system ; Selecting one of the plurality of host computer systems that includes a number of CPUs having a number of hardware threads that conform to the VM request; and using the hardware multithreading parameter to place the plurality of vCPUs on the selected host computer system by placing each vCPU in the VM on a different physical core in the selected host computer system when the hardware multithreading parameter indicates that hardware multithreading is turned off and by placing each vCPU in the VM on a different hardware thread in the selected host computer system when the hardware multithreading parameter indicates the number of hardware threads.

Gemäß einer Ausführungsform wird ein Verfahren wie im obigen Absatz beschrieben bereitgestellt, das ferner ein Ändern der Größe der VM unter Verwendung des Hardware-Multithreading-Parameters umfasst.According to one embodiment, a method as described in the above paragraph is provided, further comprising changing the size of the VM using the hardware multithreading parameter.

Gemäß einer Ausführungsform wird eine Vorrichtung bereitgestellt, umfassend: mindestens einen Prozessor; einen Speicher, der mit dem mindestens einen Prozessor verbunden ist; einen Cloud-Manager, der sich im Speicher befindet und durch den mindestens einen Prozessor ausgeführt wird, wobei der Cloud-Manager aufweist: einen Host-Überwachungsmechanismus, der ermittelt: eine Anzahl von CPUs, die auf einer Mehrzahl von Host-Computersystemen zur Verfügung stehen, auf denen virtuelle Maschinen bereitgestellt werden könnten; eine Anzahl von Hardware-Threads, die durch jede CPU auf der Mehrzahl von Host-Computersystemen unterstützt werden; und, ob für jede CPU auf der Mehrzahl von Host-Computersystemen geteilte Kerne aktiviert sind; einen Host-Auswahlmechanismus, der eine Virtuelle-Maschine-Anforderung (VM-Anforderung) empfängt, die eine Anzahl virtueller CPUs; und einen Hardware-Multithreading-Parameter enthält; wobei der Host-Auswahlmechanismus eines der Mehrzahl von Host-Computersystemen auswählt, das eine Anzahl von CPUs mit einer Anzahl von Hardware-Threads und Einstellungen für geteilte Kerne enthält, die der Anzahl virtueller CPUs und dem Hardware-Multithreading-Parameter in der VM-Anforderung entsprechen.According to one embodiment, there is provided an apparatus comprising: at least one processor; a memory connected to the at least one processor; a cloud manager located in memory and executed by the at least one processor, the cloud manager comprising: a host monitoring mechanism that determines: a number of CPUs available on a plurality of host computer systems on which virtual machines could be deployed; a number of hardware threads supported by each CPU on the plurality of host computer systems; and whether cores shared by each CPU on the plurality of host computer systems are enabled; a host selection mechanism that receives a virtual machine (VM) request that includes a number of virtual CPUs; and includes a hardware multithreading parameter; wherein the host selection mechanism selects one of the plurality of host computer systems that includes a number of CPUs having a number of hardware threads and shared core settings, the number of virtual CPUs, and the hardware multithreading parameter in the VM request correspond.

Gemäß einer Ausführungsform wird ein mittels Computer realisiertes Verfahren bereitgestellt, das durch mindestens einen Prozessor ausgeführt wird, um eine Mehrzahl virtueller CPUs (vCPUs) auf einem Host-Computersystem zu platzieren, wobei das Verfahren umfasst: Ermitteln einer Anzahl von CPUs, die auf einer Mehrzahl von Host-Computersystemen zur Verfügung stehen, auf denen virtuelle Maschinen bereitgestellt werden könnten; Ermitteln einer Anzahl von Hardware-Threads, die durch jede CPU auf der Mehrzahl von Host-Computersystemen unterstützt werden; Ermitteln, ob bei jeder CPU auf der Mehrzahl von Host-Computersystemen geteilte Kerne aktiviert sind, und wenn dem so ist, einer Anzahl von geteilten Kernen pro Kern; Empfangen einer Virtuelle-Maschine-Anforderung (VM-Anforderung), die eine Anzahl virtueller CPUs und einen Hardware-Multithreading-Parameter enthält; und Auswählen eines der Mehrzahl von Host-Computersystemen, das eine Anzahl von CPUs mit einer Anzahl von Hardware-Threads und Einstellungen für geteilte Kerne enthält, die der Anzahl virtueller CPUs und dem Hardware-Multithreading-Parameter in der VM-Anforderung entsprechen.According to one embodiment, there is provided a computer-implemented method executed by at least one processor to place a plurality of virtual CPUs (vCPUs) on a host computer system, the method comprising: determining a plurality of CPUs that are in plurality of host computer systems on which virtual machines could be provided; Determining a number of hardware threads supported by each CPU on the plurality of host computer systems; Determining if each core on the plurality of host computer systems has shared cores enabled, and if so, a number of shared cores per core; Receiving a virtual machine request (VM request) containing a number of virtual CPUs and a hardware multithreading parameter; and selecting one of the plurality of host computer systems that includes a number of CPUs having a number of hardware threads and shared core settings that correspond to the number of virtual CPUs and the hardware multithreading parameter in the VM request.

Gemäß einer Ausführungsform wird ein mittels Computer realisiertes Verfahren bereitgestellt, das durch mindestens einen Prozessor ausgeführt wird, um eine Mehrzahl virtueller CPUs (vCPUs) auf einem Host-Computersystem zu platzieren, wobei das Verfahren umfasst: Ermitteln einer Anzahl von CPUs, einer Speichergröße und einer Plattenspeicherplatzgröße, die auf einer Mehrzahl von Host-Computersystemen zur Verfügung stehen, auf denen virtuelle Maschinen bereitgestellt werden könnten; Ermitteln einer Anzahl von Hardware-Threads, die durch jede CPU auf der Mehrzahl von Host-Computersystemen unterstützt werden; Ermitteln, ob bei jeder CPU auf der Mehrzahl von Host-Computersystemen geteilte Kerne aktiviert sind; Erhalten einer Virtuelle-Maschine-Anforderung (VM-Anforderung), die enthält: einen Speicherbedarf, der eine Mindestspeichergröße für die VM angibt; einen Plattenbedarf, der eine Mindestplattengröße für die VM angibt; und einen CPU-Bedarf, der eine Anzahl virtueller CPUs für die VM und einen Hardware-Multithreading-Parameter angibt, wobei ein erster Wert des Hardware-Multithreading-Parameters anzeigt, dass Hardware-Multithreading ausgeschaltet ist, ein zweiter Wert des Hardware-Multithreading-Parameters einen numerischen Wert für eine Anzahl von Hardware-Threads anzeigt und ein dritter Wert des Hardware-Multithreading-Parameters anzeigt, dass das ausgewählte Host-Computersystem unabhängig davon ausgewählt wird, ob Hardware-Threading auf dem ausgewählten Host-Computersystem ein- oder ausgeschaltet ist; Auswählen eines der Mehrzahl von Host-Computersystemen, das eine Anzahl von CPUs mit einer Anzahl von Hardware-Threads und Einstellungen für geteilte Kerne enthält, die der Anzahl virtueller CPUs und dem Hardware-Multithreading-Parameter in der VM-Anforderung entsprechen; und Verwenden des Hardware-Multithreading-Parameters und der Einstellungen für geteilte Kerne des ausgewählten Host-Computersystems, um die Mehrzahl von vCPUs auf dem ausgewählten Host-Computersystem zu platzieren, indem jede vCPU in der VM auf einem anderen physischen Kern in dem ausgewählten Host-Computersystem platziert wird, wenn der Hardware-Multithreading-Parameter anzeigt, dass Hardware-Multithreading ausgeschaltet ist, und indem jede vCPU in der VM auf einem anderen Hardware-Thread in einem Teilkern in einer CPU in dem ausgewählten Host-Computersystem platziert wird, wenn der Hardware-Multithreading-Parameter die Anzahl von Hardware-Threads anzeigt und anzeigt, dass die Einstellungen für geteilte Kerne des ausgewählten Computersystems aktiviert sind.According to one embodiment, there is provided a computer implemented method executed by at least one processor to place a plurality of virtual CPUs (vCPUs) on a host computer system, the method comprising: determining a number of CPUs, a memory size, and a Disk space size available on a plurality of host computer systems on which virtual machines could be deployed; Determining a number of hardware threads supported by each CPU on the plurality of host computer systems; Determining whether each core on the plurality of host computer systems has shared cores enabled; Obtaining a virtual machine (VM) request that includes: a memory requirement indicating a minimum amount of memory for the VM; a disk requirement indicating a minimum disk size for the VM; and a CPU demand indicating a number of virtual CPUs for the VM and a hardware multithreading parameter, wherein a first value of the hardware multithreading parameter indicates that hardware multithreading is disabled, a second value of the hardware multithreading Parameters displays a numeric value for a number of hardware threads, and a third value of the hardware multithreading parameter indicates that the selected host computer system is independent selecting whether hardware threading is on or off on the selected host computer system; Selecting one of the plurality of host computer systems that includes a number of CPUs having a number of hardware threads and shared core settings that correspond to the number of virtual CPUs and the hardware multithreading parameter in the VM request; and using the hardware multithreading parameter and the split-core settings of the selected host computer system to place the plurality of vCPUs on the selected host computer system by exposing each vCPU in the VM to a different physical core in the selected host computer system. Computer system is placed when the hardware multithreading parameter indicates that hardware multithreading is turned off, and by placing each vCPU in the VM on a different hardware thread in a sub-core in a CPU in the selected host computer system, if the Hardware Multithreading parameter displays the number of hardware threads and indicates that the split cores settings of the selected computer system are enabled.

Gemäß einer Ausführungsform überwacht ein Cloud-Manager verfügbare Ressourcen auf Host-Computersystemen einschließlich einer Anzahl von Hardware-Threads, die durch CPUs auf den Host-Computersystemen unterstützt werden. Der Cloud-Manager empfängt eine Anforderung zum Bereitstellen einer virtuellen Maschine (VM), die einen Hardware-Multithreading-Parameter enthält, der angibt, ob Hardware-Multithreading auf dem Host-Computersystem zugelassen ist. Der Cloud-Manager wählt anschließend ein Host-Computersystem für die VM aus und berücksichtigt hierbei den Hardware-Multithreading-Parameter. Die VM wird anschließend unter Verwendung des Hardware-Multithreading-Parameters auf dem ausgewählten Host-Computersystem platziert.According to one embodiment, a cloud manager monitors available resources on host computer systems, including a number of hardware threads supported by CPUs on the host computer systems. The cloud manager receives a request to deploy a virtual machine (VM) that contains a hardware multithreading parameter that indicates whether hardware multithreading is allowed on the host computer system. The cloud manager then selects a host computer system for the VM, taking into account the hardware multithreading parameter. The VM is then placed on the selected host computer system using the hardware multithreading parameter.

Gemäß einer Ausführungsform überwacht ein Cloud-Manager verfügbare Ressourcen auf Host-Computersystemen einschließlich einer Anzahl von Hardware-Threads, die durch CPUs auf den Host-Computersystemen unterstützt werden, und, ob bei den CPUs geteilte Kerne aktiviert sind. Der Cloud-Manager empfängt eine Anforderung zum Bereitstellen einer virtuellen Maschine (VM), die einen Hardware-Multithreading-Parameter enthält, der angibt, ob Hardware-Multithreading auf dem Host-Computersystem zugelassen ist. Der Cloud-Manager wählt anschließend ein Host-Computersystem für die VM aus und berücksichtigt hierbei den Hardware-Multithreading-Parameter, die durch die CPU unterstützten Hardware-Threads und die Einstellungen für geteilte Kerne. Die VM wird anschließend unter Verwendung des Hardware-Multithreading-Parameters auf dem ausgewählten Host-Computersystem platziert. Das Ergebnis ist eine effizientere Nutzung der CPU-Ressourcen in einem Host für eine virtuelle Maschine.In one embodiment, a cloud manager monitors available resources on host computer systems, including a number of hardware threads supported by CPUs on the host computer systems, and whether shared cores are enabled on the CPUs. The cloud manager receives a request to deploy a virtual machine (VM) that contains a hardware multithreading parameter that indicates whether hardware multithreading is allowed on the host computer system. The cloud manager then selects a host computer system for the VM, taking into account the hardware multithreading parameter, the hardware threads supported by the CPU, and the shared core settings. The VM is then placed on the selected host computer system using the hardware multithreading parameter. The result is a more efficient use of CPU resources in a host for a virtual machine.

Die vorgenannten und weitere Merkmale und Vorteile werden anhand der folgenden ausführlicheren Beschreibung deutlich, wie in den beigefügten Zeichnungen veranschaulicht.The foregoing and other features and advantages will be apparent from the following more particular description, as illustrated in the accompanying drawings.

KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN IN DEN ZEICHNUNGENBRIEF DESCRIPTION OF THE VARIOUS VIEWS IN THE DRAWINGS

Ausführungsformen der vorliegenden Erfindung werden lediglich beispielhaft und unter Bezugnahme auf die folgenden Zeichnungen beschrieben: Ähnliche Bezeichnungen kennzeichnen ähnliche Elemente:Embodiments of the present invention will be described by way of example only and with reference to the following drawings: like terms denote similar elements:

1 ist ein Blockschema eines Cloud-Computing-Knotens gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung; 1 Fig. 10 is a block diagram of a cloud computing node according to a preferred embodiment of the present invention;

2 ist ein Blockschema einer Cloud-Computing-Umgebung gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung; 2 Figure 12 is a block diagram of a cloud computing environment according to a preferred embodiment of the present invention;

3 ist ein Blockschema von Abstraktionsmodellschichten gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung; 3 Fig. 12 is a block diagram of abstraction model layers according to a preferred embodiment of the present invention;

4 ist ein Blockschema, das einige Merkmale eines Cloud-Managers gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt; 4 Fig. 10 is a block diagram showing some features of a cloud manager according to a preferred embodiment of the present invention;

5 ist ein Blockschema, das einige Merkmale einer Cloud-VM-Anforderung gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt; 5 FIG. 10 is a block diagram showing some features of a cloud VM request in accordance with a preferred embodiment of the present invention; FIG.

6 ist ein Flussdiagramm eines Verfahrens für einen Cloud-Manager zur Protokollierung verfügbarer Ressourcen auf infrage kommenden Host-Computersystemen gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung; 6 FIG. 10 is a flow chart of a method for a cloud manager to log available resources on candidate host computer systems in accordance with a preferred embodiment of the present invention;

7 ist ein Flussdiagramm eines Verfahrens für einen Cloud-Manager zum Bereitstellen einer VM auf einem Host-Computersystem gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung; 7 FIG. 10 is a flowchart of a method for a cloud manager to provide a VM on a host computer system according to a preferred embodiment of the present invention; FIG.

8 ist ein Blockschema einer dem Stand der Technik entsprechenden x86-CPU mit zwei Kernen (Dual-Core-CPU); 8th Fig. 12 is a block diagram of a prior art x86 dual core CPU;

9 ist ein Flussdiagramm eines dem Stand der Technik entsprechenden Verfahrens für einen Cloud-Manager zur Auswahl eines Hosts für eine VM-Anforderung; 9 FIG. 10 is a flowchart of a prior art method for a cloud manager to select a host for a VM request; FIG.

10 ist ein Blockschema, das zeigt, wie ein CPU-Bedarf in einer dem Stand der Technik entsprechenden Cloud-VM-Anforderung angegeben wird; 10 Fig. 10 is a block diagram showing how CPU demand is indicated in a prior art cloud VM request;

11 ist ein Blockschema eines infrage kommenden Host-Computersystems, das drei x86-Dual-Core-Prozessoren gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt; 11 Fig. 12 is a block diagram of a candidate host computer system showing three x86 dual-core processors in accordance with a preferred embodiment of the present invention;

12 ist ein Blockschema, das virtuelle Maschinen zeigt, die vCPUs enthalten, die gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dem infrage kommenden Host in 11 zugeordnet werden können; 12 FIG. 12 is a block diagram illustrating virtual machines containing vCPUs that, according to a preferred embodiment of the present invention, are suitable for the host in FIG 11 can be assigned;

13 ist ein Flussdiagramm eines dem Stand der Technik entsprechenden Verfahrens zum Platzieren von vCPUs auf physischen Kernen in einem Host-Computersystem; 13 FIG. 10 is a flowchart of a prior art method of placing vCPUs on physical cores in a host computer system; FIG.

14 ist ein Blockschema, das eine Architektur einer Power8-CPU mit sechs Kernen zeigt, wobei zwei der sechs Kerne gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dargestellt sind; 14 Fig. 12 is a block diagram showing an architecture of a six-core Power8 CPU showing two of the six cores according to a preferred embodiment of the present invention;

15 ist ein Flussdiagramm eines Verfahrens gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zum Verwenden eines Hardware-Multithreading-Parameters, um einen Host auszuwählen und das Platzieren für vCPUs auf dem Host zu steuern; 15 FIG. 10 is a flowchart of a method according to a preferred embodiment of the present invention for using a hardware multithreading parameter to select a host and to control placement for vCPUs on the host; FIG.

16 ist ein beispielhafter CPU-Bedarf, der eine Anzahl von vCPUs und einen Hardware-Multithreading-Parameter gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung enthält; 16 FIG. 10 is an exemplary CPU requirement including a number of vCPUs and a hardware multithreading parameter according to a preferred embodiment of the present invention; FIG.

17 ist ein erster beispielhafter CPU-Bedarf, der einen Hardware-Multithreading-Parameter gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung enthält; 17 FIG. 10 is a first exemplary CPU requirement including a hardware multithreading parameter in accordance with a preferred embodiment of the present invention; FIG.

18 zeigt einen infrage kommenden Power8-Host gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung, der dem CPU-Bedarf in 17 entspricht. 18 shows a candidate Power8 host according to a preferred embodiment of the present invention, which meets the CPU needs in 17 equivalent.

19 zeigt einen zweiten beispielhaften CPU-Bedarf, der einen Hardware-Multithreading-Parameter gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung enthält; 19 shows a second exemplary CPU requirement including a hardware multithreading parameter in accordance with a preferred embodiment of the present invention;

20 zeigt einen infrage kommenden Power8-Host gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung, der dem CPU-Bedarf in 19 entspricht. 20 shows a candidate Power8 host according to a preferred embodiment of the present invention, which meets the CPU needs in 19 equivalent.

21 zeigt einen dritten beispielhaften CPU-Bedarf, der einen Hardware-Multithreading-Parameter gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung enthält; 21 shows a third exemplary CPU requirement including a hardware multithreading parameter in accordance with a preferred embodiment of the present invention;

22 zeigt einen infrage kommenden Power8-Host gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung, der dem CPU-Bedarf in 21 entspricht. 22 shows a candidate Power8 host according to a preferred embodiment of the present invention, which meets the CPU needs in 21 equivalent.

23 zeigt einen vierten beispielhaften CPU-Bedarf, der einen Hardware-Multithreading-Parameter gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung enthält; 23 shows a fourth exemplary CPU requirement including a hardware multithreading parameter in accordance with a preferred embodiment of the present invention;

24 zeigt einen infrage kommenden Power8-Host gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung, der dem CPU-Bedarf in 23 entspricht. 24 shows a candidate Power8 host according to a preferred embodiment of the present invention, which meets the CPU needs in 23 equivalent.

25 ist ein Flussdiagramm eines Verfahrens zum Auswählen eines Hosts, der einem CPU-Bedarf entspricht, der einen Hardware-Multithreading-Parameter gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung enthält; 25 FIG. 10 is a flow chart of a method for selecting a host that meets a CPU requirement that includes a hardware multithreading parameter in accordance with a preferred embodiment of the present invention; FIG.

26 ist ein Flussdiagramm eines Verfahrens zum Platzieren von vCPUs auf einem ausgewählten Host-Computersystem unter Verwendung eines Hardware-Multithreading-Parameters; 26 FIG. 10 is a flowchart of a method for placing vCPUs on a selected host computer system using a hardware multithreading parameter; FIG.

27 ist ein Blockschema, das eine Statistik auf der Host-Ebene zeigt, die für jeden infrage kommenden Host gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung erfasst wurde; und 27 Figure 4 is a block diagram showing host-level statistics collected for each candidate host in accordance with a preferred embodiment of the present invention; and

28 ist ein Blockschema, das eine zusätzliche Angabe zeigt, die in einem OpenStack-Typ realisiert werden könnte, um den Hardware-Multithreading-Parameter gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung anzugeben. 28 Figure 13 is a block diagram showing an additional indication that could be realized in an OpenStack type to indicate the hardware multithreading parameter according to a preferred embodiment of the present invention.

29 ist ein Flussdiagramm eines Verfahrens zum Durchführen eines Größenänderungsvorgangs auf einer bestehenden VM, das einen Hardware-Multithreading-Parameter enthalten kann. 29 FIG. 10 is a flow chart of a method for performing a resizing operation on an existing VM that may include a hardware multithreading parameter.

30 ist ein Blockschema, das eine Architektur einer Power8-CPU mit sechs Kernen mit aktivierten geteilten Kernen zeigt, wobei zwei der sechs Kerne dargestellt sind; 30 Figure 12 is a block diagram showing an architecture of a Power8 CPU with six cores with activated split cores, showing two of the six cores;

31 ist ein beispielhafter CPU-Bedarf, der eine Anzahl von vCPUs und einen Hardware-Multithreading-Parameter enthält; 31 FIG. 10 is an exemplary CPU requirement including a number of vCPUs and a hardware multithreading parameter; FIG.

32 ist ein erster beispielhafter CPU-Bedarf, der einen Hardware-Multithreading-Parameter enthält; 32 FIG. 10 is a first exemplary CPU requirement including a hardware multithreading parameter; FIG.

33 zeigt einen infrage kommenden Power8-Host gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung, der dem CPU-Bedarf in 32 entspricht; 33 shows a candidate Power8 host according to a preferred embodiment of the present invention, which meets the CPU needs in 32 corresponds;

34 zeigt einen zweiten beispielhaften CPU-Bedarf, der einen Hardware-Multithreading-Parameter enthält; 34 shows a second exemplary CPU requirement including a hardware multithreading parameter;

35 zeigt einen infrage kommenden Power8-Host gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung, der dem CPU-Bedarf in 34 entspricht; 35 shows a candidate Power8 host according to a preferred embodiment of the present invention, which meets the CPU needs in 34 corresponds;

36 zeigt einen dritten beispielhaften CPU-Bedarf, der einen Hardware-Multithreading-Parameter enthält; 36 shows a third exemplary CPU requirement including a hardware multithreading parameter;

37 zeigt einen infrage kommenden Power8-Host gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung, der dem CPU-Bedarf in 36 entspricht; 37 shows a candidate Power8 host according to a preferred embodiment of the present invention, which meets the CPU needs in 36 corresponds;

38 zeigt einen vierten beispielhaften CPU-Bedarf, der einen Hardware-Multithreading-Parameter enthält; 38 shows a fourth exemplary CPU requirement including a hardware multithreading parameter;

39 zeigt einen infrage kommenden Power8-Host gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung, der dem CPU-Bedarf in 38 entspricht; 39 shows a candidate Power8 host according to a preferred embodiment of the present invention, which meets the CPU needs in 38 corresponds;

40 ist ein Flussdiagramm eines Verfahrens zum Auswählen eines Hosts, der einem CPU-Bedarf entspricht, der einen Hardware-Multithreading-Parameter enthält, der berücksichtigt, wenn ein Host geteilte Kerne hat; 40 FIG. 10 is a flow chart of a method for selecting a host that meets a CPU requirement that includes a hardware multithreading parameter that takes into account when a host has shared cores;

41 ist ein Blockschema, das einen Filter zeigt, der verwendet werden kann, um Hosts herauszufiltern, bei denen der Modus mit geteilten Kernen aktiviert ist, wenn der Hardware-Multithreading-Parameter auf 4 oder 8 gesetzt ist; und 41 FIG. 12 is a block diagram showing a filter that may be used to filter out hosts with shared core mode enabled when the hardware multithreading parameter is set to 4 or 8; FIG. and

42 ist ein Flussdiagramm eines Verfahrens zum Platzieren von vCPUs auf einem ausgewählten Host-Computersystem unter Verwendung eines Hardware-Multithreading-Parameters, der berücksichtigt, wenn ein Host geteilte Kerne hat; 42 FIG. 10 is a flow diagram of a method for placing vCPUs on a selected host computer system using a hardware multithreading parameter that takes into account when a host has shared cores; FIG.

AUSFÜHRLICHE BESCHREIBUNGDETAILED DESCRIPTION

Ein Cloud-Manager überwacht verfügbare Ressourcen auf Host-Computersystemen einschließlich einer Anzahl von Hardware-Threads, die durch CPUs auf den Host-Computersystemen unterstützt werden, und, ob bei den CPUs geteilte Kerne aktiviert sind. Der Cloud-Manager empfängt eine Anforderung zum Bereitstellen einer virtuellen Maschine (VM), die einen Hardware-Multithreading-Parameter enthält, der das Ausmaß von Hardware-Multithreading angibt, das auf dem Host-Computersystem erforderlich ist. Der Cloud-Manager wählt anschließend ein Host-Computersystem für die VM aus und berücksichtigt hierbei den Hardware-Multithreading-Parameter, die durch die CPU unterstützten Hardware-Threads und die Einstellungen für geteilte Kerne. Die VM wird anschließend unter Verwendung des Hardware-Multithreading-Parameters auf dem ausgewählten Host-Computersystem platziert. Das Ergebnis ist eine effizientere Nutzung der CPU-Ressourcen in einem Host für eine virtuelle Maschine.A cloud manager monitors available resources on host computer systems, including a number of hardware threads supported by CPUs on the host computer systems, and whether shared cores are enabled on the CPUs. The cloud manager receives a request to deploy a virtual machine (VM) that contains a hardware multithreading parameter that indicates the amount of hardware multithreading that is required on the host computer system. The cloud manager then selects a host computer system for the VM, taking into account the hardware multithreading parameter, the hardware threads supported by the CPU, and the shared core settings. The VM is then placed on the selected host computer system using the hardware multithreading parameter. The result is a more efficient use of CPU resources in a host for a virtual machine.

Es versteht sich im Vorhinein, dass, obwohl diese Offenbarung eine ausführliche Beschreibung des Cloud-Computing enthält, eine Realisierung der hierin vorgestellten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist. Vielmehr können Ausführungsformen der vorliegenden Erfindung in Verbindung mit einer beliebigen anderen Art von Datenverarbeitungsumgebung realisiert werden, die gegenwärtig bekannt ist oder in Zukunft entwickelt wird.It should be understood in advance that although this disclosure includes a detailed description of cloud computing, implementation of the teachings presented herein is not limited to a cloud computing environment. Rather, embodiments of the present invention may be practiced in conjunction with any other type of computing environment that is currently known or will be developed in the future.

Cloud-Computing ist ein Modell zum Bereitstellen von Diensten, um einen praktischen und bei Bedarf verfügbaren Netzwerkzugriff auf ein gemeinsam genutztes Reservoir konfigurierbarer Datenverarbeitungsressourcen (z. B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Arbeitsspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste) zu ermöglichen, die bei minimalem Verwaltungsaufwand oder minimaler Interaktion mit einem Anbieter des Dienstes schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften, mindestens drei Dienstmodelle und mindestens vier Bereitstellungsmodelle enthalten.Cloud computing is a model for providing services to provide convenient and on-demand network access to a shared reservoir of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services). which can be quickly deployed and released with minimal overhead or minimal interaction with a service provider. This cloud model can contain at least five properties, at least three service models, and at least four deployment models.

Die Eigenschaften sind folgende:The properties are the following:

On-demand Self Service (Selbstzuweisung bei Bedarf): Ein Cloud-Kunde kann einseitig Datenverarbeitungsfähigkeiten wie zum Beispiel Serverzeit und Netzwerkspeicher dem Bedarf entsprechend automatisch bereitstellen, ohne dass eine Interaktion von Menschen mit dem Anbieter des Dienstes erforderlich ist.On-demand self-service: A cloud customer can unilaterally provide data processing capabilities such as server time and network storage as needed, without the need for human interaction with the service provider.

Broad Network Access (umfassender Netzwerkzugriff): Es stehen Fähigkeiten über ein Netzwerk zur Verfügung, auf die der Zugriff über Standardmechanismen erfolgt, die die Verwendung heterogener Thin- oder Thick-Client-Plattformen (z. B. Mobiltelefone, Notebook-Computer und PDAs) unterstützen.Broad Network Access: Provides capabilities over a network accessed through standard mechanisms that allow the use of heterogeneous thin or thick client platforms (eg, cell phones, notebook computers, and PDAs) support.

Resource Pooling (Ressourcenbündelung): Die Datenverarbeitungsressourcen des Anbieters werden gebündelt, um mehrere Kunden unter Verwendung eines Mehrfachnutzermodells mit unterschiedlichen physischen und virtuellen Ressourcen zu bedienen, die entsprechend dem Bedarf dynamisch zugewiesen und neu zugewiesen werden. Es besteht eine Art Ortsunabhängigkeit in der Weise, dass der Kunde im Allgemeinen keine Kontrolle oder Kenntnis über den exakten Ort der bereitgestellten Ressourcen hat, aber möglicherweise in der Lage ist, den Ort auf einer höheren Abstraktionsebene (z. B. Land, Bundesstaat oder Datenverarbeitungszentrum) anzugeben.Resource Pooling: The vendor's computing resources are bundled to accommodate multiple customers using a multi-user model to service different physical and virtual resources that are dynamically allocated and reassigned according to demand. There is some kind of location independence in that the customer generally has no control or knowledge of the exact location of the resources provided but may be able to locate the site at a higher level of abstraction (eg, country, state, or data processing center ).

Rapid Elasticity (rasche Elastizität): Fähigkeiten können rasch und elastisch bereitgestellt werden, in einigen Fällen automatisch, um den Funktionsumfang schnell nach oben anzupassen, und schnell freigegeben werden, um den Funktionsumfang schnell nach unten anzupassen. Für den Kunden entsteht oftmals der Eindruck, dass die zum Bereitstellen verfügbaren Fähigkeiten unbegrenzt sind und jederzeit in jeder beliebigen Menge gekauft werden können.Rapid Elasticity: Capabilities can be deployed quickly and elastically, in some cases automatically, to quickly scale up the functionality, and quickly released to rapidly adjust the functionality. The customer often gets the impression that the capabilities available for deployment are unlimited and can be purchased at any time in any quantity.

Measured Service (bemessener Dienst): Cloud-Systeme steuern und optimieren automatisch die Ressourcenverwendung durch Nutzung einer Bemessungsfähigkeit auf einer bestimmten Abstraktionsebene, die für die Art des Dienstes geeignet ist (z. B. Speicher, Verarbeitung, Bandbreite und aktive Benutzerkonten). Die Ressourcennutzung kann überwacht, gesteuert und gemeldet werden, sodass Transparenz sowohl für den Anbieter als auch den Kunden des genutzten Dienstes besteht.Measured Service: Cloud systems automatically control and optimize resource usage by using a design capability at a given level of abstraction appropriate to the type of service (eg, storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported so that there is transparency for both the provider and the customer of the service being used.

Die Dienstmodelle sind folgende:The service models are the following:

Software as a Service (SaaS) (Software als Dienst): Die dem Kunden bereitgestellte Fähigkeit besteht darin, die auf einer Cloud-Infrastruktur ausgeführten Anwendungen des Anbieters zu nutzen. Die Anwendungen sind von verschiedenen Client-Einheiten aus über eine Thin-Client-Schnittstelle wie zum Beispiel über einen Web-Browser (z. B. auf dem Web beruhende eMail) zugänglich. Der Kunde verwaltet oder steuert die unterlagerte Cloud-Infrastruktur einschließlich von Netzwerken, Servern, Betriebssystemen, Speicherplatz oder sogar einzelnen Anwendungsfähigkeiten nicht, abgesehen von der möglichen Ausnahme eingeschränkter benutzerspezifischer Konfigurationseinstellungen von Anwendungen.Software as a Service (SaaS): The capability provided to the customer is to use the vendor's applications running on a cloud infrastructure. The applications are accessible from various client devices via a thin client interface, such as via a web browser (eg, e-mail based on the web). The customer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, storage, or even individual application capabilities, except for the possible exception of limited application custom configuration settings.

Platform as a Service (PaaS) (Plattform als Dienst): Die dem Kunden bereitgestellte Fähigkeit besteht darin, auf der Cloud-Infrastruktur vom Kunden erzeugte oder erworbene Anwendungen bereitzustellen, die unter Verwendung von Programmiersprachen und Programmierwerkzeugen erzeugt wurden, die durch den Anbieter unterstützt werden. Der Kunde verwaltet oder steuert die unterlagerte Cloud-Infrastruktur einschließlich von Netzwerken, Servern, Betriebssystemen, Speicherplatz nicht, hat aber die Kontrolle über die bereitgestellten Anwendungen und möglicherweise über Konfigurationen der Hosting-Umgebung der Anwendungen.Platform as a Service (PaaS): The ability provided to the customer is to provide customer-generated or acquired applications on the cloud infrastructure that are generated using programming languages and programming tools supported by the provider , The customer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, storage, but has control of the deployed applications and possibly configurations of the application hosting environment.

Infrastructure as a Service (IaaS) (Infrastruktur als Dienst): Die dem Kunden bereitgestellte Fähigkeit besteht darin, Verarbeitung, Speicherplatz, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Kunde beliebige Software bereitstellen und ausführen kann, zu der Betriebssysteme und Anwendungen gehören können. Der Kunde verwaltet oder steuert die unterlagerte Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicherplatz sowie bereitgestellte Anwendungen und möglicherweise eine eingeschränkte Kontrolle über ausgewählte Vernetzungskomponenten (z. B. über Host-Firewalls).Infrastructure as a Service (IaaS): The capability provided to the customer is to provide processing, storage, networking, and other basic computing resources, whereby the customer can deploy and run any software that may include operating systems and applications. The customer does not manage or control the underlying cloud infrastructure, but has control of operating systems, storage space, deployed applications, and possibly limited control over selected networking components (such as host firewalls).

Die Bereitstellungsmodelle sind folgende:The deployment models are:

Private Cloud: Die Cloud-Infrastruktur wird ausschließlich für ein Unternehmen betrieben. Sie kann durch das Unternehmen oder einen Dritten verwaltet werden und auf dem Firmengelände oder außerhalb davon vorhanden sein.Private cloud: The cloud infrastructure is operated exclusively for one company. It may be managed by the Company or a third party and may be located on or outside the Company premises.

Community Cloud: Die Cloud-Infrastruktur wird von mehreren Unternehmen genutzt und unterstützt eine bestimmte Benutzergemeinschaft, die gemeinsame Interessen hat (z. B. eine Aufgabe, Sicherheitsanforderungen, Richtlinie und Gesichtspunkte im Zusammenhang mit der Einhaltung von Gesetzen und Vorschriften). Sie kann durch die Unternehmen oder einen Dritten verwaltet werden und auf dem Firmengelände oder außerhalb davon vorhanden sein.Community Cloud: The cloud infrastructure is used by multiple companies and supports a specific community of common interests (eg a task, security requirements, policy and regulatory compliance issues). It may be managed by the companies or a third party and may exist on or outside the premises.

Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Gruppe in einem Industriezweig zur Verfügung gestellt und ist Eigentum eines Unternehmens, das Cloud-Dienste verkauft.Public Cloud: The cloud infrastructure is made available to the general public or a large group in an industry and is owned by a company that sells cloud services.

Hybrid Cloud: Die Cloud-Infrastruktur ist eine Mischung aus zwei oder mehreren Clouds (Private Cloud, Community Cloud oder Public Cloud), die eigenständige Einheiten bleiben, aber über eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die die Portierbarkeit von Daten und Anwendungen ermöglicht (z. B. Cloud-Zielgruppenverteilung (Cloud Bursting) zum Lastausgleich zwischen Clouds).Hybrid Cloud: The cloud infrastructure is a mix of two or more (private cloud, community cloud, or public cloud) clouds that remain stand-alone entities, but interconnected by a standardized or proprietary technology that enables data and application portability (eg cloud audience distribution (cloud bursting) for load balancing between clouds).

Eine Cloud-Datenverarbeitungsumgebung ist dienstorientiert, wobei der Schwerpunkt auf Zustandslosigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität liegt. Im Mittelpunkt des Cloud-Computing steht eine Infrastruktur, die ein Netzwerk aus untereinander verbundenen Knoten aufweist.A cloud computing environment is service-oriented, with a focus on statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure that has a network of interconnected nodes.

Unter Bezugnahme auf 1 ist dort ein Blockschema eines Beispiels eines Cloud-Computing-Knotens dargestellt. Ein Cloud-Computing-Knoten 100 ist nur ein Beispiel eines geeigneten Cloud-Computing-Knotens und nicht dazu gedacht, eine beliebige Einschränkung hinsichtlich des Schutzbereiches oder der Funktionalität von Ausführungsformen der hierin beschriebenen Erfindung nahezulegen. Ungeachtet dessen kann der Cloud-Computing-Knoten 100 realisiert werden und/oder eine beliebige der hierin oben dargelegten Funktionalitäten durchführen. With reference to 1 There is shown a block diagram of an example of a cloud computing node. A cloud computing node 100 is just one example of a suitable cloud computing node and is not intended to suggest any limitation on the scope or functionality of embodiments of the invention described herein. Regardless, the cloud computing node may 100 and / or perform any of the functionalities set forth hereinabove.

In dem Cloud-Computing-Knoten 100 liegt ein Computersystem/Server 110 vor, das bzw. der in Verbindung mit zahlreichen anderen Mehrzweck- oder Spezial-Datenverarbeitungssystemumgebungen oder derartigen Konfigurationen betriebsfähig ist. Zu Beispielen wohlbekannter Datenverarbeitungssysteme, -umgebungen und/oder -konfigurationen, die zur Verwendung in Verbindung mit dem Computersystem/Server 110 geeignet sind, gehören, ohne auf diese beschränkt zu sein, Personal-Computer-Systeme, Server-Computersysteme, Tablet-Computersysteme, Thin-Clients, Thick-Clients, Hand- oder Notebook-Einheiten, Multiprozessorsysteme, auf Mikroprozessoren beruhende Systeme, Set-Top-Boxen, programmierbare Einheiten der Konsumgüterelektronik, Netzwerk-PCs, Minicomputersysteme, Großrechnersysteme und verteilte Cloud-Computing-Umgebungen, zu denen beliebige der oben erwähnten Systeme oder Einheiten gehören, und dergleichen.In the cloud computing node 100 is a computer system / server 110 which is operable in conjunction with numerous other general purpose or specialty computing system environments or configurations. Examples of well-known data processing systems, environments, and / or configurations for use in conjunction with the computer system / server 110 include, but are not limited to, personal computer systems, server computer systems, tablet computer systems, thin clients, thick clients, hand or notebook units, multiprocessor systems, microprocessor based systems, Top boxes, consumer electronic consumer programmable units, network PCs, minicomputer systems, mainframe systems, and distributed cloud computing environments, including any of the above-mentioned systems or devices, and the like.

Das Computersystem/der Server 110 kann im allgemeinen Kontext von auf einem Computersystem ausführbaren Anweisungen beschrieben werden, wie zum Beispiel von Programmmodulen, die durch ein Computersystem ausgeführt werden. Programmmodule können im Allgemeinen Routinen, Programme, Objekte, Komponenten, Logik und Datenstrukturen usw. aufweisen, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen realisieren. Das Computersystem/der Server 110 kann in verteilten Cloud-Computing-Umgebungen praktisch umgesetzt werden, in denen Aufgaben durch entfernt angeordnete Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. Bei einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl auf lokal als auch auf entfernt angeordneten Computersystem-Speichermedien befinden, zu denen Hauptspeichereinheiten gehören.The computer system / server 110 may be described in the general context of computer system executable instructions, such as program modules being executed by a computer system. Program modules may generally have routines, programs, objects, components, logic, and data structures, etc. that perform certain tasks or implement certain abstract data types. The computer system / server 110 can be practiced in distributed cloud computing environments where tasks are performed by remotely located processing units connected over a communications network. In a distributed cloud computing environment, program modules may reside on both local and remote computer system storage media, including main storage units.

Wie in 1 gezeigt, ist das Computersystem/der Server 110 im Cloud-Computing-Knoten 100 in Form einer Mehrzweck-Datenverarbeitungseinheit dargestellt. Zu den Komponenten des Computersystems/des Servers 110 können, ohne auf diese beschränkt zu sein, ein oder mehrere Prozessoren oder Verarbeitungseinheiten 120, ein Systemspeicher 130 und ein Bus 122 gehören, der verschiedene Systemkomponenten einschließlich des Systemspeichers 130 mit der Verarbeitungseinheit 120 verbindet.As in 1 shown is the computer system / server 110 in the cloud computing node 100 represented in the form of a general-purpose data processing unit. To the components of the computer system / server 110 For example, but not limited to, one or more processors or processing units 120 , a system memory 130 and a bus 122 include various system components including system memory 130 with the processing unit 120 combines.

Der Bus 122 stellt eine oder mehrere beliebiger verschiedener Arten von Busstrukturen dar, zu denen ein Speicherbus oder eine Speichersteuereinheit, ein Peripheriebus, ein Accelerated Graphics Port und ein Prozessorbus oder lokaler Bus gehören, die eine beliebige einer Vielfalt von Busarchitekturen nutzen. Als Beispiel und nicht als Einschränkung gedacht gehören zu derartigen Architekturen der ISA-Bus (ISA = Industry Standard Architecture), der MCA-Bus (MCA = Micro Channel Architecture), der EISA-Bus (EISA = Enhanced ISA), der lokale VESA-Bus (VESA = Video Electronics Standards Association) und der PCI-Bus (PCI = Peripheral Component Interconnect).The bus 122 FIG. 12 illustrates one or more of any of various types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor bus or local bus utilizing any of a variety of bus architectures. By way of example, and not limitation, such architectures include the Industry Standard Architecture (ISA) bus, the Micro Channel Architecture (MCA) bus, the EISA (Enhanced ISA) bus, the local VESA bus. Bus (VESA = Video Electronics Standards Association) and the PCI bus (PCI = Peripheral Component Interconnect).

Das Computersystem/der Server 110 weist normalerweise eine Vielfalt von Medien auf, die von Computersystemen gelesen werden können. Derartige Medien können beliebige verfügbare Medien sein, auf die das Computersystem/der Server 110 zugreifen kann, und zu diesen Medien gehören sowohl flüchtige als auch nichtflüchtige Medien, Wechselmedien und nicht auswechselbare Medien. Als Beispiel eines in 1 dargestellten Wechselmediums soll eine Digital Video Disc (DVD) 192 dienen.The computer system / server 110 typically has a variety of media that can be read by computer systems. Such media may be any available media to which the computer system / server 110 These media include both volatile and non-volatile media, removable media and non-removable media. As an example of an in 1 removable media should be a Digital Video Disc (DVD) 192 serve.

Zum Systemspeicher 130 können für Computersysteme lesbare Medien in Form von flüchtigem Speicher oder nichtflüchtigem Speicher wie zum Beispiel eine Firmware 132 gehören. Die Firmware 132 stellt eine Schnittstelle zur Hardware des Computersystems/Servers 110 bereit. Zum Systemspeicher 130 können auch für Computersysteme lesbare Medien in Form von flüchtigem Speicher wie zum Beispiel Direktzugriffsspeicher (Random Access Memory, RAM) 134 und/oder Cache-Speicher 136 gehören. Das Computersystem/der Server 110 kann ferner andere auswechselbare/nicht auswechselbare, flüchtige/nichtflüchtige Computersystem-Speichermedien enthalten. Lediglich als Beispiel kann ein Speichersystem 140 zum Lesen von einem und Schreiben auf ein nicht auswechselbares, nichtflüchtiges magnetisches Medium (nicht dargestellt und normalerweise als „Festplatte” bezeichnet) bereitgestellt sein. Obwohl nicht dargestellt, können ein Magnetplattenlaufwerk zum Lesen von und Schreiben auf eine auswechselbare nichtflüchtige Magnetplatte (z. B. eine „Diskette”) und ein optisches Plattenlaufwerk zum Lesen von oder Schreiben auf eine auswechselbare nichtflüchtige optische Platte wie zum Beispiel ein CD-ROM, DVD-ROM oder ein anderes optisches Medium bereitgestellt sein. In derartigen Fällen kann jede dieser Einheiten durch eine oder mehrere Datenmedienschnittstellen mit dem Bus 122 verbunden sein. Wie ferner abgebildet und nachfolgend beschrieben, kann der Speicher 130 mindestens ein Programmprodukt aufweisen, das eine Menge (z. B. mindestens eines) von Programmmodulen enthält, die so konfiguriert sind, dass sie die nachstehend ausführlicher beschriebenen Funktionen ausführen.To system memory 130 may be readable media for computer systems in the form of volatile memory or nonvolatile memory such as firmware 132 belong. The firmware 132 provides an interface to the hardware of the computer system / server 110 ready. To system memory 130 can also read computer-readable media in the form of volatile memory such as Random Access Memory (RAM). 134 and / or cache memory 136 belong. The computer system / server 110 may also include other removable / non-removable, volatile / non-volatile computer system storage media. Just as an example, a storage system 140 for reading from and writing to a non-removable non-volatile magnetic medium (not shown and normally referred to as a "hard disk"). Although not shown, a magnetic disk drive for reading from and writing to a removable nonvolatile magnetic disk (e.g., a "floppy disk") and an optical disk drive for reading or writing to a removable nonvolatile optical disk such as a CD-ROM, DVD-ROM or other optical media. In such cases, each of these units may communicate with the bus through one or more data media interfaces 122 be connected. As further illustrated and described below, the memory 130 at least one program product containing a set (eg, at least one) of program modules configured to perform the functions described in more detail below.

Ein Programm/Dienstprogramm 150, das eine Menge (mindestens eines) von Programmmodulen 152 enthält, kann als Beispiel und nicht als Einschränkung im Speicher 130 sowie in einem Betriebssystem, in einem oder mehreren Anwendungsprogrammen oder in anderen Programmmodulen und Programmdaten gespeichert sein. Jedes der Betriebssysteme, eines oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten oder eine bestimmten Kombination davon kann bzw. können eine Realisierungsform einer Vernetzungsumgebung enthalten. Die Programmmodule 152 führen üblicherweise die Funktionen und/oder Methodiken von Ausführungsformen der Erfindung wie hierin beschrieben aus.A program / utility 150 containing a lot (at least one) of program modules 152 contains, as an example and not as a limitation in memory 130 and stored in an operating system, in one or more application programs, or in other program modules and program data. Each of the operating systems, one or more application programs, other program modules and program data, or a particular combination thereof may include one implementation of a networking environment. The program modules 152 typically carry out the functions and / or methodologies of embodiments of the invention as described herein.

Das Computersystem/der Server 110 kann außerdem mit einer oder mehreren externen Einheiten 190 Daten austauschen, zum Beispiel mit einer Tastatur, einer Zeigeeinheit, einer Anzeigeeinheit 180, einem Plattenlaufwerk usw.; mit einer oder mehreren Einheiten, die es einem Benutzer ermöglichen, mit dem Computersystem/Server 110; und/oder mit beliebigen Einheiten (z. B. Netzwerkkarte, Modem usw.) zu interagieren, die es dem Computersystem/Server 110 ermöglichen, mit einer oder mehreren anderen Datenverarbeitungseinheiten Daten auszutauschen. Ein derartiger Datenaustausch kann über Eingabe/Ausgabe-Schnittstellen (E/A-Schnittstellen) 170 stattfinden. Darüber hinaus kann das Computersystem/der Server 110 über einen Netzwerkadapter 160 mit einem oder mehreren Netzwerken Daten austauschen, zum Bespiel mit einem lokalen Netzwerk (Local Area Network, LAN), mit einem allgemeinen Weitverkehrsnetzwerk (Wide Area Network, WAN) und/oder mit einem öffentlichen Netzwerk (z. B. dem Internet). Wie abgebildet tauscht der Netzwerkadapter 160 über den Bus 122 Daten mit den anderen Komponenten des Computersystems/Servers 110 aus. Es sollte klar sein, dass, obwohl nicht abgebildet, andere Hardware- und/oder Softwarekomponenten in Verbindung mit dem Computersystem/Server 110 verwendet werden könnten. Zu Beispielen gehören, ohne auf diese beschränkt zu sein: Mikrocode, Gerätetreiber, redundante Verarbeitungseinheiten, externe Festplatten-Anordnungen, RAID-Systeme (RAID = Redundant Array of Independent Disks), Bandlaufwerke, Speichersysteme zur Datenarchivierung usw.The computer system / server 110 can also work with one or more external units 190 Exchange data, for example with a keyboard, a pointing device, a display unit 180 , a disk drive, etc .; with one or more devices that allow a user to connect to the computer system / server 110 ; and / or to interact with any devices (such as a network card, modem, etc.) that make it to the computer system / server 110 allow data to be exchanged with one or more other data processing units. Such data exchange can be done via input / output interfaces (I / O interfaces) 170 occur. In addition, the computer system / server 110 via a network adapter 160 exchanging data with one or more networks, for example using a local area network (LAN), a wide area network (WAN) and / or a public network (eg the internet). As shown, the network adapter swaps 160 over the bus 122 Data with the other components of the computer system / server 110 out. It should be understood that although not shown, other hardware and / or software components are associated with the computer system / server 110 could be used. Examples include, but are not limited to, microcode, device drivers, redundant processing units, external disk arrays, redundant array of independent disks (RAID) systems, tape drives, data storage systems, and so on.

Unter Bezugnahme auf 2 ist dort eine veranschaulichende Cloud-Computing-Umgebung 200 abgebildet. Wie dargestellt weist die Cloud-Computing-Umgebung 200 einen oder mehrere Cloud-Computing-Knoten 100 auf, mit denen lokale Datenverarbeitungseinheiten wie zum Beispiel ein Personal Digital Assistant (PDA) oder Mobiltelefon 210A, ein Desktop-Computer 210B, ein Notebook-Computer 210C und/oder ein Automobil-Computersystem 210N Daten austauschen können, die von Cloud-Kunden verwendet werden. Die Knoten 100 können untereinander Daten austauschen. Sie können physisch oder virtuell in einem oder mehreren Netzwerken wie zum Beispiel in einer hierin oben beschriebenen Private Cloud, Community Cloud, Public Cloud oder Hybrid Cloud oder in einer Kombinationen davon gruppiert sein (nicht dargestellt). Dies ermöglicht der Cloud-Computing-Umgebung 200, Infrastruktur, Plattformen und/oder Software als Dienste zu bieten, für die ein Cloud-Kunde keine Ressourcen auf einer lokalen Datenverarbeitungseinheit zu verwalten braucht. Es versteht sich, dass die Arten von Datenverarbeitungseinheiten 210A bis N, die in 2 dargestellt sind, als veranschaulichend gedacht sind, und dass die Datenverarbeitungsknoten 100 und die Cloud-Computing-Umgebung 200 über eine beliebige Art von Netzwerkverbindung und/oder netzwerkadressierbarer Verbindung (z. B. unter Verwendung eines Web-Browsers) mit einer beliebigen Art von computergestützter Einheit Daten austauschen können.With reference to 2 there is an illustrative cloud computing environment 200 displayed. As shown, the cloud computing environment 200 one or more cloud computing nodes 100 on which local computing devices such as a personal digital assistant (PDA) or mobile phone 210A , a desktop computer 210B , a notebook computer 210C and / or an automobile computer system 210N Exchange data used by cloud customers. The knots 100 can exchange data with each other. They may be physically or virtually grouped in one or more networks, such as in a Private Cloud, Community Cloud, Public Cloud or Hybrid Cloud described herein, or in a combination thereof (not shown). This allows the cloud computing environment 200 To provide infrastructure, platforms and / or software as services for which a cloud customer does not need to manage resources on a local computing device. It is understood that the types of data processing units 210A to N, the in 2 are intended to be illustrative, and that the computing nodes 100 and the cloud computing environment 200 communicate with any type of computerized unit through any type of network connection and / or network-addressable connection (eg, using a web browser).

Unter Bezugnahme auf 3 ist dort eine Menge von Funktionsabstraktionsschichten dargestellt, die durch die Cloud-Computing-Umgebung 200 in 2 bereitgestellt werden. Im Vorhinein sollte klar sein, dass die in 3 gezeigten Komponenten, Schichten und Funktionen nur zur Veranschaulichung gedacht und die Offenbarung und die Ansprüche nicht auf diese beschränkt sind. Wie abgebildet werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt.With reference to 3 There's a lot of functional abstraction layers out there through the cloud computing environment 200 in 2 to be provided. In advance, it should be clear that the in 3 shown components, layers and functions are intended for illustration only, and the disclosure and the claims are not limited to these. As shown, the following layers and related features are provided.

Eine Hardware- und Softwareschicht 310 enthält Hardware- und Softwarekomponenten. Zu Beispielen von Hardwarekomponenten zählen Großrechner, bei einem Beispiel Systeme des Typs IBM® System z®; auf der RISC-Architektur (RISC = Reduced Instruction Set Computer) beruhende Server, bei einem Beispiel Systeme des Typs IBM System®; Systeme des Typs IBM System x; IBM BladeCenter-Systeme; Speichereinheiten; Netzwerke und Vernetzungskomponenten. Zu Beispielen von Softwarekomponenten zählen Netzwerk-Anwendungsserversoftware, bei einem Beispiel die Anwendungsserversoftware IBM WebSphere®; und Datenbanksoftware, bei einem Beispiel die Datenbanksoftware IBM DB2®. IBM, System z, System p, WebSphere und DB2 sind weltweit in vielen juristischen Zuständigkeitsbereichen eingetragene Marken von International Business Machines Corporation.A hardware and software layer 310 contains hardware and software components. Examples of hardware components include mainframes, in one example systems of the type IBM® System ; servers based on the reduced instruction set computer (RISC) architecture, in one example IBM System® systems ; Systems of the type IBM System x; IBM BladeCenter systems; Storage units; Networks and networking components. Examples of software components include network application server software, in one example, application server software IBM WebSphere ®; and database software, in one example the IBM DB2 ® database software. IBM, System z, System p, WebSphere, and DB2 are registered trademarks of International Business Machines Corporation in many jurisdictions worldwide.

Eine Virtualisierungsschicht 320 stellt eine Absorptionsschicht bereit, von der aus die folgenden Beispiele von virtuellen Einheiten bereitgestellt sein können: virtuelle Server; virtueller Speicher; virtuelle Netzwerke einschließlich virtueller privater Netzwerke; virtuelle Anwendungen und Betriebssysteme; und virtuelle Clients. A virtualization layer 320 provides an absorption layer from which the following examples of virtual entities can be provided: virtual servers; virtual memory; virtual networks, including virtual private networks; virtual applications and operating systems; and virtual clients.

Bei einem Beispiel kann eine Verwaltungsschicht 330 die nachfolgend beschriebenen Funktionen bereitstellen. Die Ressourcenbereitstellung stellt die dynamische Beschaffung von Datenverarbeitungsressourcen und von anderen Ressourcen bereit, die genutzt werden, um Aufgaben innerhalb der Cloud-Computing-Umgebung durchzuführen. Gebührenerfassung und Preisberechnung stellen eine Kostenüberwachung bereit, während Ressourcen innerhalb der Cloud-Computing-Umgebung genutzt werden, sowie Abrechnung und Fakturierung des Verbrauchs dieser Ressourcen. Bei einem Beispiel können diese Ressourcen Anwendungssoftwarelizenzen aufweisen. Die Sicherheit stellt eine Identitätsüberprüfung bei Cloud-Kunden und Aufgaben sowie den Schutz für Daten und andere Ressourcen bereit. Das Benutzerportal bietet Kunden und Systemadministratoren einen Zugang zur Cloud-Computing-Umgebung. Die Dienstgüteverwaltung (Service Level Management) stellt die Zuordnung und Verwaltung von Cloud-Computing-Ressourcen bereit, sodass die jeweils erforderliche Dienstgüte erreicht wird. Eine Planung und Erfüllung von Dienstgütevereinbarungen (Service Level Agreement (SLA), Servicevereinbarung) stellt die Vorausplanung für und die Beschaffung von Cloud-Computing-Ressourcen bereit, für die auf der Grundlage eines SLA zukünftige Anforderungen erwartet werden. Ein Cloud-Manager 350 steht stellvertretend für einen Cloud-Manager, wie nachstehend ausführlicher beschrieben. Obwohl der Cloud-Manager 350 in 3 als in der Verwaltungsschicht 330 befindlich dargestellt ist, kann der Cloud-Manager 350 alle Ebenen überspannen, die in 3 dargestellt sind.In one example, a management layer 330 provide the functions described below. Resource provisioning provides the dynamic procurement of computing resources and other resources used to perform tasks within the cloud computing environment. Billing and pricing provide cost control while leveraging resources within the cloud computing environment, as well as billing and billing for the consumption of those resources. In one example, these resources may include application software licenses. Security provides identity verification to cloud customers and tasks, as well as protection for data and other resources. The user portal provides customers and system administrators with access to the cloud computing environment. Service Level Management provides the allocation and management of cloud computing resources to meet the required quality of service. Service Level Agreement (SLA) planning and fulfillment agreements provide advance planning and sourcing of cloud computing resources expected to meet future requirements based on SLA. A cloud manager 350 is representative of a cloud manager, as described in more detail below. Although the cloud manager 350 in 3 as in the administrative layer 330 can be located, the cloud manager 350 span all levels in 3 are shown.

Eine Betriebslastschicht 340 stellt Beispiele von Funktionalitäten bereit, für die die Cloud-Computing-Umgebung genutzt werden kann. Zu Beispielen von Betriebslasten und Funktionen, die von dieser Schicht aus bereitgestellt werden können, gehören: Zuordnung und Navigation; Softwareentwicklung und Lebenszyklusverwaltung; Bereitstellung von Schulungen in virtuellen Schulungsräumen; Verarbeiten von Datenanalysen; Transaktionsverarbeitung; und mobiler Desktop.An operating load layer 340 provides examples of functionalities for which the cloud computing environment can be used. Examples of operating loads and functions that may be provided from this layer include: mapping and navigation; Software development and lifecycle management; Providing training in virtual classrooms; Processing of data analysis; Transaction processing; and mobile desktop.

Die vorliegende Erfindung kann ein System, ein Verfahren und/oder ein Computerprogrammprodukt sein. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder -medien) mit darauf befindlichen computerlesbaren Programmanweisungen enthalten, um einen Prozessor zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.The present invention may be a system, a method and / or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to perform aspects of the present invention.

Das computerlesbare Speichermedium kann eine materielle Einheit sein, die Anweisungen zur Verwendung durch eine Anweisungsausführungseinheit aufbewahren und speichern kann. Das computerlesbare Speichermedium kann zum Beispiel, ohne auf diese beschränkt zu sein, eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder eine beliebige geeignete Kombination des Vorstehenden sein. Eine nicht erschöpfende Liste genauerer Beispiele des computerlesbaren Speichermediums enthält Folgendes: eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flash-Speicher), einen statischen Direktzugriffsspeicher (SRAM), einen tragbaren Nur-Lese-Speicher in Form einer Compact Disc (CD-ROM), eine Digital Versstile Disc (DVD), einen Speicherstick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhöhte Strukturen in einer Rille mit darauf aufgezeichneten Anweisungen oder beliebige geeignete Kombinationen des Vorstehenden. Ein computerlesbares Speichermedium im hierin verwendeten Sinne ist nicht so auszulegen, dass es sich dabei um flüchtige Signale handelt, beispielsweise um Funkwellen oder sich frei ausbreitende elektromagnetische Wellen, um elektromagnetische Wellen, die sich durch einen Hohlleiter oder andere Übertragungsmedien ausbreiten (z. B. Lichtimpulse, die ein Lichtwellenleiterkabel durchlaufen) oder um elektrische Signale, die über ein Kabel übertragen werden.The computer-readable storage medium may be a physical entity that can store and store instructions for use by an instruction execution unit. For example, but not limited to, the computer-readable storage medium may be an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes: a portable computer diskette, a hard disk, random access memory (RAM), read only memory (ROM), erasable programmable read only memory (EPROM or flash memory). , a static random access memory (SRAM), a compact disc (CD-ROM) portable read only memory, a digital versatile disc (DVD), a memory stick, a floppy disk, a mechanically coded unit such as punched or raised cards Structures in a groove with instructions recorded thereon or any suitable combination of the foregoing. A computer readable storage medium as used herein is not to be construed as being volatile signals, for example, radio waves or free propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (eg, light pulses passing a fiber optic cable) or electrical signals transmitted through a cable.

Hierin beschriebene computerlesbare Programmanweisungen können über ein Netzwerk, zum Beispiel das Internet, ein lokales Netzwerk ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk von einem computerlesbaren Speichermedium auf betreffende Datenverarbeitungs-/Verarbeitungseinheiten oder auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenleiter, drahtlose Übertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder eine Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt computerlesbare Programmanweisungen aus dem Netzwerk und leitet die computerlesbaren Programmanweisungen zur Speicherung in einem computerlesbaren Speichermedium innerhalb der betreffenden Datenverarbeitungs-/Verarbeitungseinheit weiter.Computer readable program instructions described herein may be downloaded over a network, for example the Internet, a local area network, a wide area network and / or a wireless network, from a computer readable storage medium to relevant data processing units or to an external computer or external storage unit. The network may include copper transmission cables, fiber optics, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each data processing unit receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective data processing unit.

Computerlesbare Programmanweisungen zum Ausführen von Operationen der vorliegenden Erfindung können Assembleranweisungen, ISA-Anweisungen (ISA Instruction Set Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, Daten zum Setzen von Zuständen oder entweder Quellcode oder Objektcode sein, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben sind, zu denen eine objektorientierte Programmiersprache wie beispielsweise Smalltalk, C++ oder Ähnliches und herkömmliche prozedurale Programmiersprachen wie beispielsweise die Programmiersprache „C” oder ähnliche Programmiersprachen gehören. Die computerlesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Beim letztgenannten Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über eine beliebige Art von Netzwerk verbunden sein, unter anderem über ein lokales Netzwerk (Local Area Network, LAN) oder über ein Weitverkehrsnetzwerk (Wide Area Network, WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (beispielsweise über das Internet unter Nutzung eines Internet-Dienstanbieters (Internet Service Provider)). Bei einigen Ausführungsformen können elektronische Schaltungen, zu denen beispielsweise programmierbare Logikschaltungen, Field-Programmable Gate Arrays (FPGA) oder programmierbare logische Arrays (PLA) gehören, die computerlesbaren Programmanweisungen ausführen, indem Zustandsinformationen der computerlesbaren Programmanweisungen genutzt werden, um die elektronische Schaltung zu personalisieren, sodass Ausführungsformen der vorliegenden Erfindung durchgeführt werden.Computer readable program instructions for performing operations of the present The invention may be assembler instructions, ISA (ISA) instruction set instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state setting data, or either source code or object code written in any combination of one or more programming languages. which may include an object-oriented programming language such as Smalltalk, C ++ or the like and conventional procedural programming languages such as the "C" programming language or similar programming languages. The computer readable program instructions may be executed entirely on the user's computer, partially on the user's computer, as a stand-alone software package, partially on the user's computer and partially 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 Wide Area Network (WAN), or the connection can be made to an external computer (for example, over the Internet using an Internet Service Provider). In some embodiments, electronic circuits, including, for example, programmable logic circuits, field programmable gate arrays (FPGA), or programmable logic arrays (PLA), may execute the computer readable program instructions by using state information of the computer readable program instructions to personalize the electronic circuit, such that embodiments of the present invention are performed.

Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Flussdiagramm-Darstellungen und/oder Blockschemata von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird klar sein, dass jeder Block der Flussdiagramme und/oder der Blockschemata und Kombinationen von Blöcken in den Flussdiagrammen und/oder Blockschemata durch Computerprogrammanweisungen realisiert werden kann bzw. können.Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowcharts and / or block schemes and combinations of blocks in the flowcharts and / or block schemes may be implemented by computer program instructions.

Diese Computerprogrammanweisungen können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder anderer programmierbaren Datenverarbeitungsvorrichtungen bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder anderer programmierbarer Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel schaffen, um die in einem Block bzw. in den Blöcken des Flussdiagramms und/oder des Blockschemas angegebenen Funktionen/Aktionen zu realisieren. Diese Computerprogrammanweisungen können ebenfalls in einem computerlesbaren Medium gespeichert sein, das einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, sodass das computerlesbare Medium mit darauf gespeicherten Anweisungen ein Erzeugnis aufweist, das Anweisungen enthält, die die in einem Block bzw. in den Blöcken der Flussdiagramme und/oder der Blockschemata angegebene Funktion/Aktion realisieren.These computer program instructions may be provided to a processor of a general purpose 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 data processing device provide means to control the information in a block or file. to implement functions / actions specified in the blocks of the flowchart and / or the block schema. These computer program instructions may also be stored in a computer readable medium that may instruct a computer, other programmable computing devices or other entities to function in a particular manner so that the computer readable medium having instructions stored thereon comprises a product containing instructions corresponding to those in a block or in the blocks of the flowcharts and / or the block diagrams specified function / action.

Die computerlesbaren Programmanweisungen können auch in einen Computer, in andere programmierbare Datenverarbeitungsvorrichtungen oder in andere Einheiten geladen werden, um zu bewirken, dass auf dem Computer, auf anderen programmierbaren Vorrichtungen oder anderen Einheiten eine Reihe von Arbeitsschritten ausgeführt wird, um einen mittels Computer realisierten Prozess zu schaffen, sodass die Anweisungen, die auf dem Computer, auf anderen programmierbaren Vorrichtungen oder Einheiten ausgeführt werden, die in einem Block bzw. in den Blöcken der Flussdiagramme und/oder der Blockschemata angegebenen Funktionen/Aktionen realisieren.The computer readable program instructions may also be loaded into a computer, other programmable computing devices, or other devices to cause a number of operations to be performed on the computer, other programmable devices, or other devices to facilitate a computer-implemented process so that the instructions executed on the computer, on other programmable devices or units, implement the functions / actions specified in a block or in the blocks of the flowcharts and / or the block diagrams.

Die Flussdiagramme und Blockschemata in den Figuren veranschaulichen die Architektur, Funktionalität und Wirkungsweise möglicher Realisierungsformen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. Dementsprechend kann jeder Block in den Flussdiagrammen bzw. in den Blockschemata ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Realisierung der angegebenen Logikfunktion bzw. Logikfunktionen aufweist. Bei einigen alternativen Realisierungsformen können die im Block angegebenen Funktionen in einer anderen als in der Reihenfolge ausgeführt werden, die in den Figuren angegeben ist. Beispielsweise können zwei hintereinander aufgeführte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können je nach der damit verbundenen Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Darüber hinaus ist anzumerken, dass jeder Block der dargestellten Blockschemata und/oder der dargestellten Flussdiagramme sowie Kombinationen von Blöcken in den dargestellten Blockschemata und/oder in dargestellten Flussdiagrammen mithilfe von bestimmten Zwecken dienenden hardwaregestützten Systemen zur Ausführung der angegebenen Funktionen bzw. Aktionen oder mithilfe von Kombinationen aus bestimmten Zwecken dienender Hardware und Computeranweisungen ausgeführt werden kann bzw. können.The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. Accordingly, each block in the flowcharts or block diagrams may represent a module, segment, or portion of instructions having one or more executable instructions for implementing the specified logic function (s). In some alternative implementations, the functions specified in the block may be performed in a different order from that shown in the figures. For example, two consecutive blocks may in fact be executed substantially concurrently, or the blocks may sometimes be executed in reverse order depending on the functionality involved. In addition, it should be noted that each block of the illustrated block diagrams and / or flowcharts, as well as combinations of blocks in the illustrated block diagrams and / or flowcharts, are illustrated by dedicated hardware-based systems for performing the specified functions or actions or combinations thereof can be performed for specific purpose hardware and computer instructions.

4 zeigt ein geeignetes Beispiel des in 3 dargestellten Cloud-Managers 350. Der Cloud-Manager 350 enthält einen Cloud-Bereitstellungsmechanismus 410, der eine Ressourcenanforderungsschnittstelle 420 enthält. Die Ressourcenanforderungsschnittstelle 420 ermöglicht einer Softwareeinheit, virtuelle Maschinen vom Cloud-Manager 350 ohne menschliches Zutun anzufordern. Der Cloud-Manager 350 enthält außerdem eine Benutzeroberfläche 430, die es einem Benutzer ermöglicht, mit dem Cloud-Manager zu interagieren, um beliebige geeignete Funktionen durchzuführen, unter anderem Bereitstellen von VMs, Löschen von VMs, Leistungsanalyse der Cloud usw. Der Unterschied zwischen der Ressourcenanforderungsschnittstelle 420 und der Benutzeroberfläche 430 besteht darin, dass ein Benutzer die Benutzeroberfläche 430 manuell verwenden muss, um vom Benutzer angegebene Funktionen durchzuführen, während die Ressourcenanforderungsschnittstelle 420 durch eine Softwareeinheit verwendet werden kann, um das Bereitstellen von Cloud-Ressourcen durch den Cloud-Mechanismus 350 ohne Eingabe von einem Benutzer durchzuführen. 4 shows a suitable example of the in 3 represented cloud managers 350 , The cloud manager 350 includes a cloud deployment mechanism 410 , which is a resource request interface 420 contains. The resource request interface 420 allows a software unit to use virtual machines from the cloud manager 350 without requesting human intervention. The cloud manager 350 also includes a user interface 430 enabling a user to interact with the cloud manager to perform any suitable functions, including deploying VMs, deleting VMs, performance analysis of the cloud, etc. The difference between the resource request interface 420 and the user interface 430 is that a user is the user interface 430 must manually use to perform functions specified by the user while the resource request interface 420 can be used by a software unit to provide cloud resources through the cloud mechanism 350 without input from a user.

Der Cloud-Manager 350 enthält zudem einen Host-Überwachungsmechanismus 440, der auf infrage kommenden Host-Computersystemen verfügbare Ressourcen überwacht, sodass der Cloud-Manager 350 angegebene Ressourcen für eine VM mit verfügbaren Ressourcen auf einem infrage kommenden Host-Computersystem vergleichen kann. Ein Host-Auswahlmechanismus 450 ermöglicht ein Auswählen eines infrage kommenden Host-Computersystems auf der Grundlage des Vergleichens der angegebenen Ressourcen für eine angeforderte VM mit verfügbaren Ressourcen auf infrage kommenden Host-Computersystemen. Ein vCPU-Platzierungsmechanismus 460 platziert vCPUs auf einem ausgewählten Host-Computersystem unter Verwendung des Hardware-Multithreading-Parameters. Ein VM-Größenänderungsmechanismus 470 ermöglicht ein Ändern der Größe bestehender VMs in einer Weise, die einen Hardware-Multithreading-Parameter nutzt, selbst wenn die ursprüngliche VM keinen Hardware-Multithreading-Parameter genutzt hat.The cloud manager 350 also includes a host monitoring mechanism 440 which monitors available resources on eligible host computer systems so that the cloud manager 350 can compare specified resources for a VM with available resources on a candidate host computer system. A host selection mechanism 450 enables selecting a candidate host computer system based on comparing the specified resources for a requested VM with available resources on eligible host computer systems. A vCPU placement mechanism 460 places vCPUs on a selected host computer system using the hardware multithreading parameter. A VM resizing mechanism 470 allows you to resize existing VMs in a way that uses a hardware multithreading parameter, even if the original VM did not use a hardware multithreading parameter.

5 zeigt ein geeignetes Beispiel einer Cloud-Anforderung 510, die über die Ressourcenanforderungsschnittstelle 420 oder über die Benutzeroberfläche 430 auf dem Cloud-Bereitstellungsmechanismus 410 in 4 übermittelt werden könnte, um die Bereitstellung einer VM durch den Cloud-Manager 350 anzufordern. Die Cloud-VM-Anforderung 510 kann eine beliebige Angabe von Bedarfsinformationen für benötigte Ressourcen auf der VM enthalten. Zu Beispielen geeigneter Bedarfsinformationen gehören ein Speicherbedarf 520, ein Plattenbedarf 530 und ein CPU-Bedarf 540. Der Speicherbedarf 520 gibt die Größe des für die VM benötigten Speichers an. Der Plattenbedarf 530 gibt die Größe der für die VM benötigten Platte an. Der CPU-Bedarf 540 gibt die Anzahl virtueller CPUs an, die für die VM benötigt werden, und kann außerdem einen Hardware-Multithreading-Parameter angeben, wie nachfolgend ausführlicher erörtert wird. Selbstverständlich könnten andere Bedarfsinformationen, die in 5 nicht dargestellt sind, für eine VM angegeben werden, wie zum Beispiel ein Netzwerkbedarf und ein beliebiger anderer geeigneter Bedarf. Nach dem Stand der Technik nutzt OpenStack ein mit „Flavor” bezeichnetes Element als Cloud-VM-Anforderung, das den Mindestbedarf für Ressourcen auf einer VM angibt. 5 shows a suitable example of a cloud request 510 using the resource request interface 420 or via the user interface 430 on the cloud delivery mechanism 410 in 4 could be delivered to the provision of a VM by the cloud manager 350 to request. The cloud VM request 510 may include any indication of demand information for needed resources on the VM. Examples of suitable demand information include memory requirements 520 , a plate requirement 530 and a CPU requirement 540 , The storage requirement 520 Specifies the size of the memory required for the VM. The plate requirement 530 Specifies the size of the disk needed for the VM. The CPU requirement 540 indicates the number of virtual CPUs needed for the VM and can also specify a hardware multithreading parameter, as discussed in more detail below. Of course, other demand information could be included in 5 are not shown for a VM, such as network demand and any other suitable needs. In the prior art, OpenStack uses a "flavor" element as a cloud VM request that specifies the minimum resource requirements on a VM.

Unter Bezugnahme auf 6 wird durch den Host-Überwachungsmechanismus 440 in 4 vorzugsweise ein Verfahren 600 durchgeführt, um verfügbare Ressourcen auf infrage kommenden Host-Computersystemen zu überwachen. Verfügbare Ressourcen auf infrage kommenden Host-Computersystemen werden ermittelt (Schritt 610) und protokolliert (Schritt 620). Eine bekannte Möglichkeit zur Realisierung des Verfahrens 600 nutzt einen Treiber, der einen Host abfragt, um seine verfügbaren Ressourcen zu ermitteln.With reference to 6 is through the host monitoring mechanism 440 in 4 preferably a method 600 performed to monitor available resources on eligible host computer systems. Available resources on eligible host computer systems are determined (step 610 ) and logs (step 620 ). A known possibility for the realization of the method 600 uses a driver that queries a host to determine its available resources.

Unter Bezugnahme auf 7 beginnt ein Verfahren 700, indem eine Cloud-VM-Anforderung empfangen wird (Schritt 710). Die Ressourcenbedarfsinformationen in der Cloud-VM-Anforderung werden anschließend mit verfügbaren Ressourcen auf infrage kommenden Host-Computersystemen verglichen (Schritt 720). Zu beachten ist, dass die verfügbaren Ressourcen in Schritt 720 aus dem Protokoll gelesen werden könnten, das in Schritt 620 in 6 erzeugt wurde. Anschließend wird ein Host ausgewählt, der über Ressourcen verfügt, die den Ressourcenbedarfsinformationen in der Cloud-VM-Anforderung entsprechen (Schritt 730). Danach wird die VM auf dem ausgewählten Host-Computersystem bereitgestellt (Schritt 740).With reference to 7 begins a procedure 700 by receiving a cloud VM request (step 710 ). The resource requirements information in the cloud VM request is then compared to available resources on eligible host computer systems (step 720 ). It should be noted that the resources available in step 720 could be read from the log in step 620 in 6 was generated. Then, a host is selected that has resources that match the resource requirements information in the cloud VM request (step 730 ). Thereafter, the VM is deployed on the selected host computer system (step 740 ).

Viele moderne Prozessoren (bzw. CPUs) enthalten mehrere Verarbeitungskerne. Ein Beispiel eines Mehrkernprozessors ist eine x86-Dual-Core-CPU 810, die in 8 dargestellt ist. Die x86-Dual-Core-CPU 810 enthält einen ersten Kern 820 mit zwei Hardware-Threads 822 und 824 und einen zweiten Kern 840 mit zwei Hardware-Threads 842 und 844. Das Vorhandensein mehrerer Hardware-Threads auf jedem Kern kann zu Problemen beim Bereitstellen einer VM für ein Host-Computersystem führen. Beim gegenwärtigen Stand der Technik wird die Anzahl von Hardware-Threads in einer CPU mit mehreren Kernen normalerweise ignoriert, wobei lediglich die physischen Kerne berücksichtigt werden. Beispielsweise liest ein dem Stand der Technik entsprechendes Verfahren 900 in 9 die Cloud-VM-Anforderung (Schritt 910) und wählt anschließend einen Host aus, auf dem eine Anzahl physischer Kerne zur Verfügung steht, die der Anzahl von vCPUs in der Cloud-VM-Anforderung entspricht (Schritt 920). Ein dem Stand der Technik entsprechender CPU-Bedarf 1010, wie in 10 dargestellt, gibt die Anzahl virtueller CPUs (vCPUs) in einer VM an und ist ein geeignetes Beispiel für den in 5 dargestellten CPU-Bedarf 540. Da das Verfahren 900 beim Auswählen eines Hosts für eine VM lediglich physische Kerne nutzt, werden mehrere Hardware-Threads auf den Kernen nicht genutzt, wodurch verfügbare CPU-Ressourcen nicht ausgelastet werden. Nach dem Stand der Technik wird, wenn Hyperthreading auf dem Host aktiviert ist, die Anzahl von Hardware-Threads berücksichtigt, und das Platzieren von vCPUs auf Hardware-Threads wird ohne Berücksichtigung physischer Kerne durchgeführt. Dieser Ansatz kann zu ineffizienten VMs führen, da einige Betriebslasten von der Nutzung von Threads auf unterschiedlichen Kernen profitieren, während andere besser durch Threads für denselben Kern bedient werden.Many modern processors (or CPUs) contain multiple processing cores. An example of a multi-core processor is an x86 dual-core CPU 810 , in the 8th is shown. The x86 dual-core CPU 810 contains a first core 820 with two hardware threads 822 and 824 and a second core 840 with two hardware threads 842 and 844 , Having multiple hardware threads on each core can cause problems with deploying a VM to a host computer system. In the current state of the art, the number of hardware threads in a multi-core CPU is usually ignored, taking into account only the physical cores. For example, a prior art method reads 900 in 9 the cloud VM request (step 910 ) and then select one Host, which has a number of physical cores corresponding to the number of vCPUs in the cloud VM request (step 920 ). A prior art CPU requirement 1010 , as in 10 represents the number of virtual CPUs (vCPUs) in a VM and is a good example of the in 5 illustrated CPU requirements 540 , Because the procedure 900 Choosing a host for a VM uses only physical cores, so multiple hardware threads on the cores are not used, which does not leverage available CPU resources. In the prior art, when hyperthreading is enabled on the host, the number of hardware threads is taken into account, and placement of vCPUs on hardware threads is performed without regard to physical cores. This approach can lead to inefficient VMs, as some operating loads benefit from using threads on different cores, while others are better served by threads for the same core.

Schritt 920 in 9 kann beliebige geeignete Kriterien oder eine beliebige geeignete Heuristik zum Auswählen eines Host-Computersystems enthalten, das einer VM-Anforderung entspricht. Zum Beispiel könnte die Anzahl physischer Kerne durch ein bestimmtes Überbelegungsverhältnis von beispielsweise 2,0 erhöht werden. Somit führt, wenn auf einem Host drei physische Kerne zur Verfügung stehen, ein Multiplizieren der drei physischen Kerne mit dem Überbelegungsverhältnis von 2,0 zu einer Anzahl verfügbarer Prozessoren von 6, was bedeutet, dass eine VM, die sechs vCPUs erfordert, auf dem Host bereitgestellt werden könnte, nicht aber eine VM, die 7 vCPUs erfordert. Ein einfaches Beispiel veranschaulicht dies.step 920 in 9 may include any suitable criteria or any suitable heuristics for selecting a host computer system that corresponds to a VM request. For example, the number of physical cores could be increased by a certain over-occupancy ratio of, for example, 2.0. Thus, if three physical cores are available on a host, multiplying the three physical cores with the congestion ratio from 2.0 to a number of available processors of 6, which means that one VM requiring six vCPUs will be on the host but not a VM that requires 7 vCPUs. A simple example illustrates this.

11 stellt ein beispielhaftes infrage kommendes Host-Computersystem dar, das drei x86-Dual-Core-CPUs enthält. Es wird angenommen, dass auf diesem Host bereits VM1 ausgeführt wird, wie in 12 dargestellt, die auf den beiden physischen Kernen in CPU1 und auf dem ersten der beiden physischen Kerne in CPU2 bereitgestellt wurde, wie durch die Schraffur in diesen Kernen in 12 dargestellt. Ferner wird angenommen, dass VM2, gezeigt in 12, bereitgestellt werden muss. Die Anzahl verfügbarer Kerne wird ermittelt die zum Beispiel in 11 neun beträgt, d. h. die sechs Kerne, multipliziert mit dem Überbelegungsverhältnis von 2, minus die drei Kerne, die durch VM1 im infrage kommenden Host 1 verwendet werden, wie in 11 dargestellt. Da VM2 zwei vCPUs benötigt und 9 Kerne auf dem infrage kommenden Host 1 zur Verfügung stehen, ist der infrage kommende Host 1 ein gültiger infrage kommender Host für VM 2, wie in 12 dargestellt. 11 FIG. 10 illustrates an exemplary candidate host computer system that includes three x86 dual-core CPUs. It is assumed that VM1 is already running on this host, as in 12 which was provided on the two physical cores in CPU1 and on the first of the two physical cores in CPU2, as indicated by the hatching in these cores in CPU2 12 shown. Further, it is assumed that VM2 shown in FIG 12 , must be provided. The number of available cores is determined, for example, in 11 is nine, that is, the six cores multiplied by the congestion ratio of 2, minus the three cores used by VM1 in the candidate host 1, as in 11 shown. Since VM2 requires two vCPUs and 9 cores are available on eligible host 1, the candidate host 1 is a valid candidate host for VM 2, as in 12 shown.

Zu beachten ist, dass das eigentliche Platzieren von vCPUs auf einem infrage kommenden Host ein Schritt ist, der vom Auswählen des infrage kommenden Hosts für die VM getrennt ist. Unter Bezugnahme auf 13 beginnt ein Verfahren 1300, indem die Cloud-VM-Anforderung gelesen wird (Schritt 1310). Die vCPUs in der Cloud-VM-Anforderung werden anschließend auf physischen Kernen platziert (Schritt 1320). In 11 sind der Thread T1 des ersten und zweiten Kerns der CPU1 und des ersten Kerns der CPU2 schraffiert, um anzuzeigen, dass die drei vCPUs in VM1, wie in 12 dargestellt, auf diesen drei entsprechenden Kernen platziert wurden. Es ist jedoch zu beachten, dass die Platzierung nicht statisch ist. Zu unterschiedlichen Zeiten könnte eine vCPU auf einem beliebigen der Hardware-Threads auf beliebigen der aktiven Kerne ausgeführt werden. Bei Hyperthreading sind insgesamt zwölf Hardware-Threads in den drei Dual-Core-Kernen zugeordnet. VM1 belegt 3 dieser Threads und lässt 9 für andere VMs übrig. Die vCPUs werden jedoch beliebigen der Threads zugeordnet, was bedeuten kann, dass Arbeit, die in Betriebssystem-Threads ausgeführt wird, die Speicher gemeinsam nutzen, am besten in Hardware-Threads derselben vCPU ausgeführt würde, während Arbeit, die in Betriebssystem-Threads ausgeführt wird, die unabhängig sind, besser in Hardware-Threads in anderen Kernen ausgeführt wird. Daher erzeugt der Stand der Technik Unwirtschaftlichkeiten bei der Art, in der infrage kommende Hosts für eine VM erkannt werden, und bei der Art, in der VMs auf einem ausgewählten Host ausgeführt werden, da die Zuordnung von VMs zu infrage kommenden Hosts gegenwärtig die Unterschiede zwischen Hardware-Threads und Kernen auf CPUs nicht berücksichtigt.Note that the actual placement of vCPUs on a candidate host is a step separate from selecting the candidate host for the VM. With reference to 13 begins a procedure 1300 by reading the cloud VM request (step 1310 ). The vCPUs in the cloud VM request are then placed on physical cores (step 1320 ). In 11 For example, the threads T1 of the first and second kernels of the CPU1 and the first kernel of the CPU2 are hatched to indicate that the three vCPUs in VM1, as in FIG 12 were placed on these three corresponding cores. It should be noted, however, that the placement is not static. At different times, a vCPU could be run on any of the hardware threads on any of the active cores. Hyperthreading involves a total of twelve hardware threads in the three dual-core cores. VM1 occupies 3 of these threads and leaves 9 for other VMs. However, the vCPUs are mapped to any of the threads, which may mean that work done in operating system threads that share memory would best be performed in hardware threads of the same vCPU while doing work that runs in operating system threads that are independent, better run in hardware threads in other cores. Therefore, the prior art creates inefficiencies in the way in which candidate hosts are identified for a VM, and in the way VMs are run on a selected host, since the mapping of VMs to candidate hosts currently differentiates between Hardware threads and cores not included on CPUs.

Der Stand der Technik erkennt entweder einen physischen Prozessorkern oder einen Hardware-Thread, aber nicht beide als Einheit, auf der eine virtuelle CPU bereitgestellt werden kann. Ohne Hyperthreading hat eine einzelne Dual-Core-CPU, wie in 8 dargestellt, zwei verfügbare CPUs in Form ihrer zwei physischen Kerne 820 und 840, auf denen vCPUs bereitgestellt werden können. Mit Hyperthreading könnte eine einzelne Dual-Core-CPU mehrere vCPUs unterstützen; ob die vCPUs durch Hardware-Threads auf demselben physischen Kern oder auf anderen Kernen ausgeführt werden, ist jedoch nicht deterministisch. Die Offenbarung und die Ansprüche hierin erzeugen ein feineres Maß an Differenzierung, indem anerkannt wird, dass vCPUs mehreren Hardware-Threads zugeordnet werden müssen und nicht nur einem einzigen physischen Kern oder einem einzigen Hardware-Thread.The prior art recognizes either a physical processor core or a hardware thread, but not both as a unit on which a virtual CPU can be deployed. Without hyperthreading has a single dual-core CPU, as in 8th presented, two available CPUs in the form of their two physical cores 820 and 840 where vCPUs can be deployed. With hyperthreading, a single dual-core CPU could support multiple vCPUs; however, whether the vCPUs are executed by hardware threads on the same physical core or on other cores is not deterministic. The disclosure and claims herein provide a finer degree of differentiation by recognizing that vCPUs must be associated with multiple hardware threads, not just a single physical core or a single hardware thread.

Das Problem von entweder einem einzigen Hardware-Thread oder Kern zugeordneten vCPUs wird verschärft, wenn die Anzahl von Hardware-Threads erhöht wird. Bei den x86-Dual-Core-CPUs, die in den 8 und 11 dargestellt sind, führt Hyperthreading zu zwei Threads pro Kern. Bei Prozessoren mit mehr Hardware-Threads tritt das Problem noch stärker zutage. Zum Beispiel enthält eine Power8-CPU 1410 mit 6 Kernen, die in 14 dargestellt ist, einen ersten Kern 1420, der acht Hardware-Threads 1432, 1434, 1436, 1438, 1442, 1444, 1446 und 1448 enthält, und einen zweiten Kern 1450, der ebenfalls acht Hardware-Threads 1462, 1464, 1466, 1468, 1472, 1474, 1476 und 1478 enthält. Die vier anderen Kerne sind in 14 nicht dargestellt, ähneln aber den beiden dargestellten Kernen. Wenn ein Host auf Grundlage der Anzahl physischer Kerne ausgewählt wird, wie in dem Verfahren 900 nach dem Stand der Technik in 9 dargestellt, bleiben viele der Hardware-Threads ungenutzt. Daher würde das Ergebnis, wenn den beiden Kernen 1420 und 1450 zwei vCPUs bereitgestellt würden, wie in 14 dargestellt, darin bestehen, dass sieben der acht Hardware-Threads auf jeden Kern verschwendet würden. Das Nettoergebnis besteht darin, dass zu einem beliebigen gegebenen Zeitpunkt nur zwei der sechzehn Threads für die zwei Kerne verwendet werden, was einer Verschwendung von vierzehn der sechzehn Hardware-Threads entspricht. Das bedeutet, dass unter Verwendung des Verfahrens 900 nach dem Stand der Technik, das in 9 dargestellt ist, lediglich zwei von sechzehn (12,5%) der verfügbaren Verarbeitungsressourcen auf zwei der Power8-Kerne genutzt werden können. Wenn andererseits bei vielen pro Kern vorhandenen Hardware-Threads vCPUs einem Hardware-Thread zugeordnet werden, werden VMs mit Betriebslasten, die ein hohes Maß an Parallelität und gemeinsam genutztem Speicher erfordern, leistungsfähiger, indem sie auf demselben physischen Kern wie andere vCPUs für diese VM angeordnet und nicht auf viele physische Kerne verteilt werden.The problem of vCPUs associated with either a single hardware thread or core is exacerbated as the number of hardware threads is increased. For the x86 dual-core CPUs, in the 8th and 11 Hyperthreading results in two threads per core. For processors with more hardware threads, the problem becomes even more apparent. For example, includes a Power8 CPU 1410 with 6 cores in 14 is shown, a first core 1420 that has eight hardware threads 1432 . 1434 . 1436 . 1438 . 1442 . 1444 . 1446 and 1448 contains, and a second core 1450 that also has eight hardware threads 1462 . 1464 . 1466 . 1468 . 1472 . 1474 . 1476 and 1478 contains. The four other cores are in 14 not shown, but similar to the two illustrated cores. When a host is selected based on the number of physical cores, as in the procedure 900 in the prior art 9 As shown, many of the hardware threads remain unused. Therefore, the result would be if the two cores 1420 and 1450 two vCPUs would be deployed, as in 14 This implies that seven of the eight hardware threads would be wasted on each core. The net result is that at any given time, only two of the sixteen threads are used for the two cores, which is a waste of fourteen of the sixteen hardware threads. That means using the method 900 According to the prior art, the in 9 only two out of sixteen (12.5%) of the available processing resources can be used on two of the Power8 cores. On the other hand, if many per core hardware threads associate vCPUs with a hardware thread, VMs with operating loads requiring a high degree of concurrency and shared memory become more efficient by placing them on the same physical core as other vCPUs for that VM and not distributed to many physical cores.

Um das oben beschriebene Problem so vieler ungenutzter Threads bzw. auf physischen Kernen verteilter vCPUs zu vermeiden, berücksichtigt unter Bezugnahme auf 14 ein neuer Weg zur Erkennung infrage kommender Hosts und Bereitstellung von VMs Hardware-Threads, indem ein Hardware-Multithreading-Parameter in der Cloud-VM-Anforderung verwendet wird, der auf dem Prinzip beruht, dass eine vCPU mehreren Hardware-Threads innerhalb eines physischen Kerns und nicht nur einem physischen Kern oder einem einzigen Hardware-Thread zugeordnet werden könnte. Dies geschieht durch Verwenden eines neuen Parameters in der Cloud-VM-Anforderung, der Hardware-Multithreading betrifft. Bei den konkreten Beispielen hierin wird dieser Hardware-Multithreading-Parameter als „SMT”-Parameter bezeichnet, wobei „SMT” für „Symmetrisches Multithreading” steht und es sich hierbei um einen in der Technik bekannten Begriff zum Beschreiben des Hardware-Multithreading auf CPUs handelt. Unter Bezugnahme auf 15 beginnt ein Verfahren 1500 durch Verwenden eines SMT-Parameters in der Cloud-VM-Anforderung zusammen mit, bei einer Ausführungsform, Informationen über Hosts im Bezug auf die Anzahl von Hardware-Threads pro Kern und Einstellungen für geteilte Kerne, um ein Host-Computersystem auszuwählen (Schritt 1510). Sobald das Host-Computersystem ausgewählt wurde, kann derselbe SMT-Parameter in der Cloud-VM-Anforderung verwendet werden, um Platzierungsentscheidungen für vCPUs zu treffen, wenn die VM auf dem ausgewählten Host bereitgestellt wird (Schritt 1520). Bei einer Ausführungsform können Informationen über den Host in Bezug auf die Anzahl von Hardware-Threads pro Kern und Einstellungen für geteilte Kerne außerdem verwendet werden, um Platzierungsentscheidungen für vCPUs zu treffen, wenn die VM auf dem ausgewählten Host bereitgestellt wird (Schritt 1520).To avoid the above-described problem of so many idle threads or vCPUs distributed on physical cores, consider with reference to FIG 14 a new way of identifying eligible hosts and providing VMs hardware threads by using a hardware multithreading parameter in the cloud VM request, based on the principle that one vCPU has multiple hardware threads within a physical core and not just a physical core or a single hardware thread. This is done by using a new parameter in the cloud VM request that involves hardware multithreading. In the specific examples herein, this hardware multithreading parameter is referred to as "SMT" parameter, where "SMT" stands for "Symmetric Multithreading" and is a term well-known in the art for describing hardware multithreading on CPUs , With reference to 15 begins a procedure 1500 by using an SMT parameter in the cloud VM request along with, in one embodiment, information about hosts per number of hardware threads and shared core settings to select a host computer system (step 1510 ). Once the host computer system has been selected, the same SMT parameter can be used in the cloud VM request to make placement decisions for vCPUs when the VM is provisioned on the selected host (step 1520 ). In one embodiment, information about the host in terms of the number of hardware threads per core and shared core settings may also be used to make placement decisions for vCPUs when the VM is deployed on the selected host (step 1520 ).

10 zeigt einen dem Stand der Technik entsprechenden CPU-Bedarf 1010 für eine Cloud-VM-Anforderung, der ein Angeben der Anzahl von vCPUs 1020 enthält, die auf der VM benötigt werden. Eine Cloud-VM-Anforderung 1610 gemäß der Offenbarung und den Ansprüchen hierin, wie in 16 dargestellt, enthält die Anzahl von vCPUs 1620, aber zusätzlich einen Hardware-Multithreading-Parameter (SMT-Parameter) 1630. Der Wert des SMT-Parameters kann null sein, wodurch angezeigt wird, dass Hardware-Multithreading ausgeschaltet ist, oder er kann ein Vielfaches der Zahl 2 sein, womit die Anzahl von Hardware-Threads wiedergegeben wird. Einige Beispiele veranschaulichen dies. Unter Bezugnahme auf 17 ist ein CPU-Bedarf 1610A ein geeignetes Beispiel für den CPU-Bedarf 1610, der in 16 dargestellt ist, und enthält 2 vCPUs 1720 und den SMT-Parameter 1730 mit einem Wert von zwei. Bei einem infrage kommenden Host, der eine Power8-CPU 1410 mit 6 Kernen enthält, wie in 14 dargestellt, enthält der infrage kommende Host einen Kern mit zwei verwendeten Threads, was sechs ungenutzte Threads zur Folge hat, wie in 18 dargestellt. 10 shows a prior art CPU demand 1010 for a cloud VM request, indicating the number of vCPUs 1020 contains that are needed on the VM. A cloud VM request 1610 according to the disclosure and the claims herein, as in 16 shown, contains the number of vCPUs 1620 , but additionally a hardware multithreading parameter (SMT parameter) 1630 , The value of the SMT parameter may be zero, indicating that hardware multithreading is off, or it may be a multiple of the number 2, reflecting the number of hardware threads. Some examples illustrate this. With reference to 17 is a CPU requirement 1610A a suitable example for the CPU requirement 1610 who in 16 and contains 2 vCPUs 1720 and the SMT parameter 1730 with a value of two. For a suitable host, a Power8 CPU 1410 containing 6 nuclei, as in 14 As shown in FIG. 2, the candidate host contains a core with two threads in use, resulting in six unused threads, as in FIG 18 shown.

Ein zweiter CPU-Bedarf 1610B in 19 ist ein weiteres geeignetes Beispiel für den CPU-Bedarf 1610, der in 16 dargestellt ist, und enthält 2 vCPUs 1920 und den SMT-Parameter 1930 mit einem Wert, der anzeigt, dass Hardware-Multithreading ausgeschaltet ist. Bei ausgeschaltetem Hardware-Multithreading enthält bei einem infrage kommenden Host, der eine Power8-CPU 1410 mit 6 Kernen enthält, wie in 14 dargestellt, der infrage kommende Host zwei Kerne mit einem Thread in jedem verwendeten Kern, was vierzehn ungenutzte Threads in den beiden Kernen zur Folge hat, wie in 20 dargestellt. Zu beachten ist, dass das Nettoergebnis des infrage kommenden Hosts für den CPU-Bedarf 1610B in 19 bei ausgeschaltetem SMT-Parameter dasselbe wie bei dem CPU-Bedarf 1010 nach dem Stand der Technik ist, wie in 10 dargestellt, wenn Hyperthreading deaktiviert ist, da der CPU-Bedarf 1010 nach dem Stand der Technik beliebiges Hardware-Multithreading nicht berücksichtigt, wenn Hyperthreading deaktiviert ist. Nach dem Stand der Technik ist bei aktiviertem Hyperthreading nicht vorhersagbar, welche Hardware-Threads eines Kerns die vCPU verarbeiten würden. Durch Angeben eines Wertes für den Hardware-Multithreading-Parameter, der Hardware-Multithreading berücksichtigt, kann die Anzahl ungenutzter Hardware-Threads auf einem infrage kommenden Host verringert werden, und es kann gesteuert werden, welche vCPUs auf demselben Kern ausgeführt werden.A second CPU requirement 1610B in 19 is another suitable example for the CPU requirement 1610 who in 16 and contains 2 vCPUs 1920 and the SMT parameter 1930 with a value indicating that hardware multithreading is off. When hardware multithreading is disabled, a host that has a Power8 CPU will be included in a candidate host 1410 containing 6 nuclei, as in 14 the candidate host has two cores with one thread in each core used, resulting in fourteen unused threads in the two cores, as in 20 shown. Note that the net result of the eligible host is for the CPU requirement 1610B in 19 with the SMT parameter switched off the same as with the CPU requirement 1010 According to the prior art, as in 10 shown when hyperthreading is disabled because of CPU demand 1010 the prior art disregards arbitrary hardware multithreading when hyperthreading is disabled. In the prior art, with hyperthreading enabled, it is unpredictable which core hardware threads would process the vCPU. By specifying a value for the hardware multithreading parameter that takes into account hardware multithreading, the number of idle hardware threads on a candidate host can be reduced, and it can be controlled which vCPUs are running on the same core.

Die Beispiele in den 16 bis 19 zeigen, wie der Hardware-Multithreading-Parameter mehr Kontrolle darüber ermöglicht, wie vCPUs bereitgestellt werden. Wenn zum Beispiel eine VM mit 2 vCPUs Jobs ausführt, die mit denselben Daten operieren, kann es wünschenswert sein, die 2 vCPUs zwei unterschiedlichen Hardware-Threads im selben Kern bereitzustellen, wie in dem Beispiel in den 17 und 18 dargestellt, da die beiden auf demselben Kern ausgeführten Threads einen sehr leistungsfähigen Zugriff auf Cache-Speicher haben, der dem Kern zur Verfügung steht. Wenn eine VM mit 2 vCPUs Jobs ausführt, die voneinander unabhängig sind, kann es wünschenswert sein, die 2 vCPUs zwei unterschiedlichen Kernen bereitzustellen, wie in den Beispielen in den 19 und 20 dargestellt.The examples in the 16 to 19 show how the hardware multithreading parameter allows more control over how vCPUs are deployed. For example, if a VM with 2 vCPUs executes jobs that operate on the same data, it may be desirable to deploy the 2 vCPUs to two different hardware threads in the same core, as in the example in FIG 17 and 18 because the two threads running on the same core have very powerful access to cache memory available to the core. If a VM with 2 vCPUs runs jobs that are independent of each other, it may be desirable to deploy the 2 vCPUs to two different cores, as in the examples in the 19 and 20 shown.

Ein dritter CPU-Bedarf 1610C in 21 ist ein weiteres geeignetes Beispiel für den CPU-Bedarf 1610, der in 16 dargestellt ist, und enthält 8 vCPUs 2120 und bei 2130 den SMT-Parameter mit einem Wert von 8. Bei einem infrage kommenden Host, der eine Power8-CPU 1410 mit 6 Kernen enthält, wie in 14 dargestellt, enthält der infrage kommende Host einen Kern mit allen acht verwendeten Threads, was keine ungenutzten Threads zur Folge hat, wie in 22 dargestellt.A third CPU requirement 1610C in 21 is another suitable example for the CPU requirement 1610 who in 16 and contains 8 vCPUs 2120 and at 2130 the SMT parameter with a value of 8. For a candidate host, a Power8 CPU 1410 containing 6 nuclei, as in 14 As shown in FIG. 2, the candidate host contains a core with all eight threads in use, which does not result in unused threads, as in FIG 22 shown.

Ein vierter CPU-Bedarf 1610D in 23 ist ein weiteres geeignetes Beispiel für den CPU-Bedarf 1610, der in 16 dargestellt ist, und enthält 12 vCPUs 2320 und bei 2330 den SMT-Parameter mit einem Wert von 4. Bei einem infrage kommenden Host, der eine Power8-CPU 1410 mit 6 Kernen enthält, wie in 14 dargestellt, enthält der infrage kommende Host drei Kerne mit vier verwendeten Threads in jedem Kern, was zwölf ungenutzte Threads zur Folge hat, wie in 24 dargestellt. Diese einfachen Beispiele zeigen, wie das Angeben eines Hardware-Multithreading-Parameters beim Auswählen eines Host-Computersystems eine Kontrolle darüber bereitstellt, wie die vCPUs dem Host-Computersystem bereitgestellt werden.A fourth CPU requirement 1610D in 23 is another suitable example for the CPU requirement 1610 who in 16 and contains 12 vCPUs 2320 and at 2330 the SMT parameter with a value of 4. For a candidate host, a Power8 CPU 1410 containing 6 nuclei, as in 14 the candidate host contains three cores with four threads used in each core, resulting in twelve unused threads, as in 24 shown. These simple examples show how specifying a hardware multithreading parameter when selecting a host computer system provides control over how the vCPUs are provided to the host computer system.

Zu beachten ist, dass die in den 17 bis 24 dargestellten Beispiele voraussetzen, dass eine vCPU jedem verfügbaren Thread bereitgestellt werden kann. Die oben in Bezug auf die 9 bis 12 vorgenommene Erörterung erläutert ein „Überbelegungsverhältnis”, um die Anzahl von CPUs um eine bestimmte Menge zu erhöhen. Ein ähnliches Überbelegungsverhältnis könnte gemäß der Offenbarung und den Ansprüchen hierin beim Auswählen eines Host-Computersystems angewendet werden.It should be noted that in the 17 to 24 assume that a vCPU can be deployed to any available thread. The above in terms of the 9 to 12 Explanation discusses an "overbooking ratio" to increase the number of CPUs by a certain amount. A similar overcommitment ratio could be used in selecting a host computer system, as disclosed and claimed herein.

Unter Bezugnahme auf 25 wählt ein Verfahren 2500 einen Host aus, wenn ein Hardware-Multithreading-Parameter angegeben ist, wie in den 16, 17, 19, 21 und 23 dargestellt. Die Cloud-VM-Anforderung wird gelesen (Schritt 2510). Wenn der SMT-Parameter AUS ist (Schritt 2520 = JA), wird ein Host ausgewählt, auf dem eine Anzahl physischer Kerne zur Verfügung steht, die der Anzahl von vCPUs in der Cloud-VM-Anforderung entspricht (Schritt 2530). Zu beachten ist, dass der Schritt 2530 dem Schritt 920 in dem Verfahren 900 nach dem Stand der Technik in 9 ähnelt. Bei eingeschaltetem SMT-Parameter (Schritt 2520 = NEIN) wird ein Host ausgewählt, auf dem eine Anzahl von Threads pro Kern zur Verfügung steht, die der Anzahl im SMT-Parameter entspricht, und eine Anzahl von Kernen, die der Anzahl von vCPUs in der Cloud-VM-Anforderung entspricht, geteilt durch die Anzahl von Threads, die im SMT-Parameter angegeben ist (Schritt 2540). Dies ist ein konkreter Weg, um einen Host auszuwählen, auf dem eine Anzahl von Hardware-Threads zur Verfügung steht, die der Anzahl von vCPUs in der Cloud-VM-Anforderung entspricht. Das Verfahren 2500 ist dann abgeschlossen.With reference to 25 chooses a procedure 2500 host if a hardware multithreading parameter is specified, as in the 16 . 17 . 19 . 21 and 23 shown. The cloud VM request is read (step 2510 ). If the SMT parameter is OFF (step 2520 = YES), a host is selected on which a number of physical cores corresponding to the number of vCPUs in the cloud VM request are available (step 2530 ). It should be noted that the step 2530 the step 920 in the process 900 in the prior art 9 similar. When the SMT parameter is switched on (step 2520 = NO), a host is selected on which a number of threads per core is available, corresponding to the number in the SMT parameter, and divided by a number of cores corresponding to the number of vCPUs in the cloud VM request by the number of threads specified in the SMT parameter (step 2540 ). This is a concrete way to select a host that has a number of hardware threads equal to the number of vCPUs in the cloud VM request. The procedure 2500 is then completed.

Sobald ein Host-Computersystem ausgewählt wurde, können die vCPUs für die VM auf dem ausgewählten Host platziert werden. Unter Bezugnahme auf 26 beginnt ein Verfahren 2600, wenn vCPUs auf dem ausgewählten Host platziert werden müssen (Schritt 2610). Bei ausgeschaltetem SMT-Parameter (Schritt 2620 = JA) wird jede vCPU auf einem anderen physischen Kern platziert (Schritt 2630). Bei eingeschaltetem SMT-Parameter (Schritt 2620 = NEIN) können vCPUs auf unterschiedlichen Hardware-Threads auf demselben physischen Kern platziert werden (Schritt 2640). Das Verfahren 2600 ist dann abgeschlossen.Once a host computer system is selected, the vCPUs for the VM can be placed on the selected host. With reference to 26 begins a procedure 2600 if vCPUs need to be placed on the selected host (step 2610 ). When the SMT parameter is switched off (step 2620 = YES), each vCPU is placed on a different physical core (step 2630 ). When the SMT parameter is switched on (step 2620 = NO) vCPUs can be placed on different hardware threads on the same physical core (step 2640 ). The procedure 2600 is then completed.

Bei einem Hardware-Multithreading-Parameter in der Cloud-VM-Anforderung muss der Cloud-Manager nicht nur die Anzahl physischer Kerne in CPUs in einem infrage kommenden Host kennen, sondern er muss außerdem die Anzahl von Threads kennen, die durch die CPUs in dem infrage kommenden Host unterstützt werden. Dadurch soll gewährleistet werden, dass ein einzelner Kern des Hosts die Anzahl von Threads unterstützen kann, die für die Cloud-VM-Anforderung angegeben ist. Unter erneuter Bezugnahme auf 6 bedeutet dies, dass das Ermitteln der verfügbaren Ressourcen in Schritt 610 nicht nur das Ermitteln verfügbarer CPU-Kerne einschließt, sondern auch, ob auf diesen CPU-Kernen ebenfalls mehrere Threads zur Verfügung stehen. Eine Möglichkeit, dies zu erreichen, besteht darin, in Schritt 610 in 6 als Teil der Erfassung der verfügbaren Ressourcen die maximale SMT-Einstellung zu erfassen, die durch das Host-Computersystem unterstützt wird. Ein Beispiel hierfür ist in 27 dargestellt, bei dem max_guest_smt für einen Wert steht, der durch den Host-Überwachungsmechanismus 440 in 4 erfasst wurde, um anzuzeigen, ob ein infrage kommendes Host-Computersystem Hardware-Multithreading unterstützt. Die möglichen Werte von max_guest_smt sind null, wodurch angezeigt wird, dass SMT auf dem Host-Computersystem ausgeschaltet ist, und Vielfache von 2, wodurch die Anzahl von Hardware-Threads angezeigt wird, die auf jeder CPU zur Verfügung stehen. Wenn alle CPUs in einem Host-Computersystem vom selben Typ sind, ist max_guest_smt ein einziger Wert, der für alle CPUs in dem Host-Computersystem gilt. Wenn das Host-Computersystem CPUs unterschiedlicher Typen enthält, die unterschiedliche Anzahlen von Hardware-Threads enthalten, könnte für jede CPU in dem Host-Computersystem ein anderer max_guest_smt-Wert vorliegen.In a hardware multithreading parameter in the cloud VM request, not only does the cloud manager need to know the number of physical cores in CPUs in a candidate host, but it also needs to know the number of threads that the CPUs in that one have eligible host will be supported. This is to ensure that a single core of the host can support the number of threads specified for the cloud VM request. Referring again to 6 This means that determining the available resources in step 610 not only includes determining available CPU cores, but also whether multiple threads are available on these CPU cores. One way to accomplish this is to step in 610 in 6 as part of the collection of available resources, to capture the maximum SMT setting supported by the host computer system. An example of this is in 27 where max_guest_smt is a value set by the host monitoring mechanism 440 in 4 to indicate whether a host computer system in question supports hardware multithreading. The possible values of max_guest_smt are zero, which indicates that SMT is off on the host computer system, and multiples of 2, indicating the number of hardware threads available on each CPU. If all CPUs in a host computer system are the same type, max_guest_smt is a single value that applies to all CPUs in the host computer system. If the host computer system contains different types of CPUs that contain different numbers of hardware threads, there could be a different max_guest_smt value for each CPU in the host computer system.

OpenStack bietet gegenwärtig keine Unterstützung, die die Angabe der gewünschten Topologie der Gast-CPU ermöglicht. Eine Möglichkeit zur Realisierung der Hinzufügung eines hierin erörterten Hardware-Multithreading-Parameters besteht darin, zu einem OpenStack-Typ eine zusätzliche Angabe hinzuzufügen, wie in 28 dargestellt. Ein Parameter powerkvm:smt ist ein neuer Parameter in einem OpenStack-Typ, der einen gewünschten SMT-Wert für eine Gast-VM angibt. Zu beachten ist, dass die möglichen Werte dieses Parameters –1, wodurch „Unbestimmt” (Don't Care) angezeigt wird; null, wodurch angezeigt wird, dass SMT ausgeschaltet ist; oder Vielfache von 2 sein können. Durch Einbeziehen der Fähigkeit zum Erfassen von Informationen in Bezug auf Hardware-Multithreading auf infrage kommenden Hosts in der max_guest_smt-Einstellung und der Fähigkeit zum Angeben eines gewünschten Ausmaßes von Hardware-Multithreading in dem OpenStack-Typ stellen die Offenbarung und die Ansprüche hierin eine stark verbesserte Möglichkeit zum Auswählen infrage kommender Host-Computersysteme, auf denen VMs bereitgestellt werden sollen, und zum Bereitstellen dieser VMs in einer Weise bereit, die sich die Hardware-Multithreading-Fähigkeiten der Host-Computersysteme besser zunutze macht, wodurch die Ausnutzung von CPU-Ressourcen auf den Host-Computersystemen verbessert wird.OpenStack currently does not provide support for specifying the desired topology of the guest CPU. One way to implement the addition of a hardware multithreading parameter discussed herein is to add an additional indication to an OpenStack type, as in FIG 28 shown. A parameter powerkvm: smt is a new parameter in an OpenStack type that specifies a desired SMT value for a guest VM. Note that the possible values of this parameter are -1, indicating "Do not Care"; zero, indicating that SMT is off; or multiples of 2. By incorporating the ability to gather hardware multithreaded information on eligible hosts in the max_guest_smt setting and the ability to specify a desired level of hardware multithreading in the OpenStack type, the disclosure and claims herein provide greatly improved Ability to select eligible host computer systems to deploy VMs and provide these VMs in a manner that better leverages the hardware multithreading capabilities of the host computer systems, thereby leveraging CPU resources the host computer systems is improved.

Der hierin erörterte Hardware-Multithreading-Parameter kann auch bei einem VM-Größenänderungsvorgang verwendet werden. Manchmal muss eine VM mehr oder weniger Ressourcen zur Verfügung haben, sodass ihre Größe geändert werden kann, um der VM bereitgestellte Ressourcen hinzuzufügen oder zu verringern. Eine geeignete Möglichkeit zur Änderung der Größe einer VM besteht darin, einen OpenStack-Typ anzugeben, der die Zuordnung von Ressourcen zu der VM ändert. Beim Ändern der Größe einer VM kann der OpenStack-Typ den Parameter powerkvm:smt enthalten, der oben erörtert wurde und in 28 dargestellt ist. 29 stellt ein Verfahren 2900 zum Ändern der Größe einer VM dar, das vorzugsweise durch den VM-Größenänderungsmechanismus 470 durchgeführt wird, der in 4 dargestellt ist. Ein Typ für den Größenänderungsvorgang einer bestehenden VM wird gelesen (Schritt 2910). Der Typ, auf den in Schritt 2910 Bezug genommen wird, ist der Typ mit der neuen (d. h. in der Größe geänderten) Zuordnung von Ressourcen zu der VM. Wenn der Typ den SMT-Parameter nicht enthält (Schritt 2920 = NEIN), wird der SMT-Parameter der VM ausgeschaltet (Schritt 2930). Wenn der Typ den SMT-Parameter enthält (Schritt 2920 = JA) und der Wert des SMT-Parameters AUS oder „Unbestimmt” lautet (Schritt 2940 = JA), wird der SMT-Parameter der VM ausgeschaltet (Schritt 2930). Wenn der SMT in dem Typ ein Vielfaches von 2 beträgt (Schritt 2940 = NEIN), wird der SMT-Parameter der VM auf den Wert des SMT eingestellt, der in dem Typ angegeben ist (Schritt 2950). Das Verfahren 2900 ist dann abgeschlossen. Das Verfahren 2900 ermöglicht in erster Linie, bestehende VMs „nachzurüsten”, um den SMT-Parameter zu verwenden.The hardware multithreading parameter discussed herein may also be used in a VM resizing operation. Sometimes a VM needs to have more or fewer resources available, so it can be resized to add or reduce resources provided to the VM. A convenient way to resize a VM is to specify an OpenStack type that alters the allocation of resources to the VM. When resizing a VM, the OpenStack type can include the powerkvm: smt parameter discussed above and in 28 is shown. 29 represents a procedure 2900 for changing the size of a VM, preferably by the VM resizing mechanism 470 is carried out in 4 is shown. A type for resizing an existing VM is read (step 2910 ). The guy on the step in 2910 Reference is made to the type with the new (ie, resized) allocation of resources to the VM. If the type does not contain the SMT parameter (step 2920 = NO), the VM's SMT parameter is turned off (step 2930 ). If the type contains the SMT parameter (step 2920 = YES) and the value of the SMT parameter is OFF or "Undetermined" (step 2940 = YES), the VM's SMT parameter is turned off (step 2930 ). If the SMT in the type is a multiple of 2 (step 2940 = NO), the VM's SMT parameter is set to the value of the SMT specified in the type (step 2950 ). The procedure 2900 is then completed. The procedure 2900 allows primarily to "upgrade" existing VMs to use the SMT parameter.

Die Power8-CPU mit 6 Kernen unterstützt Teilkerne, was bedeutet, dass die acht Threads in jedem Kern in Teilkerne von jeweils zwei Threads aufgeteilt werden können, wenn geteilte Kerne aktiviert sind. Eine Power8-CPU 3010 mit 6 Kernen und aktivierten geteilten Kernen ist in 30 so dargestellt, dass sie einen ersten Kern 3020 enthält, der in vier Teilkerne 3022, 3024, 3026 und 3028 unterteilt ist, und einen zweiten Kern 3050, der in vier Teilkerne 3052, 3054, 3056 und 3058 unterteilt ist. Die vier anderen Kerne sind in 30 nicht dargestellt, ähneln aber den beiden dargestellten Kernen. Jeder Teilkern enthält zwei Hardware-Threads, wie in 30 dargestellt. Durch Unterteilen jedes Kerns in Teilkerne können die Teilkerne anstatt den Kernen virtuellen Maschinen zugeordnet werden, woraus sich eine Einsparung einer erheblichen Anzahl nicht verwendeter Hardware-Threads ergibt.The 6-core Power8 CPU supports split cores, which means that the eight threads in each core can be split into split cores of two threads each if split cores are enabled. A Power8 CPU 3010 with 6 cores and activated split cores is in 30 shown as having a first core 3020 contains, which in four part cores 3022 . 3024 . 3026 and 3028 is divided, and a second core 3050 in four part cores 3052 . 3054 . 3056 and 3058 is divided. The four other cores are in 30 not shown, but similar to the two illustrated cores. Each subkernel contains two hardware threads, as in 30 shown. By dividing each kernel into part kernels, the kernels can be mapped to virtual machines rather than cores, resulting in a significant number of unused hardware threads being saved.

Bei vorliegenden Hosts mit geteilten Kernen wäre es für den Cloud-Manager von Vorteil, ermitteln zu können, ob ein Host für eine VM geteilte Kerne unterstützt. Unter Bezugnahme auf 31 ist ein CPU-Bedarf 3110 ein bevorzugter Bestandteil einer Cloud-VM-Anforderung 510, die in 5 dargestellt ist. Der CPU-Bedarf 3110 gibt eine Anzahl von vCPUs 3120 und einen Hardware-Multithreading-Parameter 3130 an. Es folgen Beispiel, die veranschaulichen, wie sich geteilte Kerne auf das Auswählen eines Hosts und das Platzieren von vCPUs auf diesem Host auswirken.For existing split-core hosts, it would be beneficial for the cloud manager to determine if a host for a VM supports split cores. With reference to 31 is a CPU requirement 3110 a preferred component of a cloud VM request 510 , in the 5 is shown. The CPU requirement 3110 are a number of vCPUs 3120 and a hardware multithreading parameter 3130 at. Below are examples that illustrate how Split cores affect selecting a host and placing vCPUs on that host.

Unter Bezugnahme auf 32 ist ein CPU-Bedarf 3110A ein geeignetes Beispiel für den CPU-Bedarf 3110, der in 31 dargestellt ist, und enthält 2 vCPUs 3220 und den SMT-Parameter 3230 mit einem Wert von zwei. Bei einem infrage kommenden Host, der eine Power8-CPU 3010 mit 6 Kernen und aktivierten geteilten Kernen enthält, wie in 30 dargestellt, enthält der infrage kommende Host einen Teilkern mit zwei verwendeten Threads, was drei Teilkerne zur Folge hat, die von anderen VMs verwendet werden können, wie in 33 dargestellt.With reference to 32 is a CPU requirement 3110A a suitable example for the CPU requirement 3110 who in 31 and contains 2 vCPUs 3220 and the SMT parameter 3230 with a value of two. For a suitable host, a Power8 CPU 3010 containing 6 nuclei and activated split nuclei, as in 30 As shown in FIG. 2, the candidate host contains a sub-core with two threads in use, resulting in three sub-cores that can be used by other VMs, as in FIG 33 shown.

Ein zweiter CPU-Bedarf 3110B in 34 ist ein weiteres geeignetes Beispiel für den CPU-Bedarf 3110, der in 31 dargestellt ist, und enthält 2 vCPUs 3420 und bei 3430 den SMT-Parameter mit einem Wert AUS. Bei einem infrage kommenden Host mit ausgeschaltetem Hardware-Multithreading, der eine Power8-CPU 3010 mit 6 Kernen und aktivierten geteilten Kernen enthält, wie in 30 dargestellt, enthält der infrage kommende Host zwei Teilkerne mit einem Thread in jedem verwendeten Teilkern, was einen ungenutzten Thread in jedem Teilkern zur Folge hat, und zwei Teilkerne, die von anderen VMs verwendet werden können, wie in 35 dargestellt.A second CPU requirement 3110B in 34 is another suitable example for the CPU requirement 3110 who in 31 and contains 2 vCPUs 3420 and at 3430 the SMT parameter with a value OFF. For a eligible host with hardware multithreading disabled, this is a Power8 CPU 3010 containing 6 nuclei and activated split nuclei, as in 30 As shown in FIG. 2, the candidate host contains two sub-kernels with one thread in each used sub-kernel, resulting in an unused thread in each sub-kernel, and two sub-kernels that can be used by other VMs, as in FIG 35 shown.

Ein dritter CPU-Bedarf 3110C in 36 ist ein weiteres geeignetes Beispiel für den CPU-Bedarf 3110, der in 31 dargestellt ist, und enthält 8 vCPUs 3620 und bei 3630 den SMT-Parameter mit einem Wert von zwei. Bei einem Wert des Hardware-Multithreading-Parameters von 2 für einen infrage kommenden Host, der eine Power8-CPU 3010 mit 6 Kernen und aktivierten geteilten Kernen enthält, wie in 30 dargestellt, enthält der infrage kommende Host vier Teilkerne mit zwei Threads in jedem verwendeten Teilkern, was keine ungenutzten Threads zur Folge hat, wie in 37 dargestellt. Bei einer bestimmten Realisierungsform können alle acht vCPUs auf allen acht Threads (vier Teilkernen) desselben physischen Kerns platziert werden. Selbstverständlich könnten die vier Teilkerne in 37 als Alternative auf zwei oder mehr physischen Kernen platziert werden.A third CPU requirement 3110C in 36 is another suitable example for the CPU requirement 3110 who in 31 and contains 8 vCPUs 3620 and at 3630 the SMT parameter with a value of two. For a hardware multithreading parameter value of 2, for a candidate host using a Power8 CPU 3010 containing 6 nuclei and activated split nuclei, as in 30 the candidate host contains four sub-kernels with two threads in each sub-core used, resulting in no unused threads, as in 37 shown. In one particular implementation, all eight vCPUs can be placed on all eight threads (four sub-cores) of the same physical core. Of course, the four subpixels in 37 as an alternative to two or more physical cores.

Ein vierter CPU-Bedarf 3110D in 38 ist ein weiteres geeignetes Beispiel für den CPU-Bedarf 3110, der in 31 dargestellt ist, und enthält 12 vCPUs 3820 und bei 3830 den SMT-Parameter mit einem Wert von zwei. Bei einem Wert des Hardware-Multithreading-Parameters von 2 für einen infrage kommenden Host, der eine Power8-CPU 3010 mit 6 Kernen und aktivierten geteilten Kernen enthält, wie in 30 dargestellt, enthält der infrage kommende Host sechs Teilkerne mit zwei Threads in jedem verwendeten Teilkern und keine ungenutzten Threads beliebiger Kerne, wie in 39 dargestellt. Bei einer bestimmten Realisierungsform können acht der zwölf vCPUs auf allen acht Threads (vier Teilkernen) desselben physischen Kerns platziert werden, und die verbleibenden vier vCPUs können auf vier Threads in zwei Teilkernen in einem anderen physischen Kern platziert werden. Selbstverständlich könnten die sechs Teilkerne in 39 als Alternative auf drei oder mehr physischen Kernen platziert werden.A fourth CPU requirement 3110D in 38 is another suitable example for the CPU requirement 3110 who in 31 and contains 12 vCPUs 3820 and at 3830 the SMT parameter with a value of two. For a hardware multithreading parameter value of 2, for a candidate host using a Power8 CPU 3010 containing 6 nuclei and activated split nuclei, as in 30 The candidate host contains six sub-cores with two threads in each sub-core used and no unused threads of any cores, as in 39 shown. In one particular implementation, eight of the twelve vCPUs can be placed on all eight threads (four sub-cores) of the same physical core, and the remaining four vCPUs can be placed on four threads in two sub-cores in a different physical core. Of course, the six subpixels in 39 as an alternative to three or more physical cores.

Alle CPU-Bedarfsbeispiele in den 32, 34, 36 und 38 gelten für den Fall, bei dem im Host geteilte Kerne aktiviert sind. Wenn im Host geteilte Kerne deaktiviert sind, ähnelt das Ergebnis den Beispielen, die oben in den 17 bis 24 ausführlich erörtert wurden, mit der Ausnahme, dass die Hosts eine Einstellung enthalten würden, dass geteilte Kerne deaktiviert sind.All CPU requirement examples in the 32 . 34 . 36 and 38 apply to the case where split cores are enabled in the host. If shared cores are disabled on the host, the result is similar to the examples in the above 17 to 24 in detail, except that the hosts would have a setting that split cores are disabled.

Die Beispiele in den 32, 36 und 38 enthalten alle einen SMT-Parameter mit einem Wert von zwei. Da ein Power8-Teilkern zwei Threads enthält, stellt das Angeben von zwei Threads in dem SMT-Parameter die wirkungsvollste Platzierung von vCPUs auf einer Power8-CPU bereit. Zu beachten ist jedoch, dass der SMT-Parameter größer als die Anzahl von Threads auf einem Teilkern sein könnte. Wenn der SMT-Parameter bei 3630 in 36 beispielsweise auf einen Wert von vier eingestellt würde, entsprechen Hosts mit Teilkernen mit zwei Threads der Anforderung nicht. Daher sind Hosts ohne geteilte Kerne keine infrage kommenden Hosts, wenn die SMT-Einstellung die Anzahl von Threads für einen Teilkern überschreitet.The examples in the 32 . 36 and 38 all contain an SMT parameter with a value of two. Because a Power8 subkernel contains two threads, specifying two threads in the SMT parameter provides the most efficient placement of vCPUs on a Power8 CPU. It should be noted, however, that the SMT parameter could be greater than the number of threads on a subkernel. If the SMT parameter at 3630 in 36 For example, if you set the value to four, then hosts with sub-kernels with two threads will not match the request. Therefore, non-shared hosts are not eligible hosts if the SMT setting exceeds the number of threads for a subkernel.

Unter Bezugnahme auf 40 zeigt ein Verfahren 4000 das Auswählen eines Host-Computersystems unter Verwendung einer Cloud-VM-Anforderung, die einen Hardware-Multithreading-Parameter enthält, der berücksichtigt, ob geteilte Kerne auf dem Host-Computersystem aktiviert sind. Das Verfahren 4000 wird vorzugsweise durch den Host-Auswahlmechanismus 450 durchgeführt, der in 4 dargestellt ist. Eine Cloud-VM-Anforderung wird gelesen (Schritt 4010). Bei ausgeschaltetem SMT (Schritt 4020 = JA) und aktivierten geteilten Kernen auf einem infrage kommenden Host (Schritt 4030 = JA) kann der infrage kommende Host ausgewählt werden, wenn er eine Anzahl von Teilkernen enthält, die der Anzahl von vCPUs in der Cloud-VM-Anforderung entspricht (Schritt 4040). Bei ausgeschaltetem SMT (Schritt 4020 = JA) und deaktivierten geteilten Kernen auf dem infrage kommenden Host (Schritt 4030 = NEIN) kann der infrage kommende Host ausgewählt werden, wenn er eine Anzahl physischer Kerne enthält, die der Anzahl von vCPUs in der Cloud-VM-Anforderung entspricht (Schritt 4050). Bei eingeschaltetem SMT-Parameter (Schritt 4020 = NEIN) und aktivierten geteilten Kernen auf dem infrage kommenden Host (Schritt 4060 = JA) kann der infrage kommende Host ausgewählt werden, wenn die Anzahl von Hardware-Threads für den Teilkern der Anzahl von Hardware-Threads entsprechen kann, die in dem SMT-Parameter angegeben ist, und die Anzahl von Teilkernen der Anzahl von vCPUs in der Cloud-VM-Anforderung, geteilt durch die Anzahl von Hardware Threads, entsprechen kann, die in dem SMT-Parameter angegeben ist (Schritt 4070). Bei eingeschaltetem SMT-Parameter (Schritt 4020 = NEIN) und deaktivierten geteilten Kernen auf dem infrage kommenden Host (Schritt 4060 = NEIN) kann der infrage kommende Host ausgewählt werden, wenn die Anzahl von Hardware-Threads für den Kern der Anzahl von Hardware-Threads entsprechen kann, die in dem SMT-Parameter angegeben ist, und wenn die Anzahl physischer Kerne der Anzahl von vCPUs in der Cloud-VM-Anforderung, geteilt durch die Anzahl von Hardware Threads, entsprechen kann, die in dem SMT-Parameter angegeben ist (Schritt 4080). Zu beachten ist, dass das Verfahren 4000 vorzugsweise für jeden infrage kommenden Host wiederholt wird, was zu einem Pool infrage kommender Hosts führen kann, aus dem unter Verwendung beliebiger geeigneter Kriterien oder einer beliebigen geeigneten Heuristik einer der Hosts ausgewählt werden kann. Beispielsweise kann ein Host mit aktivierten geteilten Kernen gegenüber einem Host mit deaktivierten geteilten Kernen ausgewählt werden, wenn die VM-Anforderung zu einer effizienteren Verwendung von CPU-Kernen und -Threads führt. Das Verfahren 4000 veranschaulicht, wie ein Hardware-Multithreading-Parameter und Informationen vom Host in Bezug auf die Einstellungen für geteilte Kerne und Hardware-Threads pro Kern eine bessere Kontrolle über das Auswählen eines Host-Computersystems bieten, die zu einer effizienteren Platzierung von vCPUs führt.With reference to 40 shows a method 4000 selecting a host computer system using a cloud VM request containing a hardware multithreading parameter that takes into account whether shared cores are enabled on the host computer system. The procedure 4000 is preferably by the host selection mechanism 450 performed in 4 is shown. A cloud VM request is read (step 4010 ). When the SMT is off (step 4020 = YES) and activated shared cores on a candidate host (step 4030 = YES), the candidate host may be selected if it contains a number of sub-kernels equal to the number of vCPUs in the cloud VM request (step 4040 ). When the SMT is off (step 4020 = YES) and disabled split Cores on the eligible host (step 4030 = NO), the candidate host may be selected if it contains a number of physical cores corresponding to the number of vCPUs in the cloud VM request (step 4050 ). When the SMT parameter is switched on (step 4020 = NO) and activated shared cores on the host in question (step 4060 = YES), the candidate host can be selected if the number of hardware threads for the sub-core can match the number of hardware threads specified in the SMT parameter, and the number of sub-cores of the number of vCPUs in the Cloud VM requirement, divided by the number of hardware threads specified in the SMT parameter (step 4070 ). When the SMT parameter is switched on (step 4020 = NO) and disabled shared cores on the host in question (step 4060 = NO), the candidate host can be selected if the number of hardware threads for the core can match the number of hardware threads specified in the SMT parameter and if the number of physical cores in the number of vCPUs in may match the cloud VM requirement divided by the number of hardware threads specified in the SMT parameter (step 4080 ). It should be noted that the procedure 4000 preferably for each candidate host, which may result in a pool of candidate hosts from which one of the hosts may be selected using any suitable criteria or any suitable heuristic. For example, a host with activated shared cores may be selected over a host with shared shared cores disabled if the VM request results in a more efficient use of CPU cores and threads. The procedure 4000 Figure 4 illustrates how a hardware multithreading parameter and information from the host regarding split core settings and hardware threads per core provide better control over selecting a host computer system that results in more efficient placement of vCPUs.

Unter Bezugnahme auf 41 kann ein Filter PowerKVMSMTFilter verwendet werden, sodass der Cloud-Manager Hosts herausfiltert, bei denen der Modus für geteilte Kerne aktiviert ist, wenn eine VM mit SMT = 4 oder SMT = 8 angefordert wird. Dieser Filter kann dazu beitragen, dass der Cloud-Manager die Anzahl infrage kommender Hosts für eine VM schneller eingrenzen kann.With reference to 41 For example, a PowerKVMSMTFilter filter can be used so that the Cloud Manager filters out hosts that have split-core mode enabled when requesting a VM with SMT = 4 or SMT = 8. This filter can help Cloud Manager speed up the number of eligible hosts for a VM more quickly.

Unter Bezugnahme auf 42 beginnt ein Verfahren 4200, wenn vCPUs auf einem ausgewählten Host platziert werden müssen (Schritt 4210). Das Verfahren 4200 wird vorzugsweise durch den vCPU-Platzierungsmechanismus 460 durchgeführt, der in 4 dargestellt ist. Bei ausgeschaltetem SMT (Schritt 4220 = JA) und auf dem Host aktivierten geteilten Kernen (Schritt 4230 = JA) werden die vCPUs auf unterschiedlichen Teilkernen platziert (Schritt 4240). Bei ausgeschaltetem SMT (Schritt 4220 = JA) und auf dem Host deaktivierten geteilten Kernen (Schritt 4230 = NEIN) werden die vCPUs auf unterschiedlichen physischen Kernen platziert (Schritt 4250). Bei eingeschaltetem SMT (Schritt 4220 = NEIN) und auf dem Host aktivierten geteilten Kernen (Schritt 4260 = JA) werden die vCPUs auf Threads der Teilkerne platziert (Schritt 4270). Bei eingeschaltetem SMT (Schritt 4220 = NEIN) und auf dem Host deaktivierten geteilten Kernen (Schritt 4260 = NEIN) werden die vCPUs auf Threads desselben physischen Kerns platziert (Schritt 4280). Zu beachten ist, dass, wenn die Anzahl von vCPUs die Anzahl von Threads in einem physischen Kern überschreitet, die vCPUs auf einer Anzahl von Kernen platziert werden, die die benötigte Anzahl von Hardware-Threads für alle vCPUs bereitstellen. Das Verfahren 4200 veranschaulicht, wie das Angeben eines Hardware-Multithreading-Parameters und das Verwenden von Informationen über die Einstellungen für geteilte Kerne eine bessere Kontrolle über die Platzierung von vCPUs auf Host-Computersystemen bietet.With reference to 42 begins a procedure 4200 when vCPUs need to be placed on a selected host (step 4210 ). The procedure 4200 is preferably by the vCPU placement mechanism 460 performed in 4 is shown. When the SMT is off (step 4220 = YES) and split cores activated on the host (step 4230 = YES), the vCPUs are placed on different subkernels (step 4240 ). When the SMT is off (step 4220 = YES) and split cores disabled on the host (step 4230 = NO), the vCPUs are placed on different physical cores (step 4250 ). When the SMT is on (step 4220 = NO) and split cores activated on the host (step 4260 = YES), the vCPUs are placed on threads of the subkernels (step 4270 ). When the SMT is on (step 4220 = NO) and split cores disabled on the host (step 4260 = NO), the vCPUs are placed on threads of the same physical core (step 4280 ). Note that if the number of vCPUs exceeds the number of threads in a physical core, the vCPUs are placed on a number of cores that provide the required number of hardware threads for all vCPUs. The procedure 4200 illustrates how specifying a hardware multithreading parameter and using information about shared core settings provides better control over the placement of vCPUs on host computer systems.

Um VMs unter Berücksichtigung geteilter Kerne und eines Hardware-Multithreading-Parameters in der Cloud-VM-Anforderung platzieren zu können, muss der Cloud-Manager nicht nur die Anzahl physischer Kerne in CPUs in einem infrage kommenden Host kennen, sondern er muss außerdem die Anzahl von Threads kennen, die durch die CPUs in dem infrage kommenden Host unterstützt werden, und er muss wissen, ob geteilte Kerne auf einem infrage kommenden Host aktiviert sind. Unter erneuter Bezugnahme auf 6 bedeutet dies, dass das Ermitteln der verfügbaren Ressourcen in Schritt 610 nicht nur das Ermitteln verfügbarer CPU-Kerne einschließt, sondern auch, ob auf diesen CPU-Kernen ebenfalls mehrere Threads zur Verfügung stehen, sowie, ob auf diesen Kernen geteilte Kerne aktiviert sind. Eine Möglichkeit, dies zu erreichen, besteht darin, in Schritt 610 in 6 als Teil der Erfassung der verfügbaren Ressourcen zu ermitteln, ob auf dem infrage kommenden Host-Computersystem geteilte Kerne aktiviert sind.In order to be able to place VMs in the cloud VM request, taking into account split cores and a hardware multithreading parameter, the cloud manager not only needs to know the number of physical cores in CPUs in a candidate host, but must also know the number of threads supported by the CPUs in the host in question and he needs to know if shared cores are enabled on a candidate host. Referring again to 6 This means that determining the available resources in step 610 not only includes determining available CPU cores, but also whether multiple threads are available on these CPU cores as well as whether cores shared on these cores are enabled. One way to accomplish this is to step in 610 in 6 As part of the collection of available resources, determine if shared cores are enabled on the host computer system in question.

Ein Cloud-Manager überwacht verfügbare Ressourcen auf Host-Computersystemen einschließlich einer Anzahl von Hardware-Threads, die durch CPUs auf den Host-Computersystemen unterstützt werden, und bei einer Ausführungsform, ob bei den CPUs geteilte Kerne aktiviert sind. Der Cloud-Manager empfängt eine Anforderung zum Bereitstellen einer virtuellen Maschine (VM), die einen Hardware-Multithreading-Parameter enthält, der das Ausmaß von Hardware-Multithreading angibt, das auf dem Host-Computersystem erforderlich ist. Bei einer Ausführungsform wählt der Cloud-Manager anschließend ein Host-Computersystem für die VM aus und berücksichtigt hierbei den Hardware-Multithreading-Parameter. Bei einer weiteren Ausführungsform wählt der Cloud-Manager anschließend ein Host-Computersystem für die VM aus und berücksichtigt hierbei den Hardware-Multithreading-Parameter, die durch die CPU unterstützten Hardware-Threads und die Einstellungen für geteilte Kerne. Die VM wird anschließend unter Verwendung des Hardware-Multithreading-Parameters auf dem ausgewählten Host-Computersystem platziert. Das Ergebnis ist eine effizientere Nutzung der CPU-Ressourcen in einem Host für eine virtuelle Maschine.A cloud manager monitors available resources on host computer systems, including a number of hardware threads supported by CPUs on the host computer systems, and in one embodiment, whether shared cores are enabled on the CPUs. The cloud manager receives a request to deploy a virtual machine (VM) that contains a hardware multithreading parameter that indicates the amount of hardware multithreading that is required on the host computer system. In one embodiment, the cloud manager then selects a host computer system for the VM, taking into account the hardware multithreading parameter. In another embodiment, the cloud manager then selects a host computer system for the VM, taking into account the hardware multithreading parameter, the hardware threads supported by the CPU, and the shared core settings. The VM is then placed on the selected host computer system using the hardware multithreading parameter. The result is a more efficient use of CPU resources in a host for a virtual machine.

Dem Fachmann wird klar sein, dass viele Variationen im Rahmen des Schutzbereichs der Ansprüche möglich sind. Obwohl die Offenbarung oben ausführlich dargestellt und beschrieben ist, versteht es sich daher für den Fachmann, dass diese und andere Änderungen an Form und Einzelheiten im Rahmen des Geltungsbereichs vorgenommen werden können, ohne vom Grundgedanken und Schutzbereich der Ansprüche abzuweichen.It will be apparent to those skilled in the art that many variations are possible within the scope of the claims. Therefore, while the disclosure has been shown and described in detail above, it will be understood by those skilled in the art that these and other changes in form and details may be made within the scope without departing from the spirit and scope of the claims.

Claims (28)

Vorrichtung, aufweisend: mindestens einen Prozessor; einen Speicher, der mit dem mindestens einen Prozessor verbunden ist; einen Cloud-Manager, der sich im Speicher befindet und durch den mindestens einen Prozessor ausgeführt wird, wobei der Cloud-Manager aufweist: einen Host-Überwachungsmechanismus, der eine Anzahl von CPUs ermittelt, die auf einer Mehrzahl von Host-Computersystemen zur Verfügung stehen, auf denen virtuelle Maschinen bereitgestellt werden könnten, und der ferner eine Anzahl von Hardware-Threads ermittelt, die durch jede CPU auf der Mehrzahl von Host-Computersystemen unterstützt werden; und einen Host-Auswahlmechanismus, der eine Virtuelle-Maschine-Anforderung (VM-Anforderung) empfängt, die eine Anzahl virtueller CPUs und einen Hardware-Multithreading-Parameter enthält, wobei der Host-Auswahlmechanismus eines der Mehrzahl von Host-Computersystemen auswählt, das eine Anzahl von CPUs mit einer Anzahl von Hardware-Threads enthält, die der VM-Anforderung entsprechen.Device comprising: at least one processor; a memory connected to the at least one processor; a cloud manager located in memory and executed by the at least one processor, wherein the cloud manager comprises: a host monitoring mechanism that determines a number of CPUs that are available on a plurality of host computer systems on which virtual machines might be provided, and further determines a number of hardware threads that are selected by each CPU on the plurality supported by host computer systems; and a host selection mechanism that receives a virtual machine (VM) request that includes a number of virtual CPUs and a hardware multithreading parameter, wherein the host selection mechanism selects one of the plurality of host computer systems that has a number of CPUs with a number of hardware threads that match the VM request. Vorrichtung nach Anspruch 1 ferner aufweisend: einen Platzierungsmechanismus für virtuelle CPUs (vCPU-Platzierungsmechanismus), der den Hardware-Multithreading-Parameter verwendet, um eine Mehrzahl virtueller CPUs (vCPUs) auf dem ausgewählten Host-Computersystem zu platzieren.The device of claim 1 further comprising: a virtual CPU placement mechanism (vCPU Placement Mechanism) that uses the hardware multithreading parameter to place a plurality of virtual CPUs (vCPUs) on the selected host computer system. Vorrichtung nach Anspruch 1, wobei der Host-Überwachungsmechanismus ferner ermittelt, ob geteilte Kerne für jede CPU auf der Mehrzahl von Host-Computersystemen aktiviert sind, und wobei der Host-Auswahlmechanismus eines der Mehrzahl von Host-Computersystemen auswählt, das zusätzlich zu einer Anzahl von CPUs mit einer Anzahl von Hardware-Threads, die der VN-Anforderung entsprechen, Einstellungen für geteilte Kerne enthält, die der Anzahl virtueller CPUs und dem Hardware-Multithreading-Parameter in der VM-Anforderung entsprechen.The apparatus of claim 1, wherein the host monitoring mechanism further determines whether shared cores are enabled for each CPU on the plurality of host computer systems, and wherein the host selection mechanism selects one of the plurality of host computer systems in addition to a number of host computer systems CPUs having a number of hardware threads that conform to the VN request contain shared core settings that correspond to the number of virtual CPUs and the hardware multithreading parameter in the VM request. Vorrichtung nach Anspruch 3, ferner aufweisend einen Platzierungsmechanismus für virtuelle CPUs (vCPU-Platzierungsmechanismus), der den Hardware-Multithreading-Parameter und die Einstellungen für geteilte Kerne auf dem ausgewählten Host-Computersystem verwendet, um eine Mehrzahl virtueller CPUs (vCPUs) auf dem ausgewählten Host-Computersystem zu platzieren.The apparatus of claim 3, further comprising a virtual CPU placement mechanism (vCPU placement mechanism) that uses the hardware multithreading parameter and shared core settings on the selected host computer system to connect a plurality of virtual CPUs (vCPUs) on the selected one of the plurality of virtual CPUs Host computer system to place. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei ein erster Wert des Hardware-Multithreading-Parameters anzeigt, dass Hardware-Multithreading ausgeschaltet ist.The apparatus of any one of the preceding claims, wherein a first value of the hardware multithreading parameter indicates that hardware multithreading is disabled. Vorrichtung nach Anspruch 5 in Abhängigkeit von Anspruch 2 oder Anspruch 3, wobei, wenn der erste Wert des Hardware-Multithreading-Parameters anzeigt, dass Hardware-Multithreading ausgeschaltet ist, der vCPU-Platzierungsmechanismus jede vCPU in der VM auf einem anderen physischen Kern in dem ausgewählten Host-Computersystem platziert.The apparatus of claim 5 when dependent on claim 2 or claim 3, wherein if the first value of the hardware multithreading parameter indicates that hardware multithreading is disabled, the vCPU placement mechanism places each vCPU in the VM on a different physical core in the VM selected host computer system. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei ein zweiter Wert des Hardware-Multithreading-Parameters einen numerischen Wert für eine Anzahl von Hardware-Threads anzeigt.The apparatus of any one of the preceding claims, wherein a second value of the hardware multithreading parameter indicates a numerical value for a number of hardware threads. Vorrichtung nach Anspruch 7 in Abhängigkeit von Anspruch 2 oder 3, wobei, wenn der zweite Wert des Hardware-Multithreading einen numerischen Wert für eine Anzahl von Hardware-Threads anzeigt, der vCPU-Platzierungsmechanismus jede vCPU in der VM auf einem anderen Hardware-Thread in dem ausgewählten Host-Computersystem platziert.The apparatus of claim 7 when dependent on claim 2 or 3, wherein if the second value of the hardware multithreading indicates a numerical value for a number of hardware threads, the vCPU placement mechanism inserts each vCPU in the VM on a different hardware thread placed on the selected host computer system. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei ein dritter Wert des Hardware-Multithreading-Parameters anzeigt, dass das ausgewählte Host-Computersystem ungeachtet dessen ausgewählt wird, ob Hardware-Threading auf dem ausgewählten Host-Computersystem eingeschaltet ist.The apparatus of any preceding claim, wherein a third value of the hardware multithreading parameter indicates that the selected host computer system is selected regardless of whether hardware threading is enabled on the selected host computer system. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei die VM-Anforderung ferner einen Speicherbedarf und einen Plattenbedarf enthält.The apparatus of any one of the preceding claims, wherein the VM request further includes a memory requirement and a disk requirement. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei der Host-Überwachungsmechanismus ferner eine Speichergröße und eine Plattenplatzgröße auf jedem der Mehrzahl von Host-Computersystemen ermittelt.The apparatus of any one of the preceding claims, wherein the host monitoring mechanism further determines a memory size and a disk space size on each of the plurality of host computer systems. Vorrichtung nach Anspruch 1, wobei, wenn die Anzahl virtueller CPUs in der VM-Anforderung größer als der Wert des Hardware-Multithreading-Parameters ist, der Host-Auswahlmechanismus das eine der Mehrzahl von Host-Computersystemen auswählt, das eine Mehrzahl von CPUs mit jeweils einer Mehrzahl von Hardware-Threads enthält.The apparatus of claim 1, wherein when the number of virtual CPUs in the VM request is greater than the value of the hardware multithreading parameter, the host selection mechanism selects one of the plurality of host computer systems that includes a plurality of CPUs each having a plurality of hardware threads. Vorrichtung nach einem der vorhergehenden Ansprüche in Abhängigkeit von Anspruch 2, wobei der Cloud-Manager ferner einen VM-Größenänderungsmechanismus aufweist, der unter Verwendung des Hardware-Multithreading-Parameters die Größe mindestens einer VM ändert.The apparatus of any one of the preceding claims when dependent on claim 2, wherein the cloud manager further comprises a VM resizing mechanism that changes the size of at least one VM using the hardware multithreading parameter. Mittels Computer realisiertes Verfahren, das durch mindestens einen Prozessor zum Auswählen eines Host-Computersystems ausgeführt wird, um eine virtuelle Maschine bereitzustellen, wobei das Verfahren aufweist: Ermitteln einer Anzahl von CPUs, die auf einer Mehrzahl von Host-Computersystemen zur Verfügung stehen, auf denen virtuelle Maschinen bereitgestellt werden könnten; Ermitteln einer Anzahl von Hardware-Threads, die durch jede CPU auf der Mehrzahl von Host-Computersystemen unterstützt werden; Empfangen einer Virtuelle-Maschine-Anforderung (VM-Anforderung), die eine Anzahl virtueller CPUs und einen Hardware-Multithreading-Parameter enthält; und Auswählen eines der Mehrzahl von Host-Computersystemen, das eine Anzahl von CPUs mit einer Anzahl von Hardware-Threads enthält, die der VM-Anforderung entsprechen.A computer implemented method executed by at least one processor for selecting a host computer system to provide a virtual machine, the method comprising: Determining a number of CPUs available on a plurality of host computer systems on which virtual machines could be deployed; Determining a number of hardware threads supported by each CPU on the plurality of host computer systems; Receiving a virtual machine request (VM request) containing a number of virtual CPUs and a hardware multithreading parameter; and Selecting one of the plurality of host computer systems that includes a number of CPUs having a number of hardware threads that conform to the VM request. Verfahren nach Anspruch 14, ferner aufweisend: Verwenden des Hardware-Multithreading-Parameters, um die Mehrzahl virtueller CPUs auf dem ausgewählten Host-Computersystem zu platzieren.The method of claim 14, further comprising: Use the hardware multithreading parameter to place the majority of virtual CPUs on the selected host computer system. Verfahren nach Anspruch 14, ferner aufweisend: Ermitteln, ob bei jeder CPU auf der Mehrzahl von Host-Computersystemen geteilte Kerne aktiviert sind, und wenn dem so ist, einer Anzahl von geteilten Kernen pro Kern, und wobei der Auswahlschritt zusätzlich zum Auswählen eines der Mehrzahl von Host-Computersystemen, das eine Anzahl von CPUs mit einer Anzahl von Hardware-Threads enthält, die der VM-Anforderung entsprechen, ein Auswählen von Einstellungen für geteilte Kerne, die der Anzahl virtueller CPUs entsprechen, und des Hardware-Multithreading-Parameters in der VM-Anforderung aufweist.The method of claim 14, further comprising: Determining whether each core on the plurality of host computer systems has shared cores enabled, and if so, a number of shared cores per core, and wherein, in addition to selecting one of the plurality of host computer systems that includes a number of CPUs having a number of hardware threads that correspond to the VM request, the selecting step comprises selecting shared core settings corresponding to the number of virtual CPUs and the hardware multithreading parameter in the VM request. Verfahren nach Anspruch 16, ferner aufweisend ein Verwenden des Hardware-Multithreading-Parameters und der Einstellungen für geteilte Kerne auf dem ausgewählten Host-Computersystem, um eine Mehrzahl virtueller CPUs (vCPUs) auf dem ausgewählten Host-Computersystem zu platzieren.The method of claim 16, further comprising using the hardware multithreading parameter and the shared core settings on the selected host computer system to place a plurality of virtual CPUs (vCPUs) on the selected host computer system. Verfahren nach einem der Ansprüche 14 bis 17, wobei ein erster Wert des Hardware-Multithreading-Parameters anzeigt, dass Hardware-Multithreading ausgeschaltet ist.The method of any one of claims 14 to 17, wherein a first value of the hardware multithreading parameter indicates that hardware multithreading is disabled. Verfahren nach Anspruch 14 in Abhängigkeit von Anspruch 15 oder Anspruch 16, wobei, wenn der erste Wert des Hardware-Multithreading-Parameters anzeigt, dass Hardware-Multithreading ausgeschaltet ist, jede vCPU in der VM auf einem anderen physischen Kern in dem ausgewählten Host-Computersystem platziert wird.The method of claim 14 when dependent on claim 15 or claim 16, wherein if the first value of the hardware multithreading parameter indicates that hardware multithreading is disabled, each vCPU in the VM is on a different physical core in the selected host computer system is placed. Verfahren nach einem der Ansprüche 14 bis 19, wobei ein zweiter Wert des Hardware-Multithreading-Parameters einen numerischen Wert für eine Anzahl von Hardware-Threads anzeigt.The method of any of claims 14 to 19, wherein a second value of the hardware multithreading parameter indicates a numerical value for a number of hardware threads. Verfahren nach Anspruch 20 in Abhängigkeit von Anspruch 15 oder 16, wobei, wenn der zweite Wert des Hardware-Multithreading einen numerischen Wert für eine Anzahl von Hardware-Threads anzeigt, jede vCPU in der VM auf einem anderen Hardware-Thread in dem ausgewählten Host-Computersystem platziert wird.The method of claim 20 when dependent on claim 15 or 16, wherein if the second value of the hardware multithreading indicates a numerical value for a number of hardware threads, each vCPU in the VM is on a different hardware thread in the selected host Computer system is placed. Verfahren nach einem der Ansprüche 14 bis 21, wobei ein dritter Wert des Hardware-Multithreading-Parameters anzeigt, dass das ausgewählte Host-Computersystem ungeachtet dessen ausgewählt wird, ob Hardware-Threading auf dem ausgewählten Host-Computersystem eingeschaltet ist.The method of any one of claims 14 to 21, wherein a third value of the hardware multithreading parameter indicates that the selected host computer system is selected regardless of whether hardware threading is enabled on the selected host computer system. Verfahren nach einem der Ansprüche 14 bis 22, wobei die VM-Anforderung ferner einen Speicherbedarf und einen Plattenbedarf enthält.The method of any one of claims 14 to 22, wherein the VM request further includes a memory requirement and a disk requirement. Verfahren nach einem der Ansprüche 14 bis 23, wobei der Host-Überwachungsmechanismus ferner eine Speichergröße und eine Plattenplatzgröße auf jedem der Mehrzahl von Host-Computersystemen ermittelt.The method of any one of claims 14 to 23, wherein the host monitoring mechanism further determines a memory size and a disk space size on each of the plurality of host computer systems. Verfahren nach Anspruch 14, wobei, wenn die Anzahl virtueller CPUs in der VM-Anforderung größer als der Wert des Hardware-Multithreading-Parameters ist, Auswählen des einen der Mehrzahl von Host-Computersystemen, das eine Mehrzahl von CPUs mit jeweils einer Mehrzahl von Hardware-Threads enthält.The method of claim 14, wherein if the number of virtual CPUs in the VM request is greater than the value of the hardware multithreading parameter, selecting the one of the plurality of host computer systems comprising a plurality of CPUs each having a plurality of hardware Contains threads. Verfahren nach einem der Ansprüche 15 bis 25 in Abhängigkeit von Anspruch 15, ferner aufweisend ein Ändern der Größe der VM unter Verwendung des Hardware-Multithreading-Parameters.The method of any of claims 15 to 25 when dependent on claim 15, further comprising changing the size of the VM using the hardware multithreading parameter. Verfahren nach Anspruch 14 ferner aufweisend: zusätzlich zur Anzahl von CPUs Ermitteln einer Speichergröße und einer Plattenspeicherplatzgröße, die auf einer Mehrzahl von Host-Computersystemen zur Verfügung stehen, auf denen virtuelle Maschinen bereitgestellt werden könnten, wobei die Virtuelle-Maschine-Anforderung (VM-Anforderung) ferner enthält: einen Speicherbedarf, der eine Mindestspeichergröße für die VM angibt; und einen Plattenbedarf, der eine Mindestplattengröße für die VM angibt; wobei ein erster Wert des Hardware-Multithreading-Parameters anzeigt, dass Hardware-Multithreading ausgeschaltet ist, ein zweiter Wert des Hardware-Multithreading-Parameters einen numerischen Wert für eine Anzahl von Hardware-Threads anzeigt und ein dritter Wert des Hardware-Multithreading-Parameters anzeigt, dass das ausgewählte Host-Computersystem unabhängig davon ausgewählt wird, ob Hardware-Threading auf dem ausgewählten Host-Computersystem eingeschaltet ist. The method of claim 14, further comprising: in addition to the number of CPUs, determining a memory size and a disk space size available on a plurality of host computer systems on which virtual machines could be provided, wherein the virtual machine request (VM request ) further includes: a memory requirement indicating a minimum memory size for the VM; and a disk requirement indicating a minimum disk size for the VM; wherein a first value of the hardware multithreading parameter indicates that hardware multithreading is disabled, a second value of the hardware multithreading parameter indicates a numeric value for a number of hardware threads, and indicates a third value of the hardware multithreading parameter in that the selected host computer system is selected regardless of whether hardware threading is enabled on the selected host computer system. Computerprogramm, das Programmcodemittel aufweist, die so gestaltet sind, dass das Verfahren eines beliebigen der Ansprüche 14 bis 27 durchgeführt wird, wenn das Programm auf einem Computer ausgeführt wird.A computer program comprising program code means arranged to perform the method of any of claims 14 to 27 when the program is run on a computer.
DE112015000216.2T 2014-06-06 2015-06-04 Select a host for a virtual machine using a hardware multithreading parameter Pending DE112015000216T5 (en)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US14/297,724 2014-06-06
US14/297,724 US9304805B2 (en) 2014-06-06 2014-06-06 Provisioning virtual CPUs using a hardware multithreading parameter in hosts with split core processors
US14/297,707 2014-06-06
US14/297,677 US9384027B2 (en) 2014-06-06 2014-06-06 Selecting a host for a virtual machine using a hardware multithreading parameter
US14/297,707 US9400672B2 (en) 2014-06-06 2014-06-06 Placement of virtual CPUS using a hardware multithreading parameter
US14/297,677 2014-06-06
US14/305,955 2014-06-16
US14/305,853 2014-06-16
US14/305,955 US9304806B2 (en) 2014-06-06 2014-06-16 Provisioning virtual CPUs using a hardware multithreading parameter in hosts with split core processors
US14/305,703 2014-06-16
US14/305,853 US9400673B2 (en) 2014-06-06 2014-06-16 Placement of virtual CPUS using a hardware multithreading parameter
US14/305,703 US9372705B2 (en) 2014-06-06 2014-06-16 Selecting a host for a virtual machine using a hardware multithreading parameter
PCT/IB2015/054229 WO2015186088A1 (en) 2014-06-06 2015-06-04 Selecting a host for a virtual machine using a hardware multithreading parameter

Publications (1)

Publication Number Publication Date
DE112015000216T5 true DE112015000216T5 (en) 2016-09-01

Family

ID=56682546

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112015000216.2T Pending DE112015000216T5 (en) 2014-06-06 2015-06-04 Select a host for a virtual machine using a hardware multithreading parameter

Country Status (5)

Country Link
JP (1) JP6628742B2 (en)
KR (1) KR101884549B1 (en)
CN (1) CN106462446B (en)
DE (1) DE112015000216T5 (en)
GB (1) GB2541340B (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110673928B (en) * 2019-09-29 2021-12-14 天津卓朗科技发展有限公司 Thread binding method, thread binding device, storage medium and server

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352952B2 (en) * 2008-12-01 2013-01-08 Citrix Systems, Inc. Systems and methods for facilitating virtualization of a heterogeneous processor pool
US9317336B2 (en) 2011-07-27 2016-04-19 Alcatel Lucent Method and apparatus for assignment of virtual resources within a cloud environment
US8850442B2 (en) * 2011-10-27 2014-09-30 Verizon Patent And Licensing Inc. Virtual machine allocation in a computing on-demand system
JP5503678B2 (en) * 2012-03-07 2014-05-28 株式会社Nttドコモ Host providing system and host providing method
JP5813554B2 (en) * 2012-03-30 2015-11-17 ルネサスエレクトロニクス株式会社 Semiconductor device
JP5894496B2 (en) 2012-05-01 2016-03-30 ルネサスエレクトロニクス株式会社 Semiconductor device
US20140007097A1 (en) * 2012-06-29 2014-01-02 Brocade Communications Systems, Inc. Dynamic resource allocation for virtual machines

Also Published As

Publication number Publication date
CN106462446A (en) 2017-02-22
CN106462446B (en) 2019-10-08
GB2541340B (en) 2017-07-19
GB2541340A (en) 2017-02-15
GB201620786D0 (en) 2017-01-18
JP6628742B2 (en) 2020-01-15
KR20160147958A (en) 2016-12-23
JP2017520830A (en) 2017-07-27
KR101884549B1 (en) 2018-08-29

Similar Documents

Publication Publication Date Title
DE112012000444B4 (en) Method, system and computer program product for determining an optimal data processing environment for executing an image and method for implementing a corresponding system
DE112012004336B4 (en) System, method and program product for cost-conscious selection of templates for providing shared resources
DE112013001889B4 (en) Dynamically allocate a workload across a variety of clouds
DE102013205572B4 (en) USING SOFTWARE COMPONENT METADATA TO PROVIDE VIRTUAL MACHINES IN A NETWORKED DATA PROCESSING ENVIRONMENT
DE112012002941T5 (en) Application resource manager via a cloud
DE102013216735A1 (en) Resource allocation in a virtualized computing environment
DE112010003886T5 (en) Providing services using a cloud services catalog
DE112018005898T5 (en) DYNAMIC PROVISION OF SOFTWARE FUNCTIONS
DE102012215219A1 (en) Determine distributions of virtual machine image patterns in a networked computing environment
DE112019000421B4 (en) WORKLOAD MANAGEMENT WITH DATA ACCESS DISCOVERY IN A COMPUTING CLUSTER
DE112021000390T5 (en) ADJUST THE PERFORMANCE OF A DATA PROCESSING SYSTEM
DE102021127254A1 (en) Content-aware selecting nodes to create containers
DE112021005586T5 (en) AUTOMATICALLY SCALING A QUERY CONTROL ROUTINE FOR ENTERPRISE-SCALE BIG DATA WORKLOADS
DE112021003294T5 (en) SYSTEM MANAGEMENT BASED ON PERFORMANCE AND EFFICIENCY
DE112020003825T5 (en) Correspondence between external operations and containers, and mutation events
DE102021122508A1 (en) BALANCING MAINPLANER AND DISTRIBUTED WORKLOADS BASED ON PERFORMANCE AND COST
DE112018004415B4 (en) OPTIMIZATION OF CLOUD RESOURCES IN POLICY-BASED OPERATIONS IN TIERED STORAGE
DE102014116744A1 (en) Management of information technology resources
DE112019002052T5 (en) DATA PROTECTION AWARENESS IN THE PROVISION OF WORKLOADS
DE112021005927T5 (en) PATCHING WORKFLOWS
DE112021003499T5 (en) SCALABLE OPERATORS FOR AUTOMATED WORKLOAD MANAGEMENT IN HYBRID CLOUD ENVIRONMENTS
DE112021001974T5 (en) PROACTIVELY PERFORM TASKS BASED ON AN ESTIMATION OF HARDWARE RECONFIGURATION TIMES
DE112022003126T5 (en) ACCESSING TOPOLOGICAL MAPPING OF CORES
DE112021005394T5 (en) TAG-DRIVEN PLANNING OF COMPUTING RESOURCES FOR FUNCTIONAL EXECUTION
DE112021001559T5 (en) RULE DISTRIBUTION ON INSTITUTIONS OF A RULE ENGINE

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R084 Declaration of willingness to licence