DE202015009298U1 - Dynamische Anpassung von Shard-Zuweisungen - Google Patents

Dynamische Anpassung von Shard-Zuweisungen Download PDF

Info

Publication number
DE202015009298U1
DE202015009298U1 DE202015009298.5U DE202015009298U DE202015009298U1 DE 202015009298 U1 DE202015009298 U1 DE 202015009298U1 DE 202015009298 U DE202015009298 U DE 202015009298U DE 202015009298 U1 DE202015009298 U1 DE 202015009298U1
Authority
DE
Germany
Prior art keywords
task
input field
completion time
tasks
input
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE202015009298.5U
Other languages
English (en)
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of DE202015009298U1 publication Critical patent/DE202015009298U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

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)
  • Debugging And Monitoring (AREA)

Abstract

Ein nichtflüchtiges computerlesbares Medium, das Instruktionen speichert, deren Ausführung mindestens einen Prozessor zur Ausführung von Operationen veranlasst, umfassend: das Bestimmen einer Zielfertigstellungszeit für eine Batch-Verarbeitungsoperation einer Eingabedatenmenge; die Batch-Verarbeitungsoperation wird ausgeführt von einer Vielzahl von Tasks; jeder dieser Vielzahl von Tasks verarbeitet einen anderen Eingabeshard, der einen jeweils anderen Teil der Eingabedatenmenge enthält; das Identifizieren eines ersten Tasks aus der Vielzahl von Tasks mit einer geschätzten Fertigstellungszeit größer der Zielfertigstellungszeit der Batch-Verarbeitungsoperation, wobei die geschätzte Fertigstellungszeit eine geschätzte Zeitspanne darstellt, in der der erste Task die Verarbeitung des Teils der Eingabedatenmenge beenden wird, der als erster Shard vom ersten Task verarbeitet wird; und das Aufteilen des ersten Eingabeshards in einen ersten Teileingabeshard und einen zweiten Teileingabeshard, der sich vom ersten Teileingabeshard unterscheidet, wobei der erste Teileingabeshard einen ersten Teil des ersten Eingabeshards und der zweite Teileingabeshard einen zweiten Teil des ersten Eingabeshards enthält, der sich vom ersten Teil unterscheidet.

Description

  • HINTERGRUND
  • Großangelegte Datenverarbeitung kann parallele Verarbeitungen enthalten, die im Allgemeinen das gleichzeitige Ausführen einer Operation über jedes Element einer großen Datenmenge beinhaltet. Die Datenmenge kann in kleinere Einheiten, bekannt als „Shards”, aufgeteilt werden und parallel von verschiedenen Prozessen und/oder Geräten bearbeitet werden.
  • Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.
  • ZUSAMMENFASSUNG
  • Die vorliegende Offenbarung steht in Zusammenhang mit der dynamischen Anpassung von Shard-Zuweisungen während paralleler Verarbeitungsoperationen.
  • Im Allgemeinen kann ein innovativer Aspekt des in dieser Spezifikation beschriebenen Gegenstands in Methoden verkörpert werden, die Folgendes beinhalten: die Bestimmung einer Zielfertigstellungszeit für die Batch-Verarbeitung einer Eingabedatenmenge, wobei dieser Batch-Verarbeitungsvorgang durch eine Vielzahl an Tasks ausgeführt wird und jeder dieser Tasks einen anderen Eingabeshard bearbeitet, der einen anderen Teil der Eingabedatenmenge enthält; die Identifizierung eines ersten Tasks aus dieser Vielzahl an Tasks, der eine geschätzte Fertigstellungszeit größer der Zielfertigstellungszeit des Batch-Verarbeitungsvorgangs hat, wobei die geschätzte Fertigstellungszeit eine geschätzte Zeit darstellt, nach der der erste Task die Verarbeitung des Teiles der Eingabedatenmenge beendet haben wird, der den ersten Eingabeshard, verarbeitet vom ersten Task, beinhaltet; sowie die Aufteilung des ersten Eingabeshards in einen ersten Teileingabeshard und einen zweiten Teileingabeshard, der sich vom ersten Teileingabeshard unterscheidet, wobei der erste Teileingabeshard einen ersten Teil des ersten Eingabeshards enthält und der zweite Teileingabeshard einen zweiten Teil des ersten Eingabeshards enthält, der sich vom ersten Teil unterscheidet.
  • Weitere Ausführungsformen dieses Aspektes umfassen entsprechende Systeme, Apparate und Computerprogramme, die so konfiguriert sind, dass sie die auf Computerspeichergeräten kodierten Handlungen des Verfahrens ausführen.
  • Bestimmte Ausführungsformen des in dieser Spezifikation beschriebenen Gegenstands können so implementiert werden, dass sie einen oder mehrere der folgenden Vorteile verwirklichen. Indem die Zuweisung von Shards während eines Verarbeitungsvorgangs dynamisch erfolgt, kann die Shard-Zuweisung besser optimiert werden, da mehr Informationen über jeden einzelnen Shard zur Verfügung stehen, wie seine Größe, Komplexität, durchschnittliche Verarbeitungsrate und andere Informationen. Die Adaptierung der Shard-Zuweisung auf diese Weise erlaubt auch das Ändern der Zuweisung als Antwort auf beobachtete Umstände, wie einen Task (z. B. eine Rechenressource), der einen Shard langsamer als erwartet verarbeitet, oder das Freiwerden zusätzlicher Rechenressourcen.
  • Die Details einer oder mehrerer Ausführungsformen des in dieser Spezifikation behandelten und beschriebenen Gegenstands sind in den begleitenden Bildern und der Beschreibung unten dargelegt. Andere Merkmale, Aspekte und Vorteile des Gegenstands werden aus der Beschreibung, den Zeichnungen und den Ansprüchen deutlich.
  • BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockdiagramm einer Umgebung, in der eine dynamische Anpassung der Shard-Zuweisung während paralleler Verarbeitungsvorgänge auftreten kann.
  • 2A–B sind Blockdiagramme von Systemkonfigurationen vor und nach der Teilung eines Shards.
  • 3 ist ein Sequenzdiagramm eines Beispielprozesses zur dynamischen Anpassung der Shard-Zuweisung während eines parallelen Verarbeitungsvorgangs.
  • 4 ist ein Flussdiagramm eines Beispielprozesses zur dynamischen Anpassung der Shard-Zuweisung während paralleler Verarbeitungsvorgänge.
  • 5 ist ein Blockdiagramm eines exemplarischen Rechnergeräts.
  • Entsprechende Referenznummern und Kennzeichnungen in den verschiedenen Zeichnungen zeigen entsprechende Elemente an.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Anwendungen zur großangelegten parallelen Verarbeitung müssen große Eingabedatenbestände zur Verarbeitung durch eine Basis von Tasks (z. B. Rechenressourcen) verteilen. Dies kann geschehen, indem der Eingabedatenbestand in kleinere Teile oder „Shards” aufgeteilt wird und diese Shards verfügbaren Tasks zugewiesen werden. In Fällen, die heterogene Eingabedatenbestände, Task-Ausführungsumgebungen, Netzwerkbedingungen oder andere verschiedene Faktoren beinhalten, kann es schwierig sein, den Eingabedatenbestand gleichmäßig aufzuteilen, so dass jeder Task seinen zugewiesenen Shard in einem ähnlichen Zeitraum verarbeitet. Große Unterschiede in der Verarbeitungszeit von Shard können dazu führen, dass „Nachzügler”-Shards entstehen, deren Verarbeitung sehr viel länger dauert als die der anderen Shards. Nachzügler-Shards können die Gesamtlaufzeit einer bestimmten Aufgabe dominieren, wenn die Aufgabe voraussetzt, dass vor ihrer Beendigung alle Shards verarbeitet wurden. Des Weiteren können Nachzügler-Shards problematisch sein, wenn die Rechenergebnisse des Tasks nicht auf einem Dauerspeicher, wie z. B. einer externen Festplatte, abgelegt werden. Auf Grund der vorher erwähnten Heterogenität kann die Verarbeitung eines bestimmten Teils des Eingabedatenbestands sehr langsam sein oder mehr Datensätze als erwartet enthalten. Falls der Task, der den Shard verarbeitet, fehlschlägt, bevor seine Ausgaben dauerhaft gespeichert wurden, kann der gesamte Fortschritt verlorengehen. Falls das System wartet, bis ein gesamter Shard verarbeitet wurde, bevor es seine Ergebnisse abspeichert, muss möglicherweise ein großer Teil der Arbeit erneut ausgeführt werden. Erhebliche Shardgrößen können ein solches Problem verschlimmern.
  • Kleine Shardgrößen können ebenfalls zu Problemen führen, wie dem zusätzlichen Overhead beim Zuweisen und Verwalten einer höheren Anzahl von Shards und dem Bedarf an Tasks, um während der Verarbeitung den Beginn jedes Shards zu suchen, statt sequenziell größere Shards einzulesen.
  • Die vorliegende Offenbarung steht in Zusammenhang mit der dynamischen Anpassung von Shard-Zuweisungen während paralleler Verarbeitungsoperationen. Ein Beispiel enthält einen zentralen Datenbehälter von noch nicht zugewiesenen Shards, eine Basis von Tasks und eine Überwachungseinheit. Anfangs zerteilt die Überwachungseinheit einen Eingabedatenbestand in genug Shards, um jeden Task zu beschäftigen. Jeder Task beobachtet dann seinen eigenen Fortschritt bei der Verarbeitung seines Shards. Basierend auf den Beobachtungen eines Tasks veröffentlicht er eine Schätzung, wann er mit der Verarbeitung seines Shards fertig sein wird. Die Überwachungseinheit beobachtet diese Schätzungen. Wenn es keine nicht zugeteilten Shards mehr gibt und mindestens ein Task nicht mehr beschäftigt ist, hat die parallele Verarbeitungsoperation eine „Endphase” erreicht. Wenn dies geschieht, schätzt die Überwachungseinheit in manchen Fällen, wann der Auftrag erledigt sein wird, basierend auf den veröffentlichten Schätzungen der Tasks und unter der Voraussetzung eines perfekten Shard-/Lastausgleichs. Die Schätzung entspricht der Situation, dass jeder Task zur selben Zeit fertig wird, und kann ein Durchschnitt der verbleibenden Zeit jedes Tasks sein, wobei die verbleibende Zeit untätiger Tasks als Null gezählt wird. Die Überwachungseinheit übermittelt diese Schätzung, wann die Operation abgeschlossen sein sollte (die „Deadline” oder Zielfertigstellungszeit), an die Tasks. In manchen Fällen kann die Überwachungseinheit periodisch Schätzungen übermitteln, während die Ausführung läuft, statt in oder zusätzlich zu der Endphase der Operation.
  • Beim Empfang der Zielfertigstellungszeit schätzt jeder Task, einen wie großen Teil seines Shards er bis zum Erreichen der Zielfertigstellungszeit verarbeiten kann. Falls der Task seine Ausführung vor Erreichen der Zielfertigstellungszeit beenden kann, führt er seine Verarbeitung normal weiterhin aus. Falls nicht, schätzt der Task, einen wie großen Teil des Shards er bis zum Erreichen der Zielfertigstellungszeit verarbeiten kann. Zum Beispiel kann der Task annehmen, dass seine durchschnittliche Verarbeitungsrate konstant bleiben wird. Basierend auf dieser Schätzung teilt der Task seinen Shard in einen ersten und einen zweiten Teil auf. Der erste Teil enthält den Teil des Shards, den der Task voraussichtlich bis zum Erreichen der Zielfertigstellungszeit verarbeiten kann. Der zweite Teil enthält den Teil des Shards, den der Task voraussichtlich nicht fertigstellen kann. Der Task gibt den zweiten Teil an die Überwachungseinheit zurück. Untätige Tasks holen sich dann Shards aus den zurückgegebenen zweiten Teilen zur Verarbeitung. Es ist zu beachten, dass eine Operation die „Endphase” während ihrer Ausführung mehrere Male betreten und verlassen kann und dass sich der Zyklus der Bekanntmachung einer geschätzten Fertigstellungszeit und das Aufteilen von Shards durch Tasks während der Ausführung mehrere Male wiederholen kann.
  • Ein anderes Beispiel enthält eine Methode, die die Zielfertigstellungszeit für einen Batch-Verarbeitungsprozess einer Eingabedatenmenge, ausgeführt von einer Vielzahl an Tasks, ermitteln kann. Jeder der vielen Tasks verarbeitet einen Eingabeshard, der jeweils einen anderen Teil der Eingabedatenmenge darstellt. Aus der Vielzahl an Tasks wird ein erster Task identifiziert, der einen ersten Eingabeshard verarbeitet und eine geschätzte Fertigstellungszeit größer der Zielfertigstellungszeit des Batch-Verarbeitungsprozesses hat. Als Antwort darauf wird der erste Eingabeshard in mehrere verschiedene Eingabeshards aufgeteilt, die alle einen Teil des ersten Eingabeshards enthalten. Die verschiedenen Eingabeshards können dann verschiedenen Tasks zur Verarbeitung zugewiesen werden.
  • Diese Merkmale und weitere Merkmale sind nachstehend detaillierter beschrieben.
  • 1 ist ein Blockdiagramm einer Umgebung 100, in der eine dynamische Anpassung der Shard-Zuweisung während paralleler Verarbeitungsvorgänge auftreten kann. Wie dargestellt, enthält die Umgebung 100 eine parallele Verarbeitungsoperation 101 inklusive einer Vielzahl von Tasks 102a–n, die die Vielzahl an Shards 104a–n verarbeiten. Die parallele Verarbeitungsoperation 101 wird überwacht von der Überwachungseinheit 108. In der Operation wird eine Eingabedatenmenge 110 in die Shards 104a–n aufgeteilt, um von den Tasks 102a–n verarbeitet zu werden. Die Tasks 102a–n verarbeiten die Shards 104a–n, um die Ausgabedatenmenge 112 zu erzeugen.
  • Die Umgebung 100 enthält eine parallele Verarbeitungsoperation 101. In manchen Implementationen kann die parallele Verarbeitungsoperation 101 ein beliebiger Typ von verteilter Verarbeitungsanwendung sein, wie z. B. eine Abbildungsreduzierung, eine Pipeline, eine verteilte Anfrage oder ein anderer Typ von Anwendung. Die parallele Verarbeitungsoperation 101 kann dazu konfiguriert sein, auf einem oder mehreren Servern ausgeführt zu werden, die durch Netzwerkkommunikation miteinander verbunden sind. In manchen Fällen kann die parallele Verarbeitungsoperation 101 zusätzliche Komponenten außer den für die Aufteilung der Eingabedatenmenge 110 in die Shards 104a–n zur Verarbeitung durch die Tasks 102a–n dargestellten beinhalten. In manchen Fällen kann die Überwachungseinheit 108 diese Operation ausführen. Die Tasks 102a–n können ebenfalls die Aufteilungsoperation durchführen.
  • Die parallele Verarbeitungsoperation 101 enthält die Tasks 102a–n. In der Operation verarbeiten die Tasks 102a–n die ihnen zugehörigen Shards 104a–n. In manchen Fällen können die Tasks 102a–n jeder dieselben Verarbeitungsoperationen auf die jeweiligen Shards 104a–n anwenden. Die Tasks 102a–n können Softwareprozesse sein, die auf einem oder mehreren Server ausgeführt werden. In manchen Fällen kann der Thread der Tasks 102a verschiedene Arten von Komponenten beinhalten, wie z. B. Abbilder, Reduzierer, Mischer, Kombinierer, Pipeline-Objekte oder andere Typen von Komponenten.
  • Die Überwachungseinheit 108 überwacht die parallele Verarbeitungsoperation 101, indem sie mit den Tasks 102a–n kommuniziert. In manchen Implementationen ist die Überwachungseinheit 108 ein Softwareprozess oder ein Set von Softwareprozessen, die auf einem oder mehreren Servern ausgeführt werden. Die Überwachungseinheit 108 kann mit den Tasks 102a–n über ein Netzwerk (nicht dargestellt) kommunizieren. Die Kommunikation kann den Austausch von Statusinformationen von den Tasks 102a–n hin zur Überwachungseinheit 108 enthalten. Die Kommunikation kann außerdem Angaben der Überwachungseinheit 108 bezüglich Statistiken für die parallele Verarbeitungsoperation 101 enthalten, wie etwa die Zielfertigstellungszeit (siehe weiter unten). In manchen Fällen kann die Überwachungseinheit 108 die Operation der Tasks 102a–n kontrollieren, wie z. B. das Pausieren der Tasks 102a–n, das Fortsetzen der Tasks 102a–n, die Zuweisung von Shards an die Tasks 102a–n, das Aufteilen der Tasks 102a–n oder andere Operationen.
  • Wie dargestellt verarbeitet die parallele Verarbeitungsoperation 101 die Eingabedatenmenge 110. Die Eingabedatenmenge 110 kann jede Kombination von strukturierten oder unstrukturierten Daten enthalten, wie z. B. Schlüsselwertpaare, Dateien, Datenbankzeilen, Datenbankspalten oder andere Arten von Daten. Ebenso kann die von der parallelen Verarbeitungsoperation 101 erzeugte Ausgabedatenmenge 112 jede Kombination von strukturierten oder unstrukturierten Daten enthalten, wie z. B. Schlüsselwertpaare, Dateien, Datenbankzeilen, Datenbankspalten oder andere Arten von Daten. In manchen Fällen können die Arten von Daten in der Ausgabedatenmenge 112 die gleichen wie die in der Eingabedatenmenge 110 sein. Die Ausgabedatenmenge 112 kann auch andere Arten von Daten als die Eingabedatenmenge 110 enthalten. In manchen Implementationen kann die parallele Verarbeitungsoperation 101 keine Ausgabedatenmenge erstellen, wie z. B. für Operationen, die eine Operation (z. B. ein Datenbank-Update) für jeden Datensatz in der Eingabedatenmenge 110 durchführen.
  • 2A–B sind Blockdiagramme von Systemkonfigurationen vor (200) und nach (210) der Teilung eines Shards. Wie 2A, kommuniziert eine Überwachungseinheit 202 mit einem oder mehreren Tasks 204a–c. Die Tasks 204a–c verarbeiten einen oder mehrere Shards 206a–c. Bei 208 übermitteln die Tasks 204a–c ihre jeweiligen geschätzten Fertigstellungszeiten an die Überwachungseinheit 202. Zum Beispiel übermittelt der Task 204a eine geschätzte Fertigstellungszeit von 4 Minuten an die Überwachungseinheit 202. Der Task 204b übermittelt eine geschätzte Fertigstellungszeit von 3 Minuten an die Überwachungseinheit 202. Der Task 204c übermittelt eine geschätzte Fertigstellungszeit von 13 Minuten an die Überwachungseinheit 202. Wie gezeigt, ist Task 212 untätig (d. h., er verarbeitet keinen Shard) in der Konfiguration 200. Da es einen untätigen Task (212) und noch keine zuzuordnenden Shards gibt, befindet sich der Auftrag in 2A in der Endphase.
  • Als Antwort auf den Erhalt der geschätzten Fertigstellungszeiten von den Tasks 204a–c ermittelt die Überwachungseinheit 202 bei 209 die Zielfertigstellungszeit für die parallele Verarbeitungsoperation bezüglich der Tasks 204a–c. In diesem Fall ermittelt die Überwachungseinheit 202, dass die Zielfertigstellungszeit 5 Minuten beträgt. Die Überwachungseinheit 202 kann eine Zielfertigstellungszeit ermitteln, indem sie den Durchschnitt der geschätzten Fertigstellungszeit für jeden Task 204a–c sowie für den untätigen Task 212, der als Task mit einer geschätzten Fertigstellungszeit von 0 behandelt werden kann, berechnet. In manchen Fällen kann die Überwachungseinheit 202 eine Zielfertigstellungszeit basierend auf einer für die parallele Verarbeitungsoperation, die die Tasks 204a–c sowie 212 enthält, spezifizierten Fertigstellungszeit ermitteln, wie etwa einer Deadline, die von einem Administrator der parallelen Verarbeitungsoperation spezifiziert wurde. In manchen Implementationen repräsentiert die Zielfertigstellungszeit eine erwartete Fertigstellungszeit für die parallele Verarbeitungsoperation dar, unter der Annahme, dass die Tasks 204a–c zur selben Zeit fertig werden. Die Zielfertigstellungszeit kann auch ein gewichtetes Mittel der berichteten Fertigstellungszeiten der Tasks 204a–c und 212 darstellen. Die Zielfertigstellungszeit kann von der Überwachungseinheit 202 auch anhand anderer Prozeduren oder Algorithmen ermittelt werden.
  • In manchen Fällen kann die Kommunikation zwischen den Tasks 204a–c sowie 212 und der Überwachungseinheit 202 bei 208 und 209 über ein (nicht dargestelltes) Netzwerk erfolgen. Die Kommunikation kann anhand eines oder mehrerer Netzwerkprotokolle stattfinden, wie z. B. des Hypertext Transfer Protocol (HTTP), des Simple Network Management Protocol (SNMP), eines Remote Procedure Call (RPC) oder anderen Protokollen.
  • 2B zeigt die Systemkonfiguration 210 nach einer Aufteilung des Shards 206c. Bei der Ausführung kann der Task 204c die Zielfertigstellungszeit von der Überwachungseinheit 202 erhalten. Der Task 204c kann die Zielfertigstellungszeit von 5 Minuten mit seiner geschätzten Fertigstellungszeit von 13 Minuten vergleichen und entscheiden, dass er die Verarbeitung von Shard 206c nicht vor Erreichen der Zielfertigstellungszeit beenden wird. Als Reaktion darauf kann der Task 204c den Shard 206c in die Teilshards 214a–b aufteilen, die jeder einen Teil des Shards 206c enthalten. Der Task 204c kann mit der Verarbeitung des Teilshards 214a fortfahren. Der Teilshard 214b kann von dem (vormals untätigen) Task 212 verarbeitet werden. In manchen Fällen kann der Task 204c den Teilshard 214b an die Überwachungseinheit 202 senden. Die Überwachungseinheit 202 kann dann den Shard 214b dem Task 212 zuweisen. Die Überwachungseinheit 202 kann auch den Teilshard 214b an einem Ort hinterlegen, wo ein untätiger Task wie der Task 212 sich selbst den Teilshard 214b zur Verarbeitung abholen kann. In manchen Fällen kann diese Shardteilung von der Überwachungseinheit 202 initiiert werden, indem z. B. eine Nachricht an den Task 204c gesendet wird. Obwohl 2B zeigt, dass der Shard 206c in zwei neue Shards aufgeteilt wird, kann der Shard 206c auch in mehr als zwei Shards aufgeteilt werden.
  • 3 ist ein Sequenzdiagramm eines Beispielprozesses 300 zur dynamischen Anpassung der Shard-Zuweisung während eines parallelen Verarbeitungsvorgangs. 3 stellt mehr Details zur Verfügung bezüglich der Operation gezeigt in 2A–B. Bei 305 sendet der Task 204a seine geschätzte Fertigstellungszeit (4 Minuten) an die Überwachungseinheit 202. Bei 310 sendet der Task 204b seine geschätzte Fertigstellungszeit (3 Minuten) an die Überwachungseinheit 202. Bei 315 sendet der Task 204c seine geschätzte Fertigstellungszeit (13 Minuten) an die Überwachungseinheit 202. In manchen Fällen kann diese Kommunikation so stattfinden, wie beschrieben in den 2A–B. Bei 320 ermittelt die Überwachungseinheit 202 eine Zielfertigstellungszeit basierend auf der geschätzten Fertigstellungszeit der Tasks 204a–c. Wiederum kann die Zielfertigstellungszeit so berechnet werden, wie beschrieben in den 2A–B. Bei 325335 sendet die Überwachungseinheit 202 eine Zielfertigstellungszeit (5 Minuten) an die Tasks 204a–c. Diese Kommunikation kann so stattfinden, wie beschrieben in den 2A–B.
  • Bei 340 ermittelt der Task 204c, dass seine geschätzte Fertigstellungszeit (13 Minuten) größer als die von der Überwachungseinheit 202 empfangene Zielfertigstellungszeit (5 Minuten) ist. Als Reaktion darauf teilt der Task 204c den ihm zugewiesenen Shard 206c (345) auf. Bei 350 sendet der Task 204c den Teilshard 214b an die Überwachungseinheit 202. Bei 355 fährt der Task 204c mit der Verarbeitung des Teilshards 214a fort. Bei 360 weist die Überwachungseinheit 202 den Shard 214b dem Task 212 zu.
  • 4 ist ein Flussdiagramm eines Beispielprozesses 400 zur dynamischen Anpassung der Shard-Zuweisung während paralleler Verarbeitungsvorgänge. Bei 405 wird eine Zielfertigstellungszeit für einen Batch-Verarbeitungsprozess einer Eingabedatenmenge ermittelt. Der Batch-Verarbeitungsprozess kann von einer Vielzahl von Tasks ausgeführt werden, die jeder einen Eingabeshard verarbeiten, der jeweils einen anderen Teil der Eingabedatenmenge enthält.
  • Bei 410 wird aus der Vielzahl an Tasks ein erster Task identifiziert, der eine geschätzte Fertigstellungszeit größer der Zielfertigstellungszeit des Batch-Verarbeitungsprozesses hat. In manchen Fällen ist die Zielfertigstellungszeit eine Deadline, die von einem Administrator des Batch-Verarbeitungsprozesses für die Beendigung des Batch-Verarbeitungsprozesses vorgegeben wird. Die geschätzte Fertigstellungszeit für den ersten Task kann eine geschätzte Zeit sein, zu der der erste Task mit der Verarbeitung des Teiles der Eingabedatenmenge im ersten Eingabeshard, verarbeitet vom ersten Task, fertig sein wird. In manchen Fällen enthält jeder der Vielzahl an Tasks eine geschätzte Fertigstellungszeit, die eine Zeit repräsentiert, zu der der Task mit der Verarbeitung seines Eingabeshards fertig sein wird, und die Zielfertigstellungszeit ist ein Durchschnittswert der geschätzten Fertigstellungszeiten für die Vielzahl an Tasks des Batch-Verarbeitungsprozesses. In manchen Fällen können bei der Bestimmung der geschätzten Fertigstellungszeit auch untätige Tasks des Batch-Verarbeitungsprozesses mit einbezogen werden, indem ihnen z. B. eine geschätzte Fertigstellungszeit von Null zugeordnet wird. Die geschätzte Fertigstellungszeit für jeden der Vielzahl an Tasks kann basierend auf folgendem bestimmt werden: zumindest zum Teil auf der Größe eines Teils des Eingabeshards, der von jedem der Vielzahl an Tasks noch verarbeitet werden muss; der Verarbeitungsrate in Verbindung mit jedem der Vielzahl an Tasks für einen Teil des Eingabeshards, der von jedem der Vielzahl an Tasks bereits verarbeitet wurde; oder einer kürzlichen Verarbeitungsrate in Verbindung mit jedem der Vielzahl an Tasks für einen Teil des Eingabeshards, der für jeden der Vielzahl an Tasks innerhalb eines Zeitfensters verarbeitet wurde; oder basierend auf anderen Informationen.
  • Bei 415 wird der erste Eingabeshard in einen ersten Teileingabeshard und einen zweiten, verschiedenen Teileingabeshard aufgeteilt. Jeder der Teileingabeshards enthält einen anderen Teil des ersten Eingabeshards. In manchen Fällen wird der erste Teileingabeshard einem zweiten Task zur Verarbeitung zugewiesen und der zweite Teileingabeshard wird einem dritten Task, der sich vom zweiten Task unterscheidet, zur Verarbeitung zugewiesen. In manchen Implementationen ist der zweite Task der erste Task und der dritte Task ist ein untätiger Task des Batch-Verarbeitungsprozesses.
  • In manchen Fällen werden die Identifizierung des ersten Tasks und die Aufteilung des ersten Eingabeshards vom ersten Task selbst vorgenommen. In einem solchen Fall kann der erste Task die Zielfertigstellungszeit von einem Überwachungsprozess des Batch-Verarbeitungsprozesses erhalten und sie mit seiner geschätzten Fertigstellungszeit vergleichen, um festzustellen, dass er nicht in der Zielfertigstellungszeit fertig werden wird. Der erste Task kann einen Hinweis auf einen Teil des ersten Eingabeshards, den der erste Task nicht bis zur Zielfertigstellungszeit verarbeiten können wird, an den Überwachungsprozess senden und der Überwachungsprozess kann als Reaktion darauf diesen Teil des ersten Eingabeshards einem untätigen Task zur Verarbeitung zuweisen. Die Identifizierung des ersten Tasks und das Aufteilen des ersten Eingabeshards können auch vom Überwachungsprozess vorgenommen werden.
  • In manchen Fällen enthält die Methode 400 die Feststellung eines Endphase-Status des Batch-Verarbeitungsprozesses, bei dem alle noch nicht verarbeiteten Shards der Eingabedatenmenge von einem Task verarbeitet werden und es untätige Tasks gibt, die zur Verarbeitung von Shards zur Verfügung stehen. In diesem Fall können die Identifizierung des ersten Tasks und das Aufteilen des ersten Eingabeshards vorgenommen werden, nachdem festgestellt wurde, dass sich der Batch-Verarbeitungsprozess in der Endphase befindet.
  • 5 ist ein Blockdiagramm der Computergeräte 500, 550, die zur Implementierung der hierin beschriebenen Systeme und Verfahren benutzt werden können, entweder als Client oder als Server oder als eine Vielzahl von Servern. Das Computergerät 500 ist zur Darstellung verschiedener Formen von Digitalcomputern vorgesehen, wie Laptops, Desktops, Workstations, Personal Digital Assistants, Server, Blade-Server, Mainframes und andere geeignete Computer. Das Computergerät 550 soll verschiedene Formen mobiler Geräte repräsentieren, wie Personal Digital Assistants, Mobiltelefone, Smartphones und andere ähnliche Computergeräte. Zusätzlich können die Computer 500 oder 550 ebenfalls USB(Universal Serial Bus)-Laufwerke beinhalten. Die USB-Speichermedien können Betriebssysteme und andere Anwendungen speichern. Die USB-Flashlaufwerke können Eingabe-/Ausgabekomponenten, wie z. B. einen kabellosen Transmitter oder USB-Anschluss enthalten, der in eine USB-Schnittstelle eines anderen Computers eingesteckt werden kann. Die hier gezeigten Komponenten, ihre Verbindungen und Beziehungen und ihre Funktionen sollen nur exemplarisch sein und sollen Implementierungen der in diesem Dokument beschriebenen und/oder beanspruchten Erfindungen nicht einschränken.
  • Computergerät 500 beinhaltet einen Prozessor 502, einen Speicher 504, eine Speichervorrichtung 506, eine High-Speed-Schnittstelle 508, die sich mit Speicher 504 und High-Speed-Erweiterungsanschlüssen 510 verbindet, und eine Low-Speed-Schnittstelle 512, die sich mit dem 514 und Speichervorrichtung 506 verbindet. Jede der Komponenten 502, 504, 506, 508, 510 und 512 sind unter Verwendung verschiedener Busse miteinander verbunden und können auf einem gängigen Motherboard oder gegebenenfalls in anderer Weise angebracht sein. Der Prozessor 502 kann Anweisungen zur Ausführung innerhalb des Computergeräts 500 verarbeiten, die Anweisungen beinhalten, die in dem Speicher 504 oder auf der Speichervorrichtung 506 gespeichert sind, um grafische Informationen für ein GUI auf einer externen Eingabe-/Ausgabevorrichtung, wie Anzeige 516, die mit High-Speed-Schnittstelle 508 verbunden ist, anzuzeigen. In anderen Implementierungen können mehrere Prozessoren und/oder mehrere Busse verwendet sein, wie angemessen, zusammen mit mehreren Speichern und Speichertypen. Es können auch mehrere Computergeräte 500 verbunden sind, wobei jedes Gerät Teile der notwendigen Vorgänge bereitstellt (z. B. als eine Serverbank, eine Gruppe von Blade-Servern oder ein Mehrprozessorsystem).
  • Der Speicher 504 speichert Informationen innerhalb des Computergeräts 500. In einer Implementierung ist der Speicher 504 aus einer nichtflüchtigen Speichereinheit oder -einheiten ausgebildet. In anderen Implementierungen ist der Speicher 504 aus einer nichtflüchtigen Speichereinheit oder -einheiten ausgebildet. Der Speicher 504 kann auch eine andere Form von computerlesbarem Medium sein, zum Beispiel ein magnetischer oder optischer Datenträger.
  • Die Speichervorrichtung 506 ist in der Lage, Massenspeicher für die Computergeräte 500 bereitzustellen. In einer Implementierung kann das Speichergerät 506 ein computerlesbares Medium sein oder beinhalten, wie ein Floppy-Disk-Laufwerk, ein Festplattenlaufwerk, ein Optikplattenlaufwerk, ein Magnetbandlaufwerk, ein Flash-Speicher oder anderes ähnliches Solid-State-Speichergerät oder eine Reihe anderer Geräte, sein, einschließlich Geräten in einem Speichernetzwerk oder anderer Konfigurationen. Ein Computerprogrammprodukt kann konkret in einem Informationsträger ausgeführt sein. Das Computerprogrammprodukt kann auch Anweisungen enthalten, die, wenn sie ausgeführt werden, ein oder mehrere Verfahren ausführen, wie die oben beschriebenen. Der Informationsträger ist ein computer- oder maschinenlesbares Medium wie der Speicher 504, die Speichervorrichtung 506 oder Speicher auf einem Prozessor 502.
  • Die High-Speed-Schnittstelle 508 verwaltet bandbreitenintensive Operationen für das Computergerät 500, während die Low-Speed-Schnittstelle 512 weniger niedrigere bandbreitenintensive Operationen verwaltet. Eine solche Zuordnung von Funktionen ist nur exemplarisch. In einer Implementierung ist die High-Speed-Schnittstelle 508 mit Speicher 504, Anzeige 516 (z. B. über einen Grafikprozessor oder -beschleuniger) und mit High-Speed-Erweiterungsanschlüssen 510, die verschiedene Erweiterungskarten (nicht gezeigt) akzeptieren können, verbunden. In der Implementierung ist Low-Speed-Schnittstelle 512 mit Speichervorrichtung 506 und Low-Speed-Erweiterungsanschlüssen 514 verbunden. Der Low-Speed-Erweiterungsanschluss, der verschiedene Kommunikationsanschlüsse (z. B. USB, B, Ethernet, Funkethernet) beinhalten kann, kann an ein oder mehrere Eingabe-/Ausgabe-Geräte, wie eine Tastatur, ein Zeigegerät, einen Scanner oder ein Netzwerkgerät, wie einen Switch oder Router, z. B. durch einen Netzwerkadapter gekoppelt sein.
  • Das Computergerät 500 kann in einer Reihe unterschiedlicher Formen implementiert sein, wie in der Figur gezeigt. So kann es beispielsweise als ein Standardserver 520 oder mehrfach in einer Gruppe solcher Server implementiert sein. Es kann außerdem als Teil eines Rack-Serversystems 524 implementiert sein. Zusätzlich kann es in einem Personal Computer wie einem Laptop-Computer 522 implementiert sein. Alternativ können Komponenten von Computergerät 500 mit anderen Komponenten in einem mobilen Gerät kombiniert sein (nicht dargestellt), z. B. Gerät 550. Jede solcher Vorrichtungen kann eine oder mehrere von Computergeräten 500, 550 enthalten und ein gesamtes System kann aus mehreren Computergeräten 500, 550, die miteinander kommunizieren, zusammengesetzt sein.
  • Computergerät 550 beinhaltet neben anderen Komponenten einen Prozessor 552, einen Speicher 564, eine Eingabe-/Ausgabevorrichtung wie eine Anzeige 554, eine Kommunikationsschnittstelle 566 und einen Sender-Empfänger 568. Das Gerät 550 kann ebenfalls mit einer Speichervorrichtung z. B. einem Microdrive oder einem anderen Gerät ausgestattet werden, um zusätzlichen Speicher bereitzustellen. Jede der Komponenten 550, 552, 564, 554, 566 und 568 sind unter Verwendung verschiedener Busse miteinander verbunden und mehrere der Komponenten können auf einem gängigen Motherboard oder gegebenenfalls in anderer Weise angebracht sein.
  • Der Prozessor 552 kann Anweisungen im Computergerät 550 ausführen, einschließlich im Speicher 564 gespeicherter Anweisungen. Der Prozessor kann als ein Chipsatz von Chips implementiert werden, die separate und mehrere analoge und digitale Prozessoren beinhalten. Zusätzlich dazu kann der Prozessor mit einer beliebigen Anzahl von Architekturen implementiert werden. Der Prozessor 552 kann beispielsweise ein CISC-Prozessor (Complex Instruction Set Computers), ein RISC-Prozessor (Reduced Instruction Set Computer) oder ein MISC-Prozessor (Minimal Instruction Set Computer) sein. Der Prozessor kann beispielsweise zur Koordinierung der anderen Komponenten der Vorrichtung 550, wie etwa Steuerung von Benutzeroberflächen, Anwendungen, die von Vorrichtung 550 ausgeführt werden, und drahtlose Kommunikation durch Vorrichtung 550 bereitstellen.
  • Prozessor 552 kann mit einem Benutzer über Steuerschnittstelle 558 und Anzeigeschnittstelle 556, die mit einer Anzeige 554 verbunden ist, kommunizieren. Das Display 554 kann beispielsweise ein TFT-Display (Thin-Film-Transistor Liquid Crystal Display) oder ein OLED-Display (Organic Light Emitting Diode) oder aus einer anderen geeigneten Displaytechnologie sein. Die Anzeigeschnittstelle 556 kann angemessene Verschaltung zum Treiben der Anzeige 554 umfassen, um einem Benutzer grafische und andere Informationen zu präsentieren. Die Steuerschnittstelle 558 kann Befehle von einem Benutzer empfangen und sie zur Abgabe an den Prozessor 552 konvertieren. Zusätzlich kann eine externe Schnittstelle 562 in Verbindung mit Prozessor 552 bereitgestellt sein, um Nahbereichskommunikation von Vorrichtung 550 mit anderen Vorrichtungen zu ermöglichen. Die externe Schnittstelle 562 kann beispielsweise in manchen Implementierungen eine drahtgestützte Verbindung oder in anderen Implementierungen eine drahtlose Verbindung aufbauen, und es können auch mehrere Schnittstellen zur Anwendung kommen.
  • Der Speicher 564 speichert Informationen innerhalb des Computergeräts 550. Der Speicher 564 kann als ein computerlesbares Medium bzw. als eines von mehreren computerlesbaren Medien, als flüchtiger Speicher bzw. als flüchtige Speicher oder als ein nicht-flüchtiger Speicher bzw. als nicht-flüchtige Speicher implementiert werden. Erweiterungsspeicher 574 kann ebenfalls bereitgestellt und mit dem Gerät 550 über Erweiterungsschnittstelle 572 verbunden werden, die zum Beispiel eine SIMM(Single In Line Memory Module)-Kartenschnittstelle umfassen kann. Ein solcher Erweiterungsspeicher 574 kann zusätzlichen Speicherplatz für Vorrichtung 550 bereitstellen oder kann auch Anwendungen oder andere Informationen für Vorrichtung 550 speichern. Insbesondere kann Erweiterungsspeicher 574 Anweisungen zum Ausführen oder Ergänzen der oben beschriebenen Prozesse enthalten und er kann außerdem sichere Informationen enthalten. Demnach kann Erweiterungsspeicher 574 beispielsweise als ein Sicherheitsmodul für Vorrichtung 550 bereitgestellt sein und kann mit Anweisungen programmiert sein, die eine sichere Benutzung von Vorrichtung 550 ermöglichen. Zusätzlich dazu können über die SIMM-Cards sichere Anwendungen bereitgestellt werden, zusammen mit zusätzlichen Informationen, wie dem Ablegen von Identifizierungsinformationen auf der SIMM-Card auf eine Weise, die nicht gehackt werden kann.
  • Der Speicher 564 kann zum Beispiel Flashspeicher und/oder NVRAM-Speicher beinhalten, wie unten besprochen. In einer Implementierung, ist ein Computerprogrammprodukt konkret in einem Informationsträger ausgeführt. Das Computerprogrammprodukt enthält Anweisungen, die, wenn sie ausgeführt werden, ein oder mehrere Verfahren ausführen, wie die oben beschriebenen. Der Informationsträger ist ein computer- oder maschinenlesbares Medium, wie der Speicher 564, die Speichererweiterung 574 oder der Prozessorspeicher 552, das beispielsweise über den Transceiver 568 oder die externe Schnittstelle 562 empfangen werden kann.
  • Vorrichtung 550 kann über Kommunikationsschnittstelle 566, die bei Bedarf eine digitale Signalverarbeitungsschaltung beinhalten kann, drahtlos kommunizieren. Die Verbindungsschnittstelle 566 kann Verbindungen mit verschiedenen Kommunikationstypen oder -protokollen aufbauen, darunter GSM-Sprachanrufe, SMS, EMS, oder MMS-Messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000 oder GPRS unter anderen. Solche Kommunikation kann beispielsweise durch Funkfrequenz-Sender-Empfänger 568 stattfinden. Zusätzlich kann eine Kurzstreckenkommunikation stattfinden, wie unter Verwendung eines Bluetooth-, WLAN- oder anderen solchen Sende-Empfängern (nicht gezeigt). Außerdem kann GPS(Global Positioning System)-Empfängermodul 570 zusätzliche mit der Navigation und dem Ort verbundene drahtlose Daten für Gerät 550 bereitstellen, die ggf. von Anwendungen verwendet werden können, die auf Gerät 550 ausgeführt werden.
  • Gerät 550 kann ebenfalls unter Verwendung des Audio-Codec 560, der gesprochene Informationen von einem Benutzer empfangen und diese in nutzbare digitale Informationen konvertieren kann, hörbar kommunizieren. Audio-Codec 560 kann ebenfalls akustische Töne für einen Benutzer erzeugen, zum Beispiel durch einen Lautsprecher zum Beispiel in einem Handgerät von Gerät 550. Diese Töne können Töne von Sprachtelefonanrufen beinhalten, können aufgezeichnete Töne (z. B. Sprachnachrichten, Musikdateien usw.) beinhalten und können auch Töne beinhalten, die von laufenden Anwendungen auf Gerät 550 erstellt wurden.
  • Das Computergerät 550 kann in einer Reihe unterschiedlicher Formen implementiert sein, wie in der Figur gezeigt. Zum Beispiel kann es als Mobiltelefon 580 implementiert werden. Er kann ebenfalls als Bestandteil eines Smartphones 582, eines Personal Digital Assistant oder eines ähnlichen mobilen Geräts implementiert sein.
  • In verschiedenen Ausführungen werden Verfahren, die „als Reaktion auf” oder „als eine Konsequenz von” eines anderen Verfahrens (z. B. einer Bestimmung oder eine Identifizierung) ausgeführt sind, nicht ausgeführt, wenn das vorherige Verfahren nicht erfolgreich war (z. B. wenn die Bestimmung nicht ausgeführt wurde). Verfahren, die „automatisch” durchgeführt werden sind Verfahren, die ohne Eingriff (z. B. eingreifende Benutzereingabe) durchgeführt werden. Gegenstände, die in diesem Dokument unter Verwendung des Konjunktivs beschrieben sind, kann optionale Implementierungen beschreiben. In manchen Beispielen beinhaltet die „Übertragung” von einem ersten Gerät auf ein zweites Gerät die Eingabe von Daten in ein Netz zum Empfang durch das zweite Gerät, aber nicht den Empfang der Daten durch das zweite Gerät. Umgekehrt kann der „Empfang” von einem ersten Gerät den Empfang der Daten aus einem Netz beinhalten, aber nicht die Übertragung der Daten durch das erste Gerät.
  • Das „Bestimmen” durch ein Computersystem kann beinhalten, dass das Computersystem ein anderes Gerät anfordert, um die Bestimmung durchzuführen und die Resultate an das Computersystem zu liefern. Außerdem kann das „Anzeigen” oder das „Präsentieren” durch ein Computersystem beinhalten, dass das Computersystem Daten sendet, um zu veranlassen, dass ein anderes Gerät die referenzierten Informationen anzeigt oder präsentiert.
  • Ausführungsformen des Gegenstands und die in dieser Spezifikation beschriebenen Tätigkeiten können in digitalen elektronischen Schaltungen oder in Computer-Software, Firmware oder Hardware implementiert werden, einschließlich der in dieser Spezifikation offengelegten Strukturen und ihrer strukturellen Entsprechungen oder in Kombinationen von einer oder mehrerer von ihnen. Ausführungsformen des in dieser Spezifikation beschriebenen Gegenstands können als ein oder mehrere Computerprogramme, d. h. als ein oder mehrere Module von Computerprogrammanweisungen implementiert werden, die auf einem Computer-Speichermedium für die Ausführung durch oder die Steuerung des Betriebs des datenverarbeitenden Apparats kodiert werden. Alternativ oder zusätzlich können die Programmanweisungen auf einem künstlich erzeugten propagierten Signal, z. B. einem maschinell erzeugten elektrischen, optischen oder elektromagnetischen Signal künstlich kodiert werden, das erzeugt wird, um Informationen für die Übertragung auf einen geeigneten Empfängerapparat für die Durchführung durch einen datenverarbeitenden Apparat zu kodieren. Bei einem Computer-Speichermedium kann es sich um ein maschinell lesbares Speichergerät, einen maschinell lesbaren Speicherträger, ein zufälliges oder serielles Speicher-Array oder Speichergerät oder um eine Kombination aus einem oder mehreren dieser Geräte handeln oder in ihnen enthalten sein. Außerdem ist ein Computer-Speichermedium zwar kein verbreitetes Signal, aber ein Computer-Speichermedium kann eine Quelle oder ein Bestimmungsort von Computerprogrammanweisungen sein, die in einem künstlich erzeugten verbreiteten Signal kodiert werden. Bei dem Computer-Speichermedium kann es sich auch um eine oder mehrere unterschiedliche physische Komponenten oder Medien (z. B. mehrere CDs, Plattenlaufwerke oder andere Speichergeräte) handeln, bzw. kann das Speichermedium darin enthalten sein.
  • Die in dieser Spezifikation beschriebenen Tätigkeiten können als Tätigkeiten implementiert werden, die von einem datenverarbeitenden Apparat mit Daten durchgeführt werden, die auf einem oder mehreren maschinell lesbaren Speichergeräten gespeichert werden oder von anderen Quellen entgegengenommen werden.
  • Der Begriff „datenverarbeitender Apparat” umfasst alle Arten von Apparaten, Geräten und Maschinen für die Verarbeitung von Daten, einschließlich beispielsweise durch einen programmierbaren Prozessor, einen Computer, ein System auf einem oder mehreren Chips oder Kombinationen des Vorstehenden. Der Apparat kann logische Schaltungen mit einem Sonderzweck, z. B. ein FPGA (Field Programmable Gate Array) oder eine ASIC (anwendungsspezifische integrierte Schaltung) enthalten. Der Apparat kann neben der Hardware auch einen Code einschließen, der eine Ausführungsumgebung für das betreffende Computerprogramm in der Frage erstellt, z. B. einen Code, der Prozessor-Firmware, einen Protokollstapel, ein Datenbank-Managementsystem, ein Betriebssystem, eine plattformunabhängige Laufzeitumgebung, eine virtuelle Maschine oder eine Kombination einer oder mehrerer der genannten darstellt. Der Apparat und die Ausführungsumgebung können verschiedene unterschiedliche Rechnermodell-Infrastrukturen umsetzen, wie Webdienstleistungen, verteilte Rechen- und Grid-Computing-Infrastrukturen.
  • Ein Computerprogramm (auch bezeichnet als Programm, Software, Softwareanwendung, Script oder Code) kann in einer beliebigen Form von Programmiersprache geschrieben sein, einschließlich kompilierter oder interpretierter Sprachen, deklarativer oder verfahrensorientierter Sprachen, und das Programm kann in jeder beliebigen Form eingesetzt sein, darunter als unabhängiges Programm oder als ein Modul, eine Komponente, eine Subroutine, ein Objekt oder eine andere Einheit, die zur Benutzung in einer Rechenumgebung geeignet ist. Ein Computerprogramm kann, muss aber nicht, einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Teil einer Datei gespeichert werden, der andere Programme oder Daten enthält (z. B. einen oder mehrere Skripte, die in einem Auszeichnungssprachen-Dokument gespeichert sind), in einer einzelnen Datei, die dem betreffenden Programm zugeordnet ist, oder in mehreren koordinierten Dateien (z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Codeabschnitte speichern). Ein Computerprogramm kann auf einem Computer oder mehreren Computer eingerichtet sein oder ausgeführt werden, die an einem Standort angeordnet sind oder über mehrere Standorte verteilt sind und über ein Kommunikationsnetz verbunden sind.
  • Die Verfahren und Logikflüsse, die in dieser Spezifikation beschrieben sind, können durch Handlungen, wie dem Betreiben von Eingabedaten und dem Erzeugen von Ausgaben. durch einen oder mehrere programmierbare Prozessoren, die einen oder mehrere Computerprogramme ausführen, durchgeführt werden. Die Prozesse und die logischen Abläufe können auch durch logische Sonderzweckschaltungen durchgeführt werden, und der Apparat kann als Sonderzweckschaltungen implementiert werden, z. B. ein FPGA (Field Programmable Gate Array) oder eine ASIC (anwendungsspezifische integrierte Schaltung).
  • Prozessoren, die für die Durchführung eines Computerprogramms geeignet sind, schließen beispielsweise sowohl allgemeine und als auch Spezial-Mikroprozessoren sowie alle Arten eines oder mehrerer Prozessoren jeglicher Art Digitalrechner ein. Ganz allgemein nimmt ein Prozessor Befehle und Daten von einem Festwertspeicher oder einem Arbeitsspeicher oder von beiden entgegen. Die wesentlichen Elemente eines Computers sind ein Prozessor für das Durchführen von Handlungen gemäß Anweisungen und ein oder mehr Speichergeräte für das Speichern von Anweisungen und Daten. Im Allgemeinen beinhaltet ein Computer auch ein oder mehrere Massenspeichergeräte für das Speichern von Daten, z. B. Magnet-, magnetooptische oder optische Disketten, um Daten entgegenzunehmen und/oder zu übertragen, bzw. ist ein Computer operativ an ein solches Speichergerät gekoppelt. Jedoch muss ein Computer solche Geräte nicht haben. Außerdem kann ein Computer in einem anderen Gerät eingebettet sein, z. B. in einem Mobiltelefon, einem Organizer (PDA), einem mobilen Audio- oder Videoplayer, einer Spielkonsole, einem Funknavigationsempfänger oder einem tragbaren Speichergerät (z. B. in einem USB-Stick), um nur einige zu nennen. Geräte, die für das Speichern von Computerprogrammanweisungen und -daten geeignet sind, beinhalten alle Formen von Dauerspeichern, Medien- und Speichergeräten, einschließlich beispielsweise Halbleiter-Speichergeräte, z. B. EPROM, EEPROM und USB-Flash-Speicher; Magnetdisketten, z. B. interne Festplatten oder herausnehmbare Disketten; magnetooptische Disketten; und CD-ROMs und DVD-ROMs. Der Prozessor und der Speicher können durch logische Sonderzweckschaltungen ergänzt werden oder darin eingebaut sein.
  • Um die Interaktion mit einem Benutzer zu ermöglichen, können in dieser Spezifikation beschriebene Ausführungsformen des Gegenstands auf einem Computer mit einem Anzeigegerät implementiert werden, z. B. einem CRT-(Kathodenstrahlröhre) oder LCD-(Flüssigkristallanzeige)Monitor, mit welchem dem Benutzer Informationen angezeigt werden, sowie einer Tastatur und einem Anzeigegerät, z. B. einer Maus oder einem Trackball, mit denen der Benutzer Eingaben in den Computer vornehmen kann. Es können auch andere Arten von Einrichtungen verwendet werden, um für eine Interaktion mit einem Nutzer zu sorgen; beispielsweise kann eine dem Benutzer gelieferte Rückkopplung beliebiger Form von sensorischer Rückkopplung vorliegen, z. B. eine visuelle Rückkopplung, auditive Rückkopplung oder taktile Rückkopplung; und die Eingabe von dem Nutzer kann in beliebiger Form empfangen werden, einschließlich akustischer, Sprach- oder taktiler Eingabe. Zusätzlich kann ein Computer mit einem Benutzer durch das Senden und das Erhalten von Dokumenten von einem Gerät, das von einem Benutzer benutzt wird, wechselwirken; beispielsweise durch das Senden von Webseiten an einen Webbrowser durch ein Benutzergerät des Benutzers als Antwort auf Anforderungen des Webbrowsers.
  • Ausführungsformen der in dieser Spezifikation betrachteten Gegenstands können in ein Computersystem implementiert werden, das eine Backend-Komponente (z. B. einen Datenserver), oder eine Middleware-Komponente (z. B. einen Anwendungsserver), oder eine Frontend-Komponente (z. B. einen Client-Computer mit graphischem Benutzerinterface oder Webbrowser) umfasst, worüber der Benutzer mit einer Implementierung der in dieser Spezifikation betrachteten Gegenstands interagieren kann, oder eine beliebige Kombination aus solchen Backend, Middleware- oder Frontend-Komponenten. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium digitaler Datenkommunikation miteinander verbunden sein, z. B. ein Kommunikationsnetzwerk. Zu Beispielen für Kommunikationsnetzwerke zählen ein lokales Netzwerk („LAN”), ein Fernnetzwerk („WAN”), eine netzübergreifende Verbindung (z. B. das Internet) und Peer-to-Peer Netzwerke (z. B. Ad-Hoc Peer-to-Peer Netzwerke).
  • Das Computersystem kann Benutzer und Server beinhalten. Ein Benutzer und ein Server sind im Allgemeinen voneinander entfernt und wechselwirken normalerweise durch ein Kommunikationsnetzwerk. Die Beziehung des Benutzers und des Servers entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computern laufen und eine Benutzer-Server Beziehung zueinander haben. In manchen Ausführungen überträgt ein Server Daten (z. B. eine HTML Seite) an ein Benutzergerät (z. B. mit dem Zweck, Daten anzuzeigen und Benutzereingaben von einem Benutzer, der mit dem Benutzergerät wechselwirkt zu erhalten). Daten, die am Benutzergerät erzeugt werden (z. B. das Resultat einer Wechselwirkung mit einem Benutzer) können vom Benutzergerät am Server erhalten werden.
  • Zwar enthält diese Spezifikation viele spezifische Implementierungsdetails, jedoch sollten diese nicht als Beschränkungen des Umfangs oder des Anspruchs ausgelegt werden, sondern vielmehr als Beschreibungen spezifischer Merkmale bestimmter Ausführungsformen bestimmter Erfindungen. Bestimmte Merkmale, die in dieser Spezifikation im Kontext der unterschiedlichen Ausführungsformen beschrieben werden, können auch in Kombination in einer einzelnen Ausführungsform implementiert werden. Andererseits können verschiedene Merkmale, die im Kontext einer einzelnen Ausführungsform beschrieben werden, in mehreren Ausführungsformen oder in jeder geeigneten Unterkombination implementiert werden. Außerdem können ein oder mehrere Merkmale einer beanspruchten Kombination in einigen Fällen aus der Kombination herausgelöst werden, auch wenn die Merkmale vorstehend als in gewissen Kombinationen funktionierend beschrieben oder gar als eine Kombination beansprucht werden, und die beanspruchte Kombination kann an eine Unterkombination oder eine Variation einer Unterkombination verwiesen werden.
  • Ebenso werden Tätigkeiten in den Zeichnungen zwar in einer bestimmten Reihenfolge dargestellt, aber dies sollte nicht als Erfordernis verstanden werden, dass solche Tätigkeiten in der bestimmten gezeigten Reihenfolge oder in einer aufeinanderfolgenden Reihenfolge ausgeführt werden müssen oder dass alle dargestellten Tätigkeiten ausgeführt werden müssen, um erwünschte Ergebnisse zu erzielen. Unter bestimmten Umständen können Multitasking und eine Parallelbearbeitung vorteilhaft sein. Darüber hinaus sollte die Trennung verschiedener Systemkomponenten in den oben beschriebenen Ausführungsformen nicht in allen Ausführungsformen erforderlich aufgefasst werden, und es versteht sich, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen zusammen in ein einziges Softwareprodukt integriert oder zu mehreren Softwareprodukten verkapselt werden können.
  • Folglich wurden bestimmte Ausführungsformen des Gegenstands beschrieben. Weitere Ausführungsformen gehören zum Umfang der folgenden Ansprüche. In einigen Fällen können die in den Ansprüchen beschriebenen Handlungen in einer anderen Reihenfolge durchgeführt werden und dennoch erwünschte Ergebnisse erzielen. Zusätzlich erfordern die in den beigefügten Figuren dargestellten Prozesse nicht notwendigerweise die bestimmte gezeigte Reihenfolge oder aufeinanderfolgende Reihenfolge, um erwünschte Ergebnisse zu erzielen. In bestimmten Implementierungen können Multitasking und eine Parallelbearbeitung vorteilhaft sein.

Claims (7)

  1. Ein nichtflüchtiges computerlesbares Medium, das Instruktionen speichert, deren Ausführung mindestens einen Prozessor zur Ausführung von Operationen veranlasst, umfassend: das Bestimmen einer Zielfertigstellungszeit für eine Batch-Verarbeitungsoperation einer Eingabedatenmenge; die Batch-Verarbeitungsoperation wird ausgeführt von einer Vielzahl von Tasks; jeder dieser Vielzahl von Tasks verarbeitet einen anderen Eingabeshard, der einen jeweils anderen Teil der Eingabedatenmenge enthält; das Identifizieren eines ersten Tasks aus der Vielzahl von Tasks mit einer geschätzten Fertigstellungszeit größer der Zielfertigstellungszeit der Batch-Verarbeitungsoperation, wobei die geschätzte Fertigstellungszeit eine geschätzte Zeitspanne darstellt, in der der erste Task die Verarbeitung des Teils der Eingabedatenmenge beenden wird, der als erster Shard vom ersten Task verarbeitet wird; und das Aufteilen des ersten Eingabeshards in einen ersten Teileingabeshard und einen zweiten Teileingabeshard, der sich vom ersten Teileingabeshard unterscheidet, wobei der erste Teileingabeshard einen ersten Teil des ersten Eingabeshards und der zweite Teileingabeshard einen zweiten Teil des ersten Eingabeshards enthält, der sich vom ersten Teil unterscheidet.
  2. Das maschinenlesbare Medium nach Anspruch 1, weiterhin umfassend: Die Zuweisung des ersten Teileingabeshards zur Verarbeitung an einen zweiten Task; und das Einfügen des zweiten Teileingabeshards in eine Basis von nicht zugewiesenen Shards, um auf die Verarbeitung durch einen verfügbaren Task zu warten.
  3. Maschinenlesbares Medium nach Anspruch 2, worin der zweite Task der erste Task und der dritte Task ein untätiger Task des Batch-Verarbeitungsprozesses sind.
  4. Maschinenlesbares Medium nach Anspruch 1, die Operationen weiterhin umfassend: Die Erkennung, dass der Batch-Verarbeitungsprozess die Endphase erreicht hat, wobei alle zur Eingabedatenmenge gehörenden Shards von einem Task verarbeitet werden und es mindestens einen zum Batch-Verarbeitungsprozess gehörenden untätigen Task gibt, und wobei die Identifizierung des ersten Tasks und das Aufteilen des ersten Eingabeshards stattfinden, nachdem erkannt wurde, dass der Batch-Verarbeitungsprozess die Endphase erreicht hat.
  5. Maschinenlesbares Medium nach Anspruch 1, worin jeder der Vielzahl von Tasks eine geschätzte Fertigstellungszeit enthält, die eine geschätzte Zeit repräsentiert, nach der der Task mit der Verarbeitung seines Eingabeshards fertig sein wird.
  6. Maschinenlesbare Medium nach Anspruch 5, worin die Zielfertigstellungszeit basierend auf zumindest teilweise der geschätzten Fertigstellungszeit für die Vielzahl von Tasks des Batch-Verarbeitungsprozesses ermittelt wird.
  7. System, das Folgendes umfasst: Speicher zur Speicherung von Daten; und ein oder mehrere Prozessoren, fähig zur Ausführung von Operationen, umfassend: das Bestimmen einer Zielfertigstellungszeit für eine Batch-Verarbeitungsoperation einer Eingabedatenmenge; die Batch-Verarbeitungsoperation wird ausgeführt von einer Vielzahl von Tasks; jeder dieser Vielzahl von Tasks verarbeitet einen anderen Eingabeshard, der einen jeweils anderen Teil der Eingabedatenmenge enthält; das Identifizieren eines ersten Tasks aus der Vielzahl von Tasks mit einer geschätzten Fertigstellungszeit größer der Zielfertigstellungszeit der Batch-Verarbeitungsoperation, wobei die geschätzte Fertigstellungszeit eine geschätzte Zeitspanne darstellt, in der der erste Task die Verarbeitung des Teils der Eingabedatenmenge beenden wird, der als erster Shard vom ersten Task verarbeitet wird; und das Aufteilen des ersten Eingabeshards in einen ersten Teileingabeshard und einen zweiten Teileingabeshard, der sich vom ersten Teileingabeshard unterscheidet, wobei der erste Teileingabeshard einen ersten Teil des ersten Eingabeshards und der zweite Teileingabeshard einen zweiten Teil des ersten Eingabeshards enthält, der sich vom ersten Teil unterscheidet.
DE202015009298.5U 2014-07-09 2015-07-06 Dynamische Anpassung von Shard-Zuweisungen Active DE202015009298U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/327,338 US9983901B2 (en) 2014-07-09 2014-07-09 Dynamic shard allocation adjustment
US14/327,338 2014-07-09

Publications (1)

Publication Number Publication Date
DE202015009298U1 true DE202015009298U1 (de) 2017-01-26

Family

ID=53718168

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202015009298.5U Active DE202015009298U1 (de) 2014-07-09 2015-07-06 Dynamische Anpassung von Shard-Zuweisungen

Country Status (5)

Country Link
US (1) US9983901B2 (de)
EP (1) EP3167368B1 (de)
CN (1) CN106663028B (de)
DE (1) DE202015009298U1 (de)
WO (1) WO2016007430A1 (de)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US10048974B1 (en) 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9537788B2 (en) 2014-12-05 2017-01-03 Amazon Technologies, Inc. Automatic determination of resource sizing
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US10652319B2 (en) * 2015-12-16 2020-05-12 Dell Products L.P. Method and system for forming compute clusters using block chains
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US20170242559A1 (en) * 2016-02-18 2017-08-24 Salesforce.Com, Inc. Automation of application creation utilizing flexible frameworks
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10261831B2 (en) * 2016-08-24 2019-04-16 Qualcomm Incorporated Speculative loop iteration partitioning for heterogeneous execution
US11030169B1 (en) * 2017-03-07 2021-06-08 Amazon Technologies, Inc. Data re-sharding
US10607155B2 (en) * 2017-03-30 2020-03-31 Intel Corporation Diagnosing slow tasks in distributed computing
US10701154B2 (en) * 2017-05-22 2020-06-30 Microsoft Technology Licensing, Llc Sharding over multi-link data channels
US10445140B1 (en) * 2017-06-21 2019-10-15 Amazon Technologies, Inc. Serializing duration-limited task executions in an on demand code execution system
US10725826B1 (en) * 2017-06-21 2020-07-28 Amazon Technologies, Inc. Serializing duration-limited task executions in an on demand code execution system
CN107608773B (zh) * 2017-08-24 2020-08-04 阿里巴巴集团控股有限公司 任务并发处理方法、装置及计算设备
CN108153594B (zh) * 2017-12-25 2022-01-18 联想(北京)有限公司 一种人工智能云平台的资源碎片整理方法及电子设备
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10795729B2 (en) * 2018-04-28 2020-10-06 Cambricon Technologies Corporation Limited Data accelerated processing system
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
CN109032796B (zh) * 2018-07-18 2020-12-22 北京京东金融科技控股有限公司 一种数据处理方法和装置
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
CN112734147A (zh) * 2019-10-28 2021-04-30 北京京东乾石科技有限公司 设备评估管理的方法和装置
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US11775640B1 (en) 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
CN114860410A (zh) * 2022-05-19 2022-08-05 北京百度网讯科技有限公司 批量任务处理的方法、装置及电子设备
US11989539B2 (en) * 2022-06-21 2024-05-21 Red Hat, Inc. Continuous integration and deployment system time-based management

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4308241B2 (ja) * 2006-11-10 2009-08-05 インターナショナル・ビジネス・マシーンズ・コーポレーション ジョブ実行方法、ジョブ実行システム及びジョブ実行プログラム
CA2631255A1 (en) 2008-05-09 2009-11-09 Ibm Canada Limited - Ibm Canada Limitee Scalable scheduling of tasks in heterogeneous systems
US8990820B2 (en) 2008-12-19 2015-03-24 Microsoft Corporation Runtime task with inherited dependencies for batch processing
US8332862B2 (en) * 2009-09-16 2012-12-11 Microsoft Corporation Scheduling ready tasks by generating network flow graph using information receive from root task having affinities between ready task and computers for execution
US8380552B2 (en) 2009-12-11 2013-02-19 Verizon Patent And Licensing Inc. Method and system for estimating project delay
US8473951B2 (en) 2009-12-30 2013-06-25 Bmc Software, Inc. Method and system for traversing in reverse chronological order along a critical path of a plurality of jobs, and reducing time gaps between jobs until an estimated end time of the last job is less than or equal to a target end time
US8555281B1 (en) * 2011-02-16 2013-10-08 Google Inc. Scheduling of tasks based upon historical execution times
US9122532B2 (en) * 2011-04-29 2015-09-01 Nokia Technologies Oy Method and apparatus for executing code in a distributed storage platform
CN102662743A (zh) * 2012-04-13 2012-09-12 南京信息工程大学 一种启发式粗粒度并行网格任务调度方法
US9207964B1 (en) * 2012-11-15 2015-12-08 Google Inc. Distributed batch matching of videos with dynamic resource allocation based on global score and prioritized scheduling score in a heterogeneous computing environment
US9417917B1 (en) * 2012-12-14 2016-08-16 Amazon Technologies, Inc. Equitable resource allocation for storage object deletion
EP2746941A1 (de) 2012-12-20 2014-06-25 Thomson Licensing Vorrichtung und Verfahren zur Optimierung der Datenverarbeitung in einem Map-Reduce-Rahmenwerk
US9329937B1 (en) * 2013-12-31 2016-05-03 Google Inc. High availability architecture

Also Published As

Publication number Publication date
US20160011901A1 (en) 2016-01-14
EP3167368A1 (de) 2017-05-17
US9983901B2 (en) 2018-05-29
EP3167368B1 (de) 2022-03-23
CN106663028B (zh) 2021-05-25
CN106663028A (zh) 2017-05-10
WO2016007430A1 (en) 2016-01-14

Similar Documents

Publication Publication Date Title
DE202015009298U1 (de) Dynamische Anpassung von Shard-Zuweisungen
DE202014010940U1 (de) Dynamische Shuffle-Rekonfiguration
DE202015009254U1 (de) Automatisch erzeugende ausführungssequenzen für workflows
DE112016002114T5 (de) System zur Netzwerkentdeckung und -Synchronisierung
DE202014010924U1 (de) Nichtflüchtiges Shuffle-System
DE102016118210A1 (de) Granulare Dienstqualität für Computer-Ressourcen
DE112013000752T5 (de) Verwalten von Verarbeitungselementen in einem Streaming-Datensystem
DE202013012495U1 (de) Metadatenbasierte virtual Maschine-Konfiguration
DE202017105977U1 (de) Virtueller Router mit dynamischer Flussauslagerungsfähigkeit
DE102012220514A1 (de) Steuern der nutzung von datenverarbeitungsressourcen ineiner service-datenbank
DE202012013448U1 (de) Prozessormodussperre
DE112012005030T5 (de) Dynamisch konfigurierbare Platzierungs-Engine
DE112011100739T5 (de) Programmatisches Ermitteln eines Ausführungsmodus für eine Anforderungszuteilungunter Verwendung von historischen Masszahlen
DE202012013405U1 (de) Cloud-zu Gerät-Nachrichtenübermittlung zur Anwendungsaktivierung und Meldung
DE112011103081T5 (de) Client/Abonnenten-Verlagerung für die Server-Hochverfügbarkeit
DE112013003300B4 (de) Schrittweise Vorbereitung von Videos auf die Lieferung
DE112014007090T5 (de) Verfahren und systeme zum automatischen tagging anhand von software-ausführungs-traces
DE102012224492A1 (de) Auslösen von Fensterbedingungen unter Verwendung einer Ausnahmebehandlung
DE112012001357T5 (de) Verwalten einer Portalanwendung
DE60132360T2 (de) Verwaltung von netzwerk-verkehr durch anwendung einer hashfunktion
DE202017105367U1 (de) Abfrageneustartfähigkeit
DE102012224362A1 (de) Anpassung einer Testhäufigkeit für die Ressourcenauslastung
DE102012219705A1 (de) Datenpaketverarbeitung im netzwerk
DE112017005512T5 (de) Datenübertragung innerhalb von geschäftsräumen und ausserhalb von geschäftsräumen
DE102013201664A1 (de) Vorausschauendes Zwischenspeichern bei Telekommunikationstürmen unter Verwendung der Weitergabe der Kennung von Elementen von Daten mit hohem Bedarf auf einer geographischen Ebene

Legal Events

Date Code Title Description
R207 Utility model specification
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R150 Utility model maintained after payment of first maintenance fee after three years
R151 Utility model maintained after payment of second maintenance fee after six years
R152 Utility model maintained after payment of third maintenance fee after eight years