DE69520988T2 - Lastverteilungsverfahren und -system - Google Patents

Lastverteilungsverfahren und -system

Info

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
Application number
DE69520988T
Other languages
English (en)
Other versions
DE69520988D1 (de
Inventor
Yoshiaki Sudo
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Application granted granted Critical
Publication of DE69520988D1 publication Critical patent/DE69520988D1/de
Publication of DE69520988T2 publication Critical patent/DE69520988T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques 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

    HINTERGRUND DER ERFINDUNG Gebiet der Erfindung
  • Die Erfindung betrifft ein Lastverteilungsverfahren und - system zur Steuerung einer Aufgabe, die in einer Vielzahl von Informationsverarbeitungsvorrichtungen bearbeitet wird.
  • Beschreibung des relevanten Stands der Technik
  • 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.
  • KURZZUSAMMENFASSUNG DER ERFINDUNG
  • 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.
  • KURZBESCHREIBUNG DER ZEICHNUNG
  • 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.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE Erstes 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.
  • Zweites Ausführungsbeispiel
  • 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.
  • Drittes Ausführungsbeispiel
  • 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.
DE69520988T 1994-07-19 1995-07-17 Lastverteilungsverfahren und -system Expired - Fee Related DE69520988T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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