-
Gegenstand der vorliegenden Erfindung ist ein Verfahren zum Durchführen eines Programmes zur Verarbeitung von Daten und ein entsprechendes System. Hierbei handelt es sich um ein Verfahren, bei dem ein Programm mindestens ein Teilprogramm umfasst, welches auf mindestens zwei lokalen Agenten durchgeführt wird.
-
Die Bereitstellung von Hoch- und Höchstleistungsrechnern zur Datenverarbeitung ist in den vergangenen Jahren immer kostenintensiver geworden. Neben auf spezielle Hochleistungshardware zurückgreifende Spezialrechner, die in Anschaffung und Unterhalt hohe Kosten verursachen, wurde vermehrt auf sogenannte Cluster aus Rechnern zurückgegriffen. Diese stellen einen Rechnerverbund dar, bei dem die zu erledigenden Aufgaben auf mehrere üblicherweise ein und dieselbe Hardware umfassende parallel arbeitende Computer verteilt wird.
-
Hiervon ausgehend liegt der vorliegenden Erfindung die Aufgabe zugrunde, die aus dem Stand der Technik bekannten Nachteile zumindest teilweise zu überwinden.
-
Diese Aufgabe wird gelöst durch ein Verfahren und ein System mit den Merkmalen der unabhängigen Ansprüche. Abhängige Ansprüche sind auf vorteilhafte Weiterbildungen gerichtet.
-
Das erfindungsgemäße Verfahren zum Durchführen eines Programmes zur Verarbeitung von Daten umfassend mindestens ein Teilprogramm beruht darauf, dass ein Verwalter mindestens zwei lokale Agenten steuert und mit mindestens einem Teilprogramm versieht, wobei der Verwalter die Steuerung der lokalen Agenten basierend auf Steuerdaten durchführt, die mindestens eine der folgenden Informationen umfassen:
- a) die Lokalisierung der zu verarbeitenden Daten und
- b) die zur Verfügung stehende Rechenkapazität auf den lokalen Agenten,
wobei der Verwalter zumindest den Transport von Daten zu den lokalen Agenten und die Zuteilung von Teilprogrammen an die lokalen Agenten steuert.
-
Unter einem Verwalter wird insbesondere ein Computer verstanden, auf dessen Hardware eine entsprechende Software abläuft. Unter einem lokalen Agenten wird insbesondere ein Computer verstanden, auf dessen Hardware eine entsprechende Software abläuft. Unter dem Transport von Daten wird das Auslesen der Daten aus entsprechenden Speichern und das Übertragen der Daten in einen anderen Speicher verstanden. Unter einem Teilprogramm wird auch allgemein eine Rechenaufgabe verstanden.
-
Ein lokaler Agent umfasst insbesondere die folgenden Komponenten:
- 1. Hardware, insbesondere umfassend mindestens ein Speichermedium wie beispielsweise eine Festplatte, einen Flash-Speicher, ein Festkörper- oder Halbleiterlaufwerk (Solid State Drive, SSD) oder ähnliches, einen Grafikprozessor (Graphics Processing Unit, GPU), mindestens einen Mikroprozessor und entsprechende Schnittstellen (Interfaces); und
- 2. Software.
-
Der lokale Agent weist insbesondere eine Software auf, die Daten lädt, Rechenaufgaben ausführt und Ergebnisse speichert. Der lokale Agent weist insbesondere Informationen auf, die das eigene Leistungsvermögen bezogen auf Rechenleistung und gespeicherte Daten und angeschlossene Systeme umfassen. Bevorzugt werden diese Informationen intern auf dem lokalen Agenten verwaltet und insbesondere an den Verwalter kommuniziert. Insbesondere ist der lokale Agent auch geeignet und bestimmt, den Resourcenverbrauch pro Rechenaufgabe zu ermitteln und an den Verwalter zu kommunizieren.
-
Insbesondere weisen die lokalen Agenten Prozessoren in Standardtechnologie auf, die ein definiertes Interface, eine Laufzeitumgebung, einen internen Datenspeicher und einen Metadatenspeicher aufweisen und durch diese definiert sind. Lokale Agenten sind insbesondere in der Lage, entsprechende Arbeitsaufträge in Form von Teilprogrammen und/oder Rechenaufgaben selbstständig auszuführen. Bevorzugt wird das erfindungsgemäße Verfahren so durchgeführt, dass ein lokaler Agent die entsprechenden Ergebnisse des Teilprogramms und/oder der Rechenaufgabe an den Verwalter kommuniziert. Bevorzugt wird die Speicherung von Daten entweder in einem lokalen Filesystem auf dem lokalen Agenten, insbesondere in komprimierter und/oder verschlüsselter Form oder in einem externen Applikationsspeicher durchgeführt.
-
Bevorzugt umfasst ein lokaler Agent mindestens einen Plattenspeicher umfassend mindestens eine Festplatte, einen schnellen Datenspeicher (Randomn Access Memory, RAM), eine schnelle Recheneinheit umfassend mindestens einen Grafikprozessor, und ein Mikroprozessor zur Verarbeitung der Kommunikation und Transferleistungen. Bevorzugt werden dabei die lokalen Agenten so gesteuert, dass die zu verarbeitenden Daten auf dem lokalen internen Speicher der Grafikprozessoren gehalten werden als eine Art „In-Memory Database”.
-
Lokale Agenten haben folgende Fähigkeiten und Funktionen:
- – das Holen (Laden) externer Daten;
- – das Ausführen lokaler Berechnungen;
- – das Ausführen externer Berechnungen;
- – das Schreiben externer Daten;
- – die Beantwortung von Fragen oder Anfragen bezüglich externer Daten;
- – die Beantwortung von Fragen oder Anfragen bezüglich interner Daten; und
- – die Lieferung von internen Daten.
-
Unter dem Ausführen externer Berechnungen wird die Steuerung der Durchführung einer Berechnung auf einem externen Rechner, also die Steuerung eines anderen Rechners verstanden. In diesem Falle übernimmt also auch der lokale Agent Steueraufgaben für einen Drittrechner. Dies ist insbesondere dann von Vorteil, wenn ein bestehendes System erweitert werden soll und/oder die Migration von Anwendungen von anderen Rechnern in das System gemäß der vorliegenden Erfindung stufenweise erfolgen soll.
-
Bevorzugt wird das erfindungsgemäße Verfahren so durchgeführt, dass der Verwalter auf eine bestimmte Anzahl üblicher lokaler Agenten (beispielsweise einen üblichen Pool oder Cluster) zurückgreifen kann, jedoch gleichzeitig in Kontakt mit einer weiteren Anzahl (einem oder mehr) potentiellen lokalen Agenten, die üblicherweise nicht vom Verwalter gesteuert werden. Jedoch kann dieser, wenn auf den potentiellen lokalen Agenten Rechenleistung zur Verfügung steht, die nicht auf diesem für andere Prozesse genutzt wird. Insbesondere ist es so möglich, die Resourcen eines Grafikprozessors auf einem potentiellen lokalen Agenten zu nutzen, die gerade nicht benötigt werden.
-
Das erfindungsgemäße Verfahren kann insbesondere auch mit lokalen Agenten mit unterschiedlicher Hardware eingesetzt werden. So ist es beispielsweise möglich, das entsprechend eingesetzte System unproblematisch mit neuen lokalen Agenten zu erweitern, ohne dass dies den Betrieb stören würde.
-
Bevorzugt wird eine einheitliche Programmiersprache vorzusehen, durch welches das System für den Anwender als ein einziges Rechnersystem wahrnehmbar wird. Bevorzugt ist ein Mechanismus vorgesehen, der die einheitliche Programmiersprache in eine auf den jeweiligen lokalen Agenten verständliche Programmiersprache umsetzt.
-
Die Steuerung der lokalen Agenten erfolgt bevorzugt von einem Verwalter, der eine zentrale Datenbank (Inventory) der lokalen Agenten und eine Metadatenbank umfasst. Die Metadatenbank enthält Informationen über die Position der gespeicherten Daten, also Informationen, aus denen sich schließen lässt, auf welcher Einheit, beispielsweise einem lokalen Agenten oder einem externen Applikationsspeicher, die Daten gespeichert sind und/oder Informationen über die Rechenmöglichkeit, also Informationen über die grundsätzliche und/oder die aktuell verfügbare Rechenkapazität auf den jeweiligen lokalen Agenten. Das Inventory dokumentiert pro lokalem Agenten die Rechenmöglichkeiten, also die grundsätzliche Rechenkapazität des lokalen Agenten, einen Performanceindikator und/oder einen Usageindikator. Basierend auf diesen Daten wird in einer bevorzugten Ausgestaltung entschieden, auf welchem lokalen Agenten die jeweilige Rechenaufgabe ausgeführt wird.
-
Unter der grundsätzlichen Rechenkapazität wird die vollständige prinzipiell oder grundsätzlich mögliche Rechenleistung des entsprechenden lokalen Agenten verstanden. Der Performanceindikator ist ein Maß für die Leistungsfähigkeit des entsprechenden lokalen Agenten. In ihm werden Faktoren wie die Leistung des mindestens einen zentralen Mikroprozessors (central processing unit, CPU), gegebenenfalls des mindestens einen Grafikprozessors, die Größe des Speichers, etc. abgebildet. Unter dem Usageindikator wird eine Messgröße verstanden, in die Größen wie die aktuelle Auslastung der CPU und gegebenenfalls des Grafikprozessors, die verbrauchte Rechenzeit, etc. einfließen.
-
Bevorzugt wird durch eine Programmierumgebung mit Hilfe einer Metasprache das gesamte Funktionsspektrum der Programmierumgebung definiert, bevorzugt umfasst die Programmierumgebung eine Eventschnittstelle und ein Scheduler, die für eine gesteuerte Ausführung der jeweiligen Rechenaufgaben auf den beteiligten lokalen Agenten verantwortlich sind. Unter einer Eventschnittstelle wird eine definierte Schnittstelle der Programmierumgebung verstanden, über die Ereignisse (Events) an die Programmierumgebung zur Auslösung einer Aktion geschickt werden können. Bei diesen Events kann es sich beispielsweise um Interrupts oder eine Systemveränderung handeln, also beispielsweise die Mitteilung, dass eine bestimmte Datei existiert, dass sich ein Dateninhalt geändert hat etc.
-
Die Provisionierung, also die Verteilung der Teilprogramme auf die verschiedenen lokalen Agenten, erfolgt bevorzugt wie folgt: Pro Rechenaufgabe werden in den lokalen Agenten die Nutzungszeiten, also die benötigte Zeit pro Rechenaufgabe, dokumentiert und werden an den Verwalter kommuniziert. In dessen Inventory erfolgt eine bevorzugt eine Abrechnung der verbrauchten Zeiten basierend auf hinterlegten Rechenkosten pro lokalem Agenten. Das Inventory des Verwalters enthält für jeden lokalen Agenten die Kosten pro Zeiteinheit und pro Datenvolumen.
-
Die Provisionierung erfolgt insbesondere so, dass eine Optimierung im Hinblick auf die Energieeffizient, die Kosteneffizient und/oder die Zeiteffizienz bei der Abarbeitung des jeweiligen Programms erfolgt. Bevorzugt ist es möglich, gleiche Rechenaufgaben an lokale Agenten unterschiedlicher Ausgestaltung, also insbesondere unterschiedlicher Architektur zu delegieren. Dies gestattet in vorteilhafter Weise die Migration von bestimmten Programmen von alter Hardware auf neue Hardware bei gleichzeitiger Redundanz während der Migrationsphase.
-
Bevorzugt wird bei der Speicherung der im erfindungsgemäßen Verfahren benötigten und erzeugten Daten wie folgt verfahren: Durch die Verteilung der möglichen Rechenaufgaben auf mehrere Rechner wird eine Redundanz erzeugt, die die Ausfallsicherheit erhöht. Die Daten werden in den lokalen Agenten bevorzugt persistent, das heißt nicht flüchtig, gespeichert. Diese persistenten Daten gehen auch nach Beenden des Teilprogramms oder bei unvorhersehbarem Herunterfahren des lokalen Agenten nicht verloren. Durch diese Persistenz innerhalb der lokalen Agenten kann sichergesellt werden, dass auch beim Ausfall der Kommunikationswege zwischen lokalem Agenten und Verwalter die Funktion der lokalen Agenten gewährleistet bleibt.
-
Bevorzugt werden die Daten auf dem lokalen Agenten in einem Standardfileformat komprimiert und/oder verschlüsselt gespeichert.
-
Bevorzugt erfolgt die Kommunikation zwischen den lokalen Agenten und/oder zwischen den lokalen Agenten und dem Verwalter über mobile Agenten Bei einem mobilen Agenten handelt es sich insbesondere um einen Code, insbesondere einen ausführbaren Code, der zwischen lokalem Agenten und Verwalter und zwischen zwei lokalen Agenten transferiert werden kann. Mobile Agenten haben insbesondere die Eigenschaft, dass sie Zustände, Daten und/oder Programmcode transportieren kann. Dies bedeutet, dass man beispielsweise auch neuen, notwendigen Programmcode an einen oder mehrere lokale Agenten transferieren kann.
-
Gemäß einer vorteilhaften Ausgestaltung des erfindungsgemäßen Verfahrens enthält zumindest ein Teil der lokalen Agenten mindestens einen Grafikprozessor (Graphics Processing Unit, GPU) und die entsprechende Verarbeitung von Daten erfolgt zumindest teilweise auf dem Grafikprozessor.
-
Die Verarbeitung der Daten auf einem Grafikprozessor hat Vorteile gegenüber der Verarbeitung auf einem üblichen Prozessor. Übliche Prozessoren sind so gestaltet, dass sie eine Vielzahl von Aufgaben, die zum Betrieb eines Computers notwendig sind, neben den üblichen Rechenleistungen erfüllen. Dies mindert die Performance und insbesondere die Performance pro Kaufpreis. Im Gegensatz dazu weisen Grafikprozessoren üblicherweise eine hohe grundsätzliche Rechenleistung aus und insbesondere pro Kaufpreis. So ist es vorteilhaft mit dem Einsatz von lokalen Agenten mit einem oder mehreren Grafikprozessoren zum Abarbeiten der Teilprogramme zu arbeiten.
-
Gemäß einer weiteren vorteilhaften Ausgestaltung greift der Verwalter bei der Steuerung auf Steuerdaten zurück, die mindestens eine der folgenden Informationen umfassen:
- a) die Art des mindestens einen Grafikprozessors eines lokalen Agenten;
- b) die Anzahl der Grafikprozessoren eines lokalen Agenten;
- c) die grundsätzliche Rechenleistung des mindestens einen Grafikprozessors eines lokalen Agenten; und
- d) die Auslastung des Grafikprozessors des lokalen Agenten.
-
Insbesondere kann der Verwalter größere oder mehrere Teilprogramme lokalen Agenten zuweisen, die mehr Grafikprozessoren aufweisen als andere lokale Agenten. Insbesondere die Berücksichtigung der aktuellen Auslastung des Grafikprozessors des lokalen Agenten kann zu einer vorteilhaften besseren und schnelleren Ausführung des Programms führen. Die Art und/oder die grundsätzliche Rechenleistung des mindestens einen Grafikprozessors können ebenso in vorteilhafter Weise bei der Verteilung der Teilprogramme auf die verschiedenen lokalen Agenten zu einer effektiven Lastverteilung berücksichtigt werden. Bevorzugt werden mindestens drei dieser Informationen bei der Steuerung durch den Verwalter, also bei der Verteilung der Rechenaufgaben bzw. Teilprogramme auf die unterschiedlichen lokalen Agenten berücksichtigt.
-
Gemäß einer weiteren vorteilhaften Ausgestaltung des erfindungsgemäßen Verfahrens melden die lokalen Agenten mindestens einen der folgenden Parameter an den Verwalter:
- a) die nötige Rechenzeit für die dem lokalen Agenten zugewiesene Teilprogramm;
- b) die nötige Speicherkapazität zur Bearbeitung des dem lokalen Agenten zugewiesenen Teilprogramms;
- c) die grundsätzliche Rechenleistung des lokalen Agenten;
- d) die grundsätzliche Speicherkapazität des lokalen Agenten; und
- e) die grundsätzliche Konfiguration des lokalen Agenten.
-
Die Kommunikation mindestens eines dieser Parameter an den Verwalter, bevorzugt mindestens zwei dieser Parameter an den Verwalter erlauben diesem eine effektive Verwaltung des gesamten Programms und dessen Verteilung auf die einzelnen lokalen Agenten.
-
Gemäß einer weiteren vorteilhaften Ausgestaltung des erfindungsgemäßen Verfahrens hält der Verwalter folgende Daten der lokalen Agenten vor:
- a) den Energieverbrauch bei mindestens einem Auslastungszustand des lokalen Agenten;
- b) die Betriebskosten des lokalen Agenten pro Zeiteinheit;
- c) die Betriebskosten des lokalen Agenten pro Datenvolumen; und
- d) die Transportkosten für den Transport von Code zwischen lokalem Agenten und Verwalter.
-
Die Kenntnis des Energieverbrauchs bei mindestens einem Auslastungszustand des lokalen Agenten, insbesondere bei voller Auslastung, und bevorzugt bei zwei oder mehr Auslastungszuständen erlaubt eine energieeffiziente Steuerung durch den Verwalter. Die Kenntnis der Betriebskosten des lokalen Agenten erlaubt eine Kostenoptimierte Steuerung durch den Verwalter. Die Transportkosten ergeben sich beispielsweise aus der Entfernung des lokalen Agenten vom Verwalter und der Leitungskapazität, sowie den Kosten für die Bereitstellung der Leitung.
-
Gemäß einer weiteren vorteilhaften Ausgestaltung des erfindungsgemäßen Verfahrens erfolgt die Verteilung der Teilprogramme auf die lokalen Agenten basierend auf einem Algorithmus, der mindestens eine der folgenden Größen minimiert:
- a) den Energieverbrauch zur Abarbeitung des Programmes;
- b) die entstehenden Kosten zur Abarbeitung des Programmes; und
- c) die zur Abarbeitung des Programmes benötigte Zeit.
-
Basierend auf den dem Verwalter vorliegenden Informationen kann eine Optimierung auf einen möglichst geringen Energieverbrauch, möglichst geringe Kosten oder eine möglichst kurze Zeit zur Abarbeitung des Programmes erfolgen. Alternativ können auch zwei dieser Größen oder alle drei Größen optimiert werden, wobei es möglich ist, eine Gewichtung beispielsweise auf einen möglichst geringen Energieverbrauch unter in Kaufnehmen einer etwas längeren Rechenzeit vorzusehen oder ähnliches.
-
Ferner wird ein System geeignet und bestimmt zur Durchführung des erfindungsgemäßen Verfahrens vorgeschlagen. Dieses System umfasst Hardwarekomponenten und kann insbesondere auch auf einem Datenträger umfasst sein. Bevorzugt umfasst das System Hardware umfassend mindestens drei Recheneinheiten, davon ein Verwalter und zwei lokale Agenten. Die für das Verfahren offenbarten Details lassen sich auf das erfindungsgemäße System übertragen und anwenden, wobei hier geeignete Mittel zur Durchführung der entsprechenden Verfahrensschritte ausgebildet sind.
-
Im Folgenden soll die Erfindung kurz anhand der beigefügten Figur erläutert werden, die schematisch ein Ausführungsbeispiel zeigt. Die Erfindung ist nicht auf die dort gezeigten Details beschränkt.
-
1 zeigt schematisch ein System 1 zur Datenverarbeitung gemäß der vorliegenden Erfindung. Das System 1 umfasst einen Verwalter 2 und mehrere lokale Agenten 3. Diese sind über entsprechende Verbindungen 4, die der Übersichtlichkeit halber nicht alle mit einem Bezugszeichen versehen sind, mit dem Verwalter 2 verbunden. Die lokalen Agenten 3 umfassen jeweils mehrere Grafikprozessoren (nicht gezeigt), Plattenspeicher (nicht gezeigt) und einen Mikroprozessor (nicht gezeigt). Der Verwalter 3 enthält eine Metadatenbank und ein Inventory. Für jeden lokalen Agenten 3 ist in diesen Datenbanken gespeichert, welche grundsätzliche Rechenkapazität der lokale Agent 3 aufweist, wie hoch seine Auslastung ist, ebenso dessen Performanceindikator und Usageindikator. Weiterhin ist in der Metadadenbank des Verwalters 2 die Position jeder notwendiger Daten entweder auf einem lokalen Agenten 3 oder auf einem externen Applikationsspeicher 5 gespeichert, sowie die grundsätzliche Rechenkapazität der einzelnen lokalen Agenten 3. Aufgrund dieser Daten erfolgt die Verteilung der Teilprogramme durch den Verwalter 2 auf die lokalen Agenten 3.
-
Die lokalen Agenten 3 weisen Grafikprozessoren auf, die zum Berechnen der Rechenaufgaben/Teilprogramme eingesetzt werden. Diese sind preiswert, so dass kostengünstig eine hohe Rechenleistung bereitgestellt werden kann.
-
Weiterhin ist ein potentieller lokaler Agent 6 gezeigt, der nicht zum System 1 gehört, der aber ebenfalls mit dem Verwalter 2 verbindbar ist. Im Falle von voller Auslastung des Systems 1 und nur teilweiser Auslastung des potentiellen lokalen Agenten 6 kann dieser zumindest zeitweise in das System 1 eingebunden werden und so einerseits die Rechenleistung des Systems 1 erhöhen und andererseits die vorhandenen Resourcen im potentiellen lokalen Agenten 6 sinnvoll nutzen.
-
Das erfindungsgemäße Verfahren und das erfindungsgemäße System 1 erlauben in vorteilhafter Weise den Aufbau hoch performanter Rechensysteme, die kostengünstig und gut skalierbar sind. So können die Kosten, die zum Zeitpunkt der Einreichung dieser Anmeldung für so genannte Supercomputer anfallen, bei gleicher Rechenleistung und verringertem Energieverbrauch deutlich gesenkt werden.
-
Bezugszeichenliste
-
- 1
- System
- 2
- Verwalter
- 3
- lokaler Agent
- 4
- Verbindung
- 5
- externer Applikationsspeicher
- 6
- potentieller lokaler Agent