DE69520988T2 - Lastverteilungsverfahren und -system - Google Patents
Lastverteilungsverfahren und -systemInfo
- Publication number
- DE69520988T2 DE69520988T2 DE69520988T DE69520988T DE69520988T2 DE 69520988 T2 DE69520988 T2 DE 69520988T2 DE 69520988 T DE69520988 T DE 69520988T DE 69520988 T DE69520988 T DE 69520988T DE 69520988 T2 DE69520988 T2 DE 69520988T2
- Authority
- DE
- Germany
- Prior art keywords
- information processing
- processing device
- load
- threads
- distributed task
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 48
- 230000010365 information processing Effects 0.000 claims description 132
- 238000012545 processing Methods 0.000 claims description 43
- 238000012546 transfer Methods 0.000 claims description 25
- 230000007246 mechanism Effects 0.000 claims description 16
- 230000007423 decrease Effects 0.000 claims description 9
- 238000001514 detection method Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000005012 migration Effects 0.000 description 4
- 238000013508 migration Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Multi Processors (AREA)
Description
- Die Erfindung betrifft ein Lastverteilungsverfahren und - system zur Steuerung einer Aufgabe, die in einer Vielzahl von Informationsverarbeitungsvorrichtungen bearbeitet wird.
- Bei Informationsverarbeitungsvorrichtungen vom Multiprozessortyp, die jeweils eine Vielzahl von Prozessoren beinhalten, wurde eine Aufgabe-/Thread-Modell genannte Programmform vorgeschlagen, die diese Prozessoren effektiv nutzen kann. Bei diesem Modell wird ein Programm in eine Vielzahl von Threads genannten Ausführungsmodulen und Aufgaben genannte Einheiten unterteilt, denen Ressourcen zugewiesen sind. Die Threads sind Einheiten, denen Prozessorressourcen zugewiesen sind. Andere Ressourcen, wie Speicherplatzressourcen und dergleichen, sind Aufgaben zugewiesen, und sind für alle Threads in jeder Aufgabe freigegeben. Das Aufgabe-/Thread-Modell ist ein Modell für Programme zur effizienten Verwendung von Prozessorressourcen in einer Informationsverarbeitungsvorrichtung vom Multiprozessortyp.
- Es wurden auch Threads auf der Benutzerebene vorgeschlagen, die beispielsweise Kontexte umschalten und Threads in einem Benutzerraum in einem üblichen Aufgabe-/Thread-Modell- Programm erzeugen können. Dieser Thread-Typ wurde vorgeschlagen, um Nachteile eines herkömmlichen Aufgabe- /Thread-Modells dahingehend zu verbessern, dass beispielsweise die Erzeugung von Threads und das Umschalten der Kontexte einen Systemaufruf eines Betriebssystem- (OS- )kerns erfordern, woraus sich eine niedrige Verarbeitungsgeschwindigkeit ergibt. Der Benutzerebenen- Thread weist Vorteile dahingehend auf, dass eine Vielzahl von Kontexte vorgesehen werden kann, und die Erzeugung von Threads, das Umschalten der Kontexte und dergleichen in einem Benutzerraum durchgeführt werden kann, was eine hohe Verarbeitungsgeschwindigkeit erlaubt. Im Gegensatz zu einem derartigen Benutzerebenen-Thread wird ein durch einen herkömmlichen OS-Kern gesteuerter Thread Kernebenen-Thread genannt.
- Es wurde auch ein verteiltes Aufgabe-/Thread-Modell vorgeschlagen, bei dem unter Verwendung eines verteilten virtuellen gemeinsam genutzten Speicherverfahrens zur Realisierung eines virtuellen gemeinsam genutzten Speichers zwischen Aufgaben in einer Vielzahl von Informationsverarbeitungsvorrichtungen durch Steuerung einer herkömmlichen Speicherverwaltungseinheit und einem Netz zwischen den Informationsverarbeitungsvorrichtungen ohne die Bereitstellung einer besonderen Vorrichtung der gesamte virtuelle Speicherplatz in jeder Aufgabe gemeinsam genutzt wird und eine Vielzahl von Threads in dem gemeinsam genutzten Zustand betrieben werden. Bei diesem Modell wird der gesamte Hauptspeicher in den jeweiligen Aufgaben mit einer Vielzahl von Informationsverarbeitungsvorrichtungen zu einem verteilten virtuellen gemeinsam genutzten Speicher gemacht, und diese Aufgaben werden zusammen als eine verteilte Aufgabe mit zumindest einem Thread betrachtet. Bei dem verteilten Aufgabe-/Thread-Modell sind die Informationsverarbeitungsvorrichtungen vom Multiprozessortyp gemäß dem vorstehend beschriebenen Aufgabe-/Thread-Modell durch die Verbindung einer Vielzahl von Informationsverarbeitungsvorrichtungen mit einem Netz ersetzt, um diese verteilten Ressourcen effektiv zu nutzen. In einem verteilten virtuellen gemeinsam genutzten Speicher wird ein Netz hauptsächlich zur Übertragung von Seitendaten mit einer festen Länge verwendet, sodass ein Hochgeschwindigkeitsnetz effektiv verwendet werden kann.
- In einem System mit verteilten Informationsverarbeitungsvorrichtungen ist die Last nicht gleichmäßig unter den Informationsverarbeitungsvorrichtungen verteilt. Somit wurden verschiedene Arten von Lastverteilungsverfahren vorgeschlagen, um eine Konzentration der hast zu verhindern. Herkömmliche Lastverteilungsverfahren umfassen beispielsweise ein Verfahren, das Aufgabenmigration genannt wird, bei dem eine im Arbeitsgang befindliche Aufgabe von einer stark belasteten Informationsverarbeitungsvorrichtung zu einer schwach belasteten Informationsverarbeitungsvorrichtung übertragen wird, und ein Verfahren, das Fernaufgabenausführung genannt wird, bei dem eine in einer stark belasteten Informationsverarbeitungsvorrichtung auszuführende Aufgabe stattdessen in einer schwach belasteten Informationsverarbeitungsvorrichtung ausgeführt wird. Bei dem Aufgabenmigrationsverfahren, bei dem eine im Arbeitsgang befindliche Aufgabe übertragen wird, muss die gesamte Aufgabe in ihrem gegenwärtigen Ausführungszustand zu einer vollkommen verschiedenen Informationsverarbeitungsvorrichtung übertragen werden. Bei dem Fernaufgabenausführungsverfahren ist eine derartige Übertragung nicht erforderlich, und es ist lediglich erforderlich, eine kleine Menge an Information zu übertragen, wie den Namen der Aufgabe in Ausführung, die Umgebung zur Ausführung, Argumente und dergleichen. Da es aber nicht möglich ist, eine Aufgabe zu übertragen, die einmal gestellt wurde, ist die Zeit zur Ausführung der Lastverteilung begrenzt.
- Sowohl bei dem vorstehend beschriebenen Aufgabenmigrationsverfahren als auch dem Fernaufgabenausführungsverfahren wird eine Aufgabe vollständig zu einer anderen Informationsverarbeitungsvorrichtung übertragen und wird dort bearbeitet, obwohl sich die Übertragungszeit unterscheidet. Dies stellt kein Problem dar, wenn die verteilten Informationsverarbeitungsvorrichtungen die gleichen Verarbeitungsfähigkeiten haben, die Last des verteilten Gesamtsystems groß ist, und eine Aufgabe in einer Informationsverarbeitungsvorrichtung, deren Belastung unter den Vorrichtungen besonders hoch ist, zu einer schwach belasteten Informationsverarbeitungsvorrichtung übertragen werden kann. Es wird ein Fall angenommen, in dem die Last des gesamten Verteilungssystems gering und die Anzahl der Operationsaufgaben geringer als die Anzahl der Informationsverarbeitungsvorrichtung ist. In diesem Fall kann selbst dann, wenn eine Aufgabe vorhanden ist, bei der eine große Anzahl von Threads erzeugt wird, und die Belastung der Informationsverarbeitungsvorrichtung, die die Aufgabe bearbeitet, stark ist, die Übertragung der Aufgabe zu einer weniger belasteten Informationsverarbeitungsvorrichtung die Last selbst dann nicht ausgleichen, wenn die Last übertragen wird. Und es wird lediglich die Belastung der ersten Informationsverarbeitungsvorrichtung verringert.
- Ist demnach die Anzahl der Aufgaben in Bearbeitung gering, sind bei den vorstehend beschriebenen Lastverteilungsverfahren, bei denen eine Aufgabe vollständig übertragen und bearbeitet wird, Informationsverarbeitungsvorrichtungen vorhanden, denen keine Aufgabe zugeordnet ist, wodurch das Verarbeitungsvermögen dieser Vorrichtungen unausgenutzt bleibt.
- Es wird ein Fall betrachtet, bei dem jeweilige Informationsverarbeitungsvorrichtungen unterschiedliche Verarbeitungsfähigkeiten haben (was einen Fall einschließt, bei dem die Anzahl von Prozessoren sich unterscheidet, die die jeweiligen Informationsverarbeitungsvorrichtungen aufweisen). In diesem Fall entsteht dann, wenn die Last jeder Informationsverarbeitungsvorrichtung nicht gleich ist und daher die Übertragung einer Aufgabe beabsichtigt wird, kein Problem bei der Übertragung der Aufgabe von einer Informationsverarbeitungsvorrichtung mit einer geringeren Verarbeitungsfähigkeit zu einer Informationsverarbeitungsvorrichtung mit einer hohen Verarbeitungsfähigkeit. Allerdings verursacht die Übertragung der Aufgabe von einer Informationsverarbeitungsvorrichtung mit einer hohen Verarbeitungsfähigkeit zu einer Informationsverarbeitungsvorrichtung mit einer geringen Verarbeitungsfähigkeit die folgenden Probleme.
- Ist die Last konzentriert und werden mehrere Aufgaben in einer Informationsverarbeitungsvorrichtung A mit einer hohen Verarbeitungsfähigkeit verarbeitet, und wurde eine Aufgabe im Arbeitsgang beendet und ist keine Last in einer Informationsverarbeitungsvorrichtung B mit einer geringen Verarbeitungsfähigkeit vorhanden, wird eine der Aufgaben in der Vorrichtung A zu der Vorrichtung B übertragen. Danach beendet die Vorrichtung A die Ausführung der verbleibenden Aufgaben, da sie eine hohe Verarbeitungsfähigkeit aufweist, aber die Verarbeitung der zu der Vorrichtung B übertragenen Aufgabe wird weiter fortgesetzt, da die Vorrichtung B eine geringe Verarbeitungsfähigkeit aufweist. Demnach tritt ein Inversionsphänomen auf, d. h., die Ausführung der Aufgabe wäre bereits abgeschlossen worden, wenn sie nicht zu der Vorrichtung B übertragen worden wäre.
- Zur Verhinderung dieses Phänomens kann die zu der Vorrichtung B übertragene Aufgabe zurück zu der Vorrichtung A übertragen werden. Allerdings kann bei dem Fernaufgabenausführungsverfahren eine Aufgabe, die bereits bearbeitet wird, nicht übertragen werden. Auch im Fall des Aufgabenmigrationsverfahrens verursacht die Rückübertragung einer Aufgabe eine Verschlechterung der Verarbeitungsleistung. Es kann in Betracht gezogen werden, eine leichte Aufgabe mit kurzem Verarbeitungszeitabschnitt unter den in der Vorrichtung A bearbeiteten Aufgaben auszuwählen, sodass es Sinn macht, die Aufgabe in der Vorrichtung B auszuführen. Allerdings ist es schwierig, eine derartige Aufgabe während eines herkömmlichen Betriebs auszuwählen. Unter Berücksichtigung der vorstehend beschriebenen Probleme wurde allgemein eine Übertragung einer Aufgabe zu einer Informationsverarbeitungsvorrichtung reit geringer Verarbeitungsfähigkeit nicht aktiv in Betracht gezogen. Bei Anderson et al. ist in "The Performance Implications of Thread Management Alternatives for Shared- Memory Multiprocessors", (IEE Trans. SN Comp. U33 Nr. 72, Dezember 1989, Seiten 1631-1644) ein Lastverteilungssystem mit einer Multiprozessorverarbeitungsvorrichtung beschrieben, bei der Lastinformationen über jeden Prozessor erfasst werden, der Verteilungsgrad einer verteilten Aufgabe entsprechend den erfassten Lastinformationen gesteuert wird, und in einem stark belasteten Prozessor bearbeitete Threads zu einem schwach belasteten Prozessor übertragen werden.
- Gemäß der beanspruchten Erfindung kann in einem System mit einer Einrichtung zur Verbindung einer Vielzahl verteilter Informationsverarbeitungsvorrichtungen mit einem Netz und der Ausführung von Aufgaben durch die Verteilung von Threads in einer verteilten Aufgabe, die einen virtuellen Speicherplatz gemeinsam nutzen, wenn als Ergebnis der Erfassung von Lastinformationen von (oder zumindest bezüglich) jeder Informationsverarbeitungsvorrichtung bestimmt wird, dass die Last nicht gleichmäßig ist, durch die Steuerung des Verteilungsgrads einer verteilten Aufgabe im Betrieb und Übertragung von in der verteilten Aufgabe arbeitenden Threads die Last in den Informationsverarbeitungsvorrichtungen verteilt werden und die Verarbeitungsfähigkeiten der Informationsverarbeitungsvorrichtungen des Gesamtsystems ausreichend genutzt werden.
- Durch die Bereitstellung eines Thread-Steuermechanismus auf der Benutzerebene in einer verteilten Aufgabe und durch die Verwendung einer Kontextumschaltung in einem vom Benutzer verteilten virtuellen gemeinsam genutzten Speicherraum kann die Last in den Informationsverarbeitungsvorrichtungen ohne tatsächliche Übertragung von Threads in der verteilten Aufgabe verteilt werden.
- Durch periodisches Zirkulieren von Lastinformationen einer betroffenen Vorrichtung als Nachricht können effiziente Lastinformationen erfasst werden.
- Durch die Sammlung der Lastinformationen von (oder über) anderen Informationsverarbeitungsvorrichtungen lediglich dann, wenn sich der Zustand der Belastung einer betroffenen Vorrichtung erhöht oder verringert, und eine Erweiterung einer verteilten Aufgabe und eine Übertragung von Threads durchgeführt werden müssen, können Lastinformationen effektiv gesammelt werden.
- Gemäß einer Ausgestaltung der Erfindung ist ein Lastverteilungsverfahren zur Verteilung der Verarbeitungslast zwischen einer Vielzahl von in einem Netz verbundenen Informationsverarbeitungsvorrichtungen zur Ausführung einer verteilten Aufgabe unter Verwendung einer verteilten, virtuellen, gemeinsam genutzten Speichereinrichtung, wobei die Aufgabe in der Vielzahl der Informationsverarbeitungsvorrichtungen vorhanden ist, durch Verteilen von Threads in den jeweiligen Informationsverarbeitungsvorrichtungen ausgestaltet, mit den Schritten:
- Erfassen von Lastinformationen über die Vielzahl der Informationsverarbeitungsvorrichtungen,
- Steuern des Verteilungsgrades einer verteilten Aufgabe im Betrieb gemäß den erfassten Lastinformationen und
- Übertragen von Threads, die in einer stark belasteten Informationsverarbeitungsvorrichtung in der verteilten Aufgabe arbeiten, zu einer schwach belasteten Informationsverarbeitungsvorrichtung,
- dadurch gekennzeichnet, dass
- in dem Steuerschritt die stark belastete Informationsverarbeitungsvorrichtung die darin arbeitende verteilte Aufgabe auf die schwach belastete Informationsverarbeitungsvorrichtung expandiert, und
- die schwach belastete
- Informationsverarbeitungsvorrichtung die von der stark belasteten Informationsverarbeitungsvorrichtung expandierte verteilte Aufgabe auf die schwach belastete Informationsverarbeitungsvorrichtung komprimiert.
- Gemäß einer weiteren Ausgestaltung bezieht sich die Erfindung auf ein Lastverteilungssystem mit einem Mechanismus zur Verbindung einer Vielzahl von Informationsverarbeitungsvorrichtungen mit einem Netz, und zur Ausführung einer verteilten Aufgabe, deren Hauptspeicher durch ein verteiltes, virtuelles, gemeinsam genutztes Speicherverfahren gemeinsam genutzt wird, wobei die Aufgabe in der Vielzahl der Informationsverarbeitungsvorrichtungen durch Verteilung von Threads in den jeweiligen Informationsverarbeitungsvorrichtungen vorhanden ist, mit:
- einer Erfassungseinrichtung zum Erfassen von Lastinformationen über die Vielzahl der Informationsverarbeitungsvorrichtungen,
- einer Steuereinrichtung zum Steuern des Verteilungsgrads einer verteilten Aufgabe im Betrieb gemäß den erfassten Lastinformationen und
- einer Übertragungseinrichtung zum Übertragen von Threads, die in einer stark belasteten Informationsverarbeitungsvorrichtung in der verteilten Aufgabe arbeiten, zu einer schwach belasteten Informationsverarbeitungsvorrichtung,
- dadurch gekennzeichnet, dass
- die Steuereinrichtung zum Expandieren der in der stark belasteten Informationsverarbeitungsvorrichtung arbeitenden verteilten Aufgabe auf die schwach belastete Informationsverarbeitungsvorrichtung, und zur Steuerung der schwach belasteten Informationsverarbeitungsvorrichtung zum Komprimieren der von der stark belasteten Informationsverarbeitungsvorrichtung expandierten verteilten Aufgabe auf die schwach belastete Informationsverarbeitungsvorrichtung eingerichtet ist.
- Die vorstehenden und weitere Merkmale und Vorteile der Erfindung werden aus der folgenden Beschreibung der bevorzugten Ausführungsbeispiele in Verbindung mit der beiliegenden Zeichnung ersichtlich.
- Fig. 1 zeigt eine Darstellung des Aufbaus verteilter Informationsverarbeitungsvorrichtungen unter Verwendung eines Lastverteilungsverfahrens gemäß einem ersten Ausführungsbeispiel der Erfindung,
- Fig. 2 zeigt eine schematische Darstellung des Lastverteilungsverfahrens gemäß dem ersten Ausführungsbeispiel,
- Fig. 3 zeigt ein Ablaufdiagramm von Verarbeitungsabläufen in dem Lastverteilungsverfahren des ersten Ausführungsbeispiels,
- Fig. 4 zeigt eine Darstellung der Erweiterung einer verteilten Aufgabe,
- Fig. 5 zeigt eine Darstellung der Kompression einer verteilten Aufgabe,
- Fig. 6 zeigt ein Ablaufdiagramm, wenn die Erfassung von Lastinformationen in einem anderen Thread durchgeführt wird,
- Fig. 7 zeigt ein Ablaufdiagramm, wenn die Lastverteilung autonom an verteilten Knoten gemäß einem zweiten Ausführungsbeispiel der Erfindung durchgeführt wird,
- Fig. 8 zeigt eine Darstellung der Beziehung zwischen Threads auf Kernebene und Threads auf Benutzerebene gemäß einem dritten Ausführungsbeispiel der Erfindung, und
- Fig. 9 zeigt ein Ablaufdiagramm eines Lastverteilungsverfahrens unter Verwendung einer Bewegung von Benutzerebenen-Threads gemäß dem dritten Ausführungsbeispiel.
- Nachstehend wird ein erstes Ausführungsbeispiel der Erfindung unter Bezugnahme auf die Zeichnung beschrieben.
- Fig. 1 zeigt eine Darstellung verteilter Informationsverarbeitungsvorrichtungen gemäß dem ersten Ausführungsbeispiel. Jede Informationsverarbeitungsvorrichtung kann als herkömmliche Informationsverarbeitungsvorrichtung für sich selbst arbeiten. Diese Informationsverarbeitungsvorrichtungen sind miteinander mittels eines Netzes verbunden, und können miteinander kommunizieren. Jede Informationsverarbeitungsvorrichtung beinhaltet nicht immer einen vollständigen Satz von Eingabe- und Ausgabeeinrichtungen, und hat nicht immer die gleiche Verarbeitungsfähigkeit. Beispielsweise kann sich die Anzahl von Prozessoren jeder Informationsverarbeitungsvorrichtung unterscheiden, oder die Rechenleistung jeweiliger Prozessoren kann unterschiedlich sein.
- Fig. 2 zeigt eine schematische Darstellung eines Lastverteilungsverfahrens gemäß diesem Ausführungsbeispiel. Jeweilige Informationsverarbeitungsvorrichtungen (die nachstehend als Knoten bezeichnet werden) 201 sind miteinander über ein Netz verbunden. Ein Mikrokern 202 eines Betriebssystems steuert Aufgaben, einen Hauptspeicher in dem entsprechenden Knoten, Threads auf Kernebene und dergleichen. Ein Lastverteilungsserver 203 führt das Lastverteilungsverfahren dieses Ausführungsbeispiels aus. Die Server 203 in den jeweiligen Knoten 201 führen eine Lastverteilung durch Kommunikation und Kooperation miteinander aus. Das Bezugszeichen 204 bezeichnet eine auf eine Vielzahl von Knoten verteilte Aufgabe. Threads 205 arbeiten in jeder verteilten Aufgabe 204. Verteilte virtuelle gemeinsam genutzte Speicherserver 206 realisieren einen verteilten virtuellen gemeinsam genutzten Speicher einer verteilten Aufgabe.
- Fig. 3 zeigt ein Ablaufdiagramm des Lastverteilungsverfahrens dieses Ausführungsbeispiels.
- In Schritt S1 werden Lastinformationen jeder Informationsverarbeitungsvorrichtung wie bei dem herkömmlichen Lastverteilungsverfahren erfasst. In Schritt S2 wird bestimmt, ob die in Schritt S1 erfassten Lastinformationen jeder Informationsverarbeitungsvorrichtung gleich sind. Ist das Ergebnis der Bestimmung positiv, kehrt der Prozess zu Schritt S1 zurück. Ist das Ergebnis der Bestimmung negativ, d. h. sind stark belastete Knoten und leicht belastete Knoten vorhanden, geht der Prozess zu Schritt S3 über. In Schritt S3 wird der Verteilungsgrad einer verteilten Aufgabe in Betrieb (die Anzahl der Knoten, in denen die verteilte Aufgabe bearbeitet wird) gesteuert. In Schritt S4 werden Threads in der verteilten in Betrieb befindlichen Aufgabe von einem stark belasteten Knoten zu einem leicht belasteten Knoten übertragen.
- Der Verteilungsgrad einer verteilten Aufgabe wird gemäß zwei Verfahren gesteuert, d. h. einem Verfahren der Erhöhung des Verteilungsgrads, und einem Verfahren der Verringerung des Verteilungsgrads. Zur Erhöhung des Verteilungsgrads wird der verteilte virtuelle gemeinsam genutzte Speicherplatz in der verteilten Aufgabe auf einen anderen Knoten erweitert, sodass die Threads in der verteilten Aufgabe darin arbeiten können. Fig. 4 zeigt eine Darstellung, die das Konzept der Erweiterung einer verteilten Aufgabe veranschaulicht.
- Zur Verringerung des Verteilungsgrads werden alle Threads von einem Knoten, an dem die verteilte Aufgabe als Ergebnis der Erweiterung bearbeitet wird, zu einem anderen Knoten übertragen, wo die verteilte Aufgabe vorhanden ist, und die gemeinsame Nutzung in dem verteilten virtuellen gemeinsam genutzten Speicher wird für den Knoten gelöscht, von dem alle Threads übertragen wurden. Fig. 5 zeigt eine Darstellung, die das Konzept der Kompression einer verteilten Aufgabe veranschaulicht.
- Im oberen Abschnitt von Fig. 5 sind vier Threads im Knoten B zusätzlich zu zwei Threads vorhanden, die durch den verteilten virtuellen gemeinsam genutzten Speicher gemeinsam genutzt werden, d. h. sechs Threads sind insgesamt im Knoten B vorhanden. Andererseits sind zwei Threads im Knoten A vorhanden. Zur Verteilung der Last des stark belasteten Knotens B wird die gemeinsame Nutzung von Threads in dem verteilten virtuellen gemeinsam genutzten Speicher gelöscht, um den Verteilungsgrad zu verringern und die verteilte Aufgabe zu komprimieren. Infolgedessen sind, wie es in dem unteren Abschnitt von Fig. 5 gezeigt ist, vier Threads in jedem Knoten A und B vorhanden, sodass eine Lastverteilung realisiert wurde.
- Bei dem Lastverteilungsverfahren dieses Ausführungsbeispiels wird durch die Durchführung einer Expansion und einer Kompression einer verteilten Aufgabe auf die vorstehend beschriebene Art und Weise der Verteilungsgrad der verteilten Aufgabe gesteuert, und die Lastverteilung wird durch Erweiterung einer verteilten Aufgabe, die in einem stark belasteten Knoten bearbeitet wird, auf einen leicht belasteten Knoten, oder durch Kompression der verteilten Aufgabe in den leicht belasteten Knoten (von einem stark belasteten Knoten) und Übertragung von Threads in der verteilten Aufgabe durchgeführt.
- Sowohl die Expansion als auch die Kompression einer verteilten Aufgabe werden in Abhängigkeit vom Verteilungssystem durchgeführt. In einem System zur Erzeugung einer verteilten Aufgabe, während sie auf andere Knoten expandiert wird, deren Anzahl gleich dem Grad an parallelen Operationen ist, die für die Aufgabe erforderlich sind, oder in einem System zur Expandierung einer verteilten Aufgabe auf einen anderen Knoten sofort, wenn der Grad an parallelen Operationen, die für die Aufgabe erforderlich sind, sich erhöht hat, während die verteilte Aufgabe bearbeitet wird, muss beispielsweise der entsprechende Lastverteilungsserver die verteilte Aufgabe komprimieren, um die Last jedes Knotens auszugleichen.
- Andererseits muss ein Lastverteilungsserver in einem System, in dem eine Aufgabe nicht automatisch eine verteilte Aufgabe wird und nicht auf einen anderen Knoten verteilt wird, und eine verteilte Aufgabe nicht auf einen anderen Knoten expandiert wird, selbst wenn sich der Grad an parallelen Operationen erhöht, die Expandierung einer verteilten Aufgabe durchführen, um die Last jedes Knotens zu verteilen. Der Effekt der Lastverteilung wird durch die Durchführung der Kompression der verteilten Aufgabe verbessert.
- Obwohl gemäß dem Ablaufdiagramm in Fig. 3 die Erfassung der Lastinformationen und die Lastverteilung im gleichen Pfad durchgeführt werden, können diese Operationen in verschiedenen Pfaden durchgeführt werden, wie es in Fig. 6 gezeigt ist. Die Verarbeitung der in Fig. 6 gezeigten Schritte S1 bis S4 ist die gleiche wie die Verarbeitung in den in Fig. 3 gezeigten Schritten S1 bis S4. Daher wird auf ihre Beschreibung verzichtet. Lediglich die Verarbeitung in den Schritten S5 bis S7 wird beschrieben. In Schritt S6 werden in Schritt S1 erfasste Lastinformationen jeder Informationsverarbeitungsvorrichtung aufgezeichnet, und die Lastverteilungs-Threads über die Lastinformationen informiert. In Schritt S7 wird einen vorbestimmten Zeitabschnitt lang gewartet, und dann kehrt der Prozess zur Verarbeitung des Schritts S1 zurück. In Schritt S5 werden die erfassten Lastinformationen überprüft. In der folgenden Verarbeitung von Schritt S2 bis Schritt S4 wird die Verarbeitung gemäß den in Fig. 3 gezeigten Schritten S2 bis S4 ausgeführt. Das heißt, die erfassten Lastinformationen werden in einer Speichereinrichtung gespeichert, auf die sowohl von einem Thread zur Durchführung einer Lastverteilung und einem Thread zur Durchführung der Erfassung von Lastinformationen Bezug genommen werden kann, und die erfassten Lastinformationen werden in der Form einer Nachricht oder dergleichen übertragen.
- In dem ersten Ausführungsbeispiel wurde der Fall beschrieben, bei dem ein Server zur Durchführung einer Lastverteilung das Treffen einer Entscheidung konzentriert durchführen kann. In einem zweiten Ausführungsbeispiel der Erfindung wird dagegen ein Fall beschrieben, bei dem jeweilige Server eine Lastverteilung in einem verteilten Zustand autonom durchführen.
- Fig. 7 zeigt ein Ablaufdiagramm eines Lastverteilungsverfahrens gemäß dem zweiten Ausführungsbeispiel.
- In Schritt S71 überwacht jeder Lastverteilungsserver Informationen bezüglich der Last des entsprechenden Knotens. Verringert oder erhöht sich die hast des entsprechenden Knotens, geht die Verarbeitung zu Schritt S72 über, wo eine Lastverteilung durchgeführt werden soll. Wird in Schritt S71 bestimmt, dass sich die Last nicht ändert, kehrt die Verarbeitung zu Schritt S71 zurück. In Schritt S72 werden Lastinformationen über eine andere Informationsverarbeitungsvorrichtung erfasst. Wird in Schritt S73 bestimmt, dass die Last der betreffenden Informationsverarbeitungsvorrichtung stärker als die der anderen in Schritt S72 erfassten Informationsverarbeitungsvorrichtung ist, geht die Verarbeitung zu Schritt S75 über. Wird in Schritt S75 bestimmt, dass es keine verteilte Aufgabe in Betrieb gibt, geht die Verarbeitung zu Schritt S76 über, wo eine verteilte Aufgabe auf einen leicht belasteten Knoten expandiert wird. Wird in Schritt 714 bestimmt, dass die Last der betreffenden Informationsverarbeitungsvorrichtung geringer als die der anderen Informationsverarbeitungsvorrichtung ist, geht die Verarbeitung zu Schritt S77 über, wo bestimmt wird, ob eine verteilte Aufgabe in Betrieb ist. Ist das Ergebnis der Bestimmung negativ, geht die Verarbeitung zu Schritt S78 über, wo eine verteilte Aufgabe von einem stark belasteten Knoten expandiert wird. Nach der Ausführung der Verarbeitung gemäß den Schritten S76 und S78 geht die Verarbeitung zu Schritt S79 über. In Schritt S79 werden Threads in der verteilten Aufgabe zu einem leicht belasteten Knoten übertragen.
- Gemäß dem zweiten Ausführungsbeispiel überwacht jeder Lastverteilungsserver grundlegend Informationen bezüglich des entsprechenden Knotens, und beabsichtigt die Durchführung einer Lastverteilung, wenn sich die Last des Knotens verringert oder erhöht. Es gibt ein Verfahren zur Bereitstellung eines Schwellenwerts für die Last des Knotens zur Bestimmung, ob eine Lastverteilung durchzuführen ist oder nicht. Die Anzahl solcher Schwellenwerte ist nicht auf einen beschränkt, sondern es können auch zwei Schwellenwerte vorgesehen werden. In diesem Fall werden ein oberer und ein unterer Schwellenwert mit der gegenwärtigen Belastung verglichen. Überschreitet die Belastung den oberen Schwellenwert, tendiert der Server zur Verringerung der Last des Knotens. Ist die Belastung geringer als der untere Schwellenwert, beabsichtigt der Server die Erhöhung der Last des Knotens. Somit wird eine Lastverteilung realisiert.
- Zur Verringerung der Last des betreffenden Knotens wird nach einem Knoten mit einer geringeren Last als der Last des betreffenden Knotens durch Erfassung von Lastinformationen über andere Knoten gesucht. Ist eine in Betrieb befindliche verteilte Aufgabe in dem betreffenden Knoten vorhanden, und wird die verteilte Aufgabe auf einen schwächer belasteten Knoten als den betreffenden Knoten expandiert, werden Threads in der verteilten Aufgabe von dem betreffenden Knoten zu dem Knoten mit der geringeren Last übertragen.
- Arbeitet keine verteilte Aufgabe in dem betreffenden Knoten, oder ist eine verteilte Aufgabe in dem betreffenden Knoten vorhanden und wird sie auf einen stärker belasteten Knoten als den betreffenden Knoten expandiert, werden Threads zu einem schwächer belasteten Knoten übertragen, nachdem eine Aufgabe oder eine verteilte Aufgabe, die in dem betreffenden Knoten bearbeitet wird, zu dem schwach belasteten Knoten expandiert wurde. Somit kann die Last des betreffenden Knotens auf einen anderen Knoten verteilt werden.
- Wird die Last des betreffenden Knotens auf einen anderen Knoten verteilt, wird nicht nur eine Aufgabe in den betreffenden Knoten expandiert, sondern es kann auch eine im Betrieb befindliche verteilte Aufgabe, die auf den schwach belasteten Knoten expandiert wurde, von dem betreffenden Knoten zu dem schwach belasteten Knoten komprimiert werden. Ist in diesem Fall die Last des Gesamtsystems groß, wird die verteilte Aufgabe nicht nur expandiert, sondern auch komprimiert. Somit wird die Verarbeitungslast zum Halten eines verteilten virtuellen gemeinsam genutzten Speichers verringert, und die Nachrichtenübertragung über das Netz wird reduziert, wodurch die Verarbeitungsleistung des Gesamtsystems erhöht wird.
- Verringert sich andererseits die Last des betreffenden Knotens, und soll die Last des betreffenden Knotens erhöht werden, wird nach einem Knoten mit einer größeren Last als der Last des betreffenden Knotens durch die Erfassung von Lastinformationen anderer Knoten gesucht. Wie im Fall der Verringerung der Last des betreffenden Knotens kann die Lastverteilung durch Expandieren einer verteilten Aufgabe von einem stark belasteten Knoten oder durch Komprimieren einer verteilten Aufgabe zu einem schwach belasteten Knoten und die Übertragung von Threads von dem stark belasteten Knoten realisiert werden.
- Obwohl in dem zweiten Ausführungsbeispiel ein Verfahren zur Erfassung von Lastinformationen andere Knoten immer bei Bedarf, wenn die Durchführung einer Lastverteilung versucht wird, beschrieben wurde, kann auch ein Verfahren zur Erfassung von Lastinformationen durch periodische Übertragung von Lastinformationen des betreffenden Knotens zu anderen Knoten in Betracht gezogen werden.
- Bei den vorstehend beschriebenen Ausführungsbeispielen werden Threads von einem stark belasteten Knoten zu einem schwach belasteten Knoten unter Verwendung eines Thread- Übertragungsmechanismus übertragen, der in einem Betriebssystem bereitgestellt wird. Ist allerdings ein derartiger Mechanismus nicht vorhanden, können Threads unter Verwendung eines Thread-Steuermechanismus auf der Benutzerebene in einer verteilten Aufgabe übertragen werden. Gemäß dem Thread-Steuermechanismus auf der Benutzerebene sind Benutzerebenen-Threads genannte Rahmen vorgesehen, und es wird damit ein Programm abgearbeitet. Der Benutzerebenen-Thread arbeitet in einem (Kern-Thread genannten) Thread, der vom Betriebssystem durch den Benutzerebenen-Thread-Steuermechanismus bereitgestellt wird (der prinzipiell von einer Bibliothek bereitgestellt wird und im Benutzerraum einer Anwendung ausgeführt wird), der Operationen wie Stopp, Wiederaufnahme der Ausführung und dergleichen durchführt. Wird der Benutzerebenen-Thread gestoppt, wird der Zustand des Benutzerebenen-Threads im Benutzerraum der Anwendung aufgezeichnet. Wird der Benutzerebenen-Thread wieder aufgenommen, liest ein bestimmter Kern-Thread einen aufgezeichneten Zustand, und dieser Zustand wird als Zustand des betreffenden Threads festgelegt.
- Wird ein Rahmen eines derartigen Benutzerebenen-Threads verwendet, wird, da ein konsistenter virtueller Speicherraum zwischen verschiedenen Knoten für eine verteilte Aufgabe vorgesehen ist, durch Schreiben und Speichern des Zustands des Benutzerebenen-Threads in den virtuellen Speicherraum in dem Knoten, in dem der Benutzerebenen-Thread bearbeitet wurde, Lesen des gespeicherten Zustands durch einen Kern-Thread in einem anderen Knoten und Festlegen des gelesenen Zustands als Zustand des betreffenden Threads ein bestimmter Thread überwacht, als ob er zwischen Knoten in einem vom Benutzer beschriebenen Anwendungsprogramm übertragen worden wäre. Bei einer derartigen Übertragung des Benutzerebenen-Threads fordert wie in Fig. 8 gezeigt, wenn eine andere Aufgabe im Knoten C erzeugt wird und die Last des Knotens C dadurch erhöht wird, der entsprechende Lastverteilungsserver von der im Knoten C arbeitenden Aufgabe die Übertragung des arbeitenden Threads an. Dementsprechend speichert der Benutzerebenen-Thread-Steuermechanismus in der verteilten Aufgabe gemäß Fig. 8 den Zustand des Benutzerebenen- Threads in dem virtuellen Speicherraum zum Stoppen des Threads, der gegenwärtig im Knoten C arbeitet. Somit kann ein Kern-Thread im Knoten C gestoppt werden, wodurch die Last des Knotens C verringert wird. Verringert sich die Last des Knotens A (beispielsweise wenn eine im Knoten A arbeitende Aufgabe abgeschlossen ist), versieht der entsprechende Lastverteilungsserver den Benutzerebenen- Thread-Steuermechanismus mit einer Thread- Ausbildungsanforderung. Der Benutzerebenen-Thread- Steuermechanismus erzeugt einen Kern-Thread im Knoten A und veranlasst die Wiederaufnahme der Ausführung des im Knoten C gestoppten Benutzerebenen-Threads. Somit wird eine Lastverteilung realisiert.
- In einem Verfahren, in dem der Steuermechanismus des Benutzerebenen-Threads automatisch nach einem freien Kern- Thread sucht und diesen Kern-Thread einem bereiten Benutzerebenen-Thread zuordnet, braucht der Lastverteilungsserver keine Anforderung zur Übertragung von Threads auszugeben. In diesem Fall kann die Lastverteilung durch die Steuerung der Anzahl von Kern-Threads durchgeführt werden, die der verteilten Aufgabe für jeden Knoten zugeordnet werden.
- Das heißt, verringert sich die Anzahl von Kernebenen- Threads, wird der Zustand des zu stoppenden Benutzerebenen- Threads in einem Kern-Thread in den virtuellen Speicherraum geschrieben und dort gespeichert, und es wird automatisch nach einem Kern-Thread gesucht, der arbeiten kann. Erhöht sich die Anzahl an Kernebenen-Threads, wird der Zustand des gestoppten Benutzerebenen-Threads, der in dem virtuellen Speicherraum gespeichert wurde, gelesen, und die Operation des gelesenen Threads wird wieder aufgenommen. Wenn bestimmt wird, dass die Anzahl der einem Knoten einer bestimmten verteilten Aufgabe zuzuweisenden Kern-Threads zu Null wird, kann die verteilte Aufgabe komprimiert werden. Fig. 9 zeigt ein Ablaufdiagramm, das das Lastverteilungsverfahren für diesen Fall darstellt.
- Die Verarbeitung in den Schritten S71 bis S78 aus Fig. 9 ist die gleiche wie die Verarbeitung in den Schritten S71 bis 78 in Fig. 7. Daher wird auf ihre Beschreibung verzichtet. Wurde bestimmt, dass die Last des betreffenden Knotens geringer als die Last eines anderen Knotens ist, geht die Verarbeitung zu Schritt S80 über, wo die Anzahl von Kern-Threads in dem betreffenden Knoten erhöht wird. Wurde bestimmt, dass die Last des betreffenden Knotens stärker als die Last eines anderen Knotens ist, wird die Anzahl der Kern-Threads in dem betreffenden Knoten verringert.
- Wie vorstehend beschrieben wird in einem System mit einem Mechanismus zur Verbindung einer Vielzahl von verteilten Informationsverarbeitungsvorrichtungen mit einem Netz und zur Ausführung von Aufgaben durch die Verteilung von Threads in einer verteilten Aufgabe, die einen virtuellen Speicherraum gemeinsam nutzt, wenn in Folge der Erfassung von Lastinformationen über jede Informationsverarbeitungsvorrichtung bestimmt wird, dass die Last nicht gleich ist, durch Steuerung des Verteilungsgrads einer verteilten Aufgabe in Betrieb und Übertragung von in der verteilten Aufgabe arbeitenden Threads die Last in den Informationsverarbeitungsvorrichtungen verteilt, wobei die Verarbeitungsleistung der Informationsverarbeitungsvorrichtungen des Gesamtsystems ausreichend ausgenutzt werden kann.
- Durch die Bereitstellung eines Benutzerebenen- Threadsteuermechanismus in einer verteilten Aufgabe und die Verwendung einer Kontextumschaltung in einem benutzerverteilten virtuellen gemeinsam genutzten Speicherraum kann die Last in den Informationsverarbeitungsvorrichtungen ohne tatsächliche Übertragung von Threads in der verteilten Aufgabe verteilt werden.
- Durch periodisches Zirkulieren von Lastinformationen einer betreffenden Vorrichtung als Nachricht können Lastinformationen effizient gesammelt werden.
- Durch die Sammlung von Lastinformationen anderer Informationsverarbeitungsvorrichtungen lediglich dann, wenn der Zustand der Last einer betreffenden Vorrichtung sich erhöht oder verringert, und eine Expansion einer verteilten Aufgabe und die Übertragung von Threads durchgeführt werden müssen, können Lastinformationen effektiv gesammelt werden.
- Die in der Zeichnung umrissen gezeigten einzelnen Komponenten sind im Stand der Technik der Lastverteilungsverfahren und -systeme bekannt, und ihr spezieller Aufbau und ihre Arbeitsweise sind nicht kritisch für den Betrieb oder die beste Ausführungsform der Erfindung.
- Während die Erfindung bezüglich gegenwärtig als bevorzugt angesehenen Ausführungsbeispielen beschrieben wurde, ist verständlich, dass die Erfindung nicht darauf beschränkt ist. Vielmehr soll die Erfindung verschiedene Abwandlungen und äquivalente Anordnungen innerhalb des Schutzbereichs der beigefügten Patentansprüche abdecken. Dem Schutzbereich der folgenden Patentansprüche wird die breiteste Interpretation beigemessen, sodass alle Modifikationen und äquivalenten Strukturen und Funktionen darin umfasst sind.
Claims (14)
1. Lastverteilungsverfahren zur Verteilung der
Verarbeitungslast zwischen einer Vielzahl von in einem Netz
(102) verbundenen Informationsverarbeitungsvorrichtungen
(101) zur Ausführung einer verteilten Aufgabe (204) unter
Verwendung einer verteilten, virtuellen, gemeinsam genutzten
Speichereinrichtung (206), wobei die Aufgabe in der Vielzahl
der Informationsverarbeitungsvorrichtungen (101) vorhanden
ist, durch Verteilen von Threads (205) in den jeweiligen
Informationsverarbeitungsvorrichtungen (101), mit den
Schritten
Erfassen von Lastinformationen über die Vielzahl der
Informationsverarbeitungsvorrichtungen (101),
Steuern des Verteilungsgrades einer verteilten Aufgabe
(204) im Betrieb gemäß den erfassten Lastinformationen und
Übertragen von Threads (205), die in einer stark
belasteten Informationsverarbeitungsvorrichtung in der
verteilten Aufgabe arbeiten, zu einer schwach belasteten
Informationsverarbeitungsvorrichtung,
dadurch gekennzeichnet, dass
in dem Steuerschritt die stark belastete
Informationsverarbeitungsvorrichtung die darin arbeitende
verteilte Aufgabe (204) auf die schwach belastete
Informationsverarbeitungsvorrichtung expandiert, und
die schwach belastete
Informationsverarbeitungsvorrichtung die von der stark
belasteten Informationsverarbeitungsvorrichtung expandierte
verteilte Aufgabe (204) auf die schwach belastete
Informationsverarbeitungsvorrichtung komprimiert.
2. Verfahren nach Anspruch 1, wobei in dem Steuerschritt die
stark belastete Informationsverarbeitunesvorrichtung die
darin arbeitende verteilte Aufgabe (204) auf die schwach
belastete Informationsverarbeitungsvorrichtung gemäß den
erfassten Lastinformationen expandiert, und die Threads (205)
dann übertragen werden.
3. Verfahren nach einem der vorhergehenden Ansprüche, wobei
in dem Steuerschritt die schwach belastete
Informationsverarbeitungsvorrichtung die in der stark
belasteten Informationsverarbeitungsvorrichtung arbeitende
verteilte Aufgabe (204) auf die schwach belastete
Informationsverarbeitungsvorrichtung gemäß den erfassten
Lastinformationen komprimiert, und dann die Threads (205)
übertragen werden.
4. Verfahren nach einem der vorhergehenden Ansprüche, wobei
in dem Steuerschritt gemäß den erfassten Lastinformationen
die stark belastete Informationsverarbeitungsvorrichtung die
darin arbeitende verteilte Aufgabe (204) auf die schwach
belastete Informationsverarbeitungsvorrichtung expandiert,
und die schwach belastete
Informationsverarbeitungsvorrichtung die in der stark
belasteten Informationsverarbeitungsvorrichtung arbeitende
verteilte Aufgabe (204) auf die schwach belastete
Informationsverarbeitungsvorrichtung komprimiert, und die
jeweiligen Vorrichtungen dann die Threads (205) übertragen.
5. Verfahren nach einem der vorhergehenden Ansprüche, wobei
in dem Übertragungsschritt Threads der Benutzerebene durch
das Anhalten von Threads (205) in der stark belasteten
Informationsverarbeitungsvorrichtung und Erzeugen von Threads
(205) in der schwach belasteten
Informationsverarbeitungsvorrichtung durch Bereitstellen
eines Benutzerebenen-Threadsteuermechanismus in der
verteilten Aufgabe (204) und Anwenden einer
Kontextumschaltung in einem Benutzer-verteilten, virtuellen,
gemeinsam genutzten Speicherraum (206) übertragen werden.
6. Verfahren nach einem der vorhergehenden Ansprüche, wobei
in dem Erfassungsschritt Lastinformationen durch periodisches
Zirkulieren von Lastinformationen über eine betroffene
Vorrichtung als Nachricht erfasst werden.
7. Verfahren nach einem der vorhergehenden Ansprüche, wobei
in dem Erfassungsschritt Lastinformationen über andere
Informationsverarbeitungsvorrichtungen (101) lediglich dann
erfasst werden, wenn eine Expandierung der verteilten Aufgabe
(204) und eine Übertragung von Threads (205) durchgeführt
werden müssen, da Lastinformationen über eine betroffene
Vorrichtung sich verringern oder erhöhen.
8. Lastverteilungssystem (203) mit einem Mechanismus zur
Verbindung einer Vielzahl von
Informationsverarbeitungsvorrichtungen (101) mit einem Netz
(102), und zur Ausführung einer verteilten Aufgabe (204),
dessen Hauptspeicher durch ein verteiltes, virtuelles,
gemeinsam genutztes Speicherverfahren (206) gemeinsam genutzt
wird, wobei die Aufgabe in der Vielzahl der
Informationsverarbeitungsvorrichtungen (101) durch Verteilung
von Threads (205) in den jeweiligen
Informationsverarbeitungsvorrichtungen (101) vorhanden ist,
mit
einer Erfassungseinrichtung zum Erfassen von
Lastinformationen über die Vielzahl der
Informationsverarbeitungsvorrichtungen (101),
einer Steuereinrichtung zum Steuern des
Verteilungsgrades einer verteilten Aufgabe (204) im Betrieb
gemäß den erfassten Lastinformationen und
einer Übertragungseinrichtung zum Übertragen von Threads
(205), die in einer stark belasteten
Informationsverarbeitungsvorrichtung in der verteilten
Aufgabe (204) arbeiten, zu einer schwach belasteten
Informationsverarbeitungsvorrichtung,
dadurch gekennzeichnet, dass
die Steuereinrichtung zum Expandieren der in der stark
belasteten Informationsverarbeitungsvorrichtung arbeitenden
verteilten Aufgabe (204) auf die schwach belastete
Informationsverarbeitungsvorrichtung, und zur Steuerung der
schwach belasteten Informationsverarbeitungsvorrichtung zum
Komprimieren der von der stark belasteten
Informationsverarbeitungsvorrichtung expandierten verteilten
Aufgabe (204) auf die schwach belastete
Informationsverarbeitungsvorrichtung eingerichtet ist.
9. System nach Anspruch 8, wobei die Steuereinrichtung zur
Durchführung der Steuerung derart eingerichtet ist, dass die
stark belastete Informationsverarbeitungsvorrichtung die
darin arbeitende verteilte Aufgabe (204) auf die schwach
belastete Informationsverarbeitungsvorrichtung gemäß den
erfassten Lastinformationen expandiert, und die
Übertragungseinrichtung die Threads (205) dann überträgt.
10. System nach Anspruch 8 oder 9, wobei die
Steuereinrichtung zur Durchführung der Steuerung derart
eingerichtet ist, dass die schwach belastete
Informationsverarbeitungsvorrichtung die in der stark
belasteten Informationsverarbeitungsvorrichtung arbeitende
verteilte Aufgabe (204) auf die schwach belastete
Informationsverarbeitungsvorrichtung gemäß den erfassten
Lastinformationen komprimiert, und dann die
Übertragungseinrichtung die Threads (205) überträgt.
11. System nach einem der Ansprüche 8 bis 10, wobei die
Steuereinrichtung zur Durchführung der Steuerung derart
eingerichtet ist, dass, gemäß den erfassten
Lastinformationen, die stark belastete
Informationsverarbeitungsvorrichtung die darin arbeitende
verteilte Aufgabe (204) auf die schwach belastete
Informationsverarbeitungsvorrichtung expandiert, und die
schwach belastete Informationsverarbeitungsvorrichtung die in
der stark belasteten Informationsverarbeitungsvorrichtung
arbeitende verteilte Aufgabe (204) auf die schwach belastete
Informationsverarbeitungsvorrichtung komprimiert, und die
jeweiligen Vorrichtungen die Threads (205) übertragen.
12. System nach einem der Ansprüche 8 bis 11, wobei die
Übertragungseinrichtung zur Übertragung von Threads der
Benutzerebene durch das Anhalten von Threads (205) in der
stark belasteten Informationsverarbeitungsvorrichtung und
Erzeugen von Threads (205) in der schwach belasteten
Informationsverarbeitungsvorrichtung durch Bereitstellen
eines Benutzerebenen-Threadsteuermechanismus in der
verteilten Aufgabe (204) und Anwenden einer
Kontextumschaltung in einem Benutzer-verteilten, virtuellen,
gemeinsam genutzten Speicherraum (206) eingerichtet ist.
13. System nach einem der Ansprüche 8 bis 12, wobei die
Erfassungseinrichtung zur Erfassung von Lastinformationen
durch periodisches Zirkulieren von Lastinformationen über
eine betroffene Vorrichtung als Nachricht eingerichtet ist.
14. System nach einem der Ansprüche 8 bis 13, wobei die
Erfassungseinrichtung zur Erfassung von Lastinformationen
über andere Informationsverarbeitungsvorrichtungen (101)
lediglich dann, wenn eine Expandierung der verteilten Aufgabe
(204) und eine Übertragung von Threads (205) durchgeführt
werden müssen, da Lastinformationen über eine betroffene
Vorrichtung sich verringern oder erhöhen, eingerichtet ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP16682494A JP3696901B2 (ja) | 1994-07-19 | 1994-07-19 | 負荷分散方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69520988D1 DE69520988D1 (de) | 2001-06-28 |
DE69520988T2 true DE69520988T2 (de) | 2001-10-25 |
Family
ID=15838352
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69520988T Expired - Fee Related DE69520988T2 (de) | 1994-07-19 | 1995-07-17 | Lastverteilungsverfahren und -system |
Country Status (4)
Country | Link |
---|---|
US (1) | US5692192A (de) |
EP (1) | EP0697654B1 (de) |
JP (1) | JP3696901B2 (de) |
DE (1) | DE69520988T2 (de) |
Families Citing this family (84)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4429469A1 (de) * | 1994-08-19 | 1996-02-22 | Licentia Gmbh | Verfahren zur Leitwegsteuerung |
US5884077A (en) * | 1994-08-31 | 1999-03-16 | Canon Kabushiki Kaisha | Information processing system and method in which computer with high load borrows processor of computer with low load to execute process |
JP3862293B2 (ja) * | 1994-08-31 | 2006-12-27 | キヤノン株式会社 | 情報処理方法とその装置 |
JP3585956B2 (ja) * | 1994-09-12 | 2004-11-10 | キヤノン株式会社 | 情報処理装置及びその方法 |
JP3591883B2 (ja) * | 1994-09-01 | 2004-11-24 | キヤノン株式会社 | 計算機及びそのシステム及びその制御方法 |
US5765157A (en) * | 1996-06-05 | 1998-06-09 | Sun Microsystems, Inc. | Computer system and method for executing threads of execution with reduced run-time memory space requirements |
US5859898A (en) * | 1996-09-17 | 1999-01-12 | Nynex Science & Technology | Messaging architecture supporting digital and analog media |
US6119145A (en) * | 1997-02-28 | 2000-09-12 | Oracle Corporation | Multithreaded client application storing a separate context for each transaction thus allowing threads to resume transactions started by other client threads |
US6535878B1 (en) * | 1997-05-02 | 2003-03-18 | Roxio, Inc. | Method and system for providing on-line interactivity over a server-client network |
JP3883647B2 (ja) * | 1997-06-10 | 2007-02-21 | インターナショナル・ビジネス・マシーンズ・コーポレーション | メッセージ処理方法、メッセージ処理装置及びメッセージ処理を制御するプログラムを格納する記憶媒体 |
US6675195B1 (en) * | 1997-06-11 | 2004-01-06 | Oracle International Corporation | Method and apparatus for reducing inefficiencies caused by sending multiple commands to a server |
US6003066A (en) * | 1997-08-14 | 1999-12-14 | International Business Machines Corporation | System for distributing a plurality of threads associated with a process initiating by one data processing station among data processing stations |
JP4000223B2 (ja) * | 1997-09-24 | 2007-10-31 | 富士通株式会社 | 情報検索方法,情報検索システムおよび同システム用検索管理装置 |
US6185662B1 (en) | 1997-12-22 | 2001-02-06 | Nortel Networks Corporation | High availability asynchronous computer system |
US6243107B1 (en) | 1998-08-10 | 2001-06-05 | 3D Labs Inc., Ltd. | Optimization of a graphics processor system when rendering images |
US6622155B1 (en) | 1998-11-24 | 2003-09-16 | Sun Microsystems, Inc. | Distributed monitor concurrency control |
US7216348B1 (en) * | 1999-01-05 | 2007-05-08 | Net2Phone, Inc. | Method and apparatus for dynamically balancing call flow workloads in a telecommunications system |
JP3250729B2 (ja) * | 1999-01-22 | 2002-01-28 | 日本電気株式会社 | プログラム実行装置及びそのプロセス移動方法並びにプロセス移動制御プログラムを格納した記憶媒体 |
JP2000242609A (ja) * | 1999-02-23 | 2000-09-08 | Nippon Telegr & Teleph Corp <Ntt> | 分散オブジェクト動的配置制御方法及び装置 |
US6986137B1 (en) * | 1999-09-28 | 2006-01-10 | International Business Machines Corporation | Method, system and program products for managing logical processors of a computing environment |
US6842899B2 (en) | 1999-12-21 | 2005-01-11 | Lockheed Martin Corporation | Apparatus and method for resource negotiations among autonomous agents |
US6957237B1 (en) | 2000-06-02 | 2005-10-18 | Sun Microsystems, Inc. | Database store for a virtual heap |
US6934755B1 (en) * | 2000-06-02 | 2005-08-23 | Sun Microsystems, Inc. | System and method for migrating processes on a network |
US6941410B1 (en) | 2000-06-02 | 2005-09-06 | Sun Microsystems, Inc. | Virtual heap for a virtual machine |
US6854115B1 (en) | 2000-06-02 | 2005-02-08 | Sun Microsystems, Inc. | Process persistence in a virtual machine |
US20030014507A1 (en) * | 2001-03-13 | 2003-01-16 | International Business Machines Corporation | Method and system for providing performance analysis for clusters |
US20030033345A1 (en) * | 2002-06-27 | 2003-02-13 | Keefer Christopher E. | Thread-based methods and systems for using the idle processing power of one or more networked computers to solve complex scientific problems |
US7594233B2 (en) * | 2002-06-28 | 2009-09-22 | Hewlett-Packard Development Company, L.P. | Processing thread launching using volunteer information |
US7093258B1 (en) * | 2002-07-30 | 2006-08-15 | Unisys Corporation | Method and system for managing distribution of computer-executable program threads between central processing units in a multi-central processing unit computer system |
US7389506B1 (en) * | 2002-07-30 | 2008-06-17 | Unisys Corporation | Selecting processor configuration based on thread usage in a multiprocessor system |
US7043729B2 (en) * | 2002-08-08 | 2006-05-09 | Phoenix Technologies Ltd. | Reducing interrupt latency while polling |
US20040055001A1 (en) * | 2002-09-16 | 2004-03-18 | Islam Farhad Fuad | Method and apparatus for computational load sharing in a multiprocessor architecture |
US7096470B2 (en) * | 2002-09-19 | 2006-08-22 | International Business Machines Corporation | Method and apparatus for implementing thread replacement for optimal performance in a two-tiered multithreading structure |
US7181744B2 (en) * | 2002-10-24 | 2007-02-20 | International Business Machines Corporation | System and method for transferring data between virtual machines or other computer entities |
US7231638B2 (en) | 2002-12-03 | 2007-06-12 | International Business Machines Corporation | Memory sharing in a distributed data processing system using modified address space to create extended address space for copying data |
US7251815B2 (en) * | 2003-04-29 | 2007-07-31 | International Business Machines Corporation | Multiple virtual machines sharing processor and work queue in memory having program/dispatch functions for assigning and accessing work items while the virtual machine was not idle |
JP4012517B2 (ja) | 2003-04-29 | 2007-11-21 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 仮想計算機環境におけるロックの管理 |
US7299468B2 (en) * | 2003-04-29 | 2007-11-20 | International Business Machines Corporation | Management of virtual machines to utilize shared resources |
US8104043B2 (en) * | 2003-11-24 | 2012-01-24 | Microsoft Corporation | System and method for dynamic cooperative distributed execution of computer tasks without a centralized controller |
US7380039B2 (en) * | 2003-12-30 | 2008-05-27 | 3Tera, Inc. | Apparatus, method and system for aggregrating computing resources |
US20050240380A1 (en) * | 2004-03-31 | 2005-10-27 | Jones Kenneth D | Reducing context memory requirements in a multi-tasking system |
JP4086813B2 (ja) * | 2004-06-09 | 2008-05-14 | キヤノン株式会社 | ネットワークプリントシステム及びネットワークプリントシステムにおけるグリッド網構築方法 |
US20060048133A1 (en) * | 2004-08-31 | 2006-03-02 | Patzachke Till I | Dynamically programmable embedded agents |
US20060045019A1 (en) * | 2004-09-01 | 2006-03-02 | Patzschke Till I | Network testing agent with integrated microkernel operating system |
US7437581B2 (en) * | 2004-09-28 | 2008-10-14 | Intel Corporation | Method and apparatus for varying energy per instruction according to the amount of available parallelism |
US8589944B2 (en) * | 2005-03-16 | 2013-11-19 | Ricoh Production Print Solutions | Method and system for task mapping to iteratively improve task assignment in a heterogeneous computing system |
US8429630B2 (en) * | 2005-09-15 | 2013-04-23 | Ca, Inc. | Globally distributed utility computing cloud |
GB0519597D0 (en) * | 2005-09-26 | 2005-11-02 | Imagination Tech Ltd | Scalable multi-threaded media processing architecture |
US7860968B2 (en) | 2005-11-21 | 2010-12-28 | Sap Ag | Hierarchical, multi-tiered mapping and monitoring architecture for smart items |
US8156208B2 (en) | 2005-11-21 | 2012-04-10 | Sap Ag | Hierarchical, multi-tiered mapping and monitoring architecture for service-to-device re-mapping for smart items |
US8005879B2 (en) | 2005-11-21 | 2011-08-23 | Sap Ag | Service-to-device re-mapping for smart items |
US8489700B2 (en) * | 2005-11-30 | 2013-07-16 | International Business Machines Corporation | Analysis of nodal affinity behavior |
US8108863B2 (en) | 2005-12-30 | 2012-01-31 | Intel Corporation | Load balancing for multi-threaded applications via asymmetric power throttling |
US7496667B2 (en) * | 2006-01-31 | 2009-02-24 | International Business Machines Corporation | Decentralized application placement for web application middleware |
US8522341B2 (en) | 2006-03-31 | 2013-08-27 | Sap Ag | Active intervention in service-to-device mapping for smart items |
US7890568B2 (en) | 2006-04-28 | 2011-02-15 | Sap Ag | Service-to-device mapping for smart items using a genetic algorithm |
US8296408B2 (en) | 2006-05-12 | 2012-10-23 | Sap Ag | Distributing relocatable services in middleware for smart items |
US8131838B2 (en) | 2006-05-31 | 2012-03-06 | Sap Ag | Modular monitor service for smart item monitoring |
US8065411B2 (en) | 2006-05-31 | 2011-11-22 | Sap Ag | System monitor for networks of nodes |
US8296413B2 (en) | 2006-05-31 | 2012-10-23 | Sap Ag | Device registration in a hierarchical monitor service |
US8396788B2 (en) | 2006-07-31 | 2013-03-12 | Sap Ag | Cost-based deployment of components in smart item environments |
US8212805B1 (en) | 2007-01-05 | 2012-07-03 | Kenneth Banschick | System and method for parametric display of modular aesthetic designs |
WO2008136075A1 (ja) * | 2007-04-20 | 2008-11-13 | Fujitsu Limited | ストレージ管理プログラム、ストレージ管理装置およびストレージ管理方法 |
US10268741B2 (en) * | 2007-08-03 | 2019-04-23 | International Business Machines Corporation | Multi-nodal compression techniques for an in-memory database |
US8527622B2 (en) | 2007-10-12 | 2013-09-03 | Sap Ag | Fault tolerance framework for networks of nodes |
US7844620B2 (en) * | 2007-11-16 | 2010-11-30 | International Business Machines Corporation | Real time data replication for query execution in a massively parallel computer |
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 |
JP5353891B2 (ja) * | 2008-09-26 | 2013-11-27 | 日本電気株式会社 | 分散処理システム、分散処理方法およびプログラム |
JPWO2011155047A1 (ja) * | 2010-06-10 | 2013-08-01 | 富士通株式会社 | マルチコアプロセッサシステム、電力制御方法、および電力制御プログラム |
JP5527425B2 (ja) * | 2010-11-16 | 2014-06-18 | 富士通株式会社 | 通信装置、負荷分散方法、および記録媒体 |
US8789065B2 (en) | 2012-06-08 | 2014-07-22 | Throughputer, Inc. | System and method for input data load adaptive parallel processing |
JP5880542B2 (ja) * | 2011-03-16 | 2016-03-09 | 富士通株式会社 | マルチコアプロセッサシステムおよびスケジューリング方法 |
US9448847B2 (en) | 2011-07-15 | 2016-09-20 | Throughputer, Inc. | Concurrent program execution optimization |
JP2013090072A (ja) | 2011-10-17 | 2013-05-13 | Hitachi Ltd | サービス提供システム |
US9417907B1 (en) * | 2012-05-23 | 2016-08-16 | Emc Corporation | Impact management of system tasks |
US8930956B2 (en) * | 2012-08-08 | 2015-01-06 | International Business Machines Corporation | Utilizing a kernel administration hardware thread of a multi-threaded, multi-core compute node of a parallel computer |
JP2014102691A (ja) * | 2012-11-20 | 2014-06-05 | Toshiba Corp | 情報処理装置、通信機能を持つカメラ、および情報処理方法 |
CN103274266A (zh) * | 2013-01-11 | 2013-09-04 | 株洲时代新材料科技股份有限公司 | 一种数控纤维缠绕机及其应用 |
CN103440165B (zh) * | 2013-08-30 | 2016-04-27 | 西安电子科技大学 | 一种面向个人的任务分派与处理方法 |
US11200058B2 (en) | 2014-05-07 | 2021-12-14 | Qualcomm Incorporated | Dynamic load balancing of hardware threads in clustered processor cores using shared hardware resources, and related circuits, methods, and computer-readable media |
JP5872669B2 (ja) * | 2014-12-01 | 2016-03-01 | 株式会社日立製作所 | サーバ装置群およびネットワークシステム |
US9524193B1 (en) * | 2015-09-09 | 2016-12-20 | Ca, Inc. | Transparent virtualized operating system |
US10386904B2 (en) * | 2016-03-31 | 2019-08-20 | Qualcomm Incorporated | Hardware managed power collapse and clock wake-up for memory management units and distributed virtual memory networks |
US11443186B2 (en) | 2019-10-03 | 2022-09-13 | Wipro Limited | Method and system for executing processes in operating systems |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5031089A (en) * | 1988-12-30 | 1991-07-09 | United States Of America As Represented By The Administrator, National Aeronautics And Space Administration | Dynamic resource allocation scheme for distributed heterogeneous computer systems |
US5287508A (en) * | 1992-04-07 | 1994-02-15 | Sun Microsystems, Inc. | Method and apparatus for efficient scheduling in a multiprocessor system |
US5396614A (en) * | 1992-06-25 | 1995-03-07 | Sun Microsystems, Inc. | Method and apparatus for a secure protocol for virtual memory managers that use memory objects |
US5452447A (en) * | 1992-12-21 | 1995-09-19 | Sun Microsystems, Inc. | Method and apparatus for a caching file server |
-
1994
- 1994-07-19 JP JP16682494A patent/JP3696901B2/ja not_active Expired - Fee Related
-
1995
- 1995-07-14 US US08/502,702 patent/US5692192A/en not_active Expired - Lifetime
- 1995-07-17 DE DE69520988T patent/DE69520988T2/de not_active Expired - Fee Related
- 1995-07-17 EP EP95304960A patent/EP0697654B1/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US5692192A (en) | 1997-11-25 |
JP3696901B2 (ja) | 2005-09-21 |
EP0697654B1 (de) | 2001-05-23 |
DE69520988D1 (de) | 2001-06-28 |
JPH0830472A (ja) | 1996-02-02 |
EP0697654A1 (de) | 1996-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69520988T2 (de) | Lastverteilungsverfahren und -system | |
DE60016283T2 (de) | Arbeitsbelastungsverwaltung in einer rechnerumgebung | |
DE102018209149B4 (de) | Maschinenlernvorrichtung, Steuerung und Maschinenlernprogramm | |
DE69822935T2 (de) | Vorrichtung und Verfahren zur dynamischen Regelung der Betriebsmittelzuweisung in einem Computersystem | |
DE69129526T2 (de) | Multiprozessorsystem und Verfahren zur Überwachung der Ausführung von Tasks in einem Multiprozesorsystem | |
DE69322887T2 (de) | Datenverarbeitung und Betriebssystem mit dynamischer Belastungsteilung in einem Netzwerk von verknüpften Prozessoren | |
DE68924954T2 (de) | Übertragungssystem für verteilte Datenbanken. | |
DE3751446T2 (de) | Multiprozessor-Speicherbetriebsverfahren und -vorrichtung. | |
DE69031862T2 (de) | Verfahren zum Lastausgleich für Kanälen und Verwendung desselben in einem Datenverarbeitungssystem | |
DE19728726B4 (de) | Robotercontroller und dessen Steuerverfahren | |
DE69322538T2 (de) | Methode und Prozessor zur Bearbeitung eines Programmes in Parallelbearbeitung | |
DE3889578T2 (de) | Vorrichtung zur Sicherung und Rückspeicherung einer Registerinformation. | |
DE60224432T2 (de) | Dynamische und automatische speicherverwaltung | |
DE102016118210A1 (de) | Granulare Dienstqualität für Computer-Ressourcen | |
DE112013006646B4 (de) | Computer, System und computerlesbares Ablagemedium zum Identifizieren von Arbeitslast und Dimensionierung von Puffern zum Zweck der Volumenreplikation | |
DE112010005096T5 (de) | Verfahren und Vorrichtungen zum Bewerten der Ressourcen-Kapazität in einem System von virtuellen Containern | |
DE112011101633T5 (de) | Virtualisierung und dynamische Ressourcenzuweisung berücksichtigendes Neuordnen von Speicherebenen | |
DE3508291A1 (de) | Realzeit-datenverarbeitungssystem | |
DE69219848T2 (de) | Verfahren zur Behandlung von Datenübertragungen in einen Computersystem mit einem Zweibusbau | |
DE102019102883A1 (de) | Technologien zum Bewegen von Arbeitslasten zwischen Hardwarewarteschlangenmanagern | |
DE102004005128B3 (de) | Anordnung mehrerer Rechner und Verfahren zum Betreiben einer Anordnung mehrerer Rechner bei einem Rechnerausfall | |
DE69518453T2 (de) | Verfahren und System zum Dynamischen Auswählen eines Kommunikationsmodus | |
DE112012005572B4 (de) | Ausgleichen der Bandbreite von Anforderern, die ein gemeinsam genutztes Speichersystem verwenden | |
DE3854323T2 (de) | Jobsteuerung für Online-System. | |
DE102016007651B4 (de) | Numerische Steuerung mit Funktion zur automatischen Auswahl eines Speicherungsziels für ein Bearbeitungsprogramm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |