-
HINTERGRUND
-
Dies bezieht sich im Allgemeinen auf das Cloud Computing.
-
Beim Cloud Computing, wird Rechner- und Speicherkapazität für eine Vielzahl von Nutzern bereitgestellt, basierend auf Größenvorteilen und Ressourcenteilung. Dies ermöglicht Nutzern, tatsächlich unbegrenzte Kapazität zu haben, ohne Kosten für die Aufstellung eines Datencenters auf sich zu laden.
-
Infrastructure as a Service oder IaaS, bietet Computer, entweder in physischer Form oder als virtuelle Maschinen, Versorgung mit reiner Speicherkapazität, Firewalls, Lastverteiler und Netzwerke für eine Vielzahl von Nutzern. Beim öffentlichen IaaS sind die Ressourcen für jeden Nutzer verfügbar. Im Allgemeinen hat ein IaaS Cloud Anbieter einen großen Server-Pool, um Nutzer auf Abruf zu versorgen. Der Cloud-Nutzer installiert seine eigenen Betriebssystem-Bilder und Anwendungs-Software und ist für deren Wartung verantwortlich. Der Cloud-Nutzer bezahlt auf einer Kosten-pro-Nutzungs-Basis für tatsächlich genutzte Dienstleistungen.
-
In öffentlichen IaaS-Systemen ist der Serviceprovider, der die Cloud zur Nutzung in allen Bereichen bereitstellt, mit dem Problem belastet, daß er Nichts über die Art der Arbeitsbelastungen weiß, die er von diesen Nutzern erhält. Im Allgemeinen ist der Grund dafür, dass Privatsphäre- und Sicherheitsbedenken die Daten limitieren, die der Serviceprovider erhält. Der Serviceprovider der Cloud kann nicht die Vorgänge des Kunden, auf den Servern des Serviceproviders, einsehen, um die Anwendungs-Eigenschaften zu nachzuvollziehen, Noch kann dieser Serviceprovider den Verbrauch der physischen Ressourcen von Kunden-Anwendungen ausreichend flächendeckend überwachen, um die Eigenschaften der Kunden-Anwendungen zu bestimmen, da dies die Leistung der Kunden-Anwendungen beeinflussen würde.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Einige Ausführungsformen werden im Hinblick auf die folgenden Abbildungen beschrieben:
-
ist eine schematische Abbildung einer Ausführungsform der vorliegenden Erfindung;
-
ist ein Ablaufdiagramm für eine Abfolge, entsprechend einer Ausführungsform der vorliegenden Erfindung und
-
ist ein Ablaufdiagramm einer weiteren Ausführungsform der vorliegenden Erfindung.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Entsprechend einiger Ausführungsformen, kann ein öffentlicher Infrastructure as a Service(IaaS)-Nutzer dem Serviceprovider eine Datei zukommenlassen, mit Informationen über die spezifischen Befehle und Befehlscodes, die dazu verwendet werden, eine Anwendung auf dem System des Cloud-Serviceproviders ablaufen zu lassen. Durch den Nutzer können diese Daten können zur Kompilationszeit entwickelt werden, bevor dieser die Arbeitsbelastung auf die öffentliche IaaS Cloud einstellt. Somit hat der Nutzer die volle Kontrolle über die in einigen Ausführungsformen bereitgestellten Daten.
-
Zum Beispiel, kann besonderer Umgang in der Cloud von Nutzen für bestimmte Befehle und/oder Befehlscodes sein. Die Ausführung auf Servern mit bestimmten Leistungsfähigkeiten kann für bestimmte Typen von Befehlen von Nutzen sein. Wüsste der Cloud-Serviceprovider, dass diese Befehle in einer Anwendung vorliegen, könnte er die Arbeitsbelastung den effizientesten Servern für diese besonderen Arbeitsbelastungen zuweisen.
-
Im Einzelnen kann ein Cloud-Serviceprovider Konsolidierungsquoten erhöhen und die Effizienz seiner Infrastruktur verbessern, indem er auf eine Weise, so viele Vorgänge wie möglich zusammenpackt, dass die individuelle Serverausnutzung maximiert wird. Zusätzlich kann ein Serviceprovider vermeiden, kollidierende Arbeitsbelastungen auf dem selben Server zu platzieren. Beispielsweise, statt zwei bandweitenintensive Arbeitsbelastungen zusammen auf dem selben Server zu platzieren, können die Arbeitsbelastungen, zum besseren Ressourcenmanagement, auf unterschiedlichen Servern eingeplant werden.
-
Bei einigen Ausführungsformen werden, zur Kompilations- oder Einsatzzeit der Anwendung oder des virtuellen Maschinenvorgangs, Eigenschaften von Schlüsselanwendungen in einer Datei festgehalten, die Katalog genannt wird. Dieser Katalog kann vom Cloud-Nutzer dem IaaS Serviceprovider zur Einsatzzeit bereitgestellt werden. Dann kennt der Cloud-Serviceprovider die Anwendungs-Eigenschaften. Dies kann zur effizienten Planung und besseren Zuordnung von Arbeitsbelastungen für verfügbare Serverressourcen verwendet werden, ohne Notwendigkeit zur Überwachung oder Prüfung der Kunden-Anwendung.
-
Der Katalog muss nicht unbedingt ein Laufzeitprofil enthalten. Zum Beispiel, wenn für in der Cloud auszuführende Anwendungen Verschlüsselung verwendet wird, wie Hypertext Transfer Protocol Secure (HTTPS) oder Secure Sockets Layer (SSL), wäre Advanced Encryption Standard(AES)-New Instruction (NI), für die Compiler Logs im Anwendungskatalog von Nutzen. Dann verwendet der Cloud-Serviceprovider wiederum diese Kenntnis, um die Arbeitsbelastung für einen AES-NI-fähigen Server einzuplanen (statt für ein älteres System, ohne Verschlüsselungsbeschleunigung).
-
Als weiteres Beispiel, wenn für die in der Cloud auszuführenden Anwendungen teure Gleitkommas verwendet werden, können die Katalogdaten vom Cloud-Serviceprovider, zum Einstellen der Arbeitsbelastung auf Many integrated core(MIC)-unterstützten Servern, benutzt werden.
-
Und, als weiteres Beispiel, wenn der Cloud-Serviceprovider, als Ergebnis einer Katalog-Analyse, bemerkt, dass eine Anwendung mit Advanced Vector Extensions (AVX) Befehlssatz-Erweiterungen kombiniert ist, kann dieser Serviceprovider die Arbeitsbelastung an einen verfügbaren Server anpassen und Infrastruktur und Effizienz erhöhen.
-
Bei einigen Ausführungsformen, kann der Katalog sprachenspezifische Hinweise enthalten, wie z. B. dass die Arbeitsbelastung im virtuellen Maschinenvorgang Java-basiert ist, dadurch kann der Cloud-Serviceprovider die Arbeitsbelastung auf einen Java Virtual Machine(JVM)-optimierten Pool von Servern einplanen.
-
Mit Bezug auf : es wir eine Übersicht des System oder des Datencenters 10 gezeigt. Oben, bei 1, wird die Kompilation der Anwendung auf der eigenen Seite des Cloud-Nutzers gezeigt 1. Die Anwendung (App) 12 wird für einen Compiler 14 bereitgestellt, was das kompilierte Objekt 16 erzeugt, ebenso wie den Katalog 18. Wie in gezeigt, kann der Katalog 18 kennzeichnen, dass Befehle oder Befehlscodes, wie AES- oder AVX-Befehle, in der Anwendung vorliegen, für die die Ablauf-Zuordnung zu Servern mit speziellen Fähigkeiten, von Nutzen wäre.
-
Darm stellt der Kunde (Nr. 2) die Arbeitsbelastung in der öffentlichen IaaS Cloud auf der virtuellen Maschine (VM) 20 ein. Dies bedeutet, daß die Cloud sowohl das kompilierte Objekt 16 als auch den Katalog 18 erhält. Die Cloud-Betriebskonfiguration 22 mit Speicher 25 enthält einen Katalogleser 23, der die Katalogdaten in die virtuelle Maschine einliest, wie durch den Pfeil zum Kartenleser 23 angezeigt. Dann setzt die Cloud die Anwendung in die best geeignete IaaS-Hardware ein, um die Arbeitsbelastung im durchführbaren Ausmaß zu bearbeiten. Dieser Einsatz kann durch die Verfügbarkeit von Servern begrenzt sein. In manchen Fällen kann eine Arbeitsbelastung aufgeschoben werden, bis ein geeigneter Server verfügbar ist. Zum Beispiel, wenn AES-Befehle bereitgestellt werden, kann die Arbeitsbelastung (Nr. 3) für Server mit AES-NI und/oder AVX-Fähigkeit bereitgestellt werden, wie bei 28 aufgeführt, statt für Server 26 innerhalb Struktur 24, die diese Fähigkeiten nicht haben.
-
Bei manchen Ausführungsformen, entwickelt der Compiler den Katalog zur Kompilationszeit. Wenn dann der Cloud-Kunde die Anwendung in den vom Cloud-Serviceprovider gekauften Vorgang zusammenpackt, ist der Katalog in diesem Vorfall enthalten. Der Katalogleser und die Betriebskonfiguration 22 können innerhalb der Cloud-Betriebskonfiguration eingebettet sein. Wenn ein Kunde den Vorgang einsetzt, wird der Vorgang in die Cloud Betriebskonfiguration gestapelt, zur Planung der verfügbaren Iaas-Infrastruktur 24. Die Cloud Betriebskonfiguration, die den eingebetteten Katalogleser verwendet, kennt die Eigenschaften der Anwendung und setzt daher die Arbeitsbelastung ein, basierend auf der am besten passenden Infrastruktur.
-
Anwendungen mit bestimmten Fähigkeiten, wie AVX- oder AES-NI-Fähigkeiten, verwenden ganz spezielle Befehle und Befehlscodes. Daher ermittelt ein Analyse-Werkzeug, als Teil des Compilers, diese Befehle und kann die Arbeitsbelastung markieren, während sie kompiliert wird. Zum Beispiel deutet das Vorliegen von Befehlen oder ihren Befehlscodes, wie AESENC, AESENCLAST, AESDEC, AESDECLAST, AESKEYGENASSIST, AESIMC, PCLMULQDQ, darauf hin, dass die Anwendung kompiliert werden könnte, um Nutzen aus AES-NI Befehlen zu ziehen. Die Erfindung ist nicht auf diese Befehlscodes und Befehle begrenzt. Jeder Befehl des Befehlssatzes, der durch seinen Befehlscode oder Funktionalität gekennzeichnet werden kann, kann von einem Compiler zum Erreichen ähnlicher Ziele verwendet werden.
-
In kann eine Kompilations-Sequenz 14 in der Software, Firmware und/oder Hardware, umgesetzt werden. Bei Software- und Firmware-Ausführungsformen, können ausführbare Befehle in einem oder mehreren nicht-transitorischen computerlesbaren Medien, wie magnetischer, Halbleiter- und/oder optischer Speicherung gespeichert werden.
-
Somit, bezogen auf , erhält der Compiler 14 am Kundenstandort die Anwendung, wie bei 12 angegeben und kompiliert den Code, wie angegeben bei 30. Ein Analyse-Werkzeug innerhalb des Compilers 14 kann zur Ermittlung spezifischer Befehle oder Befehlscodes verwendet werden, wie angegeben in Block 32. Grundsätzlich kann eine Datei mit zu suchenden Befehlen und Befehlscodes bereitgestellt werden und das Analyse-Werkzeug ermittelt automatisch dieses Befehle oder Befehlscodes innerhalb des Codes, der gerade kompiliert wird.
-
Falls das Analyse-Werkzeug einen dieser Befehle findet, bei Raute 34, markiert es die Arbeitsbelastung und lädt die gefundenen spezifischen Befehle und Befehlscodes, wie in Block 36 angegeben. Dann kann ein Profilkatalog vorbereitet werden, wie angegeben in Block 38, zum gemeinsamen Versand mit dem kompilierten Objekt, an den Cloud-Serviceprovider. In einigen Ausführungsformen kann ein Leser mit dem Katalog mitgesendet werden.
-
Der Katalog kann eine bestimmte Form oder Vorlage haben, in einigen Ausführungsformen, bereitgestellt durch den Cloud-Serviceprovider. Ferner können bestimmte Codes eingerichtet werden, um auf die Anwesenheit bestimmter Befehle oder Befehlscodes in der Anweisung hinzuweisen. Zusätzlich kann der Katalog Anforderungen für die Handhabung auf Servern mit bestimmten Eigenschaften enthalten. Der Katalog kann auch darauf hinweisen, wie zeitkritisch die Anwendung ist, damit die Cloud beurteilen kann, ob die Ausführung, in Abhängigkeit von der Verfügbarkeit eines vorteilhaften Servers, aufgeschoben wird. Ähnlich, kann der Katalog mögliche kollidierende Arbeitslasten kennzeichnen, die nicht dem selben Server zugeordnet werden sollten.
-
In kann eine Arbeitsbelastung mit einer vorgegebenen Reihenfolge 40 in Software, Firmware und/oder Hardware ausgeführt werden. Bei Software- und Firmware-Ausführungsformen, können durch den Computer ausführbare Befehle in einem oder mehreren nicht-transitorischen computerlesbaren Medien, wie magnetischer, Halbleiter- und/oder optischer Speicherung, gespeichert werden.
-
Die in gezeigte Reihenfolge 40, kann bei einer Ausführungsform, in der Cloud-Betriebskonfiguration ausgeführt werden. Beim Cloud-Serviceprovider erhält ein Arbeitsbelastungs-Zuordner, der Teil der Cloud-Betriebskonfiguration 22 ist, die Arbeitsbelastung, wie in Block 42 angegeben. Der Katalogleser innerhalb der Betriebskonfiguration liest die Katalogdaten, wie in Block 44 angegeben. Dann wird die Anwendung in den geeigneten Server oder Server-Pool eingesetzt, der and die Arbeitsbelastung angepasst ist, wie in Block 46 angegeben.
-
Bei einigen Ausführungsformen ist die Cloud-Betriebskonfiguration 22 ein Server- oder Prozessor-basiertes System, das auf computerlesbaren Medien gespeicherte Befehle ausführt. Besonders diese Befehle können in einem oder mehreren nicht-transitorischen Medien, wie optischer, magnetischer oder Halbleiter-Speicherung gespeichert werden. Beispielsweise ist in solch eine Speicherung angegeben, bei 25. Dieser Speicher kann zur Ausführung der in gezeigten Reihenfolge benötigte Befehle speichern. Ebenso kann der Compiler 14 einen Speicher 15 enthalten, der Befehle zur Ausführung der in gezeigten Reihenfolge speichert. Bei manchen Ausführungsformen, kann mehr als ein Speicher zur Speicherung der Befehlssätze für die Ausführung der Reihenfolgen aus und verwendet werden.
-
Bei einer Ausführungsform kann der Katalog in einem oder mehreren Paketen, inklusive einer Überschrift, die das oder die Pakete als Katalog kennzeichnet, enthalten sein. Dann kann das/die Paket(e) leicht, mittels Analyse-Werkzeug während Kompilationszeit, ermittelt werden. Andere Verfahren zum Ermöglichen der Ermittlung des Katalogs innerhalb anderer Daten können ebenfalls verwendet werden.
-
Die hierin beschriebenen Reihenfolgen beginnen bevor die Anwendung ins System hochgeladen wird, wie der Cloud, auf der sie ablaufen soll. Der Kunde oder der Cloud-Provider hat die Arbeitsbelastung auf die Warteschlange des Providers geladen. Dann kann der Cloud-Provider sie aufnehmen und auf einem der vielen Server im seinem Datencenter ablaufen lassen.
-
Vor Platzierung der Arbeitsbelastung auf einem System innerhalb des Datencenters des Cloud-Providers, kann es nützlich für den Cloud-Provider sein, zu wissen ob die Arbeitsbelastung für spezielle Befehle optimiert ist. Dann kann der Cloud-Provider seine Datencenter-Ressourcen effizienter nutzen und Kunden bekommen, bei einigen Ausführungsformen, schnellere Fertigstellung.
-
Beispielsweise kann ein Kunde AVX-optimierte Medien-Arbeitsbelastungen auf der Cloud platzieren. Aus Privatsphäre-Gründen, kann der Cloud-Serviceprovider die Arbeitsbelastung nicht untersuchen, um zu sehen ob diese AVX-optimiert ist oder nicht. Der Kunde hat keine Mittel, dem Cloud-Serviceprovider mitzuteilen, ob die Arbeitsbelastung AVX-optimiert ist oder nicht.
-
Bei einigen Ausführungsformen der vorliegenden Erfindung können Cloud-Provider und Kunden das Arbeitsbelastungs-Profil, auf skalierbare und automatisierte Weise, kommunizieren. In diesem Beispiel, sofern der Cloud-Serviceprovider AVX-fähige Server in seinem Server-Pool hätte, zur Bearbeitung der Arbeitsbelastung, könnte er die Arbeitsbelastung auf solche Server setzen und erhielte schnellere Fertigstellungszeiten und könnte, in einigen Ausführungsformen, mit der Zeit mehr Arbeitsbelastungen bearbeiten. Nachdem die Arbeitsbelastung auf einem AVX-fähigen Server platziert wäre, könnten die dynamisch verlinkten Bibliotheken (DLLs) die Zentralprozessor-Kennung (CPUID) untersuchen und den optimalen Code-Pfad durchführen. Und zwar, basierend auf seiner Zentralprozessor-Kennung zu erkennen, dass der Server AVX-fähig ist und die Anwendung den optimierten Pfad verwendeten kann.
-
Die folgenden Bestimmungen und/oder Beispiele gehören zu weiteren Ausführungsformen:
Eine Beispielausführungsform kann ein Verfahren sein, das daraus besteht, Daten über von der Anwendung verwendete Befehle oder Befehlscodes zu erhalten; und basierend auf diesen Daten die Anwendung einem Server, aus einer Vielzahl an Servern, zuzuordnen. Das Verfahren kann auch den Erhalt von Daten enthalten/enthält den Erhalt von Daten, aus einem Katalog, der dem kompilierten Code der Anwendung beiliegt. Das Verfahren kann auch enthalten: besagte Daten weisen darauf hin, dass die Anwendung Verschlüsselung verwendet, zur Ausführung wird die Anwendung einem geeigneten Server zugeordnet, der Verschlüsselungsbefehle ausführen kann. Das Verfahren kann auch enthalten: die Bestimmung, ob die Anwendung erweiterte Vektor-Befehle verwendet. Das Verfahren kann auch enthalten: die Zuordnung einer Anwendung zu einem, für die Ausführung von erweiterten Vektor-Befehlen geeigneten, Server. Das Verfahren kann auch enthalten: In einer Cloud ein kompiliertes Objekt nebst besagter Daten zur Ausführung zu erhalten. Das Verfahren kann auch enthalten: das Lesen besagter Daten in einer Cloud-Betriebskonfiguration, vor der Zuweisung der Arbeitsbelastung, einschließlich des Objekts, an einen Server. Das Verfahren kann auch enthalten: Auswahl eines Servers zur Bearbeitung besagter Arbeitsbelastung, basierend auf besagten Daten. Das Verfahren kann auch enthalten: Zuweisung eines Servers zu einer öffentlichen Infrastructure as a Service-Cloud. Eine weitere Ausführungsform kann ein nicht-transitorisches, computerlesbares Medium sein, das Befehle speichert, die dem Prozessor ermöglichen: Daten über von einer Anwendung verwendete Befehle und Befehlscodes zu erhalten und, basierend auf diesen Daten, die Anwendung einem Server, aus einer Vielzahl von Servern, in einer Cloud zuzuweisen. Ferner kann das Medium Befehle speichern, um Daten aus einem Katalog, der dem kompilierten Code für besagte Anwendung beiliegt, zu erhalten. Ferner kann das Medium Befehle speichern, um die Anwendung zur Ausführung einem geeigneten Server zuzuordnen, der Verschlüsselungsbefehle ausführen kann, falls besagte Daten darauf hinweisen, dass die Anwendung Verschlüsselung verwendet. Ferner kann das Medium Befehle speichern, zur Bestimmung, ob die Anwendung erweiterte Vektor-Befehle verwendet. Ferner kann das Medium Befehle speichern, um die Anwendung einem geeigneten Server zuzuordnen, der erweiterte Vektor-Befehle verarbeiten kann, basierend auf der Festlegung, dass die Anwendung erweiterte Vektor-Befehle verwendet. Ferner kann das Medium Befehle speichern, um ein kompiliertes Objekt samt besagter Daten in einer Cloud, zur Ausführung, zu erhalten. Ferner kann das Medium Befehle speichern, zum Lesen besagter Daten in einer Cloud-Betriebskonfiguration, vor der Zuweisung der Arbeitsbelastung, einschließlich des Objekts, an einen Server. Ferner kann das Medium Befehle speichern, zur Auswahl eines Servers, der, basierend auf besagten Daten, die Arbeitsbelastung verarbeiten kann. Ferner kann das Medium Befehle speichern, um einen Server in einer öffentlichen Infrastructure as a Service-Cloud zuzuweisen.
-
Eine beispielhafte Ausführungsform kann ein nicht-transitorisches, computerlesbares Medium sein, das Befehle speichert, die einem Prozessor ermöglichen: eine Anwendung zu erhalten; Code für die Anwendung zu kompilieren; Ermittlung spezifischer Befehle oder Befehlscodes innerhalb besagtem Code, und, falls ein spezifischer Befehl gefunden wird, die Anwendung zu markieren; sowie Vorbereiten eines Profilkatalogs, der Daten über besagte Befehle oder Befehlscodes für die Anwendung markiert, die auf der Seite eines Cloud-Serviceproviders gelesen wird. Das Medium kann die Speicherung von Befehlen enthalten, zur Analyse der Anwendung auf Verschlüsselungsbefehle. Das Medium kann die Speicherung von Befehlen enthalten, zur Analyse der Anwendung, um zu bestimmen, ob die Anwendung erweiterte Vektor-Befehle verwendet. Das Medium kann die Speicherung von Befehlen enthalten, zur Kennzeichnung besagter Befehle oder Befehlscodes während der Kompilationszeit: Das Medium kann ebenfalls die Speicherung von Befehlen enthalten, ein kompiliertes Objekt samt besagter Daten, zur Ausführung, an eine Cloud zu schicken. Eine beispielhafte Ausführungsform kann eine Vorrichtung sein, bestehend aus einem Prozessor, zur Analyse von Befehlen oder Befehlscodes innerhalb einer Anwendung, und falls ein spezifischer Befehl oder Befehlscode gefunden wird, die Anwendung zu markieren und einen Profilkatalog vorzubereiten, zur Kennzeichnung der Daten über besagte Befehle oder Befehlscodes für die Anwendung, der auf der Seite eines Cloud-Serviceproviders gelesen wird; sowie aus einem mit besagtem Prozessor gekoppelten Speicher. Die Vorrichtung kann besagten Prozessor enthalten, zur Analyse der Anwendung auf Verschlüsselungsbefehle. Die Vorrichtung kann besagten Prozessor enthalten, zur Analyse der Anwendung, um zu bestimmen, ob die Anwendung erweiterte Vektor-Befehle verwendet. Die Vorrichtung kann besagten Prozessor enthalten, zur Kennzeichnung besagter Befehle und Befehlscodes während der Kompilationszeit. Die Vorrichtung kann auch besagten Prozessor enthalten, um ein kompiliertes Objekt samt besagter Daten an eine Cloud, zur Ausführung, zu schicken.
-
Verweise in dieser Beschreibung auf „eine Ausführungsform” bedeuten, dass ein bestimmtes Merkmal, eine Struktur oder Charakteristik, die in Verbindung mit der Ausführungsform beschrieben wird, mindestens in einer, innerhalb der vorliegenden Erfindung enthaltenen Implementierung, enthalten ist. Somit beziehen sich Verwendungen des Ausdrucks „bei einer Ausführungsform” nicht notwendigerweise auf die gleiche Ausführungsform. Außerdem können die bestimmten Merkmale, Strukturen oder Charakteristika in anderen, geeigneten Formen eingeführt werden, die sich von der bestimmten, veranschaulichten Ausführungsform unterscheiden, und alle solchen Formen können innerhalb der Anforderungen der vorliegenden Anwendung enthalten sein.
-
Obwohl die vorliegende Erfindung im Hinblick auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, sind sich Fachleute bewusst, dass viele weitere Modifikationen und Varianten davon möglich sind. Die beigefügten Ansprüche sollen alle solchen Modifikationen und Varianten abdecken, die dem Sinn und Schutzbereich der vorliegenden Erfindung entsprechen.