DE112012005030T5 - Dynamisch konfigurierbare Platzierungs-Engine - Google Patents

Dynamisch konfigurierbare Platzierungs-Engine Download PDF

Info

Publication number
DE112012005030T5
DE112012005030T5 DE112012005030.4T DE112012005030T DE112012005030T5 DE 112012005030 T5 DE112012005030 T5 DE 112012005030T5 DE 112012005030 T DE112012005030 T DE 112012005030T DE 112012005030 T5 DE112012005030 T5 DE 112012005030T5
Authority
DE
Germany
Prior art keywords
host
processing element
selection criteria
processing
processing elements
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
DE112012005030.4T
Other languages
English (en)
Inventor
c/o IBM Corporation Fawcett Bradley William
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112012005030T5 publication Critical patent/DE112012005030T5/de
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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Eine Datenstromanwendung kann einem oder mehreren Rechenknoten (oder Hosts) Verarbeitungselemente zuweisen, um ein gewünschtes Optimierungsziel zu erreichen. Jeder Optimierungsmodus kann Verarbeitungselement-Auswahlkriterien und/oder Host-Auswahlkriterien definieren. Beim Zuweisen eines Verarbeitungselements zu einem Host kann ein Steuerprogramm jedes Verarbeitungselement individuell platzieren. Das Steuerprogramm kann daher die Verarbeitungselement-Auswahlkriterien zum Auswählen des Verarbeitungselements verwenden, das als nächstes in der Datenstromanwendung zugewiesen wird. Das Steuerprogramm kann anschließend auf der Grundlage von einer oder mehreren Bedingungen ermitteln, auf welchem Host das Verarbeitungselement platziert werden kann. Wenn das Steuerprogramm feststellt, dass mehrere Hosts geeignete Kandidaten für das Verarbeitungselement sind, kann es die Host-Auswahlkriterien verwenden, um einen der Kandidaten-Hosts auszusuchen, der die Datenstromanwendung weiter optimiert, um das gewünschte Ziel zu erreichen. Zu Beispielen von verschiedenen Optimierungszielen, die durch das Verwenden von Verarbeitungselement- und Host-Auswahlkriterien erreicht werden können, gehören die Optimierung der Leistung, die Verringerung von Wartungs- und Betriebskosten, die Verbesserung der Auflösbarkeit, die gemeinsame Nutzung begrenzter Computerressourcen mit anderen Anwendungen und Ähnliches.

Description

  • TECHNISCHES GEBIET
  • Ausführungsformen der vorliegenden Erfindung beziehen sich allgemein auf Datenstromanwendungen. Die Erfindung bezieht sich insbesondere auf ein Verwenden von Auswahlkriterien, um einem Rechenknoten Verarbeitungselemente auf der Grundlage von Optimierungszielen zuzuweisen.
  • STAND DER TECHNIK
  • Mit den in hohem Maße entwickelten Computerdatenbanken sind auch die Datenverarbeitungsanforderungen rasch gestiegen, die an Datenbanksysteme gestellt werden. Datenbanksysteme sind üblicherweise so konfiguriert, dass der Vorgang zum Speichern von Daten von dem Zugreifen auf Daten, die in der Datenbank gespeichert sind, ihrem Bearbeiten oder Verwenden getrennt ist. Datenbanken verwenden insbesondere ein Modell, bei dem Daten zuerst gespeichert, dann indexiert und schließlich abgefragt werden. Dieses Modell kann jedoch die Leistungsanforderungen einiger Echtzeitanwendungen nicht erfüllen. Die Geschwindigkeit, mit der ein Datenbanksystem zum Beispiel eingehende Daten empfangen und speichern kann, begrenzt die Menge der Daten, die verarbeitet oder anderweitig bewertet werden kann. Dies kann im Gegenzug die Fähigkeit von Datenbankanwendungen einschränken, große Datenmengen in Echtzeit zu verarbeiten.
  • Nach dem Stand der Technik besteht somit Bedarf, das vorstehend beschriebene Problem zu lösen.
  • KURZDARSTELLUNG
  • Ausführungsformen der vorliegenden Erfindung beziehen sich allgemein auf Datenstromanwendungen. Die Erfindung bezieht sich insbesondere auf ein Verwenden von Auswahlkriterien, um einem Rechenknoten Verarbeitungselemente auf der Grundlage einer Vielzahl von Optimierungszielen zuzuweisen.
  • Von einem ersten Aspekt aus betrachtet, stellt die vorliegende Erfindung ein System bereit, das aufweist: einen Computerprozessor; und einen Speicher, der ein Programm enthält, das, wenn es auf dem Computerprozessor ausgeführt wird, eine Operation zum Erstellen einer Datenstromanwendung durchführt, wobei das System aufweist: eine Auswahlkomponente zum Auswählen eines Verarbeitungselements aus einer Vielzahl von Verarbeitungselementen in der Datenstromanwendung auf der Grundlage mindestens eines Verarbeitungselement-Auswahlkriteriums; eine Ermittlungskomponente zum Ermitteln einer Vielzahl von Kandidaten-Rechenknoten aus einer Vielzahl von Rechenknoten, denen das Verarbeitungselement auf der Grundlage einer oder mehrerer Bedingungen zugewiesen werden kann; wobei die Auswahlkomponente weiterhin funktionsmäßig in der Lage ist, einen Rechenknoten auf der Grundlage von mindestens einem Rechenknoten-Auswahlkriterium aus den Kandidaten-Rechenknoten auszuwählen, wobei mindestens die Verarbeitungselement-Auswahlkriterien oder Rechenknoten-Auswahlkriterien durch einen aktuellen Optimierungsmodus für die Datenstromanwendung ermittelt werden; und eine Zuweisungskomponente zum Zuweisen des Verarbeitungselements zu dem ausgewählten Rechenknoten.
  • Von einem ersten Aspekt aus betrachtet, stellt die vorliegende Erfindung ein computerimplementiertes Verfahren zum Erstellen einer Datenstromanwendung bereit, wobei das Verfahren aufweist: Auswählen eines Verarbeitungselements aus einer Vielzahl von Verarbeitungselementen in der Datenstromanwendung auf der Grundlage mindestens eines Verarbeitungselement-Auswahlkriteriums durch den Betrieb von einem oder mehreren Computerprozessoren; Ermitteln einer Vielzahl von Kandidaten-Rechenknoten aus einer Vielzahl von Rechenknoten, denen das Verarbeitungselement auf der Grundlage einer oder mehrerer Bedingungen zugewiesen werden kann; Auswählen eines Rechenknotens aus den Kandidaten-Rechenknoten auf der Grundlage von mindestens einem Rechenknoten-Auswahlkriterium, wobei mindestens die Verarbeitungselement-Auswahlkriterien oder Rechenknoten-Auswahlkriterien durch einen aktuellen Optimierungsmodus für die Datenstromanwendung ermittelt werden; und Zuweisen des Verarbeitungselements zu dem ausgewählten Rechenknoten.
  • Zu Ausführungsformen der vorliegenden Erfindung gehören ein computerimplementiertes Verfahren, ein System und ein computerlesbares Speichermedium zum Erstellen einer Datenstromanwendung. Das Verfahren, System und Speichermedium beinhalten ein Auswählen eines Verarbeitungselements aus einer Vielzahl von Verarbeitungselementen in der Datenstromanwendung auf der Grundlage von mindestens einem Verarbeitungselement-Auswahlkriterium. Das Verfahren, System und Speichermedium beinhalten ferner ein Ermitteln einer Vielzahl von Kandidaten-Rechenknoten aus einer Vielzahl von Rechenknoten, denen das Verarbeitungselement auf der Grundlage von einer oder mehreren Bedingungen zugewiesen werden kann. Das Verfahren, System und Speichermedium beinhalten ein Auswählen des Rechenknotens aus den Kandidaten-Rechenknoten auf der Grundlage von mindestens einem Rechenknoten-Auswahlkriterium, wobei mindestens die Verarbeitungselement-Auswahlkriterien oder Rechenknoten-Auswahlkriterien durch einen aktuellen Optimierungsmodus, der aus einer Vielzahl von Optimierungsmodi ausgewählt wird, für die Datenstromanwendung ermittelt werden. Das Verfahren, System und Speichermedium beinhalten ein Zuweisen des Verarbeitungselements zu dem Rechenknoten.
  • Von einem weiteren Aspekt aus betrachtet, stellt die vorliegende Erfindung ein System bereit, das aufweist: einen Computerprozessor; und einen Speicher, der ein Programm enthält, das, wenn es auf dem Computerprozessor ausgeführt wird, eine Operation zum Erstellen einer Datenstromanwendung durchführt, wobei das System aufweist: Auswählen eines Verarbeitungselements aus einer Vielzahl von Verarbeitungselementen in der Datenstromanwendung auf der Grundlage mindestens eines Verarbeitungselement-Auswahlkriteriums; Ermitteln einer Vielzahl von Kandidaten-Rechenknoten aus einer Vielzahl von Rechenknoten, denen das Verarbeitungselement auf der Grundlage einer oder mehrerer Bedingungen zugewiesen werden kann; Auswählen eines Rechenknotens aus den Kandidaten-Rechenknoten auf der Grundlage von mindestens einem Rechenknoten-Auswahlkriterium, wobei mindestens die Verarbeitungselement-Auswahlkriterien oder Rechenknoten-Auswahlkriterien durch einen aktuellen Optimierungsmodus für die Datenstromanwendung ermittelt werden; und Zuweisen des Verarbeitungselements zu dem ausgewählten Rechenknoten.
  • Von einem weiteren Aspekt aus betrachtet, stellt die vorliegende Erfindung ein Computerprogrammprodukt zum Erstellen einer Datenstromanwendung bereit, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium aufweist, das von einer Verarbeitungsschaltung gelesen werden kann und Anweisungen speichert, die die Verarbeitungsschaltung ausführt, um ein Verfahren zum Durchführen der Schritte der Erfindung durchzuführen.
  • Von einem weiteren Aspekt aus betrachtet, stellt die vorliegende Erfindung ein Computerprogramm bereit, das auf einem computerlesbaren Medium gespeichert ist und in den internen Speicher eines digitalen Computers geladen werden kann, wobei das Computerprogramm Software-Codeteile aufweist, wenn das Programm auf einem Computer ausgeführt wird, um die Schritte der Erfindung durchzuführen.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung wird nunmehr im Folgenden nur beispielhaft mit Bezug auf bevorzugte Ausführungsformen beschrieben, wie in den folgenden Figuren veranschaulicht:
  • die 1A bis 1B veranschaulichen eine Datenverarbeitungsinfrastruktur, die so konfiguriert ist, dass sie eine Datenstromanwendung gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung ausführt;
  • 2 ist eine genauere Ansicht der Hosts der 1A bis 1B gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
  • 3 ist eine genauere Ansicht des Verwaltungssystems von 1 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
  • die 4A bis 4B veranschaulichen Tabellen, die die Zuweisung von Hosts zu Hostpools gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung genau aufführen;
  • 5 ist ein Ablaufplan, der eine Technik zum Erstellen einer Datenstromanwendung gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung veranschaulicht;
  • 6 veranschaulicht einen Bedingungsbaum zum Anwenden von Bedingungen gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
  • 7 ist eine Tabelle, die Auswahlkriterien in Verbindung mit einer Vielzahl von Optimierungsmodi gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung veranschaulicht;
  • die 8A bis 8B sind Ablaufpläne, die eine Technik zum Erstellen einer Datenstromanwendung unter Verwendung von Auswahlkriterien gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung veranschaulichen;
  • 9 veranschaulicht eine Technik zum Wechseln von Optimierungsmodi gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
  • 10 veranschaulicht eine Technik zum Wechseln von Optimierungsmodi gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die auf Datenströmen beruhende Datenverarbeitung und die auf Datenströmen beruhende Datenbankverarbeitung stellen eine sich entwickelnde Technologie für Datenbanksysteme dar. Es sind Produkte erhältlich, mit deren Hilfe Benutzer Anwendungen erstellen können, die Datenströme verarbeiten und abfragen, bevor diese in eine Datenbankdatei gelangen. Mit dieser sich entwickelnden Technologie können Benutzer eine Verarbeitungslogik spezifizieren, die während des laufenden Betriebs auf eingehende Datensätze angewendet wird, wobei die Ergebnisse in sehr kurzer Zeit, oftmals innerhalb von Millisekunden, zur Verfügung stehen. Das Schaffen einer Anwendung unter Verwendung dieser Art von Verarbeitung hat zu einem neuen Programmierparadigma geführt, das die Entwicklung einer großen Vielfalt von innovativen Anwendungen, Systemen und Prozessen ermöglicht und neue Herausforderungen für Anwendungsprogrammierer und Datenbankentwickler mit sich bringt.
  • Bei einer Datenstromanwendung sind Operatoren so untereinander verbunden, dass Daten von einem Operator zum nächsten fließen, wobei ein Diagramm mit einem logischen Datenfluss gebildet wird. Eine Skalierbarkeit wird erreicht, indem eine Anwendung durch Erstellen vieler kleiner ausführbarer Codeteile – d. h. Verarbeitungselemente (VE) – auf Rechenknoten verteilt wird, sowie dadurch, dass ein Lastausgleich zwischen ihnen durchgeführt wird. Ein oder mehrere Operatoren in einer Datenstromanwendung können zusammengefügt werden, um ein VE zu bilden. Dadurch können die zusammengefügten Operatoren einen gemeinsamen Prozessraum (d. h. einen gemeinsam genutzten Speicher) gemeinsam nutzen, was zu einem viel schnelleren Datenaustausch zwischen Operatoren führt als bei der Verwendung von Datenübertragungsprotokollen zwischen Knoten (z. B. unter Verwendung von TCP/IP). Ferner können Gruppen von Verarbeitungselementen – d. h. Aufträge (jobs) – dynamisch in eine oder mehrere Anwendungen eingefügt oder aus diesen entfernt werden, indem eine Analyse der Datenströme durchgeführt wird.
  • Ein Vorteil von Datenstromanwendungen besteht darin, dass ein Benutzer mit ihrer Hilfe den Prozessfluss von Daten durch die Anwendung granular steuern kann. Der Benutzer kann mit anderen Worten spezifische Operatoren für jedes VE bestimmen, die verschiedene Operationen in Bezug auf die eingehenden Daten durchführen, und er kann die Datenstromanwendung dynamisch ändern, indem die Operatoren und die Reihenfolge, in der sie durchgeführt werden, geändert werden.
  • Für das Erstellen einer Datenstromanwendung muss jedes VE einem Host (d. h. Rechenknoten) zugewiesen werden. In Datenstromanwendungen mit Hunderten oder Tausenden von Verarbeitungselementen kann jedoch die Wahl der Verarbeitungselemente, die zuerst zugewiesen werden, darüber entscheiden, ob alle VE in der Datenstromanwendung erfolgreich zugewiesen werden. Die Datenstromanwendung kann daher VE-Auswahlkriterien anwenden, um auszuwählen, welches VE unter den nicht zugewiesenen VE als nächstes zugewiesen wird. Die Datenstromanwendung kann zum Beispiel zuerst die VE zuweisen, die Bedingungen in Bezug auf den Speicherort aufweisen, welche beispielsweise festlegen, dass das VE das einzige VE sein darf, das einem Host zugewiesen wird. Wenn diese VE zuerst zugewiesen werden, kann die Wahrscheinlichkeit steigen, dass alle VE einem Host zugewiesen werden.
  • Die Bedingungen, die festlegen, wo ein VE zugewiesen werden kann, können den verschiedenen Elementen einer Datenstromanwendung – z. B. VE, Operatoren, Hostpools, Aufträge und Hosts – zugeordnet werden. Diese Zuweisung bestimmt auch die Laufzeiteigenschaften der Datenstromanwendung – z. B. Leistung, Verfügbarkeit usw. Bedingungen können zum Beispiel steuern, ob das VE auf einem Host platziert werden kann, der auch andere VE ausführt, oder ob zwei VE auf dem gleichen Host platziert werden müssen. Die erste Bedingung kann die Verfügbarkeit der Datenstromanwendung verbessern, während die zweite Bedingung deren Leistung erhöhen kann.
  • Die Bedingungen können jedoch von mehreren Hosts erfüllt werden. Nachdem die Bedingungen zum Beispiel ausgewertet wurden, können Host A und B die mit dem Zuweisen von VE1 verbundenen Bedingungen erfüllen. In dieser Situation kann die Datenstromanwendung auf der Grundlage von Host-Auswahlkriterien einen der ansonsten geeigneten Hosts auswählen. Bei den Kriterien kann es sich um den Host handeln, der die wenigsten von aktuell auf ihm ausgeführten Prozesse aufweist, oder um den Host mit der größten zur Verfügung stehenden Verarbeitungsleistung.
  • Die VE-Auswahlkriterien oder die Host-Auswahlkriterien (oder beide) können einem bestimmten Optimierungsmodus zugeordnet sein. Der Optimierungsmodus kann ein gewünschtes Ergebnis der Datenstromanwendung definieren und unterschiedliche Grade von Auflösbarkeit, Kosten, Leistung, Cluster-Konfiguration und Ähnliches darstellen. Um das oben genannte Beispiel weiterzuführen: obgleich sowohl Host A als auch B alle Bedingungen erfüllen, kann die Auswahl desjenigen Host, der VE1 zugewiesen wird, Folgen für das Zuweisen nachfolgender VE haben. Es wird zum Beispiel angenommen, dass VE1 Host A zugewiesen wird, wobei die Datenstromanwendung später jedoch feststellt, dass eine Bedingung in Verbindung mit VE2 verlangt, dass dieses Host A zugewiesen wird, ohne dass Host A andere VE ausführt. Die Datenstromanwendung würde nicht alle Kriterien erfüllen, und die Zuweisung der VE zu den Hosts kann fehlschlagen. Wenn der Optimierungsmodus der Datenstromanwendung jedoch gewechselt würde, um der Auflösbarkeit den Vorzug zu geben (d. h. der Wahrscheinlichkeit, dass die Datenstromanwendung jedes VE einem Host zuweist), dann kann das VE-Auswahlkriterium, das diesem Optimierungsmodus zugeordnet ist, entscheiden, VE mit Speicherortbedingungen (d. h. VE2) vor VE zuzuweisen, die diese nicht aufweisen (d. h. VE1).
  • Die Datenstromanwendung kann darüber hinaus Optimierungsmodi wechseln, wenn nicht alle VE den Hosts zugewiesen werden können – z. B. die Bedingungen werden nicht erfüllt oder ein Zeitlimit wird überschritten. In dieser Situation kann die Datenstromanwendung in einen anderen Optimierungsmodus umschalten, was die VE- oder Host-Auswahlkriterien ändern kann. Die Datenstromanwendung kann zum Beispiel von einem Optimierungsmodus, der nur Leistungskriterien berücksichtigt, zu einem Modus wechseln, der Kriterien enthält, welche ein Gleichgewicht zwischen Leistung und Auflösbarkeit herstellen.
  • Im Folgenden wird Bezug auf Ausführungsformen der Erfindung genommen. Es versteht sich jedoch, dass die Erfindung nicht auf bestimmte beschriebene Ausführungsformen beschränkt ist. Stattdessen ist eine beliebige Kombination der folgenden Merkmale und Elemente unabhängig davon, ob sie mit unterschiedlichen Ausführungsformen im Zusammenhang steht, denkbar, um die Erfindung auszuführen und in die Praxis umzusetzen. Eine bestimmte Ausführungsform schränkt die Erfindung unabhängig davon nicht ein, ob ein bestimmter Vorteil durch eine bestimmte Ausführungsform erzielt wird, obwohl Ausführungsformen der Erfindung Vorteile gegenüber anderen möglichen Lösungen und/oder gegenüber dem Stand der Technik erzielen können. Daher sind die folgenden Aspekte, Merkmale, Ausführungsformen und Vorteile lediglich veranschaulichend und sind nicht als Elemente oder Einschränkungen der beigefügten Ansprüche gedacht, ausgenommen in Fällen, in denen dies in einem Anspruch bzw. in Ansprüchen ausdrücklich angegeben ist. Ebenso ist der Bezug auf ”die Erfindung” nicht als Verallgemeinerung eines hierin offenbarten Erfindungsgegenstands auszulegen und nicht als Element oder Einschränkung der beigefügten Ansprüche anzusehen, ausgenommen in Fällen, in denen dies in einem Anspruch bzw. in Ansprüchen ausdrücklich angegeben ist.
  • Für den Fachmann ist ersichtlich, dass Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt ausgeführt werden können. Aspekte der vorliegenden Erfindung können daher die Form einer kompletten Hardware-Ausführung, einer kompletten Software-Ausführung (darunter Firmware, residente Software, Mikrocode usw.) oder eine Ausführungsform haben, bei der Hardware- und Software-Aspekte kombiniert sind, die allgemein hierin als ”Schaltung”, ”Modul” oder ”System” bezeichnet werden können. Aspekte der vorliegenden Erfindung können des Weiteren die Form eines Computerprogrammprodukts haben, das in einem oder mehreren computerlesbaren Medien ausgeführt ist, die über einen darin enthaltenen computerlesbaren Programmcode verfügen.
  • Es können beliebige Kombinationen von einem oder mehreren computerlesbaren Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich zum Beispiel um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine solche Vorrichtung oder Einheit oder eine geeignete Kombination davon handeln, ohne darauf beschränkt zu sein. Zu genauen Beispielen (einer nicht vollständigen Liste) für das computerlesbare Speichermedium gehören wie folgt: eine elektrische Verbindung mit einer oder mehreren Leitungen, ein tragbarer Computer-Diskettenspeicher, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disc-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine geeignete Kombination davon. Im Zusammenhang mit diesem Dokument kann es sich bei einem computerlesbaren Speichermedium um ein beliebiges physisches Medium handeln, das ein Programm enthalten oder speichern kann, welches von oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen verwendet wird.
  • Ein computerlesbares Signalmedium kann ein sich ausbreitendes Datensignal mit darin enthaltenem computerlesbarem Programmcode beinhalten, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein solches sich ausbreitendes Signal kann eine Vielfalt von Formen haben, darunter elektromagnetische, optische Formen oder eine geeignete Kombination davon, ohne darauf beschränkt zu sein. Bei einem computerlesbaren Signalmedium kann es sich um ein beliebiges computerlesbares Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen übertragen, weitergegeben oder transportieren kann.
  • In einem computerlesbaren Medium enthaltener Programmcode kann unter Verwendung eines geeigneten Mediums übermittelt werden, das drahtlos, drahtgebunden, ein Lichtwellenleiterkabel, HF usw. oder eine geeignete Kombination davon sein kann, ohne darauf beschränkt zu sein.
  • Computerprogrammcode zum Ausführen von Operationen in Verbindung mit Aspekten der vorliegenden Erfindung kann in einer beliebigen Kombination von einer oder mehreren Programmiersprachen geschrieben werden, zu denen eine objektorientierte Programmiersprache wie beispielsweise Java®, Smalltalk, C++ oder ähnliche sowie herkömmliche prozedurale Programmiersprachen wie beispielsweise die Programmiersprache ”C” oder ähnliche Programmiersprachen gehören. Der Programmcode kann ganz auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder ganz auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Im letztgenannten Szenario kann der entfernt angeordnete Computer über ein beliebiges Netzwerk mit dem Computer des Benutzers verbunden sein, zum Beispiel über ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder es kann die Verbindung zu einem externen Computer hergestellt werden (beispielsweise über das Internet durch einen Internetdienstanbieter). Java und alle auf Java beruhende Warenzeichen und Logos sind Warenzeichen oder eingetragene Warenzeichen von Oracle und/oder seinen Tochterunternehmen.
  • Nachstehend werden Aspekte der vorliegenden Erfindung unter Bezugnahme auf Ablaufplandarstellungen und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufplandarstellungen und/oder der Blockschaltbilder sowie Kombinationen von Blöcken in den Ablaufplandarstellungen und/oder in den Blockschaltbildern durch Computerprogrammanweisungen umgesetzt werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Universalrechners, Spezialrechners oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu bilden, so dass die Anweisungen, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel erzeugen, um die in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaltbilds festgelegten Funktionen/Maßnahmen umzusetzen.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten steuern kann, um auf eine bestimmte Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsartikel einschließlich der Anweisungen erzeugen, die die in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaltbilds festgelegte Funktion/Maßnahme umsetzen.
  • Die Computerprogrammanweisungen können ferner in einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Reihe von Funktionsschritten auszulösen, die auf dem Computer, in der anderen programmierbaren Vorrichtung oder den anderen Einheiten durchgeführt werden, um einen computerimplementierten Prozess zu erzeugen, so dass die Anweisungen, die auf dem Computer oder in der anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse bereitstellen, um die in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaltbilds festgelegten Funktionen/Maßnahmen umzusetzen.
  • Ausführungsformen der Erfindung können Endbenutzern über eine Cloud-Datenverarbeitungsinfrastruktur bereitgestellt werden. Der Begriff Cloud-Datenverarbeitung (cloud computing) bezeichnet allgemein die Bereitstellung skalierbarer Datenverarbeitungsressourcen als Dienst über ein Netzwerk. Genauer ausgedrückt kann Cloud-Computing als Datenverarbeitungsfähigkeit definiert werden, die eine Abstraktion zwischen der Datenverarbeitungsressource und der ihr zugrunde liegenden technischen Architektur (z. B. Server, Speicher, Netzwerke) bereitstellt, die einen benutzerfreundlichen, bedarfsorientierten Netzwerkzugriff auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen ermöglicht, die mit minimalem Verwaltungsaufwand oder Interaktion mit dem Dienstanbieter schnell bereitgestellt und freigegeben werden können. Daher ermöglicht das Cloud-Computing einem Benutzer unabhängig von den zugrunde liegenden physischen Systemen (oder den Standorten dieser Systeme), die zur Bereitstellung der Datenverarbeitungsressourcen verwendet werden, auf virtuelle Datenverarbeitungsressourcen (z. B. Speicher, Daten, Anwendungen und selbst vollständige virtualisierte Datenverarbeitungssysteme) in der ”Cloud” zuzugreifen.
  • In der Regel werden Cloud-Computing-Ressourcen einem Benutzer auf der Grundlage der Kosten pro Nutzung (pay-per-use) bereitgestellt, bei der Benutzer nur Kosten für die tatsächlich genutzten Datenverarbeitungsressourcen (z. B. eine Größe des von einem Benutzer verwendeten Speicherplatzes oder eine Anzahl virtualisierter Systeme, die der Benutzer instanziiert hat) in Rechnung gestellt werden. Ein Benutzer kann über das Internet jederzeit und von überall auf beliebige der Ressourcen zugreifen, die sich in der Cloud befinden. Im Zusammenhang mit der vorliegenden Erfindung kann ein Benutzer auf Anwendungen und zugehörige Daten zugreifen, die in der Cloud zur Verfügung stehen. Bei den Rechenknoten oder Hosts zum Beispiel, die zum Erstellen einer Datenstromanwendung verwendet werden, kann es sich um virtuelle oder physische Maschinen handeln, die von einem Cloud-Dienstanbieter bereitgehalten werden. Dies ermöglicht einem Benutzer, von einem beliebigen Datenverarbeitungssystem, das an ein mit der Cloud verbundenes Netzwerk (z. B. das Internet) angeschlossen ist, Daten an die Datenstromanwendung zu senden.
  • Die 1A bis 1B veranschaulichen eine Datenverarbeitungsinfrastruktur, die so konfiguriert ist, dass sie eine Datenstromanwendung gemäß einer Ausführungsform der Erfindung ausführt. Wie dargestellt, beinhaltet die Datenverarbeitungsinfrastruktur 100 ein Verwaltungssystem 105 und eine Vielzahl von Hosts 130 1 bis 4 – d. h. Rechenknoten –, die unter Verwendung einer oder mehrerer Datenübertragungseinheiten 120 miteinander verbunden sind. Bei den Datenübertragungseinheiten 120 kann es sich um einen Server, ein Netzwerk oder eine Datenbank handeln, die ein bestimmtes Datenübertragungsprotokoll verwenden können, um Daten zwischen den Hosts 130 1 bis 4 zu übertragen. Obgleich dies nicht dargestellt ist, können die Hosts 130 1 bis 4 interne Datenübertragungseinheiten zum Übertragen von Daten zwischen VE aufweisen, die sich auf demselben Host 130 befinden. Das Verwaltungssystem 105 beinhaltet ferner einen Operatorgraphen 132 und ein Steuerprogramm (scheduler) 134 (d. h. einen Datenstrommanager). Wie nachfolgend ausführlicher beschrieben, stellt der Operatorgraph 132 eine Datenstromanwendung dar, die bei einem oder mehreren Quellenoperatoren beginnt und bis zu einem oder mehreren Senkenoperatoren reicht. Dieser Strom von der Quelle zur Senke wird hierin allgemein als Ausführungspfad bezeichnet. In der Regel empfangen Verarbeitungselemente ein n-Tupel von Datenattributen aus dem Datenstrom und geben ein n-Tupel von Datenattributen an den Datenstrom aus (ausgenommen bei einem Senkenoperator, bei dem der Datenstrom endet, oder einem Quellenoperator, bei dem der Datenstrom beginnt). Selbstverständlich muss das von einem Verarbeitungselement empfangene n-Tupel nicht dasselbe n-Tupel sein, das an ein nachgeordnetes Element gesendet wird. Darüber hinaus können die Verarbeitungselemente so konfiguriert sein, dass sie Daten in anderen Formaten als Tupel empfangen oder ausgeben (z. B. könnten die Verarbeitungselemente Daten austauschen, die als XML-Dokumente gekennzeichnet sind). Des Weiteren kann jedes Verarbeitungselement so konfiguriert sein, dass es an dem empfangenen Tupel eine beliebige Form von Datenverarbeitungsfunktionen ausführt, darunter zum Beispiel das Schreiben in Datenbanktabellen oder das Durchführen anderer Datenbankoperationen wie beispielsweise Datenverknüpfungen, Datenaufteilungen, Lesevorgänge usw. sowie das Durchführen anderer Datenanalysefunktionen oder Operationen.
  • Das Steuerprogramm 134 kann so konfiguriert sein, dass es eine Datenstromanwendung überwacht, die auf den Hosts 130 1 bis 4 ausgeführt wird, und dass es die Bereitstellung des Operatorgraphen 132 ändert. Das Steuerprogramm 134 kann zum Beispiel die VE von einem Host 130 zu einem anderen verschieben, um die Verarbeitungslasten der Hosts 130 1 bis 4 in der Datenverarbeitungsinfrastruktur 100 zu verwalten.
  • 1B veranschaulicht einen beispielhaften Operatorgraphen 132, der zehn (mit VE1 bis VE10 gekennzeichnete) Verarbeitungselemente aufweist, die auf den Hosts 130 1 bis 4 ausgeführt werden. Ein Verarbeitungselement ist aus einem oder mehreren Operatoren zusammengesetzt, die zu einem eigenständig ausgeführten Prozess mit einer eigenen Prozesskennung (process ID, PID) und einem eigenen Speicherbereich zusammengefügt wurden. In Fällen, in denen zwei (oder mehrere) Verarbeitungselemente eigenständig ausgeführt werden, kann eine Datenübertragung zwischen Knoten unter Verwendung eines Netzwerk-Socket (z. B. ein TCP/IP-Socket) auftreten. Wenn Operatoren jedoch zusammengefügt werden, können die zusammengefügten Operatoren schnellere Datenübertragungsprotokolle zwischen Knoten wie beispielsweise gemeinsame Speicher verwenden, um Tupel zwischen den verbundenen Operatoren in den zusammengefügten Verarbeitungselementen weiterzugeben.
  • Wie gezeigt, beginnt der Operatorgraph 132 bei einer Quelle 135 (die in das mit VE1 gekennzeichnete Verarbeitungselement gelangt) und endet bei der Senke 140 1 bis 2 (die von den mit VE6 und VE10 gekennzeichneten Verarbeitungselementen kommt). Der Host 130 1 enthält die Verarbeitungselemente VE1, VE2 und VE3. Die Quelle 135 gelangt in das Verarbeitungselement VE1, das wiederum Tupel ausgibt, die von VE2 und VE3 empfangen werden. VE1 kann zum Beispiel in einem Tupel empfangene Datenattribute aufteilen und einige Datenattribute an VE2 weitergeben, während andere Datenattribute an VE3 weitergegeben werden. Daten, die zu VE2 gelangen, werden von den in VE2 enthaltenen Operatoren verarbeitet, und die entstandenen Tupel werden anschließend an VE4 in dem Host 130 2 ausgegeben. Desgleichen gelangen die Datentupel, die von VE4 ausgegeben wurden, zu der Senke VE6 140 1. Ebenso erreichen Datentupel, die von VE3 zu VE5 gelangen, auch die Senke VE6 140 1. VE6 könnte daher außer, dass es als Senke für diesen beispielhaften Operatorgraphen 132 dient, so konfiguriert werden, dass es eine Verbindungsoperation durchführt, bei der von VE4 und VE5 empfangene Tupel kombiniert werden. Dieser beispielhafte Operatorgraph 132 zeigt außerdem Datentupel, die von VE3 zu VE7 an dem Host 130 3 gelangen, der seinerseits Datentupel zeigt, die zu VE8 und zurück zu VE7 gelangen. Von VE8 ausgegebene Datentupel gelangen zu VE9 an dem Host 130 4, der wiederum Tupel ausgibt, die von der Senke VE10 140 2 verarbeitet werden sollen.
  • Obgleich Ausführungsformen der vorliegenden Erfindung im Zusammenhang einer Datenstromanwendung beschrieben werden, stellt dies darüber hinaus nicht den einzigen Zusammenhang dar, der für die vorliegende Offenbarung von Bedeutung ist. Eine solche Beschreibung weist stattdessen keine Beschränkungen auf und dient lediglich zur Veranschaulichung. Ein Fachmann wird selbstverständlich erkennen, dass Ausführungsformen der vorliegenden Erfindung so konfiguriert werden können, dass sie mit einem beliebigen Computersystem oder einer beliebigen Anwendung arbeiten, das/die in der Lage ist, die hierin beschriebenen Funktionen durchzuführen. Ausführungsformen der Erfindung können zum Beispiel so konfiguriert werden, dass sie in einer Cluster-Umgebung mit einer herkömmlichen Datenbankverarbeitungsanwendung arbeiten.
  • 2 ist eine genauere Ansicht eines Host 130 der 1A bis 1B gemäß einer Ausführungsform der Erfindung. Wie gezeigt, beinhaltet der Host 130 mindestens eine CPU 205, einen Datenübertragungsadapter 215, eine Verbindung 220, einen Speicher 225 und einen Speicher 230, ohne darauf beschränkt zu sein. Der Host 130 kann außerdem eine E/A-Einheitenschnittstelle 210 enthalten, die zum Anschluss von E/A-Einheiten 212 (z. B. Tastatur-, Anzeige- und Mauseinheiten) an den Host 130 verwendet wird.
  • Jede CPU 205 ruft in dem Speicher 225 gespeicherte Programmieranweisungen ab und führt diese aus. Ebenso ruft die CPU 205 in dem Speicher 225 befindliche Anwendungsdaten ab und speichert diese. Die Verbindung 220 wird verwendet, um Progammieranweisungen und Anwendungsdaten zwischen jeder CPU 205, der E/A-Einheitenschnittstelle 210, dem Speicher 230, dem Datenübertragungsadapter 215 und dem Speicher 225 zu übertragen. Die CPU 205 steht stellvertretend für eine einzelne CPU, mehrere CPUs, eine einzelne CPU mit mehreren Verarbeitungskernen und Ähnlichem. Der Speicher 225 steht allgemein stellvertretend für einen Direktzugriffsspeicher (z. B. DRAM oder Flash). Der Speicher 230 wie zum Beispiel ein Festplattenlaufwerk, eine Halbleitereinheit (SSD) oder ein Flash-Speicherlaufwerk können nichtflüchtige Daten speichern. Der Datenübertragungsadapter 215 (z. B. ein Netzwerkadapter oder eine Abfrage-Engine) ermöglicht die Datenübertragung mit einer oder mehreren Datenübertragungseinheiten 120, die ein bestimmtes Datenübertragungsprotokoll wie beispielsweise TCP/IP-, RDMA-Protokolle, ein Protokoll für ein gemeinsam genutztes Dateisystem und Ähnliches verwenden.
  • Bei diesem Beispiel enthält der Speicher 225 mehrere Verarbeitungselemente 235. Jedes VE 235 enthält eine Sammlung von zusammengefügten Operatoren 240. Wie oben erwähnt, kann jeder Operator 240 einen kleinen Block mit ausführbarem Code bereitstellen, der so konfiguriert ist, dass er Prozessdaten, die in ein Verarbeitungselement (z. B. VE 235) gelangen, verarbeitet und Daten an andere Operatoren 240 in diesem VE 235 oder an andere Verarbeitungselemente in der Datenstromanwendung ausgibt. Die VE 235 können demselben Host 130 zugewiesen werden oder sich auf anderen Hosts 130 befinden und über die Datenübertragungseinheiten 120 Daten austauschen. Bei einer Ausführungsform kann ein VE 235 nur einem Host 130 zugewiesen werden.
  • Ein VE 235 kann außerdem Bedingungen 255 enthalten, die zumindest teilweise regeln, wie das Steuerprogramm 134 einen ”Kandidaten-Host” für ein VE 235 ermittelt – d. h. einen Host 130, der die notwendigen Bedingungen 255 erfüllt, um diesem bestimmten Host 130 ein VE zuzuweisen. Eine Bedingung 255 zum Beispiel, die einem VE 235 oder Operator 240 zugeordnet ist, kann ”Isolation” aufweisen, dabei wird festgelegt, dass der zugeordnete Operator 240 einen Host 130 nicht mit einem beliebigen anderen VE 235 gemeinsam nutzen kann, ”Zusammenlegung”, dabei wird festgelegt, dass mehrere VE 235 in einer Gruppe auf demselben Host 130 ausgeführt werden müssen, ”Auseinanderlegung”, dabei wird festgelegt, dass mehrere VE 235 in einer Gruppe nicht auf demselben Host 130 ausgeführt werden können, ”expliziter Host”, dabei wird festgelegt, dass sich ein VE 235 auf einem spezifischen Host 130 (z. B. dem Host 130 1) befinden muss, ”nicht verschiebbar”, dabei wird festgelegt, dass ein VE 235 nicht verschoben werden kann, nachdem es einem Host 130 zugewiesen wurde, ”aufheben”, dabei wird festgelegt, welcher Host 130 welchem VE 235 zugewiesen werden muss, und wonach vorherige Bedingungen aufgehoben werden, ”indexieren des Hostpools”, dabei wird der Host 130 festgelegt, der das VE 235 auf der Grundlage eines Indexwerts des Hostpools ausführt, und Ähnliches. Weitere Bedingungen 255 können anstatt dem VE 235 oder Operator 240 dem Host 130 zugeordnet werden, wie beispielsweise ”überlasteter Host”, dabei wird eine Höchstzahl von VE 235 festgelegt, die dem Host 130 zugewiesen werden kann, oder ”Planungszustand”, dabei wird festgelegt, ob sich der Host 130 in einem Zustand befindet, der das Unterbringen eines neuen VE 235 unterstützt. Die Bedingungen 255 sind jedoch nicht auf die oben beschriebenen Elemente beschränkt, sondern können anderen Elementen der Datenstromanwendung zugeordnet werden, die von dem Steuerprogramm 134 bei dem Zuweisen von VE 235 zu den Hosts 130 berücksichtigt werden.
  • Die oben aufgeführten beispielhaften Bedingungen 255 sollen darüber hinaus keine vollständige Liste aller möglichen Bedingungen 255 darstellen. Ein Fachmann wird stattdessen erkennen, dass die hierin offenbarten Ausführungsformen mit vielen verschiedenen Techniken verwendet werden können, die spezifizieren, welcher Host 130 einem bestimmten VE 235 oder Operator 240 zugewiesen werden soll. 3 ist eine genauere Ansicht des Verwaltungssystems 105 von 1 gemäß einer Ausführungsform der Erfindung. Wie gezeigt, beinhaltet das Verwaltungssystem 105 mindestens eine CPU 305, einen Datenübertragungsadapter 315, eine Verbindung 320, einen Speicher 325 und einen Speicher 330, ohne darauf beschränkt zu sein. Das Client-System 130 kann außerdem eine E/A-Einheitenschnittstelle 310 enthalten, die E/A-Einheiten 312 (z. B. Tastatur-, Anzeige- und Mauseinheiten) mit dem Verwaltungssystem 105 verbindet.
  • Wie die CPU 205 von 2 ist die CPU 305 so konfiguriert, dass sie im Speicher 325 und Speicher 330 gespeicherte Programmieranweisungen abruft und ausführt. Ebenso ist die CPU 305 so konfiguriert, dass sie in dem Speicher 325 und Speicher 330 befindliche Anwendungsdaten speichert und abruft. Die Verbindung 320 ist so konfiguriert, dass sie Daten wie beispielsweise Progammieranweisungen und Anwendungsdaten zwischen der CPU 305, der E/A-Einheitenschnittstelle 310, der Speichereinheit 330, den Datenübertragungsadaptern 315 und dem Speicher 325 bewegt. Wie die CPU 205 ist die CPU 305 stellvertretend für eine einzelne CPU, mehrere CPUs, eine einzelne CPU mit mehreren Verarbeitungskernen und Ähnlichem enthalten. Der Speicher 325 ist allgemein stellvertretend für einen Direktzugriffsspeicher enthalten. Der Datenübertragungsadapter 315 ist so konfiguriert, dass er unter Verwendung einer beliebigen Anzahl von Datenübertragungsprotokollen Daten über die Datenübertragungseinheiten 120 an die Hosts 130 überträgt. Dabei kann es sich um dasselbe oder unterschiedliche Datenübertragungsprotokolle handeln, die von den VE 235 zum Übertragen von Daten verwendet werden. Obwohl der Speicher 330 als eine einzelne Einheit dargestellt ist, kann es sich bei dem Speicher um eine Kombination aus festen und/oder auswechselbaren Speichereinheiten wie beispielsweise Festplattenlaufwerke, auswechselbare Speicherkarten, optischem Speicher, Halbleitereinheit oder Flash-Speichereinheiten, netzgebundenem Speicher (network attached storage, NAS) oder Verbindungen zu Speichernetzwerkeinheiten (storage area-network, SAN) handeln. Der Speicher enthält einen primären Operatorgraphen 335. Der primäre Operatorgraph 335 definiert ähnlich wie der in 1B dargestellte Graph die Anordnung der Verarbeitungselemente sowie die Verwendung des Ausführungspfads durch das Verarbeitungselement 235, um mit einem nachgeordneten Verarbeitungselement 235 Daten auszutauschen.
  • Der Speicher 325 kann ein Steuerprogramm 134 beinhalten, das einen oder mehrere Hostpools 327 und Optimierungsmodi 350 verwaltet. Ein Hostpool 327 kann einem bestimmten VE 235, Operator 240 oder allgemeiner einem Auftrag zugeordnet sein. Ein Anwendungsentwickler kann zum Beispiel einen Hostpool 327 für jeden Auftrag zuweisen, wodurch jedes VE 235 in diesem Auftrag dem Hostpool 327 zugeordnet wird. Alternativ kann der Entwickler oder das Steuerprogramm 134 jedes VE 235 oder jeden Operator 240 einem Hostpool 327 individuell zuweisen. Bei einer Ausführungsform kann das VE 235 einem oder mehreren Hostpools 327 zugeordnet werden, jeder Operator 240 in dem VE 235 kann jedoch nur einem Hostpool 327 zugewiesen werden. Der Hostpool 327 kann außerdem eine festgelegte Größe aufweisen, die bestimmt, wie viele Hosts 130 ”angehängt” oder dem Hostpool zugewiesen werden. Das Steuerprogramm 134 wird dadurch abgehalten, einem Hostpool 327 zum Nachteil anderer Aufträge, die eventuell dieselbe Computerinfrastruktur 100 gemeinsam nutzen, zu viele Hosts 130 anzuhängen. Bei einer Ausführungsform kann ein Hostpool 327 des Weiteren ähnlich wie ein Bereich (array) indexiert werden. Der Host 130 1 und der Host 130 2 sind zum Beispiel an den Hostpool_A angehängt, Hostpool_A[0] kann auf den Host 130 1 verweisen, während Hostpool_A[1] auf den Host 130 2 verweist. Die Hosts 130 1 bis 2 können an einen bestimmten Indexwert angehängt werden und zwar auf der Grundlage der Reihenfolge, in der die Hosts 130 1 bis 2 an den Hostpool 327 angehängt wurden, oder durch einen Entwickler oder ein Compilerprogramm, die angeben, dass sich ein bestimmter Host eines VE an einem bestimmten Indexwert befinden sollte – d. h. die Bedingung 255 ”Indexieren des Hostpools”.
  • Den Hostpools 327 können noch weitere Bedingungen 255 zugeordnet werden, beispielsweise ”maximale Größe”, dabei wird die Anzahl von Hosts 130 beschränkt, die dem Hostpool 327 zugewiesen werden können, ”gekennzeichnete Anforderungen”, die im Zusammenhang mit den 4A bis 4B besprochen werden, ”exklusiver Hostpool”, dabei wird festgelegt, dass die Hosts 130 in dem Hostpool 327 nicht von anderen VE 235 in anderen Aufträgen verwendet werden können, und Ähnliches.
  • Ein Optimierungsmodus 350 kann VE-Auswahlkriterien 352 und/oder Host-Auswahlkriterien 354 enthalten. Das Steuerprogramm 134 kann des Weiteren mehrere Optimierungsmodi 350 aufweisen. Der Optimierungsmodus 350 verwendet die VE- und Host-Auswahlkriterien 352, 354 allgemein, um die Datenstromanwendung in Übereinstimmung mit einem gewünschten Ziel wie Leistung, Auflösbarkeit, Betriebskosten, Wartungskosten, gemeinsame Nutzung von Hosts mit anderen Anwendungen oder einer Kombination dieser (oder anderer) Ziele zu optimieren. Ein Benutzer oder Entwickler einer Datenstromanwendung will zum Beispiel den Datenstrom so optimieren, dass VE 235 Hosts 130 zugewiesen werden, um ein Gleichgewicht zwischen der Leistung der Datenstromanwendung und einer gemeinsamen Nutzung der Hosts 130 mit anderen Anwendungen herzustellen – d. h. Datenverarbeitungsressourcen übrig zu lassen, so dass andere Anwendungen diese verwenden können. Bei diesem bestimmten Optimierungsmodus 350 können die Host-Auswahlkriterien ein Auswählen des Host 130 mit der größten verfügbaren Verarbeitungsleistung (d. h. Ausrichtung auf Leistung) und ein Auswählen des Host 130 mit der größten Anzahl von aktuell ausgeführten Prozessen (d. h. andere Rechenknoten stehen für andere Anwendungen zur Verfügung) beinhalten.
  • Wie hierin verwendet, unterscheiden sich ”Kriterien” von Bedingungen 255. Wenn ein Host 130 eine Bedingung 255 nicht erfüllt, kann ihm das VE nicht zugewiesen werden. Das Steuerprogramm 134 kann jedoch Auswahlkriterien 352, 354 verwenden, um zwischen mehreren Hosts zu wählen, die die Bedingungen 255 erfüllen. Das Steuerprogramm 134 kann zum Beispiel Kriterien wie ein Auswählen des Host 130 mit der größten zur Verfügung stehen Verarbeitungsleistung verwenden, um diesen an den Hostpool 327 anzuhängen, wenn mehrere Hosts 130 vorhanden sind, die die Bedingungen 255 erfüllen – d. h. wenn es mehrere Kandidaten-Hosts gibt.
  • Unterschiedliche Optimierungsmodi können erzielt werden, indem die Auswahlkriterien 352, 254 geändert, hinzugefügt, neu geordnet oder entfernt werden. Ein Optimierungsmodus 350 zum Beispiel mit Ausrichtung auf Leistung kann ein VE-Auswahlkriterium 352 aufweisen, bei dem das VE mit der höchsten geschätzten Ressourcenanforderung ausgewählt wird. Ein anderer Optimierungsmodus 350 kann jedoch andere VE-Auswahlkriterien 352 enthalten, beispielsweise ein Auswählen des VE mit den strengsten Ortsbedingen 255 (z. B. zusammenlegen, auseinandergelegt usw.). Dieser Optimierungsmodus 350 würde mehr auf Auflösbarkeit ausgerichtet sein – d. h. die Wahrscheinlichkeit, dass das Steuerprogramm 134 jedes VE 235 einem Host 130 zuweisen kann. Die durch einen Optimierungsmodus 350 verkörperte Ausrichtung oder Vorliebe wird durch die Eigenschaften der Kriterien 352, 354 definiert, die dem Modus 350 zugeordnet sind. Nachstehend werden mit Bezug auf 8 unterschiedliche Kriterien 352, 354 und die Art und Weise beschrieben, wie Kriterien kombiniert werden können, um verschiedene Optimierungsmodi 350 zu erhalten.
  • Die 4A bis 4B veranschaulichen Tabellen, die die Zuweisung von Hosts zu Hostpools gemäß Ausführungsformen der Erfindung genau aufführen. Insbesondere 4A veranschaulicht Tabellen, die Kandidaten-Hosts für einen Hostpool 327 identifizieren. Tabelle 405 führt Hosts 130 (Hosts A bis F) auf, die für eine Datenstromanwendung zur Verfügung stehen. Jedem der Hosts 130 ist ein charakteristisches Kennzeichen (tag) zugewiesen. Jedes Kennzeichen stellt eine Eigenschaft des Host 130 dar, beispielsweise ob der Host 130 einen großen Speicher, mehrere Prozessorkerne aufweist, ob er mit einem Hochgeschwindigkeits-Datenübertragungsprotokoll kompatibel ist, kürzlich aktualisiert wurde, ob es sich um einen bestimmten Prozessortyp, ein bestimmtes Betriebssystem handelt und Ähnliches. Das Kennzeichen kann darüber hinaus eine oder mehrere Eigenschaften abstrahieren, indem es ein einfaches Code-Wort oder eine Zahl verwendet. Rot kann zum Beispiel auf einen Host 130 mit großem Speicher verweisen, während grün ein Host 130 ist, der vor kurzem aktualisiert wurde und einen bestimmten Prozessortyp aufweist. Ein Host 130 kann ferner mehrere Kennzeichen aufweisen, wenn er über mehr als eine der gekennzeichneten Eigenschaften verfügt. Host C und D zum Beispiel verfügen beide über zwei Kennzeichen. Einem Host 130 kann außerdem kein Kennzeichen zugewiesen werden oder es kann ihm ein vorgegebenes Kennzeichen zugeordnet werden, wenn er keine der gekennzeichneten Eigenschaften aufweist.
  • Tabelle 410 führt drei Hostpools 327 (Hostpools 1 bis 3) auf, die eine festgelegte Größe und ein Kennzeichen aufweisen. Die Größe gibt die maximale Anzahl von Hosts 130 an, die an den Hostpool 327 angehängt werden können. Bei einer Ausführungsform kann das Kennzeichen verwendet werden, um Hosts 130 zu identifizieren, die für die Aufnahme in den Hostpool 327 in Frage kommen. Ein Entwickler kann zum Beispiel festlegen, dass ein VE 235 von einem Host 130 mit großem Speicher ausgeführt werden muss – d. h. das VE 235 muss einem Host 130 mit einer bestimmten Eigenschaft zugewiesen werden. Dementsprechend kann der Entwickler oder das Steuerprogramm 134 das VE 235 einem Hostpool 327 zuweisen, der das Kennzeichen aufweist, das der Eigenschaft mit großem Speicher entspricht. Beim Ermitteln von Kandidaten-Hosts für das VE 235 kann das Steuerprogramm 134 das Kennzeichen des Hostpools 327 in Tabelle 410 mit dem Kennzeichen des Host 130 in Tabelle 405 abgleichen.
  • In Tabelle 415 werden die möglichen Hosts 130 aufgeführt, die mit jedem Hostpool 327 abgeglichen werden können, indem die Kennzeichenbedingung abgeglichen wird. Die Hosts A, B oder C können an Hostpool 1 angehängt werden, die Hosts C, E oder F können an Hostpool 2 angehängt werden, und Host D kann an Hostpool 3 angehängt werden.
  • 4B zeigt Tabellen, die die Probleme veranschaulichen, die beim Zuweisen von VE mit Bedingungen zu Hosts auftreten. In Tabelle 420 werden in Frage kommende Hosts 130 an einen Hostpool 327 angehängt. In diesem Fall wird ein Host 130 auf der Grundlage von mindestens zwei Bedingungen 255 angehängt, die dem Hostpool 327 zugeordnet sind: ob es ein übereinstimmendes Kennzeichen gibt und ob die Größe des Hostpools 327 erfüllt wird.
  • Da es mehrere Hosts 130 gibt, die die Bedingungen 255 erfüllen können, können Kriterien verwendet werden, um zwischen zwei Hosts auszuwählen. Aus Gründen der Einfachheit handelt es sich bei dem in Tabelle 420 verwendeten Kriterium zum Auswählen zwischen mehreren Hosts 130 um die alphabetische Anordnung der Host-Bezeichnungen. Auf diese Weise werden die Hosts A und B an Hostpool 1 angehängt, die Hosts C, D und E an Hostpool 2, und Host D wird an Hostpool 3 angehängt. Es ist zu beachten, dass ein Host 130 an mehrere Hostpools 327 angehängt werden kann, solange er mit dem Kennzeichen der Hostpools übereinstimmt.
  • In Tabelle 425 sind mögliche Bedingungen 255 aufgeführt, die den VE 235 zugeordnet werden können. Wie dargestellt, wird jedes VE 235 individuell einem bestimmten Hostpool 327 zugewiesen und ist mindestens einer Bedingungen 255 zugeordnet. Bei einer Ausführungsform kann ein VE 235 jedoch keine Bedingungen 255 oder mehrere Bedingungen 255 aufweisen. Da VE1 und VE2 derselben zusammengelegten Gruppe zugeordnet sind, müssen sie demselben Host 130 zugewiesen werden. Die VE2 bis 5 sind derselben auseinandergelegten Gruppe zugeordnet und können daher denselben Host 130 nicht gemeinsam nutzen. Die VE2 bis 5 müssen demnach unterschiedlichen Hosts 130 relativ zueinander zugewiesen werden, können jedoch zugewiesen werden, um einen Host mit einem VE 235 gemeinsam zu nutzen, das sich nicht in der Auseinanderlegen-Gruppe 1 befindet.
  • Werden die Bedingungen 255 von Tabelle 425 auf die Hostpools und angehängten Hosts von Tabelle 420 angewendet, zeigt sich, dass es sich um eine ungültige Zuweisung handelt. Insbesondere VE1 und 2 müssen sich auf demselben Host 130 befinden, wobei sie zwei unterschiedlichen Hostpools 327 zugewiesen sind, die keine gemeinsamen angehängten Hosts 130 haben. Zur Lösung dieses Problems kann Host B in Hostpool 1 durch Host C ersetzt werden, da Host C über die notwendigen Kennzeichnungen verfügt, um sowohl für Hostpool 1 als auch 2 in Frage zu kommen. Auf diese Weise können VE1 und VE2 demselben Host 130 – d. h. Host C – zugewiesen werden.
  • Dies löst jedoch nicht alle Bedingungen 255 auf. VE2 bis 5 müssen getrennten Hosts 130 zugewiesen werden. Insbesondere VE2, 4 und 5 befinden sich in Hostpool 2 und müssen jeweils einen getrennten Host 130 verwenden; da sich Host D jedoch in Hostpool 2 befindet, muss VE2, 4 oder 5 Host D zugewiesen werden, der auch VE3 zugewiesen ist. Zur Lösung dieses Problems kann Host D in Hostpool 2 durch Host F ersetzt werden. In Tabelle 430 ist eine Lösung aufgeführt, die beide Bedingungen 255 erfüllt – d. h. die von den Hostpools 327 geforderten Kennzeicheneigenschaften und die Auseinander- oder Zusammenlegen-Gruppen, die den VE 235 zugeordnet sind.
  • 5 ist ein Ablaufplan, der die Zuweisung eines oder mehrerer Hosts zu einem Hostpool gemäß Ausführungsformen der Erfindung veranschaulicht. Die in 5 veranschaulichte Technik 500 verwendet Optimierungsmodi 350 und Auswahlkriterien 352, 354, um die Zuweisung von VE 235, Hosts 130 und Hostpools 327 wie in den 4A bis B dargestellt anzupassen und zu unterstützen. Insbesondere bei einer Ausführungsform kann das Steuerprogramm 134 bei den Blöcken 505 und 525 VE- und Host-Auswahlkriterien 352 bzw. 354 verwenden, um den Zuweisungsprozess zu beeinflussen.
  • Bei Block 505 ermittelt das Steuerprogramm 134 einen Kandidaten-Hostsatz für ein VE 235. Bei einer Ausführungsform weist das Steuerprogramm 134 die VE 235 in der Datenstromanwendung iterativ zu – d. h. jeweils ein Element nach dem anderen. Die VE 235 müssen jedoch nicht nacheinander oder in einer bestimmten Reihenfolge zugewiesen werden. Das Steuerprogramm 134 kann daher einen Optimierungsmodus 350 mit den zugeordneten VE-Auswahlkriterien 352 verwenden, um auszuwählen, welches noch nicht zugewiesene VE 235 als nächstes zugewiesen werden soll. Allgemein wählt das Steuerprogramm 134 oder ein Benutzer einen Optimierungsmodus 350 aus, der dem gewünschten Ziel oder der gewünschten Ausrichtung entspricht – z. B. Leistung, Kosten, Auflösbarkeit und Ähnliches. Ein Optimierungsmodus 350, der zum Beispiel auf Auflösbarkeit ausgerichtet ist, weist VE-Auswahlkriterien 352 auf, die die Wahrscheinlichkeit erhöhen, dass alle VE zugewiesen werden – d. h. alle Bedingungen 255 werden erfüllt. Anders ausgedrückt erlauben es die Auswahlkriterien 352, 354 einem Benutzer, mehr Anforderungen zum Zuweisen der VE 235 hinzuzufügen als die Bedingungen 255, die in der Datenstromanwendung selbst enthalten sind. Obgleich eine Datenstromanwendung vor der Ausführung eventuell alle Bedingungen 255 erfüllen muss, bestimmen die Auswahlkriterien 352, 354, welche VE 235 oder Hosts 130 auszuwählen sind, wenn eine Vielzahl dieser Datenstromelemente die Bedingungen 255 erfüllen. Dieselbe Datenstromanwendung, die zum Beispiel in Bezug auf Leistung optimiert ist, kann dieselben Bedingungen 255 wie eine andere Instanz der Anwendung erfüllen, die in Bezug auf Kosten optimiert ist – d. h. die Bedingungen 255 sind bei beiden gleich, während es die Auswahlkriterien 352, 354 nicht sind.
  • Bei Block 510 ermittelt das Steuerprogramm 134, ob zumindest ein Host 130 alle Bedingungen 255 der Datenstromanwendung erfüllt. Das heißt, ob mindestens ein Kandidaten-Host für das gewählte VE 235 vorhanden ist.
  • Obgleich dies zur Durchführung der Erfindung nicht notwendig ist, kann das Steuerprogramm 134 bei einer Ausführungsform einen Bedingungsbaum verwenden, um die Kandidaten-Hosts zu identifizieren, die die Bedingungen 255 erfüllen, welche den Datenstromanwendungselementen zugeordnet sind, die eine Datenstromanwendung bilden. Die Bedingungen 255 können nur einem oder einer Kombination der verschiedenen Datenstromanwendungselemente zugeordnet sein. Nachstehend wird mit Bezug auf 6 ein Beispiel eines Bedingungsbaums beschrieben.
  • Das Steuerprogramm 134 ermittelt bei Block 515, ob mindestens ein Kandidaten-Host vorhanden ist. Bei einer Ausführungsform kann das Steuerprogramm 134 weiter zwischen Hosts 130, die alle Bedingungen 255 erfüllen, und Hosts 130, die nicht jede Bedingung 255 erfüllen, unterscheiden – d. h. wenn das ausgewählte VE 235 dem Host zugewiesen würde, würde mindestens eine Bedingung 255 verletzt werden. Dieser Prozess wird in einer Patentanmeldung des gleichen Erfinders beschrieben, die gleichzeitig mit der gegenwärtigen Anmeldung anhängig ist und den Titel ”CANDIDATE SET SOLVER WITH USER ADVICE” trägt, US-Patentanmeldung Nr. 13/308881, und die Nachverfolgungs-Hosts 130 offenlegt, die nicht jede Bedingung 255 erfüllen, um Fehler zu beseitigen oder einen Benutzer dabei zu unterstützen, eine individuell angepasste Datenstromanwendung zu erzeugen. Dabei wird ein computerimplementiertes Verfahren zum Zuweisen eines Verarbeitungselements zu einem Rechenknoten offenbart, wobei das Verarbeitungselement aus einer Vielzahl von Verarbeitungselementen ausgewählt wird und wobei das Verfahren aufweist: Vergleichen des Rechenknotens mit einer ersten Bedingung, die einer ersten Ebene eines Bedingungsbaums zugeordnet ist, wobei die erste Bedingung ermittelt, ob der Rechenknoten dem Verarbeitungselement zugewiesen werden kann; wenn der Rechenknoten die erste Bedingung nicht erfüllt, Ermitteln, ob der Rechenknoten eine zweite Bedingung des Bedingungsbaums erfüllt; wenn der Rechenknoten die zweite Bedingung erfüllt, Übertragen einer Benutzermaßnahme zum Zwecke der Anzeige, die mindestens entweder (i) eine Voraussetzung dergestalt ändert, dass der Rechenknoten die erste Bedingung erfüllt, oder (ii) die anweist, dass die erste Bedingung ignoriert werden soll; und nach der Durchführung der Benutzermaßnahme Zuweisen des Verarbeitungselements zu dem Rechenknoten durch Betrieb eines oder mehrerer Computerprozessoren.
  • Wenn das Steuerprogramm 134 nach dem Anwenden aller Bedingungen 255 nicht in der Lage ist, mindestens einen Kandidaten-Host zu identifizieren, kann das Steuerprogramm 134 bei Block 545 einen Fehler melden. Ein Fehler kann beinhalten, dass der Benutzer der Datenstromanwendung darüber informiert wird, dass das Steuerprogramm 134 nicht jedes der VE 235 der Datenstromanwendung einem Host 130 zuweisen und gleichzeitig die aktuellen Bedingungen 255 erfüllen konnte. Die Datenstromanwendung kann den Benutzer unverzüglich über einen Fehler informieren, wenn ein VE 235 nicht zugewiesen werden kann, oder alternativ kann das Steuerprogramm 134 damit fortfahren, die restlichen VE 235 zuzuweisen, bevor es angezeigt, dass der VE-Zuweisungsprozess fehlgeschlagen ist. Bei einer Ausführungsform kann das Steuerprogramm 134 eine E/A-Einheitenschnittstelle 310 verwenden, um eine Fehlermeldung an eine Anzeigeeinheit zu übermitteln.
  • Wenn das Steuerprogramm 134 mindestens einen Kandidaten-Host identifizieren kann, geht die Technik 500 zu Block 520 weiter, um zu ermitteln, ob es mehrere Kandidaten-Hosts gibt. Wie oben beschrieben, kann das Steuerprogramm 134 die dem ausgewählten Optimierungsmodus 350 zugeordneten Host-Auswahlkriterien 354 verwenden, um bei Block 525 einen Host 130 aus dem Kandidaten-Hostsatz auszuwählen. Wenn der aktuelle Optimierungsmodus 350 auf das Ziel Leistung ausgerichtet ist, kann ein Host-Auswahlkriterium 354 ein Auswählen des Host 130 mit der größten noch verfügbaren Verarbeitungsleistung beinhalten. Wenn der Optimierungsmodus 350 auf Kosten ausgerichtet ist, kann ein Host-Auswahlkriterium 354 ein Auswählen des Host beinhalten, der am wenigsten Energie pro Rechenzyklus verbraucht. Wie die bei Block 505 beschriebenen VE-Auswahlkriterien 352 ermöglichen es die Host-Auswahlkriterien 354 einem Benutzer oder Steuerprogramm 134, die Datenstromanwendung zusätzlich zu den Bedingungen 255 noch weiter individuell anzupassen.
  • Wenn jedoch nur ein Kandidaten-Host vorhanden ist, kann das Steuerprogramm 134 bei Block 530 das ausgewählte VE 235 automatisch diesem Kandidaten-Host zuweisen. Andernfalls kann das Steuerprogramm 134 das ausgewählte VE 235 dem Host 130 zuweisen, der unter Verwendung der Host-Auswahlkriterien 354 aus dem Kandidaten-Hostsatz ausgewählt wurde.
  • Das Steuerprogramm 134 hängt den Kandidaten-Host bei Block 535 an den Hostpool 327, der dem VE 235 zugeordnet ist, das dem Kandidaten-Host zugewiesen ist. Bei einer Ausführungsform kann das Steuerprogramm 134 vor dem Anhängen des Kandidaten-Host an den Hostpool 327, der dem VE 235 zugeordnet ist, zuerst ermitteln, ob der Kandidaten-Host bereits an den Hostpool 327 angehängt ist. Ist dies nicht der Fall, kann das Steuerprogramm 134 den Kandidaten-Host an den Hostpool 327 anhängen (oder diesem zuweisen). Für einen Teil dieses Prozesses kann es notwendig sein, dem Kandidaten-Host in dem Hostpool 327 einen Indexwert zuzuweisen, wobei dies jedoch nicht erforderlich ist. Das Zuweisen eines Indexwerts und Zuordnen von Hosts 130 zu Hostpools 327 werden im Einzelnen in einer gleichzeitig anhängigen Patentanmeldung des gleichen Erfinders mit dem Titel ”AGILE HOSTPOOL ALLOCATOR”, US-Patenanmeldung Nr. 13/308841, beschrieben. Dabei wird ein computerimplementiertes Verfahren zum Zuweisen eines Verarbeitungselements zu einem Rechenknoten offenbart, wobei das Verarbeitungselement aus einer Vielzahl von Verarbeitungselementen ausgewählt wird und das Verfahren aufweist: Feststellen durch den Betrieb von einem oder mehreren Computerprozessoren von in Frage kommenden Rechenknoten, die einem Hostpool zugewiesen werden können, der dem Verarbeitungselement zugeordnet ist, wobei der Hostpool einen Satz von einem oder mehreren Rechenknoten definiert; Auswählen eines geeigneten Rechenknotens aus den in Frage kommenden Rechenknoten auf der Grundlage von Bedingungen, die dem Verarbeitungselement zugeordnet sind; Zuweisen des Verarbeitungselements zu dem geeigneten Rechenknoten; und Zuweisen des geeigneten Rechenknotens zu dem Hostpool, wobei die Vielzahl von Verarbeitungselementen einen Operatorgraphen der Vielzahl von Verarbeitungselementen erstellt, wobei der Operatorgraph mindestens einen Ausführungspfad definiert und wobei mindestens eines der Verarbeitungselemente des Operatorgraphen so konfiguriert ist, dass es Daten von mindestens einem vorgelagerten Verarbeitungselement empfängt und Daten an mindestens ein nachgelagertes Verarbeitungselement überträgt.
  • Nach dem Anhängen des geeigneten Host oder dem Feststellen, dass der geeignete Host bereits in dem Hostpool 327 enthalten ist, kann die Technik 500 bei Block 525 wiederholt werden, bis jedes VE 235 in einer Datenstromanwendung zugewiesen ist oder die Technik 500 einen Fehler erkennt.
  • 6 veranschaulicht einen Bedingungsbaum zum Anwenden von Bedingungen gemäß einer Ausführungsform der Erfindung. Es ist zu beachten, dass ein Bedingungsbaum 600 nur eine Technik darstellt, um zu ermitteln, ob ein Host 130 alle Bedingungen 255 erfüllt. Der Bedingungsbaum 600 teilt die verschiedenen Strukturen in einer Datenstromanwendung in mehrere Ebenen auf, um eine hierarchische Beziehung herzustellen. Die obere Ebene – Ebene A – stellt die Beziehung zwischen VE dar. Ebene B enthält die Bedingungen, die einem einzelnen VE 235 zugewiesen sein können. Wie zuvor erwähnt, kann ein VE 235 einen oder mehrere zusammengefügte Operatoren 240 aufweisen, die von Ebene C des Baums 600 dargestellt werden.
  • Bei einer Ausführungsform wird jeder Operator 240, der einem VE 235 zugeordnet ist, nur einem Hostpool 327 zugewiesen, während ein VE 235 einem oder mehreren Hostpools zugeordnet sein kann. Ebene D zeigt, dass die VEN zugeordneten Operatoren 240 jeweils nur einem Hostpool 327 zugewiesen sind. Die Operatoren 240 können jedoch demselben Hostpool 327 zugeordnet sein. Schließlich kann jeder Hostpool 327 einen oder mehrere Hosts 130 beinhalten – d. h. Ebene E. Zum besseren Verständnis sind viele hierarchische Beziehungen der verschiedenen Ebenen wie beispielsweise die VE1 und VE2 zugeordneten Operatoren nicht in der Figur dargestellt.
  • Bei einer Ausführungsform kann das Steuerprogramm 134 den Bedingungsbaum 600 verwenden, um einen Kandidaten-Hostsatz zu ermitteln – d. h. Hosts 130, die die Bedingungen der Ebene A bis E erfüllen. Der Bedingungsbaum 600 ist eine graphische Darstellung der verschiedenen Arten von Bedingungen, die zum Zuweisen des ausgewählten VE 235 zu einem Host 130 verwendet werden können. Jeder Bedingungsbaum 600 kann daher für jedes VE 235 anders aussehen. Jede Ebene stellt andere Bedingungsarten dar, die von dem Steuerprogramm 134 geprüft werden können. Für ein aktuell ausgewähltes VE 235 kann das Steuerprogramm 134 Bedingungen der Ebene E anwenden – d. h. den Hosts 130 zugeordnete Bedingungen 255. Zu Bedingungen der Ebene E können wie oben beschrieben Überlastungs- oder Planungsbedingungen gehören. Das Steuerprogramm 134 kann zum Beispiel ermitteln, ob jeder Host 130 in Ebene E überlastet ist oder ob der Host 130 ausschließlich von einem anderen Auftrag als dem Auftrag verwendet wird, der das aktuell ausgewählte VE 235 enthält. Nach dem Ermitteln, welcher Host 130 die Bedingungen von Ebene E erfüllt, kann das Steuerprogramm 134 zu Ebene D zurückkehren, um Bedingungen der Ebene D anzuwenden – d. h. den Hostpools 327 zugeordnete Bedingungen – beispielsweise, ob die von Ebene E ausgewählten Hosts 130 die gleiche Kennzeichnung wie Hostpool 327 von Ebene D aufweisen oder ob die Größenanforderungen des Hostpools 327 erfüllt wurden. Nach dem Anwenden der Bedingungen von Ebene D gibt das Steuerprogramm 134 die Hosts 130, die die Bedingungen von Ebene D und E erfüllen, an Ebene C zurück.
  • Für jeden Operator 240 in dem ausgewählten VE 235 kann das Steuerprogramm 134 den Operatoren 240 zugeordnete Bedingungen von Ebene C anwenden, beispielsweise ob die Operatoren 240 auf einem bestimmten Host 130 ausgeführt werden müssen oder ob einer der Operatoren 240 der einzige Operator 240 sein sollte, der auf dem Host 130 ausgeführt wird. Das Steuerprogramm 134 prüft die Bedingungen von Ebene C für jeden Operator 240 in Bezug auf die von Ebene D zurückgekehrten Kandidaten-Hosts. Die Hosts 130, die alle Bedingungen 255 für mindestens einen der Operatoren 240 erfüllen, kehren zu Ebene B zurück, wo Bedingungen von Ebene B angewendet werden. Das Steuerprogramm 134 kann zum Beispiel eine Schnittmengenfunktion durchführen, um zu ermitteln, ob einer der Hosts 130, die alle Bedingungen von mindestens einem der Operatoren 240 von Ebene C erfüllen, auch alle Bedingungen 255 aller Operatoren 240 in dem ausgewählten VE 235 erfüllt. Zusätzlich oder alternativ können die Bedingungen von Ebene B ein Ermitteln beinhalten, ob das VE 235 nicht verschiebbar ist oder ob eine Bedingung 255 vorhanden ist, die eine der Bedingungen der Ebenen C bis E aufhebt.
  • Nach dem Ermitteln, welcher Host oder welche Hosts 130 die Bedingungen der Ebenen B bis E erfüllt bzw. erfüllen, ermittelt das Steuerprogramm 134, ob diese Hosts 130 auch die Bedingungen von Ebene A wie beispielsweise auseinanderlegen oder zusammenlegen erfüllen. Das heißt, wenn VE1 (z. B. das aktuell ausgewählte VE) und VE2 zusammengelegt werden müssen, kann das Steuerprogramm 134 bei Ebene A eine Schnittmengenfunktion durchführen, um zu ermitteln, ob die beiden VE 235 mindestens einen Host 130 gemeinsam haben, der alle Bedingungen der Ebenen B bis D für die jeweiligen VE 235 erfüllt. Ist dies der Fall, wird dieser Host oder werden diese Hosts 130 zu den Kandidaten-Hosts für VE1 – d. h. Block 520 von 5. Auf diese Weise kann das Steuerprogramm 134 den Bedingungsbaum 600 verwenden, um sicherzustellen, dass alle Bedingungen 255 erfüllt sind, wodurch der Kandidaten-Hostsatz aussortiert wird, um nur die Hosts 130 aufzunehmen, die Bedingungen der Ebene A bis E erfüllen. Das Steuerprogramm 134 kann anschließend die Host-Auswahlkriterien 354 verwenden, um zu ermitteln, auf welchem Kandidaten-Host das gewählte VE 235 platziert werden soll.
  • 7 ist eine Tabelle 700, die Auswahlkriterien in Verbindung mit einer Vielzahl von Optimierungsmodi gemäß einer Ausführungsform der Erfindung veranschaulicht. 7 veranschaulicht insbesondere Beispiele der VE- und Host-Auswahlkriterien 352, 354, die bei Block 505 und 525 von 5 angewendet werden können. Die in Tabelle 700 enthaltenen Informationen können zum Beispiel in einer Datenstruktur in dem Speicher 325 gespeichert werden.
  • Die erste Spalte enthält verschiedene Optimierungsmodi 350, die von dem Steuerprogramm 134 oder einem Benutzer der Datenstromanwendung ausgewählt werden können. Wie dargestellt, beschreibt jede Reihe in der ersten Spalte einen Optimierungsmodus 350, der die Zuweisung der VE 235 optimiert, um ein anderes Ziel oder eine Kombination von Zielen zu erreichen. Der Optimierungsmodus 350 in der ersten Reihe optimiert ausschließlich auf der Grundlage von Leistung, die zweite Reihe optimiert auf der Grundlage einer Mischung aus Leistung und Auflösbarkeit und die dritte Reihe optimiert ausschließlich auf der Grundlage von Auflösbarkeit. Bei einer Ausführungsform können die Reihen in der ersten Spalte eine Gleitskala zwischen zwei Optimierungszielen darstellen. Wie gezeigt, beinhaltet Tabelle 700 eine Gleitskala zwischen dem ausschließlichen Berücksichtigen der Leistung und dem ausschließlichen Berücksichtigen der Auflösbarkeit. Der Optimierungsmodus 350 in der zweiten Reihe stellt eine Kombination dieser Ziele dar; die Tabelle 700 kann jedoch eine Vielzahl von Kombinationen der beiden Ziele beinhalten, um die Granularität zu erhöhen.
  • Obwohl Tabelle 700 eine Gleitskala zwischen zwei Leistungszielen beinhaltet, können die Optimierungsmodi 350 eine Gleitskala zwischen drei oder mehr Zielen enthalten. Alternativ kann die Tabelle 700 eine Liste mit Zielen ohne Gleitskala zwischen den Zielen enthalten – z. B. einen Optimierungsmodus 350 zum Optimieren der Leistung und einen Optimierungsmodus 350 zum Optimieren von Kosten. Die Tabelle 700 kann außerdem Optimierungsmodi 250 für unterschiedliche Grade oder Stufen desselben Optimierungsziels enthalten. Ein Optimierungsmodus 350 zum Optimieren der Leistung kann zum Beispiel VE-Auswahlkriterien 352 enthalten, die stärker in Bezug auf Leistung optimieren als ein zweiter Optimierungsmodus 350 zum Optimieren der Leistung.
  • Wenn das Steuerprogramm 134 den aktuellen Optimierungsmodus 350 ermittelt, iteriert es durch die Auswahlkriterien 352, 354, um entweder ein einzelnes VE 235 von den nicht zugewiesenen VE 235 (d. h. Block 505 von 5) oder einen Host 130 von dem Kandidaten-Hostsatz (d. h. Block 525 von 5) auszuwählen.
  • 8A veranschaulicht eine Technik 800 zum Auswählen eines nicht zugewiesenen VE unter Verwendung von VE-Auswahlkriterien. 8A ist insbesondere eine Ausführungsform von Block 505 von 5. Das Steuerprogramm 134 ermittelt bei Block 805 die VE 235 in der Datenstromanwendung, die noch nicht zugewiesen wurden. Bei Block 510 vergleicht das Steuerprogramm 134 die nicht zugewiesenen VE 235 mit dem ersten VE-Auswahlkriterium 352. Angenommen zum Beispiel, das Steuerprogramm 134 verwendet den Optimierungsmodus 350 der zweiten Reihe von Tabelle 700, dann identifiziert das Steuerprogramm 134 das nicht zugewiesene VE 235, das das erste Kriterium 352 am besten erfüllt – d. h. das VE 235 mit der höchsten geschätzten Ressourcenanforderung. Bei Block 815 ermittelt das Steuerprogramm 134, ob mindestens zwei der VE 235 verbunden sind – d. h. mehr als ein VE 235 weisen die höchste geschätzte Ressourcenanforderung gemeinsam auf, verglichen mit den anderen nicht zugewiesenen VEs 235. Wenn keine Verbindung besteht, wählt das Steuerprogramm 134 bei Block 820 das VE 235 aus, das das Kriterium 352 zur Zuweisung am besten erfüllt.
  • Wenn allerdings eine Verbindung besteht, vergleicht das Steuerprogramm bei Block 825 die VE 235, die mit dem zweiten Kriterium verbunden sind – d. h. das Steuerprogramm 134 wählt das VE 235 mit den meisten Platzierungsfehlern aus. Dieser Vorgang wird fortgesetzt, bis keine Verbindung mehr besteht – d. h. das ”beste” VE 235 identifiziert ist – oder keine VE-Auswahlkriterien 352 zum Bewerten mehr vorhanden sind. Im letztgenannten Fall kann das Steuerprogramm 134 das zuzuweisende VE 235 nach Zufall aussuchen oder ein VE 235 auswählen, das in dem Operatorgraph 132 mit einem bereits zugewiesenen VE 235 verbunden ist. Diese Erfindung ist nicht auf eine bestimmte Technik zum Unterbrechen einer Verbindung beschränkt, wenn alle Auswahlkriterien bewertet wurden.
  • 8B veranschaulicht eine Technik 801 zum Auswählen eines Host 130 aus einem Kandidaten-Hostsatz unter Verwendung von Host-Auswahlkriterien 354. 8B ist insbesondere eine Ausführungsform von Block 525 von 5. Bei Block 850 identifiziert das Steuerprogramm 134 den Kandidaten-Hostsatz – d. h. eine Vielzahl von Hosts 130, die die Bedingungen 255 in der Datenstromanwendung zum Zuweisen eines ausgewählten VE 235 erfüllen. Bei Block 855 wird jeder Host 130 in dem Kandidaten-Hostsatz mit dem ersten Host-Auswahlkriterium 354 verglichen. Angenommen, das Steuerprogramm 134 verwendet den Optimierungsmodus 350 der zweiten Reihe von Tabelle 700, dann wird der Host oder werden die Hosts 130 mit der noch übrigen größten zur Verfügung stehenden Verarbeitungsleistung identifiziert. Wenn ein Host 130 aus dem Kandidaten-Hostsatz verglichen mit allen anderen Hosts 130 in dem Kandidaten-Hostsatz die größte zur Verfügung stehende Verarbeitungsleistung aufweist, kann das Steuerprogramm 134 bei Block 865 diesem Host 130 das ausgewählte VE 235 zuweisen.
  • Wenn das Steuerprogramm 134 bei Block 860 jedoch feststellt, dass mehr als ein Host 130 die größte zur Verfügung stehende Verarbeitungsleistung aufweist, iteriert das Steuerprogramm 134 bei Block 870 zum nächsten Host-Auswahlkriterium 354. In diesem Beispiel weist das zweite Kriterium 354 das Steuerprogramm 134 an, eine zufällige Auswahl zu treffen. Bei einer Ausführungsform weist dieses zufällige Auswahlkriterium 720 das Steuerprogramm 134 an, entweder einen der Hosts 130 auszuwählen, der im vorangegangenen Schritt verbunden war, oder zum nächsten Host-Auswahlkriterium 354 weiterzugehen. Wenn das zufällige Auswahlkriterium 720 einen Host 130 auswählt, würde dieser Host verwendet werden, um das ausgewählte VE zu platzieren. Dieser Vorgang kann fortgesetzt werden, bis ein einzelner Host 130 ausgewählt wird oder bis die Host-Auswahlkriterien 354 erschöpft sind.
  • Es ist zu beachten, dass die zufälligen Auswahlkriterien 720 auch als VE-Auswahlkriterien 352 verwendet werden können.
  • Zurück zu Tabelle 700 von 7: die Ausrichtung oder das Ziel eines Optimierungsmodus 350 sowie die verschiedenen Stufen oder Grade dieses Ziels werden durch den (i) Typ, (ii) die Anordnung und (iii) die Anzahl von Auswahlkriterien 352, 354 bestimmt, die diesem Optimierungsmodus 350 zugeordnet sind. Demnach optimiert der Optimierungsmodus 350 in der ersten Reihe die Leistung, weil er den VE- und Host-Auswahlkriterien 352, 354 zugeordnet ist, die die Leistung optimieren. Durch Ändern der Kriterien 354, 352 kann auch das Ziel des Optimierungsmodus 350 geändert werden. Der Optimierungsmodus 350 der zweiten Reihe stellt somit eine Kombination aus Leistung und Auflösbarkeit dar, da er eine Kombination aus VE-Auswahlkriterien 352 enthält, die VE 235 auf der Grundlage von Leistung und Auflösbarkeit auswählen.
  • Zu Arten von Auswahlkriterien 352, 354 gehören Kriterien, die zwischen VE 235 und Hosts 130 nach Leistung, Kosten, Auflösbarkeit und Ähnlichem unterscheiden. Ein Benutzer oder Entwickler der Datenstromanwendung kann die verschiedenen Kriterien somit unter den verschiedenen Arten aussuchen, um einen Optimierungsmodus 350 individuell anzupassen, der die gewünschten Ziele erfüllt.
  • Die Anordnung der Auswahlkriterien 352, 354 kann ebenfalls das Ziel eines Optimierungsmodus 350 ändern. Wenn die Host-Auswahlkriterien 354 der ersten Reihe in Tabelle 700 zum Beispiel auf Host A angewendet werden, der 25% verfügbare Verarbeitungsleistung sowie vier Prozessoren aufweist, und auf Host B, der 15% verfügbare Verarbeitungsleistung und drei Prozessoren aufweist, wird Host A ausgewählt. Wenn der Benutzer die Kriterien jedoch austauscht, wird Host B ausgewählt.
  • Die Gesamtanzahl von Auswahlkriterien 352, 354 kann das Ziel eines Optimierungsmodus 350 ebenfalls beeinflussen, auch wenn die Kriterien 352, 354 von derselben Art sind. Wenn ein Benutzer die Datenstromanwendung zum Beispiel im Hinblick auf Leistung stark individuell anpassen will, kann der Benutzer einen Optimierungsmodus 350 mit mehreren Auswahlkriterien 352, 354 erzeugen, zu denen das Auswählen des Host mit der größten verfügbaren Verarbeitungsleistung sowie das Ausrichten auf bestimmte Leistungsaspekte gehören. Die Datenstromanwendung kann dadurch besser individuell angepasst werden, als durch ein einfaches Auswählen eines Host mit der größten verfügbaren Verarbeitungsleistung.
  • 9 veranschaulicht eine Technik 900 zum Wechseln von Optimierungsmodi gemäß einer Ausführungsform der Erfindung. Das Steuerprogramm 134 kann den Optimierungsmodus 350 wechseln, wenn die VE 235 keinem entsprechenden Host 130 zugewiesen werden können. Bei Block 905 kann das Steuerprogramm 134 zum Beispiel einen Fehler erkennen, beispielweise einen Fehler, der im Zusammenhang mit Block 545 von 5 beschrieben wurde. Als Reaktion darauf kann das Steuerprogramm 134 bei Block 910 zu einem anderen Optimierungsmodus 350 wechseln. In Tabelle 700 von 7 sind die Optimierungsmodi 350 von einer Optimierung auf der Grundlage von Leistung bis zu einer Optimierung auf der Grundlage von Auflösbarkeit angeordnet. Das Steuerprogramm 134 kann mit dem Verwenden des Optimierungsmodus 350 beginnen, der ausschließlich auf Leistung ausgerichtet ist, nach Erkennen eines Fehlers kann es jedoch zu dem Optimierungsmodus 350 wechseln, der eine Kombination aus Leistungs- und Auflösbarkeits-Auswahlkriterien 352, 354 beinhaltet. Bei Block 915 kann das Steuerprogramm 134 die Zuweisung der VE in der Datenstromanwendung erneut beginnen.
  • Wenn das Steuerprogramm 134 bei einer Ausführungsform immer noch nicht alle VE 235 unter Verwendung dieses Optimierungsmodus 350 zuweisen kann, kann es zu einem Optimierungsmodus 350 wechseln, der ausgesuchte Auswahlkriterien 352, 354 zur Verbesserung der Auflösbarkeit der Datenstromanwendung aufweist – d. h. das Steuerprogramm 134 durchläuft die Gleitskala der Optimierungsmodi 350 iterativ. Das Verwenden einer Gleitskala ermöglicht es dem Steuerprogramm 134 auf vorteilhafte Weise, den Optimierungsmodus zu ermitteln, der alle VE zuweist und trotzdem das größte Gleichgewicht zwischen zwei Zielen herstellt – z. B. Verringerung der Kosten gegenüber gemeinsame Nutzung von Computerressourcen mit anderen Anwendungen. Je größer darüber hinaus die Granularität der Gleitskala ist – d. h. je größer die Anzahl von Optimierungsmodi 350 ist, die Kriterien von den gewünschten Zielen kombinieren –, desto besser ist die Fähigkeit des Steuerprogramms 134, ein Gleichgewicht zwischen den gewünschten Zielen herzustellen.
  • Das Steuerprogramm 134 kann alternativ eine Reihe von Präferenzen vom Benutzer erhalten, beispielsweise dass das Steuerprogramm 134 zuerst versuchen muss, die VE 235 bei einer Optimierung auf der Grundlage von Leistung zuzuweisen, wenn dies jedoch nicht gelingt, eine Optimierung auf der Grundlage von Kosten zu versuchen, wenn dies jedoch nicht gelingt, auf der Grundlage von Auflösbarkeit zu optimieren. Ein Steuerprogramm 134 kann somit den Optimierungsmodus 350 ohne Verwenden einer Gleitskala zwischen zwei Zielen wechseln und stattdessen eine Benutzerpräferenz in Bezug auf jede Zielart verwenden. Ein Fachmann erkennt die vielen verschiedenen Techniken zum Ermitteln eines anderen Optimierungsmodus.
  • Bei einer Ausführungsform kann das Steuerprogramm 134 nicht zu einem anderen zuvor festgelegten Optimierungsmodus 350 wechseln, sondern stattdessen ein oder mehrere Auswahlkriterien 352, 354 zu dem aktuellen Optimierungsmodus 350 hinzufügen oder daraus entfernen oder die aktuellen Auswahlkriterien 352, 354 neu ordnen. Durch diese Technik wird das gewünschte Ziel des Optimierungsmodus 350 geändert, das Steuerprogramm 134 kann dadurch jedoch alle VE zuweisen. Nach Erkennen eines Fehlers kann das Steuerprogramm 134 anstatt die Modi 350 zu wechseln, ein VE-Auswahlkriterium 352 hinzufügen, das den aktuellen Optimierungsmodus 350 ändert – z. B. zuerst Zuweisen der VE 235 mit den negativsten Nebenfolgen.
  • Bei einer anderen Ausführungsform kann das Steuerprogramm 134 ermitteln, wo das zusätzliche Auswahlkriterium 352, 354 platziert werden soll und zwar auf der Grundlage davon, wie viele der VE 235 insgesamt platziert wurden, bevor der Zuweisungsprozess fehlgeschlagen ist. Da das Steuerprogramm 134 bei einer Ausführungsform die Auswahlkriterien 352, 354 in einer festgelegten Reihenfolge bewertet, bedeutet dies, dass der Ort, an dem sich das Kriterium befindet, die Fähigkeit zum Ändern der Auflösbarkeit der Datenstromanwendung beeinträchtigen kann. Wenn zum Beispiel 80% der VE 235 platziert sind, kann das Steuerprogramm 134 die Kriterien zum Ändern des Optimierungsmodus 350 bei niedrigerer Priorität in den Auswahlkriterien 352, 354 hinzufügen – z. B. das dritte oder vierte Kriterium in entweder den VE- oder den Host-Auswahlkriterien 352, 354. Wenn jedoch nur 25% der VE 235 platziert sind, kann das Steuerprogramm 134 das zusätzliche Kriterium als erstes oder zweites Kriterium in entweder den VE- oder den Host-Auswahlkriterien 352, 354 hinzufügen.
  • Ebenso kann das Steuerprogramm 134 bei einer Ausführungsform ein oder mehrere zufällige Auswahlkriterien 720 in die Kriterien für den aktuellen Optimierungsmodus 350 hinzufügen. Wenn das Steuerprogramm 134 zum Beispiel 98% der VE in einer Datenstromanwendung platzieren würde, bevor ein Fehler auftritt, würde das Hinzufügen eines zufälligen Auswahlkriteriums 720 ausreichen, um die VE-Zuweisung so zu ändern, dass alle VE 235 nach dem Neubeginn des Prozesses erfolgreich platziert werden. Das Hinzufügen eines zufälligen Auswahlkriteriums 720 zu entweder den VE- oder den Host-Auswahlkriterien 352, 354 kann vorteilhafterweise zu einer ausführbaren Datenstromanwendung führen, jedoch nur minimale Auswirkungen auf das gewünschte Ziel des Optimierungsmodus 350 im Vergleich zum Hinzufügen eines substantielleren Kriteriums wie oben beschrieben haben.
  • 10 veranschaulicht eine Technik 1000 zum Wechseln von Optimierungsmodi gemäß einer Ausführungsform der Erfindung. Das Steuerprogramm 134 kann den Optimierungsmodus 350 auf der Grundlage der zum Zuweisen der VE 235 benötigten Zeit wechseln. Bei Block 1005 kann das Steuerprogramm 134 einen Zeitmesser aufnehmen, der die Zeit misst, die seit dem ersten Zuweisen der VE 235 durch das Steuerprogramm 134 vergangen ist. Wenn das Steuerprogramm 134 bei Block 1010 feststellt, dass die vergangene Zeit einen zuvor festgelegten Schwellenwert überschritten hat – z. B. mehr als drei Minuten –, kann das Steuerprogramm 134 die Zuweisung unterbrechen und bei Block 1015 zu einem anderen Optimierungsmodus 350 wechseln. Der Optimierungsmodus 350 kann gemäß einer der Ausführungsformen, die in Verbindung mit 9 beschrieben wurden, gewechselt oder geändert werden. Bei Block 1020 kann das Steuerprogramm 134 die Zuweisung der VE unter Verwendung des anderen Optimierungsmodus 350 erneut beginnen.
  • Bei einer Ausführungsform kann das Steuerprogramm 134 das Zeitlimit auf der Grundlage der Komplexität der Datenstromanwendung anpassen, z. B. Anzahl von VE, Anzahl von Bedingungen 255, Anzahl von verfügbaren Hosts 130, VE/Host-Verhältnis und Ähnliches. Das Steuerprogramm 134 kann zum Beispiel Wertetabellen oder gewichtete Algorithmen beinhalten, die das richtige Zeitlimit auf der Grundlage ihrer jeweiligen Werte einstellen.
  • Bei einer Ausführungsform kann das Steuerprogramm 134 eine Voranalyse in der Datenstromanwendung durchführen, um vor dem Zuweisen der VE 235 den Optimierungsmodus zu ermitteln. Das Steuerprogramm 134 kann insbesondere Zahl und Art der Bedingungen 255, die der Datenstromanwendung zugeordnet sind, sowie die aktuelle Cluster-Konfiguration der Hosts 130 berücksichtigen. Die Arten von Bedingungen 255 werden durch die Bedingungen definiert, die einem Datenstromanwendungselement wie einem VE 235, Operator 240, Host 130, Hostpool 327 oder Auftrag zugeordnet sind. Eine Datenstromanwendung mit einem hohen Prozentsatz an Auftragsbedingungen 255 (d. h. auseinanderlegen oder zusammenlegen) kann zum Beispiel schwieriger zuzuweisen sein als eine Datenstromanwendung mit der gleichen Anzahl von Bedingungen 255 insgesamt, jedoch mit einem niedrigeren Prozentsatz an Auftragsbedingungen 255. Ein Steuerprogramm 134 kann diese Eigenschaft der Datenstromanwendung erkennen und einen Optimierungsmodus auswählen, der auf Auflösbarkeit ausgerichtet ist. Anstatt somit mit einem Optimierungsmodus 350 zu beginnen, der auf Leistung ausgerichtet ist, kann das Steuerprogramm 134 den Optimierungsmodus 350 auswählen, der Leistungskriterien und Auflösbarkeitskriterien mischt – d. h. einen Optimierungsmodus 350 von einer Gleitskala von Modi 350 auswählen. Wenn alternativ nur wenige Bedingungen 255 oder ein niedriger Prozentsatz einer bestimmten Art von Bedingung 255, die schwer zu erfüllen ist, vorhanden sind, kann das Steuerprogramm 134 entscheiden, mit einem Optimierungsmodus 350 zu beginnen, der auf Leistung ausgerichtet ist, oder es kann sogar noch mehr Auswahlkriterien 352, 354 zu einem Optimierungsmodus 350 hinzufügen, um ein gewünschtes Ziel stärker in den Mittelpunkt zu stellen.
  • Bei einer ähnlichen Ausführungsform kann das Steuerprogramm 134 einen individuell angepassten Optimierungsmodus 350 auf der Grundlage derselben Kriterien erstellen, die oben in Verbindung mit der Durchführung der Voranalyse einer Datenstromanwendung beschriebenen wurden. Das Steuerprogramm kann zum Beispiel Anzahl und Art der Bedingungen 255, die der Datenstromanwendung zugeordnet sind, sowie die aktuelle Cluster-Konfiguration der Hosts 130 berücksichtigen. Anstatt einen zuvor definierten Optimierungsmodus 350 auszuwählen, kann das Steuerprogramm 134 einen Optimierungsmodus 350 auf der Grundlage zuvor definierter Auswahlkriterien 352, 354 erstellen. Das Steuerprogramm 134 kann zum Beispiel Zugriff auf die in Tabelle 700 dargestellten Auswahlkriterien haben, die es dann verwenden kann, um einen individuell angepassten Modus 350 zu erstellen. Wenn der Auftrag anspruchsvolle Bedingungen 255 und nur eine Handvoll von verfügbaren Hosts 130 aufweist, kann das Steuerprogramm 134 Kriterien in Verbindung mit Auflösbarkeit auswählen. Das bedeutet, dass jedes Auswahlkriterium einer bestimmten Art von Optimierung (z. B. Auflösbarkeit, Leistung usw.) zugeordnet sein kann und innerhalb jeder Art über eine Rangfolge verfügen kann. Bestimmte Auswahlkriterien innerhalb einer Optimierungsart können demnach eine größere Fähigkeit zum Durchführen dieser Optimierung aufweisen als andere. Das Kriterium ”Auswahl eines Host mit der größten noch zur Verfügung stehenden Verarbeitungsleistung” kann besser zum Optimierung der Leistung geeignet sein als das Kriterium ”Auswahl des Host mit der kleinsten Anzahl von Prozessoren”. Das Steuerprogramm 134 kann einen Algorithmus nutzen, der die Eigenschaften der Datenstromumgebung verwendet und die Optimierungsart und benötigte Stärke der Auswahlkriterien ermittelt. Das Steuerprogramm 134 kann zum Beispiel das an dritter Stelle stehende Kriterium der Leistungsoptimierung und das an zweiter Stelle stehende Kriterium der Auflösbarkeitsoptimierung auswählen, um den individuell angepassten Optimierungsmodus zu erstellen. Das Steuerprogramm kann außerdem zufällige Kriterien in den individuell angepassten Modus einfügen. Indem das Steuerprogramm 134 somit Anzahl und Art der Bedingungen sowie die Cluster-Konfiguration berücksichtigt, kann es Auswahlkriterien von den verschiedenen Optimierungsarten auswählen, um einen individuell angepassten Optimierungsmodus 350 zu erzeugen.
  • Die Cluster-Konfiguration der Hosts 130 kann die Anzahl der zur Verfügung stehenden Hosts 130 beinhalten. Das Steuerprogramm 134 kann ein Gleichgewicht zwischen der Cluster-Konfiguration und der Anzahl der zu platzierenden VE 235 herstellen, d. h. ein VE/Host-Verhältnis. Wenn das Verhältnis hoch ist, kann das Steuerprogramm 134 einen Optimierungsmodus 350 verwenden, der auf Auflösbarkeit ausgerichtet ist, wenn das Verhältnis jedoch gering ist, kann das Steuerprogramm 134 einen Optimierungsmodus 350 verwenden, der auf ein anderes Ziel wie beispielsweise Kosten, Leistung, gemeinsame Nutzung von Ressourcen usw. ausgerichtet ist.
  • Zusammenfassung
  • Eine Datenstromanwendung kann einem oder mehreren Rechenknoten (oder Hosts) Verarbeitungselemente zuweisen, um ein gewünschtes Optimierungsziel zu erreichen. Jeder Optimierungsmodus kann VE-Auswahlkriterien und/oder Host-Auswahlkriterien definieren. Beim Zuweisen eines VE zu einem Host kann ein Steuerprogramm jedes VE individuell platzieren. Das Steuerprogramm kann daher die VE-Auswahlkriterien zum Auswählen des VE verwenden, das als nächstes in der Datenstromanwendung zugewiesen wird. Das Steuerprogramm kann anschließend auf der Grundlage von einer oder mehreren Bedingungen ermitteln, auf welchem Host das VE platziert werden kann. Wenn das Steuerprogramm feststellt, dass mehrere Hosts geeignete Kandidaten für das VE sind, kann es die Host-Auswahlkriterien verwenden, um einen der Kandidaten-Hosts auszusuchen, der die Datenstromanwendung weiter optimiert. Zu Beispielen von verschiedenen Optimierungszielen, die durch das Verwenden von VE- und Host-Auswahlkriterien erreicht werden können, gehören die Optimierung der Leistung, die Verringerung von Wartungs- und Betriebskosten, die Verbesserung der Auflösbarkeit, die gemeinsame Nutzung begrenzter Computerressourcen mit anderen Anwendungen und Ähnliches.
  • Der Ablaufplan und die Blockschaltbilder in den Figuren veranschaulichen die Architektur, Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in dem Ablaufplan oder den Blockschaltbildern ein Modul, Segment oder einen Teil eines Codes darstellen, das/der einen oder mehrere ausführbare Anweisungen zur Umsetzung der festgelegten Logikfunktion(en) aufweist. Es ist ferner darauf hinzuweisen, dass die im Block angegebenen Funktionen bei einigen alternativen Ausführungen in einer anderen Reihenfolge als in den Figuren dargestellt ablaufen können. Zwei aufeinanderfolgend dargestellte Blöcke können zum Beispiel tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können je nach entsprechender Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Des Weiteren ist darauf hinzuweisen, dass jeder Block der Blockschaltbilder und/oder der Ablaufplandarstellung sowie Kombinationen von Blöcken in den Blockschaltbildern und/oder der Ablaufplandarstellung durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, die die angegebenen Funktionen oder Maßnahmen durchführen, oder durch Kombinationen von spezieller Hardware und Computeranweisungen.
  • Obwohl das Vorstehende auf Ausführungsformen der vorliegenden Erfindung gerichtet ist, können andere und weitere Ausführungsformen der Erfindung entwickelt werden, ohne von deren grundlegendem Schutzbereich abzuweichen, und deren Schutzbereich wird durch die nachfolgenden Ansprüche festgelegt.

Claims (15)

  1. System, das aufweist: einen Computerprozessor; und einen Speicher, der ein Programm enthält, das, wenn es auf dem Computerprozessor ausgeführt wird, eine Operation zum Erstellen einer Datenstromanwendung durchführt, wobei das System aufweist: eine Auswahlkomponente zum Auswählen eines Verarbeitungselements aus einer Vielzahl von Verarbeitungselementen in der Datenstromanwendung auf der Grundlage von mindestens einem Verarbeitungselement-Auswahlkriterium; eine Ermittlungskomponente zum Ermitteln einer Vielzahl von Kandidaten-Rechenknoten aus einer Vielzahl von Rechenknoten, denen das Verarbeitungselement auf der Grundlage von einer oder mehreren Bedingungen zuweisbar ist; wobei die Auswahlkomponente weiterhin funktionsmäßig in der Lage ist, einen Rechenknoten auf der Grundlage von mindestens einem Rechenknoten-Auswahlkriterium aus den Kandidaten-Rechenknoten auszuwählen, wobei mindestens die Verarbeitungselement-Auswahlkriterien oder Rechenknoten-Auswahlkriterien durch einen aktuellen Optimierungsmodus für die Datenstromanwendung ermittelt werden; und eine Zuweisungskomponente zum Zuweisen des Verarbeitungselements zu dem ausgewählten Rechenknoten.
  2. System nach Anspruch 1, wobei die Vielzahl von Verarbeitungselementen funktionsmäßig in der Lage ist, einen Operatorgraphen der Vielzahl von Verarbeitungselementen zu erzeugen, wobei der Operatorgraph mindestens einen Ausführungspfad definiert und wobei mindestens eines der Verarbeitungselemente des Operatorgraphen so konfiguriert ist, dass es Daten von mindestens einem vorgelagerten Verarbeitungselement empfängt und Daten zu mindestens einem nachgelagerten Verarbeitungselement überträgt.
  3. System nach Anspruch 1 oder 2, das weiterhin aufweist: eine Erkennungskomponente zum Erkennen eines Fehlers beim Zuweisen von mindestens einem der Vielzahl von Verarbeitungselementen zu mindestens einem der Vielzahl von Rechenknoten; eine Wechselkomponente nach Erkennen des Fehlers zum Wechseln von dem aktuellen Optimierungsmodus zu einem anderen Optimierungsmodus, der aus einer Vielzahl von Optimierungsmodi ausgewählt wird; und eine Neubeginnkomponente zum Neubeginnen einer Zuweisung der Vielzahl von Verarbeitungselementen in der Datenstromanwendung.
  4. System nach Anspruch 1 oder 2, das weiterhin aufweist: eine Erkennungskomponente zum Erkennen eines Fehlers beim Zuweisen von mindestens einem der Vielzahl von Verarbeitungselementen zu mindestens einem der Vielzahl von Rechenknoten; eine Hinzufügungskomponente zum Hinzufügen eines zufälligen Kriteriums in mindestens die Verarbeitungselement-Auswahlkriterien oder Computerknoten-Auswahlkriterien nach Erkennen des Fehlers, wobei das zufällige Kriterium zufällig (i) den Rechenknoten von den Kandidaten-Rechenknoten ermittelt oder (ii) ein anderes Kriterium bewertet; und eine Neubeginnkomponente zum Neubeginnen einer Zuweisung der Vielzahl von Verarbeitungselementen in der Datenstromanwendung.
  5. System nach einem der vorherigen Ansprüche, das weiterhin vor dem Auswählen des Verarbeitungselements aus einer Vielzahl von Verarbeitungselementen eine Auswahlkomponente zum Auswählen des aktuellen Optimierungsmodus aus einer Vielzahl von Optimierungsmodi auf der Grundlage von mindestens einer Anzahl der Bedingungen, einer Art jeder Bedingung oder einer Anzahl der Vielzahl von Rechenknoten aufweist, wobei der aktuelle Optimierungsmodus mindestens eine Auflösbarkeit der Datenstromanwendung, eine Leistung der Datenstromanwendung, Kosten zum Ausführen der Datenstromanwendung oder eine Cluster-Konfiguration der Datenstromanwendung optimiert.
  6. System nach einem der vorherigen Ansprüche, das weiterhin aufweist: eine Zuweisungskomponente zum Zuweisen jedes Verarbeitungselements der Vielzahl von Verarbeitungselementen in der Datenstromanwendung; eine Wechselkomponente zum Wechseln von dem aktuellen Optimierungsmodus zu einem anderen Optimierungsmodus, der aus einer Vielzahl von Optimierungsmodi ausgewählt wird, als Reaktion auf die zum Zuweisen jedes Verarbeitungselements aus der Vielzahl von Verarbeitungselementen benötigten Zeit, die ein Zeitlimit überschreitet; und eine Neubeginnkomponente zum Neubeginnen einer Zuweisung der Vielzahl von Verarbeitungselementen in der Datenstromanwendung.
  7. Computerimplementiertes Verfahren zum Erstellen einer Datenstromanwendung, das aufweist: Auswählen eines Verarbeitungselements aus einer Vielzahl von Verarbeitungselementen in der Datenstromanwendung auf der Grundlage von mindestens einem Verarbeitungselement-Auswahlkriterium durch den Betrieb von einem oder mehreren Computerprozessoren; Ermitteln einer Vielzahl von Kandidaten-Rechenknoten aus einer Vielzahl von Rechenknoten, denen das Verarbeitungselement auf der Grundlage von einer oder mehreren Bedingungen zuweisbar ist; Auswählen eines Rechenknotens aus den Kandidaten-Rechenknoten auf der Grundlage von mindestens einem Rechenknoten-Auswahlkriterium, wobei mindestens die Verarbeitungselement-Auswahlkriterien oder Rechenknoten-Auswahlkriterien durch einen aktuellen Optimierungsmodus für die Datenstromanwendung ermittelt werden; und Zuweisen des Verarbeitungselements zu dem ausgewählten Rechenknoten.
  8. Verfahren nach Anspruch 7, wobei die Vielzahl von Verarbeitungselementen einen Operatorgraphen der Vielzahl von Verarbeitungselementen erstellt, wobei der Operatorgraph mindestens einen Ausführungspfad definiert und wobei mindestens eines der Verarbeitungselemente des Operatorgraphen so konfiguriert ist, dass es Daten von mindestens einem vorgelagerten Verarbeitungselement empfängt und Daten zu mindestens einem nachgelagerten Verarbeitungselement überträgt.
  9. Verfahren nach Anspruch 7 oder 8, das weiterhin aufweist: Erkennen eines Fehlers beim Zuweisen von mindestens einem der Vielzahl von Verarbeitungselementen zu mindestens einem der Vielzahl von Rechenknoten; Wechseln von dem aktuellen Optimierungsmodus nach Erkennen des Fehlers zu einem anderen Optimierungsmodus, der aus einer Vielzahl von Optimierungsmodi ausgewählt wird; und Neubeginnen einer Zuweisung der Vielzahl von Verarbeitungselementen in der Datenstromanwendung.
  10. Verfahren nach Anspruch 7 oder 8, das weiterhin aufweist: Erkennen eines Fehlers beim Zuweisen von mindestens einem der Vielzahl von Verarbeitungselementen zu mindestens einem der Vielzahl von Rechenknoten; Hinzufügen eines zufälligen Kriteriums zu mindestens den Verarbeitungselement-Auswahlkriterien oder Computerknoten-Auswahlkriterien nach Erkennen des Fehlers, wobei das zufällige Kriterium zufällig (i) den Rechenknoten von den Kandidaten-Rechenknoten ermittelt oder (ii) ein anderes Kriterium bewertet; und Neubeginnen einer Zuweisung der Vielzahl von Verarbeitungselementen in der Datenstromanwendung.
  11. Verfahren nach einem der Ansprüche 7 bis 10, das weiterhin vor dem Auswählen des Verarbeitungselements aus der Vielzahl von Verarbeitungselementen ein Auswählen des aktuellen Optimierungsmodus aus einer Vielzahl von Optimierungsmodi auf der Grundlage von mindestens einer Anzahl der Bedingungen, einer Art jeder Bedingung oder einer Anzahl der Vielzahl von Rechenknoten aufweist, wobei der aktuelle Optimierungsmodus mindestens eine Auflösbarkeit der Datenstromanwendung, eine Leistung der Datenstromanwendung, Kosten zum Ausführen der Datenstromanwendung oder eine Cluster-Konfiguration der Datenstromanwendung optimiert.
  12. Verfahren nach Anspruch 7 bis 11, das weiterhin aufweist: Zuweisen jedes Verarbeitungselements der Vielzahl von Verarbeitungselementen in der Datenstromanwendung; wenn die zum Zuweisen jedes Verarbeitungselements der Vielzahl von Verarbeitungselementen benötigte Zeit ein Zeitlimit überschreitet, Wechseln von dem aktuellen Optimierungsmodus zu einem anderen Optimierungsmodus, der aus einer Vielzahl von Optimierungsmodi ausgewählt wird; und Neubeginnen einer Zuweisung der Vielzahl von Verarbeitungselementen in der Datenstromanwendung.
  13. Verfahren nach einem der Ansprüche 7 bis 12, das weiterhin vor dem Auswählen des Verarbeitungselements aus der Vielzahl von Verarbeitungselementen ein Erzeugen des aktuellen Operationsmodus auf der Grundlage von (i) mindestens einer Anzahl der Bedingungen, einer Art jeder Bedingung oder einer Anzahl der Vielzahl von Rechenknoten und (ii) einem Satz von mindestens zuvor definierten Element-Auswahlkriterien oder Rechenknoten-Auswahlkriterien aufweist.
  14. Computerprogrammprodukt zum Erstellen einer Datenstromanwendung, wobei das Computerprogrammprodukt aufweist: ein computerlesbares Speichermedium, das von einer Verarbeitungsschaltung lesbar ist und Anweisungen speichert, die von der Verarbeitungsschaltung zum Durchführen eines Verfahrens nach den Ansprüchen 7 bis 13 durchgeführt werden.
  15. Computerprogramm, das auf einem computerlesbaren Medium gespeichert ist und in den internen Speicher eines digitalen Computers ladbar ist, wobei das Computerprogramm Software-Codeteile aufweist, wenn das Programm auf einem Computer ausgeführt wird, um das Verfahren nach einem der Ansprüche 7 bis 13 durchzuführen.
DE112012005030.4T 2011-12-01 2012-11-29 Dynamisch konfigurierbare Platzierungs-Engine Pending DE112012005030T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/308,800 US8898505B2 (en) 2011-12-01 2011-12-01 Dynamically configureable placement engine
US13/308,800 2011-12-01
PCT/IB2012/056823 WO2013080152A1 (en) 2011-12-01 2012-11-29 Dynamically configurable placement engine

Publications (1)

Publication Number Publication Date
DE112012005030T5 true DE112012005030T5 (de) 2014-08-28

Family

ID=48524860

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112012005030.4T Pending DE112012005030T5 (de) 2011-12-01 2012-11-29 Dynamisch konfigurierbare Platzierungs-Engine

Country Status (3)

Country Link
US (2) US8898505B2 (de)
DE (1) DE112012005030T5 (de)
WO (1) WO2013080152A1 (de)

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9007961B2 (en) 2010-11-22 2015-04-14 May Patents Ltd. Apparatus and method for using and solving linear programming problem and applications thereof
US8874751B2 (en) 2011-12-01 2014-10-28 International Business Machines Corporation Candidate set solver with user advice
US10554782B2 (en) 2011-12-01 2020-02-04 International Business Machines Corporation Agile hostpool allocator
US8898505B2 (en) 2011-12-01 2014-11-25 International Business Machines Corporation Dynamically configureable placement engine
US10157060B2 (en) 2011-12-29 2018-12-18 Intel Corporation Method, device and system for control signaling in a data path module of a data stream processing engine
US9628399B2 (en) * 2013-03-14 2017-04-18 International Business Machines Corporation Software product instance placement
US9384302B2 (en) 2013-06-17 2016-07-05 International Business Machines Corporation Generating differences for tuple attributes
CN104298556B (zh) 2013-07-17 2018-01-09 华为技术有限公司 流处理单元的分配方法及装置
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
WO2015149350A1 (zh) * 2014-04-04 2015-10-08 华为技术有限公司 一种数据处理方法及系统
US9716738B2 (en) 2014-05-13 2017-07-25 International Business Machines Corporation Deploying a portion of a streaming application to one or more virtual machines according to cost
US9614740B2 (en) 2014-05-13 2017-04-04 International Business Machines Corporation Multifusion of a stream operator in a streaming application
DE102014007308A1 (de) * 2014-05-17 2015-11-19 Diehl Bgt Defence Gmbh & Co. Kg Verfahren zum Betreiben eines bodengebundenen Luftabwehrsystems
US9569221B1 (en) * 2014-09-29 2017-02-14 Amazon Technologies, Inc. Dynamic selection of hardware processors for stream processing
CN104317556B (zh) * 2014-10-22 2018-03-16 华为技术有限公司 一种流式应用升级方法、主控节点及流计算系统
US10505862B1 (en) * 2015-02-18 2019-12-10 Amazon Technologies, Inc. Optimizing for infrastructure diversity constraints in resource placement
US10715460B2 (en) * 2015-03-09 2020-07-14 Amazon Technologies, Inc. Opportunistic resource migration to optimize resource placement
US11336519B1 (en) * 2015-03-10 2022-05-17 Amazon Technologies, Inc. Evaluating placement configurations for distributed resource placement
US9531602B1 (en) 2015-07-27 2016-12-27 International Business Machines Corporation Processing element placement tool
US10455007B2 (en) 2016-07-14 2019-10-22 International Business Machines Corporation Managing asset placement with respect to a distributed computing environment having a set of hosts
US10616316B2 (en) * 2016-09-15 2020-04-07 International Business Machines Corporation Processing element host management in a stream computing environment
US10341189B2 (en) 2016-09-22 2019-07-02 International Business Machines Corporation Operator fusion management in a stream computing environment
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US20180203901A1 (en) 2017-01-17 2018-07-19 International Business Machines Corporation Operator fusion management in a stream computing environment
US10797943B2 (en) 2017-04-12 2020-10-06 International Business Machines Corporation Configuration management in a stream computing environment
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US11086816B2 (en) * 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US11121981B1 (en) 2018-06-29 2021-09-14 Amazon Technologies, Inc. Optimistically granting permission to host computing resources
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US11102258B2 (en) * 2018-07-10 2021-08-24 International Business Machines Corporation Stream processing without central transportation planning
US10901853B2 (en) * 2018-07-17 2021-01-26 International Business Machines Corporation Controlling processing elements in a distributed computing environment
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US11190565B2 (en) * 2019-01-10 2021-11-30 International Business Machines Corporation Operator to processing element assignment in an active stream processing job
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
CN111796917A (zh) * 2019-04-09 2020-10-20 华为技术有限公司 算子运算调度方法和装置
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
CN113037800B (zh) * 2019-12-09 2024-03-05 华为云计算技术有限公司 作业调度方法以及作业调度装置
EP4057142A4 (de) * 2019-12-09 2022-12-21 Huawei Cloud Computing Technologies Co., Ltd. Jobplanungsverfahren und jobplanungsvorrichtung
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
CN111860650A (zh) * 2020-07-21 2020-10-30 苏州浪潮智能科技有限公司 一种基于tvm的并行卷积融合的方法和设备

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6081812A (en) 1998-02-06 2000-06-27 Ncr Corporation Identifying at-risk components in systems with redundant components
US6097886A (en) 1998-02-17 2000-08-01 Lucent Technologies Inc. Cluster-based hardware-software co-synthesis of heterogeneous distributed embedded systems
US6393473B1 (en) 1998-12-18 2002-05-21 Cisco Technology, Inc. Representing and verifying network management policies using collective constraints
US20040039815A1 (en) 2002-08-20 2004-02-26 Compaq Information Technologies Group, L.P. Dynamic provisioning system for a network of computers
US7676788B1 (en) 2003-03-25 2010-03-09 Electric Cloud, Inc. Architecture and method for executing program builds
US7539976B1 (en) 2003-03-25 2009-05-26 Electric Cloud, Inc. System and method for intelligently distributing source files within a distributed program build architecture
US7467102B2 (en) 2003-09-11 2008-12-16 International Business Machines Corporation Request type grid computing
US7676552B2 (en) * 2004-02-11 2010-03-09 International Business Machines Corporation Automatic provisioning of services based on a high level description and an infrastructure description
US20050177600A1 (en) * 2004-02-11 2005-08-11 International Business Machines Corporation Provisioning of services based on declarative descriptions of a resource structure of a service
CN1744593B (zh) 2004-08-30 2010-04-28 普天信息技术研究院 一种传输链路的选择方法
US7596574B2 (en) 2005-03-30 2009-09-29 Primal Fusion, Inc. Complex-adaptive system for providing a facted classification
GB0513045D0 (en) * 2005-06-27 2005-08-03 Vidus Ltd Resource scheduling method and system
US7493406B2 (en) 2006-06-13 2009-02-17 International Business Machines Corporation Maximal flow scheduling for a stream processing system
US7613848B2 (en) 2006-06-13 2009-11-03 International Business Machines Corporation Dynamic stabilization for a stream processing system
EP2040658A4 (de) 2006-06-30 2011-06-29 Sca Hygiene Prod Ab Deckschicht für einen saugfähigen artikel
US8082549B2 (en) * 2006-11-08 2011-12-20 Board Of Regents, The University Of Texas System System, method and apparatus for allocating resources by constraint selection
US20080174598A1 (en) 2007-01-12 2008-07-24 Max Risenhoover Design visualization system, apparatus, article and method
US8125950B2 (en) 2007-01-31 2012-02-28 Broadcom Corporation Apparatus for wirelessly managing resources
US8134724B2 (en) 2007-03-13 2012-03-13 International Business Machines Corporation Policy based system and method for optimizing output device submission, use and wait times
US7899861B2 (en) 2007-04-02 2011-03-01 International Business Machines Corporation Method for declarative semantic expression of user intent to enable goal-driven stream processing
US7657855B1 (en) * 2007-05-25 2010-02-02 Xilinx, Inc. Efficient timing graph update for dynamic netlist changes
US8458720B2 (en) 2007-08-17 2013-06-04 International Business Machines Corporation Methods and systems for assigning non-continual jobs to candidate processing nodes in a stream-oriented computer system
US8095512B2 (en) 2007-11-19 2012-01-10 International Business Machines Corporation Managing database resources used for optimizing query execution on a parallel computer system
JP5256744B2 (ja) * 2008-01-16 2013-08-07 日本電気株式会社 資源割当てシステム、資源割当て方法及びプログラム
US8943509B2 (en) 2008-03-21 2015-01-27 International Business Machines Corporation Method, apparatus, and computer program product for scheduling work in a stream-oriented computer system with configurable networks
US8291006B2 (en) 2008-05-30 2012-10-16 International Business Machines Corporation Method for generating a distributed stream processing application
US8949810B2 (en) 2008-06-16 2015-02-03 International Business Machines Corporation Method for high-performance data stream processing
US7856544B2 (en) 2008-08-18 2010-12-21 International Business Machines Corporation Stream processing in super node clusters of processors assigned with stream computation graph kernels and coupled by stream traffic optical links
US8255554B2 (en) 2009-05-14 2012-08-28 International Business Machines Corporation Application resource model composition from constituent components
US8490072B2 (en) 2009-06-23 2013-07-16 International Business Machines Corporation Partitioning operator flow graphs
US20110246549A1 (en) 2010-04-01 2011-10-06 Microsoft Corporation Adaptive distribution of the processing of highly interactive applications
US9069610B2 (en) 2010-10-13 2015-06-30 Microsoft Technology Licensing, Llc Compute cluster with balanced resources
US8769500B2 (en) 2010-10-29 2014-07-01 Fujitsu Limited Node computation initialization technique for efficient parallelization of software analysis in a distributed computing environment
US10554782B2 (en) 2011-12-01 2020-02-04 International Business Machines Corporation Agile hostpool allocator
US8874751B2 (en) 2011-12-01 2014-10-28 International Business Machines Corporation Candidate set solver with user advice
US8898505B2 (en) 2011-12-01 2014-11-25 International Business Machines Corporation Dynamically configureable placement engine

Also Published As

Publication number Publication date
US8898505B2 (en) 2014-11-25
WO2013080152A1 (en) 2013-06-06
US20130145203A1 (en) 2013-06-06
US20130145121A1 (en) 2013-06-06
US8868963B2 (en) 2014-10-21
CN103988194A (zh) 2014-08-13

Similar Documents

Publication Publication Date Title
DE112012005030T5 (de) Dynamisch konfigurierbare Platzierungs-Engine
DE112013000752B4 (de) Verwalten von Verarbeitungselementen in einem Streaming-Datensystem
DE102013207049B4 (de) Überwachen der Datenstrompufferung zur Optimierung der Operatorverarbeitung
DE102018006894A1 (de) Technologien zum Auslagern von Beschleunigungsaufgaben-Ablaufplanungsoperationen an Beschleunigerschlitten
DE102012216029B4 (de) Ein skalierbares anpassungsfähiges map-reduce-rahmenwerk mit verteilten daten
DE112012004747B4 (de) Verborgenes automatisiertes Spiegeln von Daten für native Schnittstellen in verteilten virtuellen Maschinen
DE112011101109B4 (de) Übertragung von Map/Reduce-Daten auf der Grundlage eines Speichernetzwerkes oder eines Speichernetzwerk-Dateisystems
DE112016005536T5 (de) Bestimmen von reihenfolgen einer ausführung eines neuronalen netzes
DE112010003144T5 (de) Erweiterbare Grundstruktur zur Unterstützung verschiedener Einsatzarchitekturen
DE112011101469T5 (de) Kompilieren von Software für ein hierarchisches verteiltes Verarbeitungssystem
DE112012004238T5 (de) Auf Erkennung beruhende Identifizierung und Migration von leicht in eine Cloud verlagerbaren Anwendungen
DE112013000656T5 (de) System und Verfahren zum Verringern der Speichernutzung durch optimales Platzieren von virtuellen Maschinen in einem virtualisierten Rechenzentrum
DE112012005639T5 (de) Auslösen von Fensterbedingungen bei Anwendungen des Stream-Computing
DE112012000693T5 (de) Ausführen einer Vielzahl von Instanzen einer Anwendung
DE112011103875T5 (de) Netzwerkschnittstelle zum Bereitstellen/erneuten Bereitstellen elner Partition in einer Cloud-Umgebung
DE202014010940U1 (de) Dynamische Shuffle-Rekonfiguration
DE112015004564B4 (de) Ereignisgesteuerte Reoptimierung einer logisch partitionierten Umgebung zur Energieverwaltung
DE112013000904T5 (de) Durchführen von Aktualisierungen von Quellcode, der auf einer Vielzahl von Rechenknoten ausgeführt wird
DE112021003908T5 (de) Föderales maschinenlernen durch verwenden von ortsabhängigem hashing
DE112017003294T5 (de) Technologien für ein skalierbares Senden und Empfangen von Paketen
DE102012224492A1 (de) Auslösen von Fensterbedingungen unter Verwendung einer Ausnahmebehandlung
DE102017213160B4 (de) Kompilierung für knotenvorrichtungs-GPU-basierte Parallelverarbeitung
DE202014010924U1 (de) Nichtflüchtiges Shuffle-System
DE102012204167A1 (de) Vorauslaufende genäherte Berechnungen
DE112010004809T5 (de) Mehrfachgranulare Datenstromverarbeitung

Legal Events

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