DE112020004661T5 - Ermitteln einer optimalen Anzahl von Threads pro Kern in einem Mehrkern-Prozessorkomplex - Google Patents

Ermitteln einer optimalen Anzahl von Threads pro Kern in einem Mehrkern-Prozessorkomplex Download PDF

Info

Publication number
DE112020004661T5
DE112020004661T5 DE112020004661.3T DE112020004661T DE112020004661T5 DE 112020004661 T5 DE112020004661 T5 DE 112020004661T5 DE 112020004661 T DE112020004661 T DE 112020004661T DE 112020004661 T5 DE112020004661 T5 DE 112020004661T5
Authority
DE
Germany
Prior art keywords
threads
cores
operations
determined
execute
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.)
Pending
Application number
DE112020004661.3T
Other languages
English (en)
Inventor
Brian Anthony Rinaldi
Lokesh Mohan Gupta
Kevin Ash
Matthew Kalos
Trung Nguyen
Clint Hardy
Louis Rasor
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112020004661T5 publication Critical patent/DE112020004661T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Complex Calculations (AREA)
  • Microcomputers (AREA)
  • Multi Processors (AREA)

Abstract

Bei einem Verfahren zum Ermitteln einer optimalen Anzahl von Threads, die pro Kern in einem Mehrkern-Prozessorkomplex zum Ausführen von Aufgaben zur Verfügung gestellt werden sollen, wird ein Entscheidung für eine erste Verarbeitungsmessung 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. Eine Entscheidung für eine zweite Verarbeitungsmessung wird auf der Grundlage der Threads getroffen, die auf den Kernen des Prozessorchips ausgeführt werden. Eine Entscheidung für eine Anpassung an die ermittelte Anzahl von Threads, die ausgeführt werden sollen, wird 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.

Description

  • 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.

Claims (25)

  1. Computerprogrammprodukt zum Ermitteln einer Anzahl von Threads, die in Kernen eines Prozessorchips ausgeführt werden sollen, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium aufweist, auf dem durch einen Computer lesbarer Programmcode verkörpert ist, der bei Ausführung Operationen durchführt, wobei die Operationen aufweisen: Entscheiden für eine erste Verarbeitungsmessung auf der Grundlage von Threads, die auf den Kernen des Prozessorchips ausgeführt werden, wobei jeder Kern eine Schaltung zum unabhängigen Ausführen einer Mehrzahl von Threads umfasst; Ermitteln einer Anzahl von Threads, die auf den Kernen ausgeführt werden sollen, auf der Grundlage der ersten Verarbeitungsmessung; Entscheiden für eine zweite Verarbeitungsmessung auf der Grundlage der Threads, die auf den Kernen des Prozessorchips ausgeführt werden; Entscheiden für eine Anpassung an die ermittelte Anzahl von Threads, die ausgeführt werden sollen, auf der Grundlage der zweiten Verarbeitungsmessung, was zu einer angepassten Anzahl von Threads führt; und Nutzen der angepassten Anzahl von Threads auf den Kernen zum Ausführen von Anweisungen.
  2. Computerprogrammprodukt nach Anspruch 1, wobei die erste Verarbeitungsmessung eine Anzahl von Eingabe/Ausgabe-Operationen (E/A-Operationen) aus Threads aufweist, die auf den Kernen des Prozessorkomplexes ausgeführt werden, und wobei die zweite Verarbeitungsmessung eine Sperrzeit (lock spin time) aufweist, die die in den Kernen ausgeführten Threads warten, um Sperren auf Ressourcen zu beziehen.
  3. Computerprogrammprodukt nach Anspruch 2, wobei das Ermitteln der Anzahl von auszuführenden Threads aufweist: Aufrechterhalten einer Zuordnung einer Mehrzahl von Bereichen von E/A-Operationen und Anpassungen an eine maximale Anzahl von Threads, die zum Ausführen auf den Kernen zur Verfügung stehen; Ermitteln einer Anpassung an die maximale Anzahl von Threads, die einem Bereich von E/A-Operationen zugehörig sind, unter anderem der ermittelten Anzahl von E/A-Operationen; und Berechnen der ermittelten Anzahl von Threads durch Anwenden der ermittelten Anpassung an die maximale Anzahl von Threads, die zum Ausführen auf den Kernen zur Verfügung stehen.
  4. Computerprogrammprodukt nach Anspruch 3, wobei die Anpassungen ein Verringern der maximalen Anzahl von Threads um einen Prozentsatz aufweisen, wobei der Prozentsatz bei höheren Bereichen von E/A-Operationen abnimmt.
  5. Computerprogrammprodukt nach Anspruch 2, wobei das Ermitteln der Anpassung an die ermittelte Anzahl von Threads auf der Grundlage der ermittelten Sperrzeit aufweist: Aufrechterhalten einer Zuordnung von Bereichen von Sperrzeiten und Anpassungen an die ermittelte Anzahl von Threads; und Ermitteln einer Anpassung an die ermittelte Anzahl von Threads, die einem Bereich von Sperrzeiten, unter anderem der ermittelten Sperrzeit, zugehörig sind.
  6. Computerprogrammprodukt nach Anspruch 5, wobei die Anpassung an die ermittelte Anzahl von Threads das Verringern der ermittelten Anzahl von Threads um einen Prozentsatz aufweist, wobei der Prozentsatz bei höheren Bereichen von Sperrkonfliktzeiten zunimmt. E/A-Operationen.
  7. Computerprogrammprodukt nach Anspruch 1, wobei das Nutzen der angepassten Anzahl von auf den Kernen auszuführenden Threads zum Ausführen von Anweisungen aufweist: Ermitteln einer Anzahl von auf den Kernen auszuführenden Threads auf der Grundlage der angepassten Anzahl von Threads auf den Kernen, wobei die ermittelte Anzahl von Threads, die auf jedem Kern ausgeführt werden sollen, weniger als eine Anzahl von Threads aufweist, die zum unabhängigen Ausführen auf jedem Kern zur Verfügung stehen; und Planen von Aufgaben nur zum Ausführen auf der ermittelten Anzahl von Threads auf jedem Kern, wodurch mindestens ein Thread bei einer Mehrzahl der Kerne im Leerlauf belassen wird.
  8. Computerprogrammprodukt nach Anspruch 7, wobei die Operationen ferner aufweisen: für jeden Kern Angeben von Threads gleich der ermittelten Anzahl von auszuführenden Threads als zum Empfangen von Aufgaben zur Verfügung stehend und Angeben beliebiger Threads in den Kernen, die nicht als zur Verfügung stehend angegeben sind, als im Leerlauf befindlich und zum Ausführen von Aufgaben nicht zur Verfügung stehend, wobei das Planen von Aufgaben nur Aufgaben plant, die auf Threads ausgeführt werden sollen, die als zum Empfangen von Aufgaben zur Verfügung stehend angegeben sind.
  9. Computerprogrammprodukt nach Anspruch 1, wobei die erste Verarbeitungsmessung eine Sperrzeit aufweist, die die auf den Kernen ausgeführten Threads warten, um Sperren auf Ressourcen zu beziehen, und wobei die zweite Verarbeitungsmessung 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 aufweist.
  10. Computerprogrammprodukt zum Ermitteln einer Anzahl von Threads, die in Kernen eines Prozessorkomplexes ausgeführt werden sollen, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium aufweist, auf dem durch einen Computer lesbarer Programmcode verkörpert ist, der bei Ausführung Operationen durchführt, wobei die Operationen aufweisen: Ermitteln einer Anzahl von Eingabe/Ausgabe-Operationen (E/A-Operationen) aus Threads, die auf den Kernen des Prozessorkomplexes ausgeführt werden, wobei jeder Kern eine Schaltung zum unabhängigen Ausführen einer Mehrzahl von Threads umfasst; Ermitteln einer Anzahl von Threads, die auf den Kernen ausgeführt werden sollen, auf der Grundlage der ermittelten Anzahl von E/A-Operationen; und Nutzen der ermittelten Anzahl von Threads auf den Kernen zum Ausführen von Anweisungen.
  11. Computerprogrammprodukt nach Anspruch 10, wobei das Ermitteln der Anzahl von auszuführenden Threads aufweist: Aufrechterhalten einer Zuordnung einer Mehrzahl von Bereichen von E/A-Operationen und Anpassungen an eine maximale Anzahl von Threads, die zum Ausführen auf den Kernen zur Verfügung stehen; Ermitteln einer Anpassung an die maximale Anzahl von Threads, die einem Bereich von E/A-Operationen zugehörig sind, unter anderem der ermittelten Anzahl von E/A-Operationen; und Berechnen der ermittelten Anzahl von Threads durch Anwenden der ermittelten Anpassung an die maximale Anzahl von Threads, die zum Ausführen auf den Kernen zur Verfügung stehen.
  12. Computerprogrammprodukt zum Ermitteln einer Anzahl von Threads, die in Kernen eines Prozessorkomplexes ausgeführt werden sollen, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium aufweist, auf dem durch einen Computer lesbarer Programmcode verkörpert ist, der bei Ausführung Operationen durchführt, wobei die Operationen aufweisen: Ermitteln einer Sperrzeit, die die in den Kernen ausgeführten Threads warten, um Sperren auf Berechnungsressourcen zu beziehen; Ermitteln einer Anzahl von Threads, die auf den Kernen ausgeführt werden sollen, auf der Grundlage der ermittelten Sperrzeit; und Nutzen der ermittelten Anzahl von Threads auf den Kernen zum Ausführen von Anweisungen.
  13. Computerprogrammprodukt nach Anspruch 12, wobei das Ermitteln der Anzahl von auszuführenden Threads aufweist: Aufrechterhalten einer Zuordnung einer Mehrzahl von Bereichen von Sperrzeiten und Anpassungen an eine maximale Anzahl von Threads, die zum Ausführen auf den Kernen zur Verfügung stehen; Ermitteln einer Anpassung an die maximale Anzahl von Threads, die einem Bereich von Sperrzeiten, unter anderem der ermittelten Sperrzeit, zugehörig sind; und Berechnen der ermittelten Anzahl von Threads durch Anwenden der ermittelten Anpassung an die maximale Anzahl von Threads, die zum Ausführen auf den Kernen zur Verfügung stehen.
  14. System, das aufweist: eine Mehrzahl von Kernen, die Threads ausführen; und ein durch einen Computer lesbares Speichermedium, das darauf verkörperten, durch einen Computer lesbaren Code enthält, der bei Ausführung auf mindestens einem der Kerne Operationen durchführt, wobei die Operationen aufweisen: Entscheiden für eine erste Verarbeitungsmessung auf der Grundlage von Threads, die auf den Kernen des Prozessorchips ausgeführt werden, wobei jeder Kern eine Schaltung zum unabhängigen Ausführen einer Mehrzahl von Threads umfasst; Ermitteln einer Anzahl von Threads, die auf den Kernen ausgeführt werden sollen, auf der Grundlage der ersten Verarbeitungsmessung; Entscheiden für eine zweite Verarbeitungsmessung auf der Grundlage der Threads, die auf den Kernen des Prozessorchips ausgeführt werden; Entscheiden für eine Anpassung an die ermittelte Anzahl von Threads, die ausgeführt werden sollen, auf der Grundlage der zweiten Verarbeitungsmessung, was zu einer angepassten Anzahl von Threads führt; und Nutzen der angepassten Anzahl von Threads auf den Kernen zum Ausführen von Anweisungen.
  15. System nach Anspruch 14, wobei die erste Verarbeitungsmessung eine Anzahl von Eingabe/Ausgabe-Operationen (E/A-Operationen) aus Threads aufweist, die auf den Kernen des Prozessorkomplexes ausgeführt werden, und wobei die zweite Verarbeitungsmessung eine Sperrzeit aufweist, die die in den Kernen ausgeführten Threads warten, um Sperren auf Ressourcen zu beziehen.
  16. System nach Anspruch 15, wobei das Ermitteln der Anzahl von auszuführenden Threads aufweist: Aufrechterhalten einer Zuordnung einer Mehrzahl von Bereichen von E/A-Operationen und Anpassungen an eine maximale Anzahl von Threads, die zum Ausführen auf den Kernen zur Verfügung stehen; Ermitteln einer Anpassung an die maximale Anzahl von Threads, die einem Bereich von E/A-Operationen zugehörig sind, unter anderem der ermittelten Anzahl von E/A-Operationen; und Berechnen der ermittelten Anzahl von Threads durch Anwenden der ermittelten Anpassung an die maximale Anzahl von Threads, die zum Ausführen auf den Kernen zur Verfügung stehen.
  17. System nach Anspruch 15, wobei das Ermitteln der Anpassung an die ermittelte Anzahl von Threads auf der Grundlage der ermittelten Sperrzeit aufweist: Aufrechterhalten einer Zuordnung von Bereichen von Sperrzeiten und Anpassungen an die ermittelte Anzahl von Threads; und Ermitteln einer Anpassung an die ermittelte Anzahl von Threads, die einem Bereich von Sperrzeiten, unter anderem der ermittelten Sperrzeit, zugehörig sind.
  18. System nach Anspruch 14, wobei das Nutzen der angepassten Anzahl von auf den Kernen auszuführenden Threads zum Ausführen von Anweisungen aufweist: Ermitteln einer Anzahl von auf den Kernen auszuführenden Threads auf der Grundlage der angepassten Anzahl von Threads auf den Kernen, wobei die ermittelte Anzahl von Threads, die auf jedem Kern ausgeführt werden sollen, weniger als eine Anzahl von Threads aufweist, die zum unabhängigen Ausführen auf jedem Kern zur Verfügung stehen; und Planen von Aufgaben nur zum Ausführen auf der ermittelten Anzahl von Threads auf jedem Kern, wodurch mindestens ein Thread bei einer Mehrzahl der Kerne im Leerlauf belassen wird.
  19. System nach Anspruch 18, wobei die Operationen ferner aufweisen: für jeden Kern Angeben von Threads gleich der ermittelten Anzahl von auszuführenden Threads als zum Empfangen von Aufgaben zur Verfügung stehend und Angeben beliebiger Threads in den Kernen, die nicht als zur Verfügung stehend angegeben sind, als im Leerlauf befindlich und zum Ausführen von Aufgaben nicht zur Verfügung stehend, wobei das Planen von Aufgaben nur Aufgaben plant, die auf Threads ausgeführt werden sollen, die als zum Empfangen von Aufgaben zur Verfügung stehend angegeben sind.
  20. Verfahren zum Ermitteln einer Anzahl von Threads, die in Kernen eines Prozessorchips ausgeführt werden sollen, wobei das Verfahren aufweist: Entscheiden für eine erste Verarbeitungsmessung auf der Grundlage von Threads, die auf den Kernen des Prozessorchips ausgeführt werden, wobei jeder Kern eine Schaltung zum unabhängigen Ausführen einer Mehrzahl von Threads umfasst; Ermitteln einer Anzahl von Threads, die auf den Kernen ausgeführt werden sollen, auf der Grundlage der ersten Verarbeitungsmessung; Entscheiden für eine zweite Verarbeitungsmessung auf der Grundlage der Threads, die auf den Kernen des Prozessorchips ausgeführt werden; Entscheiden für eine Anpassung an die ermittelte Anzahl von Threads, die ausgeführt werden sollen, auf der Grundlage der zweiten Verarbeitungsmessung, was zu einer angepassten Anzahl von Threads führt; und Nutzen der angepassten Anzahl von Threads auf den Kernen zum Ausführen von Anweisungen.
  21. Verfahren nach Anspruch 20, wobei die erste Verarbeitungsmessung eine Anzahl von Eingabe/Ausgabe-Operationen (E/A-Operationen) aus Threads aufweist, die auf den Kernen des Prozessorkomplexes ausgeführt werden, und wobei die zweite Verarbeitungsmessung eine Sperrzeit aufweist, die die in den Kernen ausgeführten Threads warten, um Sperren auf Ressourcen zu beziehen.
  22. Verfahren nach Anspruch 21, wobei das Ermitteln der Anzahl von auszuführenden Threads aufweist: Aufrechterhalten einer Zuordnung einer Mehrzahl von Bereichen von E/A-Operationen und Anpassungen an eine maximale Anzahl von Threads, die zum Ausführen auf den Kernen zur Verfügung stehen; Ermitteln einer Anpassung an die maximale Anzahl von Threads, die einem Bereich von E/A-Operationen zugehörig sind, unter anderem der ermittelten Anzahl von E/A-Operationen; und Berechnen der ermittelten Anzahl von Threads durch Anwenden der ermittelten Anpassung an die maximale Anzahl von Threads, die zum Ausführen auf den Kernen zur Verfügung stehen.
  23. Verfahren nach Anspruch 21, wobei das Ermitteln der Anpassung an die ermittelte Anzahl von Threads auf der Grundlage der ermittelten Sperrzeit aufweist: Aufrechterhalten einer Zuordnung von Bereichen von Sperrzeiten und Anpassungen an die ermittelte Anzahl von Threads; und Ermitteln einer Anpassung an die ermittelte Anzahl von Threads, die einem Bereich von Sperrzeiten, unter anderem der ermittelten Sperrzeit, zugehörig sind.
  24. Verfahren nach Anspruch 20, wobei das Nutzen der angepassten Anzahl von auf den Kernen auszuführenden Threads zum Ausführen von Anweisungen aufweist: Ermitteln einer Anzahl von auf den Kernen auszuführenden Threads auf der Grundlage der angepassten Anzahl von Threads auf den Kernen, wobei die ermittelte Anzahl von Threads, die auf jedem Kern ausgeführt werden sollen, weniger als eine Anzahl von Threads aufweist, die zum unabhängigen Ausführen auf jedem Kern zur Verfügung stehen; und Planen von Aufgaben nur zum Ausführen auf der ermittelten Anzahl von Threads auf jedem Kern, wodurch mindestens ein Thread bei einer Mehrzahl der Kerne im Leerlauf belassen wird.
  25. Verfahren nach Anspruch 24, das ferner aufweist: für jeden Kern Angeben von Threads gleich der ermittelten Anzahl von auszuführenden Threads als zum Empfangen von Aufgaben zur Verfügung stehend und Angeben beliebiger Threads in den Kernen, die nicht als zur Verfügung stehend angegeben sind, als im Leerlauf befindlich und zum Ausführen von Aufgaben nicht zur Verfügung stehend, wobei das Planen von Aufgaben nur Aufgaben plant, die auf Threads ausgeführt werden sollen, die als zum Empfangen von Aufgaben zur Verfügung stehend angegeben sind.
DE112020004661.3T 2019-11-21 2020-11-11 Ermitteln einer optimalen Anzahl von Threads pro Kern in einem Mehrkern-Prozessorkomplex Pending DE112020004661T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/690,131 US11321123B2 (en) 2019-11-21 2019-11-21 Determining an optimum number of threads to make available per core in a multi-core processor complex to executive tasks
US16/690,131 2019-11-21
PCT/IB2020/060616 WO2021099891A1 (en) 2019-11-21 2020-11-11 Determining an optimum number of threads per core in a multi-core processor complex

Publications (1)

Publication Number Publication Date
DE112020004661T5 true DE112020004661T5 (de) 2022-07-21

Family

ID=75973848

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020004661.3T Pending DE112020004661T5 (de) 2019-11-21 2020-11-11 Ermitteln einer optimalen Anzahl von Threads pro Kern in einem Mehrkern-Prozessorkomplex

Country Status (6)

Country Link
US (1) US11321123B2 (de)
JP (1) JP2023503024A (de)
CN (1) CN114730276A (de)
DE (1) DE112020004661T5 (de)
GB (1) GB2605068B (de)
WO (1) WO2021099891A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220222121A1 (en) * 2021-01-12 2022-07-14 Fujitsu Limited Information processing device, computer-readable recording medium storing program, and information processing method

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11494236B2 (en) * 2020-05-06 2022-11-08 EMP IP Holding Company, LLC System and method for sharing central processing unit (CPU) resources with unbalanced applications
KR102485288B1 (ko) * 2020-12-15 2023-01-04 현대오토에버 주식회사 차량용 제어기 및 그것의 운영체제 스케쥴링 방법
WO2024035566A1 (en) * 2022-08-12 2024-02-15 Google Llc Real-time cpu availability monitoring
CN115599558B (zh) * 2022-12-13 2023-03-10 无锡学院 一种工业互联网平台的任务处理方法和系统
CN116257365B (zh) * 2023-05-15 2023-08-22 建信金融科技有限责任公司 数据入库方法、装置、设备、存储介质
CN116483013B (zh) * 2023-06-19 2023-09-05 成都实时技术股份有限公司 一种基于多通道采集器的高速信号采集系统及方法

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6845404B2 (en) * 2002-02-21 2005-01-18 Dell Products, L.P. System, method and computer program product for selecting a mode of operation of a device in an information handling system
US20050081204A1 (en) 2003-09-25 2005-04-14 International Business Machines Corporation Method and system for dynamically bounded spinning threads on a contested mutex
US7310722B2 (en) * 2003-12-18 2007-12-18 Nvidia Corporation Across-thread out of order instruction dispatch in a multithreaded graphics processor
US7458077B2 (en) 2004-03-31 2008-11-25 Intel Corporation System and method for dynamically adjusting a thread scheduling quantum value
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
US8255910B2 (en) * 2006-07-18 2012-08-28 Hewlett-Packard Development Company, L.P. Fair weighted proportional-share virtual time scheduler
US8185906B2 (en) 2007-05-23 2012-05-22 Sap Ag Method and apparatus for dynamically adjusting thread pool
JP4569846B2 (ja) * 2008-04-02 2010-10-27 日本電気株式会社 I/oノード制御方式及び方法
US8631415B1 (en) 2009-08-25 2014-01-14 Netapp, Inc. Adjustment of threads for execution based on over-utilization of a domain in a multi-processor system by sub-dividing parallizable group of threads to sub-domains
US9032411B2 (en) * 2009-12-25 2015-05-12 International Business Machines Corporation Logical extended map to demonstrate core activity including L2 and L3 cache hit and miss ratio
WO2011104823A1 (ja) * 2010-02-23 2011-09-01 富士通株式会社 マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム
US8381004B2 (en) * 2010-05-26 2013-02-19 International Business Machines Corporation Optimizing energy consumption and application performance in a multi-core multi-threaded processor system
JP5708003B2 (ja) * 2011-02-14 2015-04-30 富士通株式会社 演算処理装置、計算ノード、並列計算機システム、演算処理方法および演算処理プログラム
US8990830B2 (en) * 2011-07-19 2015-03-24 International Business Machines Corporation Thread management in parallel processes
US10430190B2 (en) * 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
US9563585B2 (en) * 2014-02-19 2017-02-07 Futurewei Technologies, Inc. System and method for isolating I/O execution via compiler and OS support
US9996402B2 (en) * 2014-04-07 2018-06-12 Oracle International Corporation System and method for implementing scalable adaptive reader-writer locks
JP6245700B2 (ja) * 2014-04-11 2017-12-13 国立大学法人 東京大学 計算機システム、データの検査方法及び計算機
US9977730B2 (en) * 2015-05-08 2018-05-22 Dell Products, Lp System and method for optimizing system memory and input/output operations memory
US9658794B2 (en) * 2015-05-08 2017-05-23 Sonicwall Inc. Two stage memory allocation using a cache
US9870275B2 (en) * 2015-05-12 2018-01-16 International Business Machines Corporation Processor thread management
US10176014B2 (en) 2015-07-27 2019-01-08 Futurewei Technologies, Inc. System and method for multithreaded processing
CN106933669B (zh) * 2015-12-29 2021-01-08 伊姆西Ip控股有限责任公司 用于数据处理的装置和方法
US10108453B2 (en) * 2016-06-30 2018-10-23 International Business Machines Corporation Averting lock contention associated with core-based hardware threading in a split core environment
US9952900B1 (en) * 2016-12-01 2018-04-24 International Business Machines Corporation Run time task scheduling based on metrics calculated by micro code engine in a socket
JP6978670B2 (ja) * 2017-12-07 2021-12-08 富士通株式会社 演算処理装置および演算処理装置の制御方法
CN108681486B (zh) 2018-05-17 2020-08-28 重庆市通信建设有限公司 最优线程数量求取方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220222121A1 (en) * 2021-01-12 2022-07-14 Fujitsu Limited Information processing device, computer-readable recording medium storing program, and information processing method

Also Published As

Publication number Publication date
US11321123B2 (en) 2022-05-03
GB202207760D0 (en) 2022-07-13
GB2605068A (en) 2022-09-21
WO2021099891A1 (en) 2021-05-27
GB2605068B (en) 2023-09-27
CN114730276A (zh) 2022-07-08
US20210157635A1 (en) 2021-05-27
JP2023503024A (ja) 2023-01-26

Similar Documents

Publication Publication Date Title
DE112020004661T5 (de) Ermitteln einer optimalen Anzahl von Threads pro Kern in einem Mehrkern-Prozessorkomplex
DE112011101633B4 (de) Virtualisierung und dynamische Ressourcenzuweisung berücksichtigendes Neuordnen von Speicherebenen
DE102016221811B4 (de) Zuordnung von Ressourcen mit mehrschichtigem Speicher
DE102012219907B4 (de) Erhöhen der Speicherkapazität in Systemen mit eingeschränkter elektrischer Leistungsaufnahme
DE112017004808T5 (de) Dynamische zuteilung virtueller cpu-kerne
DE112012003701T5 (de) Dynamisches Zuordnen eines Leistungsbudgets über mehrere Domänen eines Prozessors
DE102005029852A1 (de) Multiprozessorsystem mit mehreren Speicherpositionen zum jeweiligen Speichern von TLB-Abschussdaten für mehrere Prozessorknoten
DE112018005268T5 (de) Priorisieren von anwendungen für eine diagonale skalierung in einer verteilten datenverarbeitungsumgebung
DE112021000390T5 (de) Anpassen der leistung eines datenverarbeitungssystems
DE112021003294T5 (de) Systemverwaltung auf grundlage von leistung und leistungsfähigkeit
DE102019102883A1 (de) Technologien zum Bewegen von Arbeitslasten zwischen Hardwarewarteschlangenmanagern
DE102020112531A1 (de) Operationelle metrische Berechnung für Arbeitsbelastungstyp
DE112021003276T5 (de) Ressourcenverwaltung einer softwareanwendung mit mehreren softwarekomponenten
DE112015004564T5 (de) Ereignisgesteuerte Reoptimierung einer logisch partitionierten Umgebung zur Energieverwaltung
DE102009056282A1 (de) Technik zum Steuern von Verarbeitungsressourcen
DE102021127324A1 (de) Planung von aufträgen auf grafischen verarbeitungseinheiten
DE102018119881A1 (de) Verwaltung einer DRAM-Bankaktivierung
DE112021005586T5 (de) Automatisches skalieren einer abfrage-steuerungsroutine für arbeitslasten im bereich big data auf unternehmensebene
DE112019000303B4 (de) Datenspeichersystem, das die datenverlagerung auf grundlage von zeitlicher nähe von zugriffen durchführt
DE112013000770B4 (de) Höhere Auslagerungseffizienz
DE112018004415B4 (de) Optimierung von cloud-ressourcen bei operationen in mehrstufigem speicher auf richtliniengrundlage
DE102008016180A1 (de) Darlegen von Systemtopologie für die Ausführungsumgebung
DE112019005043T5 (de) Streamzuweisung unter verwendung von stream-guthaben
DE102021122508A1 (de) Ausgleichen von grossrechner- und verteilten arbeitslasten auf der grundlage von leistung und kosten
DE112018005973T5 (de) Automatisches diagonales skalieren von arbeitslasten in einer verteilten datenverarbeitungsumgebung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R084 Declaration of willingness to licence