-
TECHNISCHES GEBIET
-
Die vorliegende Erfindung betrifft ein Computerprogrammprodukt, ein System und ein Verfahren zum Ermitteln einer optimalen Anzahl von Threads, die in einem Mehrkern-Prozessorkomplex pro Kern zur Verfügung gestellt werden sollen, um Aufgaben auszuführen.
-
HINTERGRUND
-
Bei einem Prozessorchip oder -komplex, der gleichzeitiges Multithreading bereitstellt, können mehrere Kerne auf einem Prozessorchip jeweils mehrere Threads realisieren, die gleichzeitig ausgeführt werden, um Betriebslasten zu parallelisieren. Jeder Kern auf dem Prozessorchip erfordert Hardware, Cache wie z.B. L1- und L2-Cache und Pipeline-Hardware für diesen Kern. Die Threads auf einem Kern nutzen die Kern-Hardware gemeinsam. Ferner kann jeder Thread zweckgebundene Ressourcen in dem Kern wie z.B. eine Teilmenge von Pipeline-Ressourcen haben, und Threads auf dem Kern können Caches wie z.B. den L2- und den L3-Cache gemeinsam nutzen, die für einen Kern zur Verfügung stehen. Jeder Kern kann außerdem einen zweckgebundenen L1-Cache haben.
-
Die Kerne auf dem Prozessorchip können in unterschiedlichen Betriebsarten arbeiten, um die Anzahl von Threads auf den Kernen dynamisch zu ändern, die zur Verarbeitung zur Verfügung stehen oder in einen Leerlaufzustand versetzt sind. Normalerweise gibt ein Benutzer Befehle aus, um zu steuern, wie viele auf jedem Kern laufen, was ein Aussetzen des Planens von Aufgaben erfordert, die der Kern verarbeiten soll.
-
In der Technik besteht ein Bedarf an verbesserten Techniken zum Ermitteln einer optimalen Anzahl von Threads, die auf jedem Kern in einem Mehrkernsystem laufen, und zum Ändern der zur Verfügung stehenden Threads, die auf jedem Kern laufen, um die optimale Anzahl von Threads zu realisieren.
-
KURZDARSTELLUNG
-
Bereitgestellt werden ein Computerprogrammprodukt, ein System und ein Verfahren zum Ermitteln einer optimalen Anzahl von Threads, die in einem Mehrkern-Prozessorkomplex pro Kern zur Verfügung gestellt werden sollen, um Aufgaben auszuführen.
-
Es wird eine Entscheidung für eine erste Verarbeitungsmessung (processing measurement) auf der Grundlage von Threads getroffen, die auf den Kernen des Prozessorchips ausgeführt werden, wobei jeder Kern eine Schaltung zum unabhängigen Ausführen einer Mehrzahl von Threads umfasst. Eine Ermittlung einer Anzahl von Threads, die auf den Kernen ausgeführt werden sollen, wird auf der Grundlage der ersten Verarbeitungsmessung vorgenommen. Es wird eine Entscheidung für eine zweite Verarbeitungsmessung auf der Grundlage der Threads getroffen, die auf den Kernen des Prozessorchips ausgeführt werden. Es wird eine Entscheidung für eine Anpassung an die ermittelte Anzahl von Threads, die ausgeführt werden sollen, auf der Grundlage der zweiten Verarbeitungsmessung getroffen, was zu einer angepassten Anzahl von Threads führt. Die angepasste Anzahl von Threads auf den Kernen wird zum Ausführen von Anweisungen genutzt.
-
Mit der vorstehenden Ausführungsform wird auf der Grundlage von zwei unterschiedlichen Verarbeitungsmessungen zum Optimieren an zwei unterschiedlichen Verarbeitungsattributen eine optimale Anzahl von Threads ermittelt, die auf mehreren Kernen in einem Mehrkernprozessor ausgeführt werden sollen. Eine erste Verarbeitungsmessung wird zum Ermitteln einer optimalen Anzahl von Threads verwendet, um den ersten Verarbeitungsfaktor zu optimieren, und dann wird eine zweite Verarbeitungsmessung verwendet, um die ermittelte optimale Anzahl von Threads anzupassen, um an einer alternativen Messung zu optimieren, sodass eine Zwei-Faktor-Optimierung bereitgestellt wird.
-
Bei einer weiteren Ausführungsform weist die erste Verarbeitungsmessung eine Anzahl von Eingabe/Ausgabe-Operationen (E/A-Operationen) aus Threads auf, die auf den Kernen des Prozessorkomplexes ausgeführt werden, und wobei die zweite Verarbeitungsmessung eine Anzahl von Threads aufweist, die auf der Grundlage der ermittelten Anzahl von E/A-Operationen auf den Kernen ausgeführt werden sollen.
-
Mit der vorstehenden Ausführungsform wird die optimale Anzahl von Threads zum Optimieren für eine Anzahl von E/A-Operationen ermittelt, die die Anzahl zur Verfügung stehender Threads mit zunehmender Anzahl von E/A-Operationen erhöht, um die Leistung mit zunehmender E/A-Last aufrechtzuerhalten.
-
Bei einer weiteren Ausführungsform wird eine Zuordnung von Bereichen von Sperrzeiten (lock spin times) und Anpassungen an die ermittelte Anzahl von Threads aufrechterhalten. Es wird eine Entscheidung für eine Anpassung an die ermittelte Anzahl von Threads getroffen, die einem Bereich von Sperrzeiten, unter anderem der ermittelten Sperrzeit, zugehörig sind.
-
Mit der vorstehenden Ausführungsform wird die optimale Anzahl auf der Grundlage der Sperrzeit weiter angepasst und optimiert, um zu versuchen, die Sperrzeit zu verringern, die die Leistung beeinträchtigt. Mit zunehmender Sperrzeit nimmt die Anpassung zum Verringern der Anzahl von Thread zu, um zur Verfügung stehende Threads zu verringern, wodurch eine Sperren-Konkurrenzsituation und Sperrzeit des Gesamtsystems verringert werden.
-
Bei einer weiteren Ausführungsform weist die ermittelte Anzahl von Threads, die auf jedem Kern ausgeführt werden sollen, weniger als eine Anzahl von Threads auf, die zum unabhängigen Ausführen auf jedem Kern zur Verfügung stehen. Aufgaben werden nur zum Ausführen auf der ermittelten Anzahl von Threads auf jedem Kern geplant, wodurch mindestens ein Thread bei einer Mehrzahl der Kerne im Leerlauf belassen wird.
-
Mit der vorstehenden Ausführungsform werden Threads wirksam in den Leerlauf versetzt, indem nur Aufgaben zum Ausführen auf der ermittelten Anzahl von Threads und nicht auf den Leerlauf-Threads geplant werden. Dies vermeidet die Notwendigkeit, den Prozessorkomplex zum Neukonfigurieren zur Verfügung stehender Threads offline zu nehmen, indem die Prozessorkerne online belassen werden, aber die Planungsfunktion verwendet wird, um zu vermeiden, dass Aufgaben für im Leerlauf befindliche Kerne geplant werden.
-
Bei einer weiteren Ausführungsform weist die erste Verarbeitungsmessung eine Sperrzeit auf, die die auf den Kernen ausgeführten Threads warten, um Sperren auf Ressourcen zu beziehen, und die zweite Verarbeitungsmessung weist eines aus einer Anzahl von E/A-Operationen von den auf den Kernen ausgeführten Threads und einem hauptspeicherübergreifenden Busverkehr zwischen den Kernen und dem durch die Kerne gemeinsam genutzten Hauptspeicher auf.
-
Mit der vorstehenden Ausführungsform wird die optimale Anzahl auf Grundlage der Sperrzeit zum Verringern von Threads ausgewählt, um die Sperrzeit zu verringern. Die optimale Anzahl kann je nach der Anzahl von Operationen zum zweiten Optimieren auf der Grundlage der Anzahl von Operationen weiter angepasst, zum Beispiel erhöht werden.
-
Bereitgestellt werden ferner ein Computerprogrammprodukt, ein System und ein Verfahren zum Ermitteln einer optimalen Anzahl von Threads, die in einem Mehrkern-Prozessorkomplex pro Kern zur Verfügung gestellt werden sollen, um Aufgaben auszuführen. Eine Ermittlung einer Anzahl von Eingabe/Ausgabe-Operationen (E/A-Operationen) aus Threads wird vorgenommen, die auf den Kernen des Prozessorkomplexes ausgeführt werden, wobei jeder Kern eine Schaltung zum unabhängigen Ausführen einer Mehrzahl von Threads umfasst. Eine Ermittlung einer Anzahl von Threads, die auf den Kernen ausgeführt werden sollen, wird auf der Grundlage der ermittelten Anzahl von E/A-Operationen vorgenommen. Die ermittelte Anzahl von Threads auf den Kernen wird zum Ausführen von Anweisungen genutzt.
-
Mit der vorstehenden Ausführungsform wird die Anzahl von Threads auf der Grundlage der E/A-Operationen ermittelt, um auf der Grundlage der Ebene von E/A-Operationen in dem Komplex eine optimale Anzahl auszuwählen, um mit steigender Anzahl von E/A-Operationen die Leistung aufrechtzuerhalten.
-
Bereitgestellt werden ferner ein Computerprogrammprodukt, ein System und ein Verfahren zum Ermitteln einer optimalen Anzahl von Threads, die in einem Mehrkern-Prozessorkomplex pro Kern zur Verfügung gestellt werden sollen, um Aufgaben auszuführen. Es wird Ermittlung einer Sperrzeit vorgenommen, die die in den Kernen ausgeführten Threads warten, um Sperren auf Berechnungsressourcen zu beziehen. Es wird eine Ermittlung einer Anzahl von Threads, die auf den Kernen ausgeführt werden sollen, auf der Grundlage der ermittelten Sperrzeit vorgenommen. Die ermittelte Anzahl von Threads auf den Kernen wird zum Ausführen von Anweisungen genutzt.
-
Mit der vorstehenden Ausführungsform wird die optimale Anzahl von Threads auf der Grundlage der Sperrzeit ermittelt, die alle Threads warten, um auf Berechnungsressourcen zuzugreifen, um eine optimale Anzahl zum Verringern der Sperren-Konkurrenzsituation und der Sperrzeit auszuwählen, wodurch die Systemleistung verbessert wird, indem die Latenz zum Beziehen von Sperren verringert wird.
-
Figurenliste
-
- 1 veranschaulicht eine Ausführungsform einer Datenverarbeitungsumgebung.
- 2 veranschaulicht eine Ausführungsform von Thread-Informationen für die in den Kernen eines Prozessorkomplexes realisierten Threads.
- 3 veranschaulicht eine Ausführungsform von Thread-Verfügbarkeitsinformationen für einen in einem Kern realisierten Thread.
- 4 veranschaulicht eine Ausführungsform einer optimalen Anzahl von Threads für einen Bereich von Eingabe/Ausgabe-Operationen (E/A-Operationen).
- 5 veranschaulicht eine Ausführungsform einer optimalen Threads für eine Tabelle von E/A-Operationen.
- 6 veranschaulicht eine Ausführungsform einer Sperrzeitanpassung für eine optimale Anzahl von Threads für einen Bereich von Sperrzeiten für alle Threads.
- 7 veranschaulicht eine Ausführungsform einer Tabelle von Sperrzeitanpassungen, um die optimale Anzahl von Threads anzupassen.
- 8 veranschaulicht eine Ausführungsform von Operationen zum Ermitteln und Verwenden einer optimalen Anzahl von Threads pro Kern auf der Grundlage von E/A-Operationen und Sperrzeit.
- 9 veranschaulicht eine weitere Ausführungsform von Operationen zum Ermitteln und Verwenden einer optimalen Anzahl von Threads pro Kern auf der Grundlage der ersten und der zweiten Verarbeitungsmessung.
- 10 veranschaulicht eine Ausführungsform einer optimalen Anzahl von Threads für eine Tabelle von Sperrzeitbereichen.
- 11 veranschaulicht eine Ausführungsform einer Tabelle von Anpassungen von E/A-Operationen, um die optimale Anzahl von Threads anzupassen.
- 12 veranschaulicht eine Ausführungsform von Operationen zum Ermitteln und Verwenden einer optimalen Anzahl von Threads pro Kern auf der Grundlage von E/A-Operationen.
- 13 veranschaulicht eine Ausführungsform von Operationen zum Ermitteln und Verwenden einer optimalen Anzahl von Threads pro Kern auf der Grundlage von Sperrzeiten.
- 14 veranschaulicht eine Datenverarbeitungsumgebung, in der Komponenten von 1 realisiert sein können.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Beschriebene Ausführungsformen stellen Verbesserungen der Computertechnologie zum Ermitteln einer optimalen Anzahl von Threads bereit, die auf Kernen eines Prozessorkomplexes ausgeführt werden sollen, um gleichzeitiges Multithreading von Aufgaben auf den Threads bereitzustellen. Beschriebene Ausführungsformen ermitteln eine optimale Anzahl von Threads, die auf Kernen des Prozessorkomplexes ausgeführt werden sollen, die eine oder mehrere Verarbeitungsmessungen berücksichtigt, um auf der Grundlage von zwei unterschiedlichen Verarbeitungsmessungen die Leistung zu optimieren.
-
Beschriebene Ausführungsformen stellen ferner Verbesserungen bei Operationen zum Anpassen der optimalen Anzahl von Threads bereit, die auf jedem Prozessorkern zur Verfügung gestellt werden sollen, indem in Thread-Verfügbarkeitsinformationen die optimale Anzahl von Threads pro Kern als zur Verfügung stehend und andere Kerne als im Leerlauf befindlich angegeben werden, sodass Aufgaben nur auf den Threads geplant werden, die als in einem Kern zur Verfügung stehend angegeben sind. Dies vermeidet Verzögerungen, die dazu führen, dass Kerne offline genommen werden, um die Threads neu zu konfigurieren, die in jedem Kern zur Verfügung stehen oder sich im Leerlauf befinden, indem die zur Verfügung stehenden und im Leerlauf befindlichen Threads in getrennten Thread-Verfügbarkeitsinformationen angegeben werden.
-
Beschriebene Ausführungsformen können eine optimale Anzahl von pro Kern verfügbar zu machenden Threads ermitteln, die mehrere Verarbeitungsmessungen und - attribute berücksichtigt, wie z.B. Anzahl von E/A-Operationen von den auf den Kernen ausgeführten Threads, hauptspeicherübergreifender Busverkehr zwischen den Kernen, durch die Kerne gemeinsam genutzter Hauptspeicher, Sperrzeit, die die auf den Kernen ausgeführten Threads warten, um Sperren auf Ressourcen zu beziehen, usw. Bei einer Ausführungsform kann die optimale Anzahl von Threads ermittelt werden, indem zunächst auf der Grundlage der ermittelten Anzahl von E/A-Operationen eine optimale Anzahl von Threads ermittelt wird, die auf den Kernen ausgeführt werden sollen, und danach auf der Grundlage einer ermittelten Sperrzeit, die die Threads damit verbringen zu warten, dass Sperren auf Berechnungsressourcen verfügbar werden, eine Anpassung an die ermittelte optimale Anzahl von auszuführenden Threads ermittelt wird.
-
1 veranschaulicht eine Ausführungsform eines Datenverarbeitungssystems 100, das eine Mehrzahl von Prozessorkomplexen 1021, 1022...102n enthält, die über eine Hauptspeicherschnittstelle 104 auf einen gemeinsam genutzten Hauptspeicher 106 zugreifen können. Jeder Prozessorkomplex 102i kann eine Mehrzahl von Verarbeitungskernen 1081, 1082, 108m-1, 108m umfassen, die jeweils einen Onboard-L1-cache 1101, 1102, 110m-1, 110m haben. Jedes Paar von Kernen wie z.B. 1081, 1082 und 108m-1, 108m können einen L2-Cache 1121...112m/2 und einen größeren L3-Cache 1141...114m/2 gemeinsam nutzen, wie z.B. der POWER9®-Prozessor von International Business Machines („IBM“®). Jeder Prozessorkomplex 102i kann ein Einchip-Modul (single chip module, SCM) aufweisen. Der L3-Cache 114i kann einen eingebetteten dynamischen Direktzugriffsspeicher (Dynamic Random Access Memory, DRAM) aufweisen.
-
Jeder Kern 108i kann Hardware und Schaltungen zum unabhängigen Ausführen von Threads 116i enthalten, um eine Parallelisierung von Betriebslasten und ein gleichzeitiges Multithreading von Threads 116i über die Kerne Kernen 1081, 1082 und 108m-1, 108m hinweg zu ermöglichen. Gleichzeitiges Multithreading ermöglicht einem einzelnen Kern 108i, Anweisungen von unterschiedlichen Threads 116i gleichzeitig zuzuteilen.
-
Der gemeinsam genutzte Hauptspeicher 106 enthält Programmkomponenten, die durch einen oder mehrere der Threads 116i ausgeführt werden, unter anderem einen Thread-Manager 120 zum Verwalten der Verfügbarkeit der Threads 116i in den Kernen 108i; eine Aufgabenplanungsfunktion 122 zum Planen von Aufgaben für die Threads 116i; Thread-Informationen 200, die Informationen über ein Verarbeiten von E/A-Operationen enthalten, und Sperrzeiten, die Threads 116i warten, um Sperren auf Ressourcen zu beziehen; Thread-Verfügbarkeitsinformationen 300, die eine Verfügbarkeit der Threads 116i auf den Kernen 108i zum Empfangen von Aufgaben angeben; einen Sperrenmanager 124 zum Verwalten eines Zugriffs von Sperren auf Berechnungsressourcen 126 wie z.B. Lese-/Schreib-Warteschlangen, „Am längsten nicht verwendet“-Listen (LRU-Listen) (LRU = Least Recently Used), Speicher, Verarbeitungs- und andere Berechnungsressourcen in dem System 100; optimale Threads für E/A-Operationen 400, die optimale Anzahlen von Threads bereitstellen, die für unterschiedliche Bereiche von E/A-Operationen zur Verfügung gestellt werden sollen; und Sperrzeitanpassungen 600, die Anpassungen an die optimale Anzahl von Threads für unterschiedliche Bereiche von Sperrzeiten bereitstellen.
-
Bei alternativen Ausführungsformen können andere Anordnungen der Kerne bei der gemeinsamen Nutzung von L2- und L3-Cache als in 1 gezeigt vorliegen.
-
Bei der Ausführungsform von 1 befindet sich der Hauptspeicher 106 außerhalb der Prozessorkomplexe 1021...102n. Bei alternativen Ausführungsformen kann jeder Prozessorkomplex 102i einen gemeinsam genutzten Hauptspeicher für alle Kerne 108i umfassen, die in den Prozessorkomplex 102i eingebettet sind. Die Programmkomponenten 120, 122, 124 und Daten 200, 300, 400 und 500 sind in dem gemeinsam genutzten Hauptspeicher 106 gezeigt. Bei weiteren Ausführungsformen können einige oder alle dieser Programmkomponenten und Informationen in dem L3-Cache 114i oder in dem L2-Cache 112i aufrechterhalten werden. Der L2-Cache 112i kann zum Zwischenspeichern von Daten verwendet werden, die aus dem L1-Cache 110i entfernt wurden, und der L3-Cache 114i kann zum Zwischenspeichern von Daten verwendet werden, die aus dem L2-Cache 112i entfernt wurden.
-
Bei einer Ausführungsform kann jeder Prozessorkomplex 102i eine getrennte Instanz der Programmkomponenten 120, 122, 124 und Daten 200, 300, 400 und 500 in dem gemeinsam genutzten Hauptspeicher 106 aufrechterhalten. Bei weiteren Ausführungsformen kann ein Satz der Programmkomponenten 120, 122, 124 und Daten 200, 300, 400 und 500 vorliegen, um eine Zuweisung von Threads über die Prozessorkomplexe 1021...102n hinweg zu verwalten.
-
Der Begriff „Prozessorkomplex“ kann sich auch auf eine „Verarbeitungseinheit“, einen „Prozessor“, einen „Prozessorchip“ usw. beziehen. Die Kerne 108i können die Threads 116i in Hardwareschaltungen realisieren, um Aufgaben in einem oder mehreren integrierten Schaltkreisen auszuführen. Ferner können der Prozessorkomplex, die Kerne und die Threads virtuelle Verarbeitungskomponenten aufweisen, die Operationen in Bezug auf einen virtuellen Prozessorkomplex, virtuelle Kerne, Threads, virtuellen Hauptspeicher und Cache durchführen, die in einem physischen Host, physischen Verarbeitungs- und Hauptspeicherressourcen realisiert sind.
-
Bei bestimmten Ausführungsformen weist das Datenverarbeitungssystem 100 eine Speichersteuereinheit auf, die Zugriff auf gemeinsam genutzten nichtflüchtigen Speicher bereitstellt.
-
Der Hauptspeicher 106 kann eine oder mehrere flüchtige oder nichtflüchtige Hauptspeichereinheiten wie z.B. einen dynamischen Direktzugriffsspeicher (Dynamic Random Access Memory, DRAM), einen Phasenänderungsspeicher (phase change memory, PCM), einen magnetoresistiven Direktzugriffsspeicher (magnetorsistive random-access memory, MRAM), einen Spin-Transfer-Torque-MRAM (STT-MRAM), SRAM-Speichereinheiten; einen DRAM, einen ferroelektrischen Direktzugriffsspeicher (ferroelectric random-access memory, FeTRAM), einen nichtflüchtigen Nanodraht-Speicher und Direct-In-Line-Memory-Module (DIMMs), einen NAND-Speicher, z.B. einen Flash-Speicher, einen Halbleiterplattenspeicher (Solid State Drive, SSD), nichtflüchtigen RAM usw. aufweisen.
-
2 veranschaulicht eine Ausführungsform der Thread-Informationen 200, die für Threads 116i in Kernen 108i eines Prozessorkomplexes 102i aufrechterhalten werden und umfasst: eine Gesamtzahl von E/A-Operationen, die während eines Messzeitraums auf allen Threads 1161...116m in dem Prozessorkomplex 102i durchgeführt werden; eine Anzahl genutzter Threads 204, die weniger als alle Threads 1161...116m aufweisen kann, wobei einige Threads auf jedem Kern 108i im Leerlauf belassen werden; eine Anzahl von Kernen 206 auf dem Prozessorkomplex 102i; eine maximale Anzahl von in dem Prozessorkomplex 102i zur Verfügung stehenden Threads 208, die in allen Kernen 108i realisiert sind; Sperrzeiten über alle Threads 210 hinweg, wie z.B. in Prozessorzyklen, die alle Threads 1161...116m warten müssen, um von dem Sperrenmanager 124 eine Sperre zu beziehen, um auf Berechnungsressourcen 126 zuzugreifen.
-
3 veranschaulicht eine Ausführungsform von Thread-Verfügbarkeitsinformationen 300i, die für einen bestimmten Kern 108i und einen bestimmten Thread 116j aufrechterhalten werden, und umfasst: den Kern 302; den Thread 304; eine Leerlauf/Verfügbar-Markierung 306, die angibt, ob sich der Thread 304 im Leerlauf befindet und keine Aufgaben empfängt oder zur Verfügung steht, um Aufgaben von der Aufgabenplanungsfunktion 122 zu empfangen; zugewiesene Aufgaben 308, die dem Thread 304 auf dem Kern 406 zugewiesen sind; und eine Aufgabenwarteschlange 310, in die zugewiesene Aufgaben für den Thread 304 zum Ausführen eingereiht sind. Die Aufgabenplanungsfunktion 122 kann einen Lastausgleich verwenden, um Threads 116j in den Kernen 108i in einem Prozessorkomplex 102i Aufgaben zuzuweisen.
-
4 veranschaulicht eine Ausführungsform eines Eintrags 400i in den optimalen Threads für E/A-Operationen und umfasst: einen Bereich von E/A-Operationen 402 und eine Anpassung 404 der maximalen Threads für den Bereich 402. Zum Beispiel kann die Anpassung 404 einen Prozentsatz der maximalen Anzahl von Threads 208 aufweisen, wobei sich der Prozentsatz bei Bereichen einer größeren Anzahl von E/A-Operationen erhöht, da mehr Threads benötigt werden, um eine größere Anzahl von E/A-Operationen zu verarbeiten, um die Leistung des Systems 100 aufrechtzuerhalten.
-
5 stellt ein Beispiel einer Ausführungsform der Tabelle 500 optimaler Threads für E/A-Operationen wie z.B. die Tabelle 400 bereit, die unterschiedliche Prozentsätze der maximalen Anzahl von Threads 208 für unterschiedliche Bereiche von E/A-Operationen bereitstellt, wobei sich die optimale Anzahl von Threads bei höheren Bereichen von E/A-Operationen erhöht.
-
6 veranschaulicht eine Ausführungsform eines Eintrags 600i in der Sperrzeit-Thread-Anpassungstabelle 600 und umfasst: einen Bereich von Sperrzeiten CPU-Zyklen für alle Threads 602 für einen Messzeitraum; und eine entsprechende Anpassung an die optimale Anzahl von Threads 604. Die Anpassung 604 kann einen Prozentsatz zum Herabsetzen der ermittelten optimalen Anzahl von Threads aufweisen, wobei die Prozentsatzverringerung bei höheren Bereichen der Sperrzeit 602 zunimmt. Um die Latenz aus höheren Werten von Sperrzeiten zu verringern, wird die Anzahl in Ausführung befindlicher Threads verringert, um das Ausmaß der Sperren-Konkurrenzsituation beim Zugreifen auf Berechnungsressourcen 126 zu verringern. Da die Sperrzeit für alle Threads zunimmt, nimmt somit die Prozentsatzverringerung auf die optimale Anzahl von Threads zu, um die Anzahl von Threads zu verringern, die zu der Sperren-Konkurrenzsituation beitragen.
-
7 stellt ein Beispiel einer Ausführungsform der Anpassungen an die Sperrzeit-Thread-Anpassungstabelle 600 bereit, die unterschiedliche Prozentsatzabnahmen auf die optimale Anzahl von Threads bereitstellt, wobei die Prozentsatzabnahme bei Bereichen höherer Prozentsätze von CPU-Zyklen zunimmt, die mit dem Warten auf Sperren, d.h. der Sperrzeit, verbracht werden.
-
8 veranschaulicht eine Ausführungsform von Operationen, die durch den Thread-Manager 120 durchgeführt werden, um Threads zu ermitteln, die der Aufgabenplanungsfunktion 122 zur Verfügung gestellt werden sollen, um Aufgaben und Threads 116i im Leerlauf auszuführen. Die Operationen von 8 können in regelmäßigen Zeitabständen durchgeführt werden, um die Anzahl von Threads 116i pro Kern 108i anzupassen, um sowohl die Verarbeitungslatenz bei E/A-Operationen als auch die Sperren-Konkurrenzsituation zu minimieren. Nach dem Einleiten (bei Block 800) von Operationen zum Anpassen der Anzahl von Threads 116i zur Aufgabenplanung in jedem Kern 108j ermittelt der Thread-Manager 120 (bei Block 802) eine Gesamtzahl von E/A-Operationen 202 aus Threads 1161...116m, die während eines Messzeitraums auf den Kernen 1081...108m des Prozessorkomplexes 102i ausgeführt werden. Eine Ermittlung einer optimalen Anzahl von Threads 404, die dem Bereich von E/A-Operationen 402 entspricht, unter anderem der ermittelten Gesamtzahl von E/A-Operationen über die Threads 202 hinweg, wird (bei Block 804) aus der Tabelle 400 der optimalen Threads für E/A-Operationen wie z.B. der Tabelle 500 (5) vorgenommen. Die ermittelte optimale Anzahl von Threads weist die maximale Anzahl von Threads 208 pro Kern 108i auf, angepasst um den in Feld 404 des ermittelten Eintrags 400i festgelegten Prozentsatz, die den Bereich von E/A-Operationen 402 enthält, unter anderem die ermittelte Anzahl von E/A Operationen auf den Kernen 108i während des Messzeitraums.
-
Der Thread-Manager 120 ermittelt (bei Block 806) eine Sperrzeit, die alle auf den Kernen 1081...108m ausgeführten Threads 1161...116m warten 210, um Sperren auf Berechnungsressourcen 126 zu beziehen. Es wird eine Entscheidung für eine Anpassung 604 an die ermittelte optimale Anzahl von Threads aus der Sperrzeitanpassungstabelle 600 (bei Block 808) auf der Grundlage der ermittelten Sperrzeit getroffen. Zum Beispiel wird der Eintrag 600i in der Tabelle 600 der Sperrzeitanpassungen ermittelt, der einen Bereich von Sperrzeiten 602 enthält, unter anderem die ermittelte Sperrzeit, die alle Threads 116i gewartet 210 haben, und die Anpassung 604 wird aus dem ermittelten Eintrag 600i ermittelt. Die ermittelte Anpassung wird (bei Block 810) auf die ermittelte optimale Anzahl von Threads angewendet, um eine angepasste optimale Anzahl von Threads zu erzeugen. Die angepasste optimale Anzahl von Threads, die sowohl die Leistung von E/A-Operationen als auch die Sperren-Konkurrenzsituation optimiert, wird (bei Block 812) durch die Anzahl von Kernen 206 geteilt, um eine optimale Anzahl von pro Kern zur Verfügung stehenden Threads zu erzeugen. Für jeden Kern 108i gibt der Thread-Manager 120 (bei Block 814) Threads als zur Verfügung stehend in den Thread-Verfügbarkeitsinformationen 300i für die optimale Anzahl von zur Verfügung stehenden Threads pro Kern im Kern 108i an und gibt Threads als im Leerlauf befindlich in Thread-Verfügbarkeitsinformationen 300i für Threads im Kern 108i an, die nicht als zur Verfügung stehend angegeben sind. Wenn zum Beispiel vier Threads pro Kern vorliegen und drei Threads die optimale Anzahl von Threads pro Kern sind, die zur Verfügung stehen müssen, geben die Thread-Verfügbarkeitsinformationen 300i für drei Threads (optimale Anzahl) diese Threads als zur Verfügung stehend in Feld 306 an, und die Thread-Verfügbarkeitsinformationen 300i für einen Thread geben diesen einen Thread als im Leerlauf befindlich in Feld 306 an. Die Anzahl von E/A-Operationen auf allen Threads 202 und die Sperrzeit über alle Threads 210 hinweg werden gelöscht (bei Block 816), sodass neue Messungen für den nächsten Messzeitraum vorgenommen werden, die bei der nächsten Instanz von Operationen von 8 verwendet werden, um die optimale Anzahl zur Verfügung stehender Threads anzupassen.
-
Mit der Ausführungsform von 8 wird eine optimale Anzahl von pro Kern verfügbar zu machenden Threads ermittelt, um die zur Verfügung stehende Anzahl von Threads zum Minimieren der Latenz bei E/A-Operationen zu optimieren, indem die Anzahl von Threads erhöht wird, wenn E/A-Operationen in dem System 100 zunehmen, und die Anzahl von Threads verringert wird, wenn die Sperrzeit aufgrund einer zunehmenden Sperren-Konfliktsituation infolge einer größeren Anzahl parallel arbeitender Threads zunimmt.
-
Weitere beschriebene Ausführungsformen vermeiden Verzögerungen beim Anpassen der in dem Prozessorkomplex 102i zur Verfügung stehenden optimalen Anzahl von Threads, indem Thread-Verfügbarkeitsinformationen 300 im Hauptspeicher 106 aktualisiert werden, um die zur Verfügung stehenden und im Leerlauf befindlichen Threads anzugeben. Die Aufgabenplanungsfunktion 122 plant nur Aufgaben auf Threads 116i, die in den Thread-Verfügbarkeitsinformationen 300i als zur Verfügung stehend angegeben sind. Auf diese Weise wird die Anzahl von Threads aktualisiert, die pro Kern verfügbar gemacht wurden und sich im Leerlauf befinden, ohne dass die Kerne 108i neu konfiguriert werden müssen.
-
9 veranschaulicht eine weitere Ausführungsform von Operationen, die durch den Thread-Manager 120 durchgeführt werden, um Threads zu ermitteln, die der Aufgabenplanungsfunktion 122 verfügbar gemacht werden sollen, um Aufgaben und Threads 116i im Leerlauf auszuführen. Die Operationen von 9 können in regelmäßigen Zeitabständen durchgeführt werden, um die Anzahl von Threads 116i pro Kern 108i anzupassen, um Optimierungen an mehreren Faktoren vorzunehmen. Nach dem Einleiten (bei Block 900) von Operationen zum Anpassen der Anzahl von Threads 116i zur Aufgabenplanung in jedem Kern 108j legt der Thread-Manager 120 (bei Block 802) eine erste Verarbeitungsmessung auf der Grundlage von Threads 1161...116m fest, die während eines Messzeitraums auf den Kernen 1081...108m des Prozessorkomplexes 102i ausgeführt werden. Eine Ermittlung einer optimalen Anzahl von Threads, die auf den Kernen 1081...108m ausgeführt werden sollen, wird (bei Block 904) auf der Grundlage der ersten Verarbeitungsmessung vorgenommen.
-
Der Thread-Manager 120 legt (bei Block 906) eine zweite Verarbeitungsmessung auf der Grundlage von Threads 1161...116m fest, die während des Messzeitraums auf den Kernen 1081...108m des Prozessorkomplexes 102i ausgeführt werden. Eine Ermittlung einer Anpassung an die ermittelte optimale Anzahl von Threads wird (bei Block 908) auf der Grundlage der zweiten Verarbeitungsmessung vorgenommen. Die ermittelte Anpassung wird (bei Block 910) auf die ermittelte optimale Anzahl von Threads angewendet, um eine angepasste optimale Anzahl von Threads zu erzeugen. Die angepasste optimale Anzahl von Threads, die auf der Grundlage sowohl der ersten als auch der zweiten Verarbeitungsmessung optimiert, wird (bei Block 912) durch die Anzahl von Kernen 206 geteilt, um eine optimale Anzahl von pro Kern zur Verfügung stehenden Threads zu erzeugen. Für jeden Kern 108i gibt der Thread-Manager 120 (bei Block 914) Threads als zur Verfügung stehend in den Thread-Verfügbarkeitsinformationen 300i für die optimale Anzahl von zur Verfügung stehenden Threads pro Kern im Kern 108i an und gibt Threads als im Leerlauf befindlich in Thread-Verfügbarkeitsinformationen 300i für Threads im Kern 108i an, die nicht als zur Verfügung stehend angegeben sind. Wenn zum Beispiel vier Threads pro Kern vorliegen und drei Threads die optimale Anzahl von Threads pro Kern sind, die zur Verfügung stehen müssen, geben die Thread-Verfügbarkeitsinformationen 300i für drei Threads (optimale Anzahl) diese Threads als zur Verfügung stehend in Feld 306 an, und die Thread-Verfügbarkeitsinformationen 300i für einen Thread geben diesen einen Thread als im Leerlauf befindlich in Feld 306 an. Die erste und die zweite Verarbeitungsmessung werden gelöscht (bei Block 916), sodass neue Messungen für den nächsten Messzeitraum vorgenommen werden, die bei der nächsten Instanz von Operationen von 9 verwendet werden, um die optimale Anzahl zur Verfügung stehender Threads anzupassen.
-
Mit der Ausführungsform von Operationen von 9 wird eine optimale Anzahl von Threads ermittelt, die pro Kern zur Verfügung gestellt werden sollen, um die zur Verfügung stehende Anzahl von Threads auf der Grundlage mehrerer unterschiedlicher Prozessormessungen zu optimieren. Bei einer Ausführungsform kann die erste Verarbeitungsmessung mindestens eines aus einer Anzahl von E/A-Operationen von den auf den Kernen ausgeführten Threads, hauptspeicherübergreifendem Busverkehr zwischen den Kernen, Hauptspeicheroperationen usw. aufweisen, und die zweite Verarbeitungsmessung kann Sperrzeit aufweisen, die die auf den Kernen ausgeführten Threads warten, um Sperren auf Ressourcen zu beziehen. Bei einer weiteren Ausführungsform kann die erste Verarbeitungsmessung eine Sperrzeit aufweisen, die die auf den Kernen ausgeführten Threads warten, um Sperren auf Ressourcen zu beziehen, und die zweite Verarbeitungsmessung weist mindestens eines aus einer Anzahl von E/A-Operationen von den auf den Kernen ausgeführten Threads und einem hauptspeicherübergreifenden Busverkehr zwischen den Kernen, dem durch die Kerne gemeinsam genutzten Hauptspeicher usw. auf. Eine zusätzliche Verwendung von Berechnungsressourcen, die die Systemleistung beeinträchtigt, kann ebenfalls für die erste und die zweite Verarbeitungsmessung in Betracht gezogen werden, um Optimierungen an mehreren Verarbeitungsmessungen vorzunehmen.
-
Die 10 und 11 stellen eine Ausführungsform der Anpassungstabellen bereit, wenn die erste Verarbeitungsmessung eine Sperrzeit aufweist, die die auf den Kernen ausgeführten Threads warten, um Sperren auf Ressourcen zu beziehen, und die zweite Verarbeitungsmessung die Anzahl von E/A-Operationen von den auf den Kernen ausgeführten Threads aufweist. 10 zeigt, wie Prozentsätze von Sperrzeiten 1002 zu unterschiedlichen Anzahlen der optimalen Anzahl von Threads 1004 zugeordnet sind, wobei die optimale Anzahl von Threads als Prozentsatz der maximalen Anzahl von Threads 208 berechnet wird, die auf den Kernen 1081...108n zur Verfügung stehen. Die unterschiedlichen Bereiche von Sperrzeiten 1002 werden somit unterschiedlichen Prozentsätzen der maximalen Anzahl von Threads 1004 zugeordnet.
-
Nachdem die optimale Anzahl von Threads unter Verwendung der 10 und der Sperrzeiten berechnet wurde, kann eine Anpassung an die optimale Anzahl von Threads anhand von Bereich von E/A-Operationen wie in 11 gezeigt ermittelt werden. 11 zeigt Anpassungen an die optimale Anzahl von Threads 1104 bei unterschiedlichen E/A-Bereichen 1102. Mit der Vergrößerung der Bereiche von E/A-Operationen 1102 verringert sich die Anpassung 1104 an die ermittelte optimale Anzahl von Threads, da mehr Threads benötigt werden, um die Leistung bei größeren Bereichen von E/A-Operationen aufrechtzuerhalten.
-
12 veranschaulicht eine weitere Ausführungsform von Operationen, die durch den Thread-Manager 120 durchgeführt werden, um Threads zu ermitteln, die der Aufgabenplanungsfunktion 122 zur Verfügung gestellt werden sollen, um Aufgaben und Threads 116i nur auf der Grundlage von E/A-Operationen im Leerlauf auszuführen. Die Operationen von 12 können in regelmäßigen Zeitabständen durchgeführt werden, um die Anzahl von Threads 116i pro Kern 108i anzupassen, um sowohl die Verarbeitungslatenz bei E/A-Operationen als auch die Sperren-Konkurrenzsituation zu minimieren. Nach dem Einleiten (bei Block 1200) von Operationen zum Anpassen der Anzahl von Threads 116i zur Aufgabenplanung in jedem Kern 108j ermittelt der Thread-Manager 120 (bei Block 1202) eine Gesamtzahl von E/A-Operationen 202 aus Threads 1161...116m, die während eines Messzeitraums auf den Kernen 1081...108m des Prozessorkomplexes 102i ausgeführt werden. Eine Ermittlung einer optimalen Anzahl von Threads 404, die dem Bereich von E/A-Operationen 402 entspricht, unter anderem der ermittelten Gesamtzahl von E/A-Operationen über die Threads 202 hinweg, wird (bei Block 1204) aus der Tabelle 400 der optimalen Threads für E/A-Operationen wie z.B. der Tabelle in 5 vorgenommen. Die ermittelte optimale Anzahl von Threads weist die maximale Anzahl von Threads 208 pro Kern 108i auf, angepasst um den in Feld 404 des ermittelten Eintrags 400i festgelegten Prozentsatz, die den Bereich von E/A-Operationen 402 enthält, unter anderem die ermittelte Anzahl von E/A Operationen auf den Kernen 108i während des Messzeitraums.
-
13 veranschaulicht eine weitere Ausführungsform von Operationen, die durch den Thread-Manager 120 durchgeführt werden, um Threads zu ermitteln, die der Aufgabenplanungsfunktion 122 zur Verfügung gestellt werden sollen, um Aufgaben und Threads 116i nur auf der Grundlage der Sperrzeit 210 im Leerlauf auszuführen, die alle auf den Kernen ausgeführten Threads warten, um Sperren auf Berechnungsressourcen zu beziehen. Die Operationen von 13 können in regelmäßigen Zeitabständen durchgeführt werden, um die Anzahl von Threads 116i pro Kern 108i anzupassen, um sowohl die Verarbeitungslatenz bei E/A-Operationen als auch die Sperren-Konkurrenzsituation zu minimieren. Nach dem Einleiten (bei Block 1300) von Operationen zum Anpassen der Anzahl von Threads 116i, um Aufgaben in jedem Kern 108j zu planen, ermittelt der Thread-Manager 120 (bei Block 1302) eine Sperrzeit, die alle in den Kernen 1081...108m ausgeführten Threads 1161...116m warten 210, um Sperren auf Berechnungsressourcen 126 zu beziehen. Aus der optimalen Anzahl von Threads für die Sperrzeiten 1000 (10) wird eine Ermittlung eines Prozentsatzes der maximalen Anzahl von Threads 1004 vorgenommen (bei Block 1304) vorgenommen, der die optimale Anzahl von Threads aufweist, die dem Bereich von Sperrzeiten 1002 entspricht, unter anderem der über alle Threads 202 hinweg ermittelten Sperrzeit 120. Die ermittelte optimale Anzahl von Threads weist die maximale Anzahl von Threads 208 pro Kern 108i auf, angepasst um einen Prozentsatz, der in der Spalte 1004 von 10 für den ermittelten Sperrzeitbereich 1002 angegeben ist, unter anderem die während des Messzeitraums über alle Threads hinweg ermittelte Sperrzeit 210.
-
Bei der beschriebenen Ausführungsform können die Variablen i, j, m, n usw. bei Verwendung im Zusammenhang mit unterschiedlichen Elementen dieselbe oder eine andere Instanz dieses Elements bezeichnen.
-
Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) enthalten, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert sind, um einen Prozessor zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
-
Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine materielle Einheit handeln, auf der Anweisungen zur Verwendung durch eine Einheit zur Ausführung von Anweisungen aufbewahrt und gespeichert sein können. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel, ohne auf diese beschränkt zu sein, um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder eine beliebige geeignete Kombination des Vorstehenden handeln. Eine nicht erschöpfende Liste genauerer Beispiele des durch einen Computer lesbaren Speichermediums umfasst Folgendes: eine transportable Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flash-Speicher), einen statischen Direktzugriffsspeicher (SRAM), einen transportablen Nur-Lese-Speicher in Form einer Compact Disc (CD-ROM), eine Digital Versatile Disc (DVD), einen Speicherstick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhöhte Strukturen in einer Rille mit darauf aufgezeichneten Anweisungen oder beliebige geeignete Kombinationen des Vorstehenden. Ein durch einen Computer lesbares Speichermedium im hierin verwendeten Sinne ist nicht so auszulegen, dass es sich dabei um flüchtige Signale an sich handelt, beispielsweise um Funkwellen oder sich frei ausbreitende elektromagnetische Wellen, um elektromagnetische Wellen, die sich durch einen Hohlleiter oder andere Übertragungsmedien ausbreiten (z.B. ein Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder um elektrische Signale, die über ein Kabel übertragen werden.
-
Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können über ein Netzwerk, zum Beispiel das Internet, ein lokales Netzwerk ein Weitverkehrsnetzwerk und/oder ein Drahtlosnetzwerk von einem durch einen Computer lesbaren Speichermedium auf betreffende Datenverarbeitungs-/Verarbeitungseinheiten oder auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, Drahtlosübertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder eine Netzwerkschnittstelle in der Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der jeweiligen Datenverarbeitungs-/Verarbeitungseinheit weiter.
-
Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Operationen der vorliegenden Erfindung kann es sich um Assembleranweisungen, ISA-Anweisungen (ISA = Instruction Set Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, Daten zum Setzen von Zuständen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben sind, zu denen eine objektorientierte Programmiersprache wie beispielsweise Java, Smalltalk, C++ oder Ähnliches und herkömmliche prozedurale Programmiersprachen wie beispielsweise die Programmiersprache „C“ oder ähnliche Programmiersprachen gehören. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Bei dem letztgenannten Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über eine beliebige Art von Netzwerk verbunden sein, unter anderem über ein lokales Netzwerk (Local Area Network, LAN) oder über ein Weitverkehrsnetzwerk (Wide Area Network, WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (beispielsweise über das Internet unter Nutzung eines Internetdienstanbieters (Internet Service Provider)). Bei einigen Ausführungsformen können elektronische Schaltungen, zu denen beispielsweise programmierbare Logikschaltungen, vor Ort programmierbare Gatteranordnungen (Field-Programmable Gate Arrays, FPGA) oder programmierbare Logikanordnungen (PLA) gehören, die durch einen Computer lesbaren Programmanweisungen ausführen, indem Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen genutzt werden, um die elektronische Schaltung zu personalisieren, sodass Aspekte der vorliegenden Erfindung durchgeführt werden.
-
Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Flussdiagrammdarstellungen und/oder Blockschemata von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird klar sein, dass jeder Block der Flussdiagramme und/oder der Blockschemata und Kombinationen von Blöcken in den Flussdiagrammen und/oder Blockschemata mit Hilfe von durch einen Computer lesbaren Programmanweisungen realisiert werden kann bzw. können.
-
Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder anderer programmierbaren Datenverarbeitungsvorrichtungen bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder anderer programmierbarer Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel schaffen, um die in einem Block bzw. in den Blöcken des Flussdiagramms bzw. der Flussdiagramme und/oder des Blockschemas bzw. der Blockschemata angegebenen Funktionen/Aktionen zu realisieren. Diese durch einen Computer lesbaren Programmanweisungen können ebenfalls in einem durch einen Computer lesbaren Medium gespeichert sein, das einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, sodass das durch einen Computer lesbare Medium mit darauf gespeicherten Anweisungen ein Erzeugnis aufweist, das Anweisungen enthält, die die in einem Block bzw. in den Blöcken der Flussdiagramme und/oder der Blockschemata angegebene Funktion/Aktion realisieren.
-
Die durch einen Computer lesbaren Programmanweisungen können auch in einen Computer, in andere programmierbare Datenverarbeitungsvorrichtungen oder in andere Einheiten geladen werden, um zu bewirken, dass auf dem Computer, auf anderen programmierbaren Vorrichtungen oder anderen Einheiten eine Reihe von Operationen ausgeführt wird, um einen mittels Computer realisierten Prozess zu schaffen, sodass die Anweisungen, die auf dem Computer, auf anderen programmierbaren Vorrichtungen oder Einheiten ausgeführt werden, die in einem Block bzw. in den Blöcken der Flussdiagramme und/oder der Blockschemata angegebenen Funktionen/Aktionen realisieren.
-
Die Flussdiagramme und Blockschemata in den Figuren veranschaulichen die Architektur, Funktionalität und Wirkungsweise möglicher Realisierungsformen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Flussdiagrammen bzw. in den Blockschemata ein Modul, ein Segment oder einen Abschnitt von Anweisungen darstellen, das bzw. der eine oder mehrere ausführbare Anweisungen zum Realisieren der angegebenen Logikfunktion bzw. Logikfunktionen aufweist. Bei einigen alternativen Realisierungsformen können die in dem Block angegebenen Funktionen in einer anderen als in der Reihenfolge ausgeführt werden, die in den Figuren angegeben ist. Zum Beispiel können zwei hintereinander aufgeführte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können je nach der mit den Blöcken verbundenen Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Darüber hinaus ist anzumerken, dass jeder Block der Blockschemata und/oder Flussdiagrammdarstellungen sowie Kombinationen von Blöcken in den Blockschemata und/oder Flussdiagrammdarstellungen mit Hilfe zweckgebundener hardwaregestützter Systeme zum Ausführen der angegebenen Funktionen bzw. Aktionen oder mit Hilfe von Kombinationen aus zweckgebundener Hardware und zweckgebundenen Computeranweisungen realisiert werden kann bzw. können.
-
Die Berechnungskomponenten 1 können in einem oder mehreren Computersystemen wie zum Beispiel in dem in 14 gezeigten Computersystem 1402 realisiert sein. Das Computersystem/der Server 1402 kann im allgemeinen Kontext von auf einem Computersystem ausführbaren Anweisungen beschrieben werden, wie zum Beispiel von Programmmodulen, die durch ein Computersystem ausgeführt werden. Programmmodule können im Allgemeinen Routinen, Programme, Objekte, Komponenten, Logik und Datenstrukturen usw. enthalten, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen realisieren. Das Computersystem/der Server 1402 kann in verteilten Cloud-Computing-Umgebungen praktisch realisiert sein, in denen Aufgaben durch entfernt angeordnete Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. Bei einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl auf lokal als auch auf entfernt angeordneten Computersystem-Speichermedien befinden, unter anderem auf Hauptspeichereinheiten.
-
Wie in 14 gezeigt ist das Computersystem/der Server 1402 in Form einer Universal-Datenverarbeitungseinheit gezeigt. Zu den Komponenten des Computersystems/des Servers 1402 können, ohne auf diese beschränkt zu sein, ein oder mehrere Prozessoren oder Verarbeitungseinheiten 1004 wie z.B. der Prozessorkomplex 102i in 1, ein Systemhauptspeicher 1406 wie z.B. der gemeinsam genutzte Hauptspeicher 106 in 1 und ein Bus 1408 gehören, der verschiedene Systemkomponenten, unter anderem den Systemhauptspeicher 1406, mit dem Prozessor 1404 verbindet. Der Bus 1408 stellt eine oder mehrere beliebiger verschiedener Arten von Busstrukturen dar, zu denen ein Speicherbus oder eine Speichersteuereinheit, ein Peripheriebus, ein Accelerated Graphics Port und ein Prozessorbus oder lokaler Bus gehören, die eine beliebige einer Vielfalt von Busarchitekturen nutzen. Als Beispiel und nicht als Einschränkung gedacht gehören zu derartigen Architekturen ein ISA-Bus (ISA = Industry Standard Architecture), ein MCA-Bus (MCA = Micro Channel Architecture), der EISA-Bus (EISA = Enhanced ISA), ein lokaler VESA-Bus (VESA = Video Electronics Standards Association) und ein PCI-Bus (PCI = Peripheral Component Interconnects).
-
Das Computersystem/der Server 1402 enthält in der Regel eine Vielfalt von Medien, die durch Computersysteme gelesen werden können. Bei derartigen Medien kann es sich um beliebige verfügbare Medien handeln, auf die das Computersystem/der Server 1402 zugreifen kann, und zu diesen Medien gehören sowohl flüchtige als auch nichtflüchtige Medien, wechselbare und nichtwechselbare Medien.
-
Zum Systemhauptspeicher 1406 können durch Computersysteme lesbare Medien in Form von flüchtigem Speicher wie zum Beispiel Direktzugriffsspeicher (Random Access Memory, RAM) 1410 und/oder Cache 1412 gehören. Das Computersystem/der Server 1402 kann ferner andere wechselbare/nichtwechselbare, flüchtige/nichtflüchtige Computersystem-Speichermedien aufweisen. Lediglich beispielhaft kann ein Speichersystem 1413 zum Lesen von einem und Schreiben auf ein nichtwechselbares, nichtflüchtiges magnetisches Medium (nicht dargestellt und normalerweise als „Festplatte“ bezeichnet) bereitgestellt sein. Obwohl nicht gezeigt, können ein Magnetplattenlaufwerk zum Lesen von einer und Schreiben auf eine wechselbare nichtflüchtige Magnetplatte (z.B. eine „Diskette“) und ein optisches Plattenlaufwerk zum Lesen von einer oder Schreiben auf eine wechselbare, nichtflüchtige optische Platte wie z. B. ein CD-ROM, DVD-ROM oder ein anderes optisches Medium bereitgestellt sein. In derartigen Fällen kann jede dieser Einheiten durch eine oder mehrere Datenmedienschnittstellen mit dem Bus 1408 verbunden sein. Wie ferner abgebildet und nachfolgend beschrieben ist, kann der Speicher 1406 mindestens ein Programmprodukt enthalten, das eine Gruppe (z.B. mindestens eines) von Programmmodulen enthält, die so konfiguriert sind, dass die Funktionen von Ausführungsformen der Erfindung ausgeführt werden.
-
Ein Programm/Dienstprogramm 1414, das eine Gruppe (mindestens eines) von Programmmodulen 1416 enthält, kann als Beispiel und nicht als Einschränkung im Hauptspeicher 1406 sowie in einem Betriebssystem, in einem oder mehreren Anwendungsprogrammen oder in anderen Programmmodulen und Programmdaten gespeichert sein. Jedes der Betriebssysteme, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten oder eine bestimmte Kombination davon kann bzw. können eine Realisierungsform einer Vernetzungsumgebung enthalten. Die Komponenten des Computers 1402 können als Programmmodule 1416 realisiert sein, die allgemein die Funktionen und/oder Methodiken von hierin beschriebenen Ausführungsformen der Erfindung ausführen. Die Systeme von 1 können in einem oder mehreren Computersystemen 1402 realisiert sein, wobei bei deren Realisierung in mehreren Computersystemen 1402 die Computersysteme Daten über ein Netzwerk austauschen können.
-
Das Computersystem/der Server 1402 kann außerdem mit einer oder mehreren externen Einheiten 1418 Daten austauschen, zum Beispiel mit einer Tastatur, einer Zeigeeinheit, einer Anzeigeeinheit 1420 usw.; mit einer oder mehreren Einheiten, die es einem Benutzer ermöglichen, mit dem Computersystem/Server 1402 zu interagieren; und/oder mit beliebigen Einheiten (z.B. Netzwerkkarte, Modem usw.), die es dem Computersystem/Server 1402 ermöglichen, mit einer oder mehreren anderen Datenverarbeitungseinheiten Daten auszutauschen. Ein derartiger Datenaustausch kann über Eingabe/Ausgabe-Schnittstellen (E/A-Schnittstellen) 1422 stattfinden. Darüber hinaus kann das Computersystem/der Server 1402 über einen Netzwerkadapter 1424 mit einem oder mehreren Netzwerken Daten austauschen, zum Beispiel mit einem lokalen Netzwerk (Local Area Network, LAN), mit einem allgemeinen Weitverkehrsnetzwerk (Wide Area Network, WAN) und oder mit einem öffentlichen Netzwerk (z.B. dem Internet). Wie abgebildet tauscht der Netzwerkadapter 1424 über den Bus 1408 Daten mit den anderen Komponenten des Computersystems/Servers 1402 aus. Es sollte klar sein, dass, obwohl nicht abgebildet, andere Hardware- und/oder Softwarekomponenten in Verbindung mit dem Computersystem/Server 1402 verwendet werden könnten. Zu Beispielen gehören, ohne auf diese beschränkt zu sein: Mikrocode, Gerätetreiber, redundante Verarbeitungseinheiten, externe Festplattenanordnungen, RAID-Systeme (RAID = Redundant Array of Independent Disks), Bandlaufwerke, Speichersysteme zur Datenarchivierung usw.
-
Die Begriffe „eine Ausführungsform“, „Ausführungsform“, „Ausführungsformen“, „die Ausführungsform“, „die Ausführungsformen“, „eine oder mehrere Ausführungsformen“, „einige Ausführungsformen“ und „eine Ausführungsform“ bedeuten „eine oder mehrere (aber nicht alle) Ausführungsformen der vorliegenden Erfindung(en)“, sofern nicht ausdrücklich etwas anderes angegeben ist.
-
Die Begriffe „unter anderem“, „aufweisen/aufweisend“, „hat/haben“ und Variationen davon bedeuten „einschließlich, ohne auf diese beschränkt zu sein“, sofern nicht ausdrücklich etwas anderes angegeben ist.
-
Alle nummerierten Aufstellungen von Elementen schließen nicht stillschweigend ein, dass sich beliebige oder alle der Elemente gegenseitig ausschließen, sofern nicht ausdrücklich etwas anderes angegeben ist.
-
Die Begriffe „ein/eine“ und „der/die/das“ bezeichnen „ein/eine oder mehrere“, sofern nicht ausdrücklich etwas anderes angegeben ist.
-
Einheiten, die untereinander in Verbindung stehen, brauchen nicht ununterbrochen miteinander in Verbindung zu stehen, sofern nicht ausdrücklich etwas anderes angegeben ist. Außerdem können untereinander in Verbindung stehende Einheiten über eine oder mehrere Vermittlereinheiten direkt oder indirekt miteinander Datenaustauschen.
-
Eine Beschreibung einer Ausführungsform, bei der mehrere Komponenten untereinander in Verbindung stehen, schließt nicht stillschweigend ein, dass alle diese Komponenten erforderlich sind. Vielmehr ist eine Vielfalt optionaler Komponenten beschrieben, um die große Vielfalt möglicher Ausführungsformen der vorliegenden Erfindung zu veranschaulichen.
-
Wenn hierin eine einzelne Einheit oder ein einzelner Gegenstand beschrieben ist, wird ohne Weiteres ersichtlich, dass mehr als eine Einheit/ein Gegenstand (unabhängig davon, ob sie zusammenarbeiten) anstelle einer einzelnen Einheit/eines einzelnen Gegenstands verwendet werden können. Ebenso wird, wenn hierin mehr als eine Einheit oder mehr als ein Gegenstand beschrieben ist (unabhängig davon, ob sie zusammenarbeiten), ohne Weiteres ersichtlich, dass eine einzelne Einheit oder ein einzelner Gegenstand oder eine andere Anzahl von Einheiten/Gegenständen anstelle der gezeigten Anzahl von Einheiten oder Programmen verwendet werden kann. Die Funktionalität und/oder die Merkmale einer Einheit können alternativ durch eine oder mehrere andere Einheiten verkörpert sein, die nicht ausdrücklich als diese Funktionalität/diese Merkmale enthaltend beschrieben sind. Daher brauchen andere Ausführungsformen der vorliegenden Erfindung die Einheit selbst nicht aufzuweisen.
-
Die vorstehende Beschreibung verschiedener Ausführungsformen der Erfindung wurde zur Veranschaulichung und Beschreibung vorgelegt. Sie ist nicht als erschöpfend oder als die Erfindung in der exakt offenbarten Form einschränkend gedacht. In Anbetracht der vorstehend aufgeführten Lehren sind viele Modifikationen und Variationen möglich. Es ist nicht beabsichtigt, den Schutzbereich der Erfindung durch diese ausführliche Beschreibung einzuschränken, sondern vielmehr durch die hier beigefügten Ansprüche. Die vorstehende ausführliche Beschreibung, die Beispiele und Daten stellen eine vollständige Beschreibung der Herstellung und der Verwendung des Aufbaus der Erfindung dar. Da viele Ausführungsformen der Erfindung geschaffen werden können, ohne vom Schutzbereich der Erfindung abzuweichen, ist die Erfindung in den hierin im Anschluss beigefügten Ansprüchen niedergelegt.