DE112012004629T5 - Dynamischer Speicheraffinitätsanpasser auf Prozess/Objektebene - Google Patents

Dynamischer Speicheraffinitätsanpasser auf Prozess/Objektebene Download PDF

Info

Publication number
DE112012004629T5
DE112012004629T5 DE112012004629.3T DE112012004629T DE112012004629T5 DE 112012004629 T5 DE112012004629 T5 DE 112012004629T5 DE 112012004629 T DE112012004629 T DE 112012004629T DE 112012004629 T5 DE112012004629 T5 DE 112012004629T5
Authority
DE
Germany
Prior art keywords
memory
segment
references
locations
cache
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
DE112012004629.3T
Other languages
English (en)
Inventor
c/o IBM Corp. Kurtz Jay P.
c/o IBM Corp. Nelson Glen W.
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 DE112012004629T5 publication Critical patent/DE112012004629T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

Eine Vorrichtung, ein Verfahren und ein Programmprodukt zum Optimieren eines Mehrprozessor-Datenverarbeitungssystems durch eine Stichprobenentnahme von Speicherreferenzlatenzen sowie ein Anpassen von Komponenten des Systems als Reaktion darauf. Während des Ausführens von Prozessen des Datenverarbeitungssystems wird eine Speicherreferenz-Stichprobenentnahme von Speicherorten eines gemeinsam genutzten Speichers des Datenverarbeitungssystems ausgeführt, die bei den ausgeführten Prozessen referenziert werden. Jeder aus der Stichprobenentnahme gesammelten Stichproben-Speicherreferenz wird eine Latenz und ein physischer Speicherort in dem gemeinsam genutzten Speicher zugeordnet. Jede Stichproben-Speicherreferenz wird analysiert, um Segmente von Speicherorten in dem gemeinsam genutzten Speicher zu erkennen, die einer sub-optimalen Latenz entsprechen, und aufgrund der analysierten Stichproben-Speicherreferenzen werden die physische Position des erkannten Segments oder der erkannten Segmente, der Prozessor, auf dem ein oder mehrere Prozesse die erkannten Segmente referenzieren, und/oder ein dem oder den erkannten Segmenten zugeordneter Status dynamisch angepasst, um dadurch einen Speicherzugriff für das Mehrprozessor-Datenverarbeitungssystem zu optimieren.

Description

  • Technisches Gebiet
  • Die vorliegende Erfindung betrifft Datenverarbeitungssysteme und insbesondere ein Beurteilen und Verringern von Latenz in einem Mehrprozessor-Datenverarbeitungssystem.
  • Hintergrund der Erfindung
  • Computertechnologie entwickelt sich weiterhin mit bemerkenswerter Geschwindigkeit, wobei zahlreiche Verbesserungen an der Leistung sowohl von Verarbeitungseinheiten – den „Gehirnen” eines Datenverarbeitungssystems – als auch an dem Speicher vorgenommen werden, in dem die von einem Datenverarbeitungssystem verarbeiteten Daten gespeichert werden.
  • Im Allgemeinen handelt es sich bei einer Verarbeitungseinheit („CPU”) um einen Mikroprozessor oder eine andere integrierte Schaltung, die mithilfe des Ausführens einer Sequenz von Anweisungen arbeitet, die ein Computerprogramm bilden. Die Anweisungen werden üblicherweise in einem Speichersystem mit einer Vielzahl von Speicherorten gespeichert, die durch eindeutige Speicheradressen gekennzeichnet sind. Die Speicheradressen definieren gemeinsam einen „Speicheradressraum”, der einen adressierbaren Bereich von Speicherbereichen darstellt, auf die ein Mikroprozessor zugreifen kann.
  • Parallel verarbeitende Datenverarbeitungssysteme enthalten häufig eine Vielzahl von Knoten, wobei jeder Knoten mindestens eine CPU enthält und die Vielzahl von Knoten miteinander verbunden sind, sodass die Datenverarbeitungsknoten untereinander Daten senden und empfangen und außerdem auf Speicher zugreifen können, der mit verschiedenen Knoten in dem System verbunden ist. Bei einem Datenverarbeitungssystem mit einer Vielzahl von CPUs und/oder einer Vielzahl von Knoten kann eine nicht einheitliche Speicherzugriffskonfiguration (non-uniform memory access, „NUMA”) verwendet werden, um den Hauptspeicher wirkungsvoll über mehrere Datenverarbeitungsknoten hinweg zu verteilen. Bei einer üblichen NUMA-Konfiguration sind mindestens eine CPU, ein oder mehrere CPU-Cachespeicher und ein Teil des Hauptspeichers (z. B. eine Menge von Speichereinheiten mit dynamischem Speicher mit wahlfreiem Zugriff (dynamic random access memory devices, DRAM-Speichereinheiten)) mit einem Speicherbus verbunden, um einen Knoten zu bilden. Üblicherweise ist eine Vielzahl von Knoten mittels einer Hochgeschwindigkeitsverbindung verbunden, um eine NUMA-Konfiguration zu bilden. Der Teil des Hauptspeichers, der sich in demselben Knoten wie eine CPU befindet, wird üblicherweise als der „lokale Speicher” für die CPU betrachtet, während Teile des Hauptspeichers, die sich in anderen Knoten befinden, üblicherweise im Verhältnis zur CPU als „entfernt angeordnete Speicher” bezeichnet werden. Bei einem Datenverarbeitungssystem mit einer NUMA-Konfiguration (einem „NUMA-System”) wird ein Datenzugriff von einer CPU, der durch den Inhalt eines lokalen CPU-Cachespeichers oder eines lokalen Speichers befriedigt wird, als ein Zugriff „auf einen lokalen Knoten” bezeichnet. Dementsprechend handelt es sich bei einem Zugriff auf einen „entfernt angeordneten” Knoten üblicherweise um einen Zugriff, der durch ein Zugreifen auf in einem entfernt angeordneten Knoten gespeicherte Daten befriedigt wird. Datenzugriffe auf entfernt angeordnete Knoten stehen im Vergleich zu Zugriffen auf lokale Knoten mit einer sehr hohen Latenz in Zusammenhang.
  • Üblicherweise greift, wenn ein Prozess in einem NUMA-System ausgeführt wird, die den Prozess ausführende CPU auf einen oder mehrere Speicherorte zu, um von dem Prozess benötigte Daten abzurufen. In NUMA-Systemen wird der Prozess üblicherweise schneller ausgeführt, wenn er dafür konfiguriert ist, die Operationen in einem Knoten auszuführen, bei dem sich die für den Betrieb erforderlichen Daten in einem lokalen Speicher befinden. In ähnlicher Weise kann ein in einem NUMA-System ausgeführter Prozess aufgrund der mit einem Zugreifen auf den entfernt angeordneten Knoten verbundenen erhöhten Latenz langsamer ausgeführt werden, wenn der Prozess dafür konfiguriert ist, die Aufgabe in einem lokalen Knoten auszuführen, wobei sich die für den Betrieb erforderlichen Daten in einem entfernt angeordneten Speicher befinden. Darüber hinaus kann bei in hohem Maß verteilten NUMA-Systemen (d. h., in NUMA-Systemen mit einer großen Anzahl miteinander verbundener Knoten) eine Latenz, die damit in Zusammenhang steht, dass ein Knoten aus einer Entfernung auf einen ersten Speicher in einem ersten entfernt angeordneten Knoten zugreift, im Vergleich zu der Latenz, die mit einem Fernzugriff auf einen zweiten Speicher in einem zweiten entfernt angeordneten Knoten in Zusammenhang steht, aufgrund der Länge des Übertragungswegs zwischen dem Knoten und den entsprechenden entfernt angeordneten Knoten, der auf jedem entsprechenden entfernt angeordneten Knoten konfigurierten Systemressourcen, der zur Zeit eines Fernzugriffs auf jedem entfernt angeordneten Knoten ausgeführten Prozesse, anderer Prozesse, die zur Zeit des Fernzugriffs auch einen Fernzugriff auf jeden Knoten versuchen und/oder anderer derartiger Gründe unterschiedlich sein.
  • Als solche weisen in verteilten Systemen, wozu zum Beispiel NUMA-Systeme zählen, nicht alle entfernt angeordneten Speicherorte eine gleiche Latenz für alle Prozessoren auf. Tatsächlich entstehen durch physische und virtuelle Positionen jedes Prozessors in einem bestimmten Knoten Unterschiede im Hinblick auf einen effizienten Zugriff auf verschiedene Bereiche im Speicher, eingeschlossen ein Übertragen von Daten zwischen Cachespeichern, die einem bestimmten Prozessor oder Knoten zugeordnet sind. Wenn zwei Prozessoren, die versuchen, wesentliche Operationen an Speichersegmenten zu bewältigen, relativ „entfernt angeordnet” sind, können die Operationen, durch die sie diese Segmente gemeinsam nutzen und auf sie zugreifen, deutlich weniger effizient sein.
  • Kurzdarstellung der Erfindung
  • Technisches Problem
  • Folglich existiert weiterhin ein Bedarf an einer Optimierung der Leistung eines Computersystems mit gemeinsam genutztem Speicher, die eine Speicherzugriffslatenz bei vorhandenen Systemen verringert.
  • Lösung des Problems
  • Durch Ausführungsformen der Erfindung werden eine Vorrichtung, ein Verfahren und ein Programmprodukt zum dynamischen Optimieren von Speicherzugriffen in einem Mehrprozessor-Datenverarbeitungssystem bereitgestellt. Bei einigen der Erfindung entsprechenden Ausführungsformen wird während des Ausführens eines oder mehrerer Prozesse durch einen oder mehrere Prozessoren des Datenverarbeitungssystems eine Speicherreferenz-Stichprobenentnahme (memory reference sampling) von Speicherorten eines gemeinsam genutzten Speichers des Datenverarbeitungssystems ausgeführt, wobei eine Vielzahl von Speicherreferenzen gesammelt wird und jeder während der Stichprobenentnahme gesammelten Speicherreferenz eine Latenz und eine Position eines entsprechenden Speichers in dem gemeinsam genutzten Speicher zugeordnet wird. Die Stichproben-Speicherreferenzen werden analysiert, um ein oder mehrere Segmente von einem oder mehreren Speicherorten in dem gemeinsam genutzten Speicher zu erkennen, denen eine sub-optimale Latenz zugeordnet ist. Auf der Grundlage der analysierten Speicherreferenzen werden eine physische Position des oder der erkannten Segmente, ein physischer Prozessor, auf dem mindestens einer der Prozesse ausgeführt wird, und/oder ein dem oder den erkannten Segmenten zugeordneter Status dynamisch angepasst. Bei einigen Ausführungsformen beinhaltet ein Analysieren der Stichproben-Speicherreferenzen (sampled memory references) ein Bewerten jeder Speicherreferenz auf der Grundlage der zum Abrufen der entsprechenden Segmente von Speicherorten benötigten Zeit.
  • Diese und andere Vorteile werden in Anbetracht der folgenden Figuren und der ausführlichen Beschreibung ersichtlich.
  • Die begleitenden Zeichnungen, die in diese Beschreibung einbezogen sind und einen Teil von ihr darstellen, veranschaulichen Ausführungsformen der Erfindung und dienen in Verbindung mit einer vorangehenden allgemeinen Beschreibung der Erfindung und der folgenden ausführlichen Beschreibung der Ausführungsformen zur Erläuterung der Grundgedanken der Erfindung.
  • Kurzbeschreibung der Zeichnungen
  • 1 ist ein Blockschaltbild eines Datenverarbeitungssystems mit gemeinsam genutztem Speicher entsprechend Ausführungsformen der Erfindung;
  • 2 ist ein Blockschaltbild eines Datenverarbeitungssystems mit gemeinsam genutztem Speicher entsprechend alternativen Ausführungsformen der Erfindung.
  • 3 ist ein Ablaufplan, der eine Ausführungsform eines Logikflusses veranschaulicht, der in einem Optimierungsaffinitätsanpasser entsprechend einer Ausführungsform der Erfindung auftreten kann.
  • 4 ist ein Ablaufplan, der eine Ausführungsformen der Erfindung entsprechende Sequenz von Operationen veranschaulicht, die von dem Datenverarbeitungssystem aus 1 ausgeführt werden kann, um auf eine Speicherreferenz zuzugreifen.
  • Es sollte beachtet werden, dass die angefügten Zeichnungen nicht zwangsläufig maßstabsgerecht, und dass sie eine etwas vereinfachte Darstellung verschiedener bevorzugter Merkmale sind, die die grundlegenden Gesichtspunkte der Erfindung veranschaulichen. Die besonderen Gestaltungsmerkmale der hier offenbarten Sequenz von Operationen, darunter beispielsweise spezifische Abmessungen, Ausrichtungen, Positionen und Formen verschiedener veranschaulichter Komponenten, werden zum Teil durch die spezielle vorgesehene Anwendung und Einsatzumgebung bestimmt. Bestimmte Merkmale der veranschaulichten Ausführungsformen können im Verhältnis zu anderen vergrößert oder verzerrt sein, um eine Visualisierung und ein klares Verständnis zu erleichtern.
  • Beschreibung von Ausführungsformen
  • Bei Ausführungsformen der Erfindung entsprechenden Datenverarbeitungssystemen unterstützt die Datenverarbeitungsarchitektur eine Stichprobenentnahme mit geringem Leistungsaufwand von referenzierten Speicherorten. Bei Ausführungsformen der Erfindung wird die Stichprobenentnahme verwendet, um pro Prozess und pro Seite eine Affinitätsbewertung zu ermitteln, um Speicherseiten dynamisch an einen effizienteren Speicherort in einem Knoten oder Prozesse zu einer effizienteren CPU in einem Knoten zu verschieben, um eine Affinitätslatenz zu verringern, wobei der Knoten, in dem die Speicherseite gespeichert ist oder der Prozess ausgeführt wird, als der „Heimat-”Knoten der Speicherseite oder des Prozesses betrachtet werden kann.
  • Bei einigen Ausführungsformen wird eine Speicherreferenz-Stichprobenentnahme an einem Speicherort ausgeführt. Bei einigen Ausführungsformen kann die Speicher-Stichprobenentnahme partitionsweit und/oder auf eine gewählte Menge ausgewählter Prozesse beschränkt sein. Des Weiteren können einige Stichprobenentnahme-Architekturen auch ermöglichen, dass die Stichprobenentnahme auf eine Menge von Objekten beschränkt wird. Zu den Stichprobendaten kann der „wirkliche” CEC-Speicherort (CEC = central electrical complex) der referenzierten Seite zählen. Bei der Erfindung entsprechenden Ausführungsformen können die gesammelten Stichprobendaten analysiert werden, um eine jeder Stichproben-Speicherreferenz zugeordnete Bewertung zu ermitteln. Darüber hinaus kann die zugeordnete Bewertung für jede Stichproben-Speicherreferenz zumindest zum Teil auf einer berechneten und/oder geschätzten Latenz beruhen, die der Stichproben-Speicherreferenz in Bezug auf die CPU und/oder den Knoten des referenzierenden Prozesses entspricht.
  • Bei der Erfindung entsprechenden Ausführungsformen können die Stichprobendaten (d. h. die Speicherreferenzdaten) statistisch analysiert werden, um eine Speicherreferenz zu ermitteln, der eine Bewertung zugeordnet ist, die eine hohe Latenz in Bezug auf alle Stichprobenobjekte, eine Teilmenge von Objekten, alle Stichprobenprozesse und/oder eine Teilmenge von Prozessen anzeigt. Des Weiteren kann bei einigen Ausführungsformen ein Analysieren der Stichprobendaten ein Erkennen eines oder mehrerer Prozesse beinhalten, die ähnliche Objektreferenzen aufweisen.
  • Darüber hinaus können bei einigen Ausführungsformen, zumindest zum Teil auf der Grundlage der Stichprobendaten, und/oder zugeordneter Bewertungen ein oder mehrere Prozesse erkannt werden, die bei Systemen mit Speicherpools von einem Verwenden eines gemeinsamen Speicherpools profitieren würden (z. B. effizienter, schneller usw. ausgeführt werden würden). Bei diesen Ausführungsformen kann das System als Reaktion auf ein Ermitteln, dass ein oder mehrere Prozesse von einem Verwenden eines gemeinsamen Speicherpools profitieren würden, die Speicherreferenzen des oder der Prozesse dynamisch ändern, damit sie den festgelegten Speicherpool referenzieren.
  • Bei einigen Ausführungsformen können, zumindest zum Teil auf der Grundlage der Stichprobendaten und/oder zugeordneter Bewertungen, ein oder mehrere Prozesse erkannt werden, die von einem Verwenden einer oder mehrerer erkannter CPUs und/oder eines oder mehrerer erkannter Knoten profitieren würden. Als Reaktion auf ein Ermitteln, dass der oder die Prozesse von einem Verwenden des oder der erkannten Knoten zur Ausführung profitieren würden, können Ausführungsformen der Erfindung den oder die Prozessoren, auf denen der oder die Prozesse ausgeführt werden, dynamisch ändern. Bei diesen Ausführungsformen kann ein Ermitteln, ob ein oder mehrere Prozesse von einem Verwenden eines oder mehrerer Knoten zur Ausführung profitieren würden, ein Erkennen, zumindest zum Teil auf der Grundlage der Stichprobendaten und/oder zugeordneter Bewertungen, des oder der Knoten aus einer Vielzahl von Knoten eines Systems beinhalten, auf dem die Prozesse ausgeführt werden sollen.
  • Darüber hinaus können bei einigen Ausführungsformen, zumindest zum Teil auf der Grundlage der Stichprobendaten, und/oder zugeordneter Bewertungen, eine oder mehrere Objektseiten erkannt werden, denen Bewertungen zugeordnet sind, die eine hohe Latenz anzeigen. Bei diesen Ausführungsformen können Ausführungsformen der Erfindung als Reaktion auf ein Erkennen von Objektseiten, denen Bewertungen zugeordnet sind, die eine hohe Latenz anzeigen, die Objektseiten dynamisch an günstigere (d. h. niedrigere Latenz) Speicherorte verschieben. Bei diesen Ausführungsformen können vor dem dynamischen Verschieben der Objektseite(n) zumindest zum Teil auf der Grundlage einer dem Speicherort zugeordneten Bewertung ein oder mehrere günstige Speicherorte ermittelt werden.
  • Des Weiteren kann bei einigen Ausführungsformen, zumindest zum Teil auf der Grundlage der Stichprobendaten und/oder zugeordneter Bewertungen, eine „hoch referenzierte” Objektseite (d. h. eine von einer Vielzahl von Prozessen referenzierte Objektseite) erkannt werden. Bei diesen Ausführungsformen kann, zumindest zum Teil auf der Grundlage der Stichprobendaten und/oder zugeordneter Bewertungen, ein günstigerer Speicherort für die hoch referenzierte Objektseite ermittelt werden, und die hoch referenzierte Objektseite kann dynamisch an den günstigeren Speicherort verschoben werden. Darüber hinaus kann bei einigen Ausführungsformen als Reaktion auf ein Verschieben der hoch referenzierten Objektseite an einen günstigeren Speicherort ein der hoch referenzierten Objektseite zugeordnetes Attribut so festgelegt werden, dass die hoch referenzierte Objektseite nicht von dem günstigeren Speicherort verschoben werden darf, oder so, dass ein Verschieben der hoch referenzierten Objektseite von dem günstigeren Speicherort möglicherweise beschränkt wird.
  • Ausführungsformen der Erfindung sammeln profilgesteuerte Speicherreferenzdaten (d. h. Stichprobendaten) für einen oder mehrere Prozesse. Bei einigen Ausführungsformen enthalten die Speicherreferenzdaten eine einem jeweiligen Prozess entsprechende Kennung, eine virtuelle Adresse jedes von einem entsprechenden Prozess referenzierten Speicherobjekts und/oder eine Speicher- und/oder Knotenkennung, die einem physischen Speicherort jedes referenzierten Speicherobjekts entspricht. Ein Ausführungsformen der Erfindung entsprechendes Datenverarbeitungssystem kann jedes von einem entsprechenden Prozess referenzierte Speicherobjekt analysieren und eine Bewertung ermitteln, die dem referenzierten Objekt in Bezug auf den entsprechenden Prozess zugeordnet wird. Die ermittelte Bewertung kann zumindest zum Teil auf einer ermittelten und/oder geschätzten Latenz des referenzierten Objekts in Bezug auf den entsprechenden Prozess beruhen. Das Datenverarbeitungssystem kann die Bewertungs- und/oder Speicherreferenzdaten analysieren, um zu ermitteln, ob der entsprechende Prozess besser (d. h. effizienter, schneller usw.) auf einer anderen CPU und/oder einem anderen Knoten ausgeführt werden würde als auf der CPU/dem Knoten, auf dem der entsprechende Prozess aktuell ausgeführt wird. Als Reaktion auf ein Ermitteln, dass der entsprechende Prozess besser auf einer anderen CPU/einem anderen Knoten ausgeführt werden würde, kann das Datenverarbeitungssystem den entsprechenden Prozess dynamisch zu der anderen CPU/dem anderen Knoten zur Ausführung durch diese(n) verschieben.
  • Ausführungsformen der Erfindung sammeln profilgesteuerte Speicherreferenzdaten für einen oder mehrere Prozesse. Ein Ausführungsformen der Erfindung entsprechendes Datenverarbeitungssystem kann eine oder mehrere Speicherobjektreferenzen von einem oder mehreren Prozessen analysieren und eine Bewertung ermitteln, die dem oder den referenzierten Objekten in Bezug auf die Prozesse zugeordnet ist. Das Datenverarbeitungssystem kann die Bewertungen und/oder referenzierten Objekte analysieren, um ein oder mehrere Speicherobjekte zu ermitteln, die üblicherweise von einer Vielzahl von Prozessen referenziert werden. Das Datenverarbeitungssystem kann Berichtsdaten erstellen, die anzeigen, welche Prozesse die üblicherweise referenzierten Objekte referenzieren. Die erstellten Berichtsdaten können von dem Datenverarbeitungssystem verwendet werden, um Prozesse, die die üblicherweise referenzierten Objekte gemeinsam nutzen, zeitlich so zu planen, dass sie gleichzeitig und/oder nacheinander ausgeführt werden. Bei diesen Ausführungsformen kann eine derartige Zeitplanung eine Latenz eines Prozesses oder mehrerer Prozesse und der gemeinsam referenzierten Objekte verringern, die Wahrscheinlichkeit sekundärer Paging-Aktionen (E/A) und/oder deren Latenz verringern, kann die Effizienz der Ausführung eines oder mehrerer der Prozesse verbessern und/oder zu einer effizienteren Ausführung führen. Darüber hinaus können bei einigen Ausführungsformen die Berichtsdaten von dem Datenverarbeitungssystem analysiert werden, um ein oder mehrere Speicherobjekte der üblicherweise referenzierten Objekte zu erkennen, die an einen anderen Speicherort verschoben werden können, um so eine Latenz zu verringern, die dem oder den gemeinsam referenzierten Speicherobjekten in Bezug auf den oder die Prozesse zugeordnet ist. Darüber hinaus können bei einigen Ausführungsformen die Berichtsdaten von dem Datenverarbeitungssystem analysiert werden, um einem oder mehreren Prozessen zugeordnete Daten anzupassen, sodass die Prozesse während der Ausführung bevorzugt ein oder mehrere Speicherobjekte referenzieren.
  • Durch Ausführungsformen der Erfindung werden eine Vorrichtung, ein Verfahren und ein Programmprodukt zum dynamischen Optimieren von Speicherzugriffen in einem Mehrprozessor-Datenverarbeitungssystem durch Ausführen einer Speicherreferenz-Stichprobenentnahme von Speicherorten eines gemeinsam genutzten Speichers bereitgestellt, die von einer Vielzahl von Prozessen referenziert werden, die von einer Vielzahl physischer Prozesse ausgeführt werden. Jeder aus einer Vielzahl während einer Speicherreferenz-Stichprobenentnahme gesammelter Stichproben-Speicherreferenzen wird eine Latenz und eine physische Position in dem gemeinsam genutzten Speicher zugeordnet. Die während der Speicherreferenz-Stichprobenentnahme gesammelten Stichproben-Speicherreferenzen werden dann analysiert, um mindestens ein Segment von Speicherorten in dem gemeinsam genutzten Speicher mit einer sub-optimalen Latenz zu erkennen. Auf der Grundlage der Analyse passt das System eine physische Position des erkannten Segments in dem gemeinsam genutzten Speicher, einen physischen Prozessor, auf dem mindestens ein Prozess ausgeführt wird, der Speicherorte in dem erkannten Segment referenziert, und/oder einen dem erkannten Segment zugeordneten Status an.
  • Bei einigen Ausführungsformen der Erfindung werden die Latenzen auf der Grundlage der zum Abrufen der entsprechenden Segmente von Speicherorten benötigten Zeit bewertet. Die Zeit kann gemessen werden, oder sie kann geschätzt werden. Das erkannte Segment oder die erkannten Segmente können auf der Grundlage von Latenzbewertungen erkannt werden.
  • Bei einigen Ausführungsformen der Erfindung ist das erkannte Segment eine einer Cachespeicherseite zugeordnete Cachespeicherzeile. Das Verfahren kann ein Anpassen einer Position von mindestens einem Teil der Cachespeicherseite beinhalten, sodass eine zukünftige Latenz, die mit einem zukünftigen Abrufen des Teils der Cachespeicherseite in Zusammenhang steht, verringert wird. Dies kann ein Übertragen des Teils der Cachespeicherseite aus einem ersten Cachespeicher in einen zweiten Cachespeicher oder von einem ersten Knoten zu einem zweiten Knoten beinhalten. Die Cachespeicherseite kann außerdem mindestens zwei Cachespeicherzeilen enthalten.
  • Bei einer weiteren Ausführungsform der Erfindung wird eine Cachespeicherseite mithilfe des Speichersegments erkannt, wie auch ein Ausführungsort eines dem Segment zugeordneten Objekts. Die Position des Objekts wird angepasst, sodass eine zukünftige Latenz verringert wird, die mit einem zukünftigen Abrufen mindestens eines Teils der Cachespeicherseite durch das Objekt in Zusammenhang steht. Bei einer bestimmten Ausführungsform ist das Objekt mindestens ein Teil eines von dem Datenverarbeitungssystem ausgeführten Prozesses.
  • Einige Ausführungsformen der Erfindung beinhalten ein Übertragen von mindestens einem Teil eines Prozesses, der Speicherorte in dem erkannten Segment referenziert, von einer ersten Verarbeitungseinheit zu einer zweiten Verarbeitungseinheit.
  • Andere Ausführungsformen beinhalten ein Übertragen von mindestens einem Teil eines Prozesses, der Speicherorte in dem erkannten Segment referenziert, von einem ersten Knoten zu einem zweiten Knoten.
  • Noch andere beinhalten ein Erkennen sowohl einer ersten Cachespeicherseite, der das erkannte Segment zugeordnet ist, als auch einer zweiten Cachespeicherseite, der eine Teilmenge der Speicheranforderungen für die Vielzahl von Segmenten von Speicherorten zugeordnet ist, und anschließend ein Zuweisen eines „verbesserten Status” für die zweite Cachespeicherseite, der anzeigt, dass ein Übertragen der zweiten Cachespeicherseite mindestens einen Schritt mehr erfordert als ein Übertragen der ersten Cachespeicherseite.
  • Hardware- und Softwareumgebung
  • Es wird jetzt auf die Figuren Bezug genommen, in denen die gleichen Zahlen in den verschiedenen Ansichten die gleichen Teile bezeichnen. 1 ist ein Blockschaltbild eines Datenverarbeitungssystems 10 mit gemeinsam genutztem Speicher entsprechend Ausführungsformen der Erfindung. Das Datenverarbeitungssystem 10 mit gemeinsam genutztem Speicher kann bei bestimmten Ausführungsformen ein Computer, ein Computersystem, eine Datenverarbeitungseinheit, ein Server, ein Platten-Array oder eine programmierbare Einheit wie beispielsweise ein Mehrbenutzercomputer, ein Einzelbenutzercomputer, eine Handheld-Einheit, eine Netzwerkeinheit (eingeschlossen ein Computer in einer Cluster-Konfiguration), ein Mobiltelefon, eine Videospielkonsole oder ein anderes Spielsystem usw. sein. Das Datenverarbeitungssystem 10 mit gemeinsam genutztem Speicher kann als ein „Datenverarbeitungssystem” bezeichnet werden, wird aber nachfolgend der Kürze halber als ein „Computer” bezeichnet. Bei einer geeigneten Realisierung des Computers 10 kann es sich um einen Mehrbenutzercomputer handeln, beispielsweise einen Computer wie er bei International Business Machines Corporation („IBM”) aus Armonk, NY, erhältlich ist.
  • Der Computer 10 enthält im Allgemeinen eine oder mehrere Verarbeitungseinheiten 12, die mit einem Speicher-Teilsystem verbunden sind, das außerdem ein Cachespeicher-Teilsystem 14, einen Speicher 15 und einen Hauptspeicher 16 enthalten kann. Das Cachespeicher-Teilsystem 14 kann aus dynamischem Speicher mit wahlfreiem Zugriff (dynamic random access memory, „DRAM)”, statischem Speicher mit wahlfreiem Zugriff (static random access memory, „SRAM”), Flash-Speicher und/oder einem anderen digitalen oder Solid-State-Speichermedium bestehen, das üblicherweise eine oder mehrere Datenebenen aufweist, Anweisungs- und/oder kombinierte Cachespeicher, wobei bestimmte Cachespeicher die Verarbeitungseinheiten 12 auf eine nach dem Stand der Technik gut bekannte Weise in Form einer gemeinsamen Nutzung bedienen. Bei bestimmten Ausführungsformen enthält das Cachespeicher-Teilsystem 14 den gemeinsam genutzten Speicher 15 (z. B. einen Level-drei-Cachespeicher [„L3-Cachespeicher”] und/oder einen Level-vier-Cachespeicher [„L4-Cachespeicher”]) und/oder ein anderes digitales Speichermedium, das von den Verarbeitungseinheiten 12 des Knotens gemeinsam genutzt werden kann, wie in der Technik gut bekannt ist. Der Hauptspeicher 16 kann ein Festplattenlaufwerk und/oder ein anderes digitales Speichermedium aufweisen. Darüber hinaus kann, wie nachfolgend erörtert wird, jede Verarbeitungseinheit 12 mindestens einen Verarbeitungskern und mindestens eine Ebene dedizierten Cachespeicher aufweisen.
  • Der Hauptspeicher 16 kann mit einer Anzahl von externen Einheiten (z. B. E/A-Einheiten) über einen Systembus 18 und eine Vielzahl von Schnittstelleneinheiten verbunden sein, z. B. eine Eingabe/Ausgabe-Busanschluss-Schnittstelle 20, einen Arbeitsplatz-Controller 22 und/oder einen Speicher-Controller 24, die jeweils einen externen Zugriff auf ein oder mehrere externe Netzwerke 26, einen oder mehrere Arbeitsplätze 28, und/oder eine oder mehrere Speichereinheiten bieten wie beispielsweise eine Direktzugriffs-Speichereinheit (direct access storage device, „DASD”) 30. Der Systembus 18 kann außerdem mit einem Benutzereingang (nicht gezeigt) verbunden sein, der von einem Benutzer des Computers 10 zum Eingeben von Daten betätigt werden kann (z. B. kann der Benutzereingang eine Maus, eine Tastatur usw. aufweisen), und mit einer Anzeige (nicht gezeigt), die dazu dient, Daten aus dem Computer 10 anzuzeigen (z. B. kann die Anzeige ein CRT-Monitor, eine LCD-Anzeigekonsole usw. sein). Der Computer 10 kann auch als ein Element einer verteilten Datenverarbeitungsumgebung konfiguriert sein und mit anderen Elementen dieser verteilten Datenverarbeitungsumgebung über das Netzwerk 26 Daten austauschen.
  • Der Computer 10 enthält mindestens einen Speicheranforderer (memory requester) zum Anfordern einer Cachespeicherzeile, der von einem gemeinsamen Cachespeicher (z. B. dem Cachespeicher-Teilsystem 14 und/oder dem Cachespeicher mindestens einer Verarbeitungseinheit 12) bedient wird, wie nach dem Stand der Technik gut bekannt ist. Zum Beispiel kann der Computer 10 aus 1 eine oder mehrere Verarbeitungseinheiten 12 enthalten, die von einem gemeinsamen Cachespeicher bedient werden, während jede Verarbeitungseinheit 12 einen oder mehrere Speicheranforderer enthalten kann, die von einem gemeinsamen Cachespeicher (z. B. dem Cachespeicher-Teilsystem 14, dem Hauptspeicher 16 und/oder einem Speicher in der Verarbeitungseinheit 12) bedient werden. Bei bestimmten Ausführungsformen können zu den Anforderern (requesters) in dem Computer 10 mindestens eine Verarbeitungseinheit 12, eine Komponente einer Verarbeitungseinheit 12 (z. B. ein Level-eins-Cachespeicher, ein Level-zwei-Cachespeicher, ein E/A-Controller oder eine andere Komponente einer Verarbeitungseinheit 12 wie nachfolgend beschrieben) und/oder ein Kern einer Verarbeitungseinheit 12 (wie auch ein Hardware-Thread eines Kerns) zählen.
  • Der Computer 10 ist lediglich repräsentativ für eine geeignete Umgebung zur Verwendung mit Ausführungsformen der Erfindung, und Ausführungsformen der Erfindung können in verschiedenen anderen alternativen Umgebungen verwendet werden. 2 ist zum Beispiel ein Blockschaltbild eines alternativen Datenverarbeitungssystems 40 mit gemeinsam genutztem Speicher entsprechend Ausführungsformen der Erfindung. Das alternative Datenverarbeitungssystem 40 mit gemeinsam genutztem Speicher, hier nachfolgend als „System” 40 bezeichnet, kann eine Vielzahl von Verarbeitungsknoten 42 enthalten, die jeweils mindestens eine Verarbeitungseinheit 12, einen Speicher 44 und eine Netzwerkschnittstelle 46 aufweisen. Die Netzwerkschnittstelle 46 kann wiederum mit mindestens einem Netzwerk 48, 50 Daten austauschen, und die Netzwerkschnittstelle 46 kann insbesondere dafür konfiguriert sein, mit mindestens einem Intra-Knoten-Netzwerk 50 Daten auszutauschen, das fest der Datenübertragung zwischen den Verarbeitungsknoten 42 zugeordnet ist. Jeder Verarbeitungsknoten 42 kann mit einem Betriebssystem 52 und einer Anwendung (nicht gezeigt) konfiguriert sein. Bei typischen Ausführungsformen ist jeder der Verarbeitungsknoten 42 dafür konfiguriert, mit der Anwendung mindestens eine Aufgabe zu empfangen und zu verarbeiten, und daher sind die Verarbeitungsknoten 42 gemeinsam dafür konfiguriert, den Hauptteil der Arbeit des Systems 40 auszuführen. Bei einigen Ausführungsformen können jedoch einige Verarbeitungsknoten 42 als dedizierte E/A-Knoten konfiguriert sein und daher eine Schnittstelle zwischen einer Teilmenge oder „Gruppe” von Verarbeitungsknoten 42 und dem/den Netzwerk(en) 48, 50 unterhalten. Darüber hinaus können E/A-Knoten dazu dienen, Prozessauthentifizierungs- und -autorisierungs, Task-Accounting, Fehlerbehebungs-, Problemlösungs-, Start- und Konfigurationsoperationen auszuführen wie nach dem Stand der Technik gut bekannt ist. Auf diese Weise kann die Gesamtarbeit für eine Gruppe von Verarbeitungsknoten 42 vereinfacht und zusätzliche Belastungen für jeden aus der Gruppe von Verarbeitungsknoten 42 können vermieden werden, die bei einer Verbindung mit der Gesamtheit der Verarbeitungsknoten 42 und dem Rest des Systems 40 entstehen würden. Jeder Verarbeitungsknoten 42 kann mehr als eine Verarbeitungseinheit 12 enthalten, und bei bestimmten Ausführungsformen kann jeder Knoten zwei oder vier Verarbeitungseinheiten 12 enthalten wie nach dem Stand der Technik gut bekannt ist.
  • Das System 40 kann einen oder mehrere Verwaltungsknoten 54 enthalten, in denen Compiler, Linker, Ladeprogramme sowie andere Programme zum Interagieren mit dem System 40 gespeichert sind. Auf die Verwaltungsknoten 54 kann ein Benutzer an einem Arbeitsplatz 56 zugreifen, der von mindestens einem Verwaltungsknoten 54 gesteuert wird. Auf diese Weise kann der Benutzer ein oder mehrere Programme zum Kompilieren, Aufgaben zum Ausführen, Ausführungskontexte, Arbeitslasten (workloads), Teile einer Arbeitslast oder Jobs an einen oder mehrere Dienstknoten 58 des Systems 40 abschicken. Die Verwaltungsknoten 54 können jeweils mindestens eine Verarbeitungseinheit und einen Speicher auf ähnliche Weise wie bei den Verarbeitungsknoten 42 zum Ausführen zusätzlicher Funktionen aufweisen, die aus Gründen der Effizienz oder anderen Gründen möglicherweise am besten außerhalb der Verarbeitungsknoten 42 oder Dienstknoten 58 ausgeführt werden. Beispielsweise können interaktive Dateneingabe, Bearbeiten von Softwarecode, Kompilieren von Softwarecode und/oder andere Benutzerschnittstellenfunktionen von den Verwaltungsknoten 54 gehandhabt werden.
  • Die Dienstknoten 58 können Datenbanken und Verwaltungswerkzeuge für das System 40 enthalten. Die Datenbanken können Statusinformationen für die Verarbeitungsknoten 42 unterhalten, darunter die aktuelle, die Verarbeitungsknoten 42 übergreifende Zeitplanung von Aufgaben, während mithilfe der Verwaltungswerkzeuge die Zeitplanung und das Laden von Programmen, Aufgaben, Daten und Jobs auf die Verarbeitungsknoten 42 gesteuert wird, darunter das Laden von Programmen, Aufgaben, Daten und Jobs auf jede Verarbeitungseinheit 12 jedes Verarbeitungsknotens 42. Als solche können die Dienstknoten 58 bei einigen Ausführungsformen eine Gruppe von Verarbeitungsknoten 42 aus der Vielzahl von Verarbeitungsknoten 42 sammeln und der Gruppe von Datenverarbeitungsknoten 12 mindestens eine Aufgabe, einen Job, eine Anwendung, einen Teil einer Arbeitslast, einen Ausführungskontext oder ein Programm zur Ausführung zuteilen. Im Folgenden werden hier die mindestens eine Aufgabe, der mindestens eine Job, die mindestens eine Arbeitslast, der mindestens eine Teil einer Arbeitslast, der mindestens eine Ausführungskontext oder das mindestens eine Programm der Kürze halber als eine „Aufgabe” bezeichnet. Eine Aufgabe kann zur Ausführung über das Netzwerk 48 und/oder 50 und durch die E/A-Knoten zu einem Verarbeitungsknoten 42 übermittelt werden. Die Funktionalität der Verwaltungsknoten 54 und/oder Dienstknoten 58 kann in einem Steuerungs-Teilsystem kombiniert werden, das dazu dient, Jobs für die Verarbeitungsknoten 42 zu empfangen, zu verwalten, zeitlich zu planen, neu zu verteilen und auf andere Weise zu steuern.
  • Die Verwaltungsknoten 54 und/oder die Dienstknoten 58 können jeweils eine Gruppe von Verarbeitungsknoten 42 sowie mindestens einen E/A-Knoten enthalten. Auf diese Weise können die Verwaltungsknoten 54 und/oder die Dienstknoten 58 durch das Intra-Knoten-Netzwerk 50 wie auch das Netzwerk 48 intern mit den Verarbeitungsknoten 42 verbunden sein. Alternativ können die Verwaltungsknoten 54 und/oder die Dienstknoten 58 jeweils eine Gruppe von Verarbeitungsknoten 42 und mindestens einen E/A-Knoten separat von den Verarbeitungsknoten 42 enthalten (d. h., die Verwaltungsknoten 54 und/oder die Dienstknoten 58 können als eigenständige Knoten konfiguriert sein). Darüber hinaus können die Verwaltungsknoten 54 und/oder die Dienstknoten 58 jeweils einen Verarbeitungsknoten 42 enthalten. Ein oder mehrere externe Ressourcenserver 60 können Server sein, auf die über das Netzwerk 48 zugegriffen werden kann und die dafür konfiguriert sind, Schnittstellen zu verschiedenen Datenspeichereinheiten bereitzustellen wie beispielsweise Festplattenlaufwerken 61, optischen Laufwerken (z. B. CD-ROM-Laufwerken, CD-R/RW-Laufwerken, DVD+/–R/RW-Laufwerken, Blu-Ray-Laufwerken, holografischen Speicherlaufwerken usw.), Solid-State-Speicherlaufwerken oder anderen E/A-Einheiten, Ressourcen oder Komponenten, auf die wegen Daten und/oder zum Verarbeiten einer Aufgabe zugegriffen werden kann.
  • In einer ähnlichen Weise wie bei dem Computer 10 kann der Speicher 44 jedes Verarbeitungsknotens 42 ein Cachespeicher-Teilsystem enthalten, das aus DRAM, SRAM, Flash-Speicher und/oder einem anderen digitalen oder Solid-State-Speichermedium bestehen kann. Außerdem kann der Speicher 44 jedes Verarbeitungsknotens 42 überdies einen Hauptspeicher aufweisen, der ein Festplattenlaufwerk und/oder ein anderes digitales Speichermedium aufweist. Ebenfalls in ähnlicher Weise kann das Cachespeicher-Teilsystem eine oder mehrere Ebenen von Daten, Anweisungs- und/oder kombinierten Cachespeichern aufweisen, wobei bestimmte Cachespeicher die Verarbeitungseinheiten 12 in der Art einer gemeinsamen Nutzung bedienen wie es nach dem Stand der Technik gut bekannt ist.
  • Ein Knoten ist unabhängig davon, ob er als ein Verarbeitungsknoten 42, ein E/A-Knoten, ein Verwaltungsknoten 54 oder ein Dienstknoten 58 konfiguriert ist, ein Teil des Systems 40, der einen oder mehrere Anforderer für Cachespeicherzeilen aufweist und von einem gemeinsam genutzten Cachespeicher (z. B. dem Speicher 44 oder einem Cachespeicher in mindestens einer Verarbeitungseinheit 12 des Knotens 42) bedient wird wie nach dem Stand der Technik gut bekannt ist. Bei bestimmten Ausführungsformen können die Anforderer in dem System 40 einen Verarbeitungsknoten 42 (im Folgenden „Knoten” 42) aufweisen, einen Speicher 44 eines Knotens, mindestens eine Verarbeitungseinheit 12, eine Komponente einer Verarbeitungseinheit 12 (z. B. einen Cachespeicher- und/oder E/A-Controller wie nachfolgend offenbart) und/oder einen Kern einer Verarbeitungseinheit 12 (wie auch einen Hardware-Thread eines Kerns). Bei bestimmten Ausführungsformen kann jeder Knoten 42 dafür konfiguriert sein, eine Arbeitslast und/oder eine oder mehrere Aufgaben zu verarbeiten und mit den anderen Knoten 42 durch die entsprechenden Netzwerkschnittstellen 46 zusammenzuarbeiten, um eine Arbeitslast und/oder die Aufgabe(n) auf eine parallele Weise zu verarbeiten wie nach dem Stand der Technik gut bekannt ist. Obwohl eine Netzwerkschnittstelle 46 in 2 gezeigt wird, kann jeder Knoten 42 eine Vielzahl von Netzwerkschnittstellen 46 oder anderen Netzwerkverbindungen enthalten. Als solcher kann jeder Knoten 42 dafür konfiguriert sein, Daten zu dem System 40 oder anderen Knoten 42 durch verschiedene Netzwerke zu übertragen, darunter das Intra-Knoten-Netzwerk 50. Beispielsweise kann jeder Knoten 42 Daten zu jedem anderen Knoten 42 durch ein Torus-Netzwerk übertragen. Darüber hinaus können verschiedene Knoten 42 speziell für das Ausführen verschiedener Funktionen konfiguriert sein. Beispielsweise können einige Knoten 42 des Systems 40 als Datenverarbeitungsknoten konfiguriert sein (z. B. dafür, eine Arbeitslast und/oder mindestens eine Aufgabe zu empfangen und diese Arbeitslast und/oder mindestens eine Aufgabe zu verarbeiten), als E/A-Knoten (z. B. dafür, die Datenübertragungen zu und/oder von jedem Datenverarbeitungsknoten und dem Rest des Systems 40 zu verwalten), Verwaltungsknoten (z. B. dafür, das System 40 zu verwalten und eine Arbeitslast und/oder mindestens eine Aufgabe zu empfangen) und/oder Dienstknoten (z. B. dafür, das System 40 zu überwachen, eine Arbeitslast zeitlich einzuplanen und/oder die Knoten 42 zu unterstützen). Als solches und bei einigen Ausführungsformen kann das System 40 eine Architektur aufweisen, die einem gemeinsam genutzten Power System-Datenverarbeitungssystem entspricht wie es von IBM vertriebenen wird. Bei alternativen Ausführungsformen kann das System 40 eine Architektur aufweisen, die einer Architektur eines parallelen Datenverarbeitungssystems BlueGene entspricht wie es von IBM entwickelt wurde. Bei alternativen Ausführungsformen kann das System 40 eine Architektur aufweisen, die einer Architektur eines parallelen RoadRunner-Datenverarbeitungssystems entspricht wie es ebenfalls von IBM entwickelt wurde. Darüber hinaus und bei anderen alternativen Ausführungsformen kann das System 40 eine Architektur aufweisen, die einem Datenverarbeitungssystem mit einem nicht einheitlichen Speicherzugriff (non-uniform memory access, „NUMA”) und/oder einem Cachespeicher-kohärenten NUMA (cache coherent NUMA, „ccNUMA”) entspricht wie es nach dem Stand der Technik gut bekannt ist. Knoten können auf einer Anzahl verschiedener Ebenen in einer gemeinsam genutzten Mehrebenen-Speicherarchitektur definiert werden und müssen bei einigen Ausführungsformen nicht auf der Grundlage irgendeiner physischen Zuordnung oder Abgrenzung voneinander unterschieden werden. Tatsächlich können bei einigen Ausführungsformen mehrere Knoten physisch auf demselben Computer, auf derselben Karte oder sogar in derselben integrierten Schaltung angeordnet sein.
  • Wie durch 1 und 2 veranschaulicht wird, können der Computer 10 sowie jeder Knoten 42 eine oder mehrere Verarbeitungseinheiten 12 enthalten. Während des Betriebs können verschiedene in Cachespeicherzeilen geordnete Anweisungen und/oder Daten zum Verarbeiten einer Aufgabe verwendet werden. Bei einigen Ausführungsformen sind die Cachespeicherzeilen Abschnitte von Daten aus einem Speicherbereich des Computers 10 und/oder des Systems 40. Bei Datenverarbeitungssystemen mit gemeinsam genutztem Speicher (z. B. dem Computer 10 und/oder dem System 40) können gemeinsam genutzte Daten in den Cachespeicherzeilen und daher im weiteren Sinne die Cachespeicherzeilen selbst mithilfe von Synchronisationsoperationen, darunter Synchronisationsoperationen, die Daten in den Cachespeicherzeilen zum Aktualisieren derartiger Daten sperren, wie auch Synchronisationsoperationen, die Daten in den Cachespeicherzeilen (der Kürze halber und sofern nicht anders angegeben, versteht sich, dass sich eine Bezugnahme auf eine „Cachespeicherzeile” in der gesamten vorliegenden Offenbarung auf alle oder einfach eine Teilmenge der Daten der Cachespeicherzeile beziehen kann) atomar aktualisieren, gelesen, abgeändert und/oder freigegeben werden.
  • Bei bestimmten Ausführungsformen wird eine Cachespeicherzeile durch Setzen einer Sperrvariablen der Cachespeicherzeile auf einen gesetzten Wert gesperrt. Wenn ein dieser Cachespeicherzeile zugehöriger kritischer Bereich fertiggestellt ist, wird die Sperrvariable in ihren ursprünglichen Zustand zurückversetzt (z. B. ein freier Wert), und andere Anforderer können versuchen, eine Sperre auf diese Cachespeicherzeile zu akquirieren. Daher werden bei bestimmten Ausführungsformen eine Akquisitionsoperation und eine Freigabeoperation gepaart, um eine Cachespeicherzeile zumindest während eines kritischen Bereichs der Ausführung jeweils zu sperren und freizugeben.
  • Darüber hinaus kann das System bei einigen Ausführungsformen einen Profiler aufweisen, der sich mit Stichprobenentnahme beschäftigt. Wie in 2 gezeigt kann der Dienstknoten 58 eine oder mehrere Verarbeitungseinheiten 12 und einen Speicher 44 enthalten, wobei der Speicher 44 des Dienstknotens 58 Programmcode enthalten kann, der sich auf einen Profiler 62 bezieht, der entsprechend einigen Ausführungsformen der Erfindung in ihm gespeichert ist. Ein Anpasser gemäß der vorliegenden Erfindung kann in Verbindung mit einem vorhandenen Stichprobenentnahme-Profiler arbeiten, um eine Speicherreferenz-Stichprobenentnahme auszuführen, wobei er ausreichend Daten zum Erkennen von Speicherreferenzen mit hoher Latenz bereitstellt. Beispielsweise und unter Bezugnahme auf 2 kann der Dienstknoten 58 Programmcode enthalten, der sich auf einen Anpasser 63 bezieht, der entsprechend einigen Ausführungsformen der Erfindung in ihm gespeichert ist. Als solche kann/können bei einigen Ausführungsformen die Verarbeitungseinheit(en) 12 des Dienstknotens 58 den Profiler 62 und/oder Anpasser 63 ausführen, sodass die Verarbeitungseinheiten des Dienstknotens 58 Schritte ausführen, die Ausführungsformen der Erfindung entsprechen. Obwohl in 2 der Profiler 62 und der Anpasser 63 als Programmcode veranschaulicht sind, der Operationen enthält, die von den Verarbeitungseinheiten 12 ausgeführt werden können, um Schritte auszuführen, die Ausführungsformen der Erfindung entsprechen, ist die Erfindung nicht darauf beschränkt. Beispielsweise können bei einigen Ausführungsformen der Profiler 62 und/oder der Anpasser einen oder mehrere Spezialprozessoren aufweisen, die dafür konfiguriert sind, Schritte entsprechend Ausführungsformen der Erfindung auszuführen, wobei die Spezialprozessoren dem Dienstknoten 58 zugeordnet sein können und/oder der oder den mit dem Netzwerk 48 verbundenen Einheiten zugeordnet sein können, darunter z. B. der Verwaltungsknoten 54, die externen Ressourcen 60, die Verarbeitungsknoten 42 und/oder der Arbeitsplatz 56. Der Anpasser kann einen Analyse- und Systemanpassungsprozess ausführen wie in dem Ablaufplan aus 3 gezeigt wird.
  • Eine Speicherreferenz-Stichprobenentnahme (Block 102) kann in Übereinstimmung mit einem Speicher-Profiler ausgeführt werden. Beispielsweise enthält die POWER-Architektur von IBM Speicherreferenz-Stichprobenentnahme als ein Diagnoseverfahren mit geringem Aufwand. Der Profiler und der Anpasser können auf Dienstknoten 58 ausgeführt werden, wie es im Vorangehenden in Bezug auf das Mehrknotensystem 40 beschrieben wird. Jede Referenz-Stichprobe enthält Informationen hinsichtlich des referenzierten Speichers und des die Referenz aufrufenden Prozesses. Zu diesen Informationen können Speicheraffinitätsdaten für die der Referenz zugeordnete Seite zählen, die physische Position des referenzierten Speichersegments und die dem referenzierenden Prozess zugeordnete Verarbeitungseinheit und der dem referenzierenden Prozess zugeordnete Knoten.
  • Jeder Speicherreferenz kann eine Bewertung zugewiesen werden, die die der Referenz zugeordnete Latenz repräsentiert (Block 104). Verfahren zum Bewerten von Latenz sind nach dem Stand der Technik gut bekannt. Zu Faktoren, die zu einer hohen Latenz beitragen können, zählen kritische Bereichskonflikte, die aus Verzögerungen beim Zugriff auf gesperrten Speicher entstehen, Cachespeicherfehler, wenn Daten nicht in den schnellsten Cachespeichern gefunden werden, und nicht lokale Speicheraufrufe, wobei sich Daten in einem Speicherbereich befinden, der einem Prozessor oder Knoten zugeordnet ist, der von dem referenzierenden Prozess entfernt angeordnet ist. Die Latenzbewertung für jede Speicherreferenz kann entweder eine berechnete oder eine geschätzte Latenz darstellen.
  • Der Affinitätsanpasser wird tätig, um sich mit einem Problem zu befassen, wenn erkannt wird (Block 106), dass eine Referenz eine hohe Latenz aufweist. Jede Bewertung kann nach dem Erstellen sofort im Vergleich zu einer Schwelle ausgewertet werden, um eine Referenz mit hoher Latenz zu erkennen; alternativ können Referenzen mit hoher Latenz in Zeitabständen während der Stichprobenentnahme gesucht und erkannt werden. Die erkannte Bewertung kann eine Bewertung einer einzigen Stichprobe widerspiegeln oder kann die Analyse mehrerer Stichproben zeigen. Zum Beispiel kann eine einzige Stichprobe mit der höchsten Bewertung erkannt werden. Alternativ kann beim Analysieren der Stichproben ein Speichersegment, beispielsweise eine Cachespeicherzeile oder Cachespeicherseite, mit einer hohen durchschnittlichen oder medianen Latenz über mehrere Referenzen zurückgegeben werden. Bei einer weiteren Ausführungsform kann eine Häufigkeitsschwelle so gesetzt werden, dass nur eine bestimmte absolute Zahl von Stichproben mit hoher Latenz für dasselbe Speichersegment oder alternativ ein bestimmtes Verhältnis von Stichproben mit hoher Latenz zu den gesamten das Segment betreffenden Stichproben das Erkennen einer Referenz verursacht, die ein gegebenes Speichersegment betrifft.
  • Fachleute werden verstehen, dass ein Verbessern einer Systemeffizienz durch ein Verringern von Latenz eine statistische Herangehensweise erfordert, da gelegentliche Referenzen mit hoher Latenz normalerweise unvermeidbar sind und die Systemleistung nicht wesentlich beeinträchtigen. Des Weiteren können die hier beschriebenen und im Folgenden erläuterten Anpassungen selbst eine Beeinträchtigung der Leistung darstellen, wenn sie ohne ausreichende Berechtigung realisiert werden. Wenn sich jedoch ein Muster von Referenzen mit hoher Latenz zeigt, wie es mithilfe eines Speicherreferenz-Stichprobenentnahme-Prozesses wie vorstehend beschrieben gefunden werden kann, kann die Latenz mithilfe einer Anpassung verringert werden. Daher wird in der nachfolgenden Beschreibung beim Beurteilen einer Referenz mit hoher Latenz angenommen, dass eine ausreichende Speicherreferenz-Stichprobenentnahme erfolgt ist, sodass die Begriffsbestimmung der Begriffe „häufig” und „wiederholt” von Bedeutung ist. Dennoch werden Fachleute erkennen, dass die hier umrissenen Schritte in einem Mehrprozessor-Datenverarbeitungssystem sogar mit einer Stichprobenentnahme in sehr geringem Umfang ausgeführt werden könnten, allerdings mit einer höheren Fehlermöglichkeit.
  • Sobald eine hohe Latenz erkannt wurde, wird an dem zugehörigen Speichersegment eine weitere Analyse durchgeführt, um eine geeignete Anpassung zu ermitteln. Bei einer Ausführungsform wird die der referenzierten Cachespeicherzeile zugeordnete Cachespeicherseite als das zugehörige Speichersegment angesehen. Alternativ kann das Speichersegment einfach die Cachespeicherzeile selbst sein. Der Anpasser beurteilt die Affinität des Speichersegments zusammen mit der Position des referenzierenden Prozesses, um zu ermitteln, ob der referenzierende Prozess lokal oder nicht lokal ist (Block 108). Die Definition einer lokalen Referenz im Gegensatz zu einer nicht lokalen Referenz (d. h. der referenzierende Prozess) kann für ein gegebenes System definiert sein; wo Speichercaches knotenspezifisch sind, kann eine lokale Referenz eine Referenz sein, bei der sich der Prozess und das Speichersegment in demselben Knoten befinden. Bei anderen Mehrprozessor-Systemen, bei denen Latenz ein Faktor der relativen Positionen eines Prozessors und eines Speichercache ist, können andere Definitionen von „lokal” und „entfernt” vorliegen.
  • Wenn die Referenz nicht lokal ist („Ja”-Zweig des Entscheidungsblocks 108), kann es angemessen sein, die Position des Speichersegments anzupassen, sodass Referenzen von dem erkannten Prozess auf das erkannte Segment lokale Referenzen sind. Wo allerdings Ressourcen gemeinsam genutzt werden, verringert ein Anpassen der Speicheraffinität möglicherweise nicht die Latenz des gesamten Systems. Wenn die Stichprobenentnahme beispielsweise häufige Speicherreferenzen zeigt, die zwei in verschiedenen Knoten ausgeführten Prozessen zugeordnet sind, kann ein Verlagern des den Speicherreferenzen zugeordneten Segments eine Latenz im Hinblick auf Referenzen eines Prozesses zum Preis einer unakzeptablen Erhöhung einer Latenz im Hinblick auf andere Prozesse verringern, die dasselbe Segment referenzieren. In dieser Situation kann ein Hosten der unterschiedlichen Prozesse auf demselben Knoten zugeordneten Prozessoren die Latenz verringern. Wenn daher zwei oder mehr Prozesse stark mit demselben Speichersegment in Verbindung stehen, kann durch ein Platzieren dieser Prozesse in gegenseitiger Nähe wie auch in der Nähe des Speichersegments auf geeignete Weise mit dem erkannten Latenzproblem umgegangen werden.
  • Dies wird dadurch dargestellt, dass eine Beurteilung erfolgt, um herauszufinden, ob entfernt angeordnete Prozesse häufig auf das erkannte Speichersegment zugreifen (Block 110). Wenn der erkannte Prozess mit der nicht lokalen Speicherreferenz hoher Latenz den Speicher nicht in wesentlichem Ausmaß mit anderen entfernt angeordneten Prozessen gemeinsam nutzt („Nein”-Zweig des Entscheidungsblocks 110), wird eine Affinität des Speichersegments zu dem erkannten Prozess hergestellt (Block 112). Dies kann ein Übertragen des Speichersegments sowie, sofern dies angebracht ist, anderer zugehöriger Speichersegmente zu einem Cachespeicher beinhalten, der in Bezug auf den Prozessor, auf dem der erkannte Prozess ausgeführt wird, als lokal angesehen wird. Wenn es angebracht ist, kann die dem erkannten Speichersegment zugeordnete Cachespeicherseite in den lokalen Cachespeicher in dem Knoten übertragen werden, wo der Prozess ausgeführt wird. Wie bereits erwähnt können andere Definitionen von „lokal” andere Arten von Affinitätsanpassungen veranlassen wie sie im Hinblick auf andere Systemarchitekturen verstanden werden.
  • Wenn ein oder mehrere andere Prozesse als der erkannte Prozess mit der nicht lokalen Speicherreferenz hoher Latenz auch einen wesentlichen Verkehr für das erkannte Speichersegment darstellen („Ja”-Zweig des Entscheidungsblocks 110), kann es angebracht sein, einen oder mehrere der Prozesse zu übertragen (Block 114), anstatt das Speichersegment zu übertragen. Durch Konsolidieren von Prozessen, die mit langen Latenzzeiten in Zusammenhang stehen, in demselben Knoten oder andernfalls nahe beieinander, kann es möglich sein, eine Latenz zu verringern, da diese Prozesse dasselbe Speichersegment referenzieren. Ein Übertragen eines Prozesses kann ein Ändern der Affinität anderer, eng mit dem Prozess verbundener Speichersegmente erfordern, sodass diese Segmente, zu denen eine Beziehung besteht, ebenfalls verlagert werden. Fachleute werden verstehen, dass die Kosten eines Verlagerns eines oder mehrerer Prozesse auf Prozessoren, um Prozessoren in Nachbarschaft zu gruppieren, für das System quantifizierbar sind. Bei einer Ausführungsform kann die projizierte Verringerung der Latenz vor dem Verlagern des Prozesses (Block 114) gegen die berechneten Kosten einer Übertragung abgewogen werden.
  • Mit einer anderen Anpassung kann auf eine hohe Latenz in Fällen eingegangen werden, in denen die erkannten Referenzen lokal sind („Nein”-Zweig des Entscheidungsblocks 108). Eine Gesamtlatenz kann durch deutliches Privilegieren eines Prozesses gegenüber anderen in Bezug auf ein Zugreifen auf eine gemeinsam genutzte Ressource verringert werden (Block 116). Zum Beispiel werden bei der üblichen Zuständigkeitsverhandlung zwischen Ressourcen die üblichen Status „gesperrt” und „gemeinsam genutzt” wie oben beschrieben verwendet, sodass die früheste Referenz auf ein Speichersegment akzeptiert und der Status des Segments so geändert wird, dass er diesem Prozess entspricht. Wenn jedoch die Stichprobenentnahme anzeigt, dass ein derartiges Verhalten ineffizient ist, kann ein zusätzlicher Status eingeführt werden, sodass, wenn er realisiert wird, für einen anderen Prozessor ein zusätzlicher Schritt erforderlich ist, um die Ressource zu übertragen und zu sperren.
  • Der Ablaufplan aus 4 zeigt eine Menge von mit einer Speicherreferenz in Zusammenhang stehenden Schritten, die einen verbesserten Status beinhalten können. Wie gezeigt legt, wenn ein Prozess ein Speichersegment wie beispielsweise eine Cachespeicherzeile referenziert (Block 202), der Status der Cachespeicherzeile die Fähigkeit der Referenz fest, die Zeile zu verwenden (Entscheidungsblock 204). Wenn die Cachespeicherzeile als „Gesperrt” gezeigt wird („Gesperrt”-Zweig des Entscheidungsblocks 204), wird die Referenz in einer Warteschlange platziert und wartet auf eine Freigabe der Referenz (Block 206). Wenn die Cachespeicherzeile als „Gemeinsam genutzt” gezeigt wird („Gemeinsam genutzt”-Zweig des Entscheidungsblocks 204) und die Speicherreferenz auf ein Lesen der Daten beschränkt ist und daher keine Sperre benötigt („Nein”-Zweig des Entscheidungsblocks 208), kann eine Kopie der Daten angefertigt und lokal als ein weiteres Exemplar der Cachespeicherzeile mit dem Status „Gemeinsam genutzt” (Block 212) gespeichert werden. Wenn andererseits ein Schreibzugriff und daher eine Sperre auf die Daten erforderlich ist („Ja”-Zweig des Entscheidungsblocks 208), muss die Referenz in die Warteschlange eintreten und den Status „Frei” abwarten (Block 210).
  • Wenn die Cachespeicherzeile als frei gezeigt wird („Frei”-Zweig des Entscheidungsblocks 204), könnten die Daten normalerweise entweder kopiert und „Gemeinsam genutzt” („Nein”-Zweig des Entscheidungsblocks 214, Block 216) oder ohne zusätzliche Beurteilung übertragen und „Gesperrt” werden. Wenn jedoch das Kohärenzprotokoll einen verbesserten Status gemäß einer Ausführungsform der Erfindung ermöglicht, ist mindestens ein zusätzlicher Schritt erforderlich, bevor eine Datenübertragung erfolgen kann. Wie gezeigt prüft das System, um herauszufinden, ob die Cachespeicherzeile einen verbesserten Status aufweist. Wenn nicht („Nein”-Zweig des Entscheidungsblocks 218), wird die Ressource wie üblich übertragen und gesperrt. Wenn die Cachespeicherzeile über einen verbesserten Status verfügt („Ja”-Zweig des Entscheidungsblocks 218), wird der Status einem oder mehreren Prozessen zugeordnet.
  • Eine Anfrage wird im Hinblick auf jeden dieser Prozesse gestellt, um sicherzustellen, dass das Speichersegment übertragen werden kann. Wenn irgendeiner dieser Prozesse zum Beispiel auch einer in eine Warteschlange eingereihten Referenz in Bezug auf das Speichersegment zugeordnet ist, kann die Anfrage es ablehnen, die Ressource zu sperren („ABLEHNEN”-Zweig des Entscheidungsblocks 220) und die Referenz dazu zwingen, sich erneut in eine Warteschlange einzureihen (Block 206). Alternativ kann, wenn keiner der abgefragten Prozesse mehr einen Zugriff auf das Speichersegment benötigt, die Abfrage der Anforderung gestatten, die Ressource zu übertragen und zu sperren. Dieser verbesserte Status kann es einem oder mehreren Prozessen ermöglichen, an den Anfang einer beliebigen Warteschlange für Speichersegmente zu springen, für die sie privilegiert sind, oder kann während kritischen Abschnitten ihrer Ausführung etwas ermöglichen, das im Wesentlichen eine „weiche Sperre” ist. Jede ähnliche Prozedur, die mindestens einen zusätzlichen Schritt zu dem Prozess des Übertragens und Sperrens eines Speichersegments mit verbessertem Status hinzufügt, kann in Übereinstimmung mit verschiedenen Mehrprozessor-Datenverarbeitungssystemen realisiert werden.
  • Für Fachleute werden andere Abwandlungen offensichtlich sein. Die Erfindung besteht daher in den hier nachfolgend angefügten Ansprüchen.

Claims (23)

  1. Verfahren zum dynamischen Optimieren von Speicherzugriffen in einem Mehrprozessor-Datenverarbeitungssystem, wobei das Verfahren aufweist: während des Ausführens einer Vielzahl von Prozessen durch eine Vielzahl physischer Prozessoren in dem Mehrprozessor-Datenverarbeitungssystem Ausführen einer Speicherreferenz-Stichprobenentnahme von Speicherorten eines gemeinsam genutzten Speichers, die von der Vielzahl von Prozessen referenziert werden, wobei jeder aus einer Vielzahl von Stichproben-Speicherreferenzen, die während einer Speicherreferenz-Stichprobenentnahme gesammelt wurden, eine Latenz und eine physische Position in dem gemeinsam genutzten Speicher zugeordnet werden; Analysieren der während der Speicherreferenz-Stichprobenentnahme gesammelten Stichproben-Speicherreferenzen, um mindestens ein Segment von Speicherorten in dem gemeinsam genutzten Speicher zu erkennen, dem mindestens eine sub-optimale Latenz in zugeordnet ist, und dynamisches Anpassen von mindestens einem aus einer physischen Position des erkannten Segments in dem gemeinsam genutzten Speicher, einem physischen Prozessor, auf dem mindestens ein Prozess ausgeführt wird, der Speicherorte in dem erkannten Segment referenziert, und einem dem erkannten Segment zugeordneten Status auf der Grundlage der analysierten Stichproben-Speicherreferenzen.
  2. Verfahren nach Anspruch 1, wobei ein Analysieren der Stichproben-Speicherreferenzen beinhaltet: Auswerten jeder der Stichproben-Speicherreferenzen auf der Grundlage der zum Abrufen der entsprechenden Segmente von Speicherorten benötigten Zeit.
  3. Verfahren nach Anspruch 2, wobei ein Auswerten von jeder der Stichproben-Speicherreferenzen auf der Grundlage der zum Abrufen von jedem aus der Vielzahl der Segmente von Speicherorten benötigten Zeit ein Messen der Zeit beinhaltet, die benötigt wird, um jedes aus der Vielzahl von Segmenten von Speicherorten abzurufen.
  4. Verfahren nach Anspruch 2, wobei ein Auswerten von jeder der Stichproben-Speicherreferenzen auf der Grundlage der zum Abrufen der entsprechenden Segmente von Speicherorten benötigten Zeit ein Schätzen der Zeit beinhaltet, die benötigt wird, um jedes aus der Vielzahl von Segmenten von Speicherorten abzurufen.
  5. Verfahren nach Anspruch 2, wobei ein Analysieren der während der Speicherreferenz-Stichprobenentnahme gesammelten Stichproben-Speicherreferenzen, um mindestens ein Segment von Speicherorten in dem gemeinsam genutzten Speicher zu erkennen, dem mindestens eine sub-optimale Latenz zugeordnet ist, zumindest zum Teil auf der jeder der Stichproben-Speicherreferenzen zugeordneten Bewertung beruht.
  6. Verfahren nach Anspruch 1, wobei das erkannte Segment eine einer Cachespeicherseite zugeordnete Cachespeicherzeile ist.
  7. Verfahren nach Anspruch 6, das außerdem aufweist: Anpassen einer Position von mindestens einem Teil der Cachespeicherseite, sodass eine zukünftige Latenz, die mit einem zukünftigen Abrufen des Teils der Cachespeicherseite in Zusammenhang steht, verringert wird.
  8. Verfahren nach Anspruch 6, das außerdem aufweist: Übertragen des Teils der Cachespeicherseite aus einem ersten Cachespeicher in einen zweiten Cachespeicher.
  9. Verfahren nach Anspruch 6, das außerdem aufweist: Übertragen des Teils der Cachespeicherseite von einem ersten Knoten in einen zweiten Knoten.
  10. Verfahren nach Anspruch 6, wobei die Cachespeicherzeile eine erste Cachespeicherzeile ist und die Cachespeicherseite mindestens eine zweite Cachespeicherzeile enthält.
  11. Verfahren nach Anspruch 1, das außerdem aufweist: Erkennen einer Cachespeicherseite, die dem erkannten Segment zugeordnet ist; Erkennen eines Ausführungsorts eines dem erkannten Segment zugeordneten Objekts, und Anpassen einer Position des Objekts, sodass eine zukünftige Latenz, die mit einem zukünftigen Abrufen mindestens eines Teils der Cachespeicherseite durch das Objekt in Zusammenhang steht, verringert wird.
  12. Verfahren nach Anspruch 11, wobei das Objekt mindestens ein Teil eines von dem Datenverarbeitungssystem ausgeführten Prozesses ist.
  13. Verfahren nach Anspruch 1, das außerdem aufweist: Übertragen von mindestens einem Teil eines Prozesses, der Speicherorte in dem erkannten Segment referenziert, von einer ersten Verarbeitungseinheit zu einer zweiten Verarbeitungseinheit.
  14. Verfahren nach Anspruch 1, das außerdem aufweist: Übertragen von mindestens einem Teil eines Prozesses, der Speicherorte in dem erkannten Segment referenziert, von einem ersten Knoten zu einem zweiten Knoten.
  15. Verfahren nach Anspruch 1, das außerdem aufweist: Erkennen einer ersten Cachespeicherseite, die dem erkannten Segment zugeordnet ist; Erkennen einer zweiten Cachespeicherseite, die einer Teilmenge der Speicheranforderungen für die Vielzahl von Speichersegmenten zugeordnet ist, und Zuweisen eines Status für die zweite Cachespeicherseite, der anzeigt, dass ein Übertragen der zweiten Cachespeicherseite mindestens einen Schritt mehr erfordert als ein Übertragen der ersten Cachespeicherseite.
  16. Verfahren nach Anspruch 1, das außerdem aufweist: Analysieren einer Position eines entsprechenden Prozesses, der ein entsprechendes erkanntes Segment aus den Speicherorten in dem gemeinsam genutzten Speicher referenziert, um zu ermitteln, ob der entsprechende Prozess ein lokaler referenzierender Prozess ist, und als Reaktion auf ein Ermitteln, dass der entsprechende Prozess ein lokaler referenzierender Prozess ist, Zuweisen eines verbesserten Status für den entsprechenden Prozess für das jeweilige erkannte Segment der Speicherorte in dem gemeinsam genutzten Speicher.
  17. Mehrprozessor-Datenverarbeitungssystem, das aufweist: eine Vielzahl physischer Prozessoren und Programmcode, der dafür konfiguriert ist, von mindestens einem physischen Prozessor ausgeführt zu werden, um Speicherzugriffe in dem Mehrprozessor-Datenverarbeitungssystem dynamisch zu optimieren, wobei der Programmcode außerdem dafür konfiguriert ist, während des Ausführens einer Vielzahl von Prozessen durch mindestens eine Teilmenge der Vielzahl physischer Prozessoren eine Speicherreferenz-Stichprobenentnahme von Speicherorten eines gemeinsam genutzten Speichers auszuführen, die von der Vielzahl von Prozessen referenziert werden, wobei jeder aus einer Vielzahl von Stichproben-Speicherreferenzen, die während der Speicherreferenz-Stichprobenentnahme gesammelt wurden, eine Latenz und eine physische Position in dem gemeinsam genutzten Speicher zugeordnet wird; Analysieren der Stichproben-Speicherreferenzen, die während einer Speicherreferenz-Stichprobenentnahme gesammelt wurden, um mindestens ein Segment von Speicherorten in dem gemeinsam genutzten Speicher zu erkennen, dem mindestens eine sub-optimale Latenz zugeordnet ist, und dynamisches Anpassen auf der Grundlage der analysierten Stichproben-Speicherreferenzen von mindestens einem aus einer physischen Position des erkannten Segments in dem gemeinsam genutzten Speicher, einem physischen Prozessor, auf dem mindestens ein Prozess ausgeführt wird, der Speicherorte in dem erkannten Segment referenziert, und einem dem erkannten Segment zugeordnetem Status.
  18. Datenverarbeitungssystem nach Anspruch 17, wobei der Programmcode außerdem dafür konfiguriert ist, jede aus der Vielzahl von Latenzen auf der Grundlage der zum Abrufen der entsprechenden Segmente von Speicherorten benötigten Zeit zu bewerten.
  19. Verfahren nach Anspruch 18, wobei der Programmcode außerdem dafür konfiguriert ist, mindestens ein Segment von Speicherorten durch Erkennen eines Segments von Speicherorten auf der Grundlage seiner Bewertung zu erkennen.
  20. Datenverarbeitungssystem nach Anspruch 17, wobei der Programmcode außerdem dafür konfiguriert ist, mindestens einen Teil eines Prozesses, der Speicherorte in dem erkannten Segment referenziert, von einer ersten Verarbeitungseinheit zu einer zweiten Verarbeitungseinheit zu übertragen.
  21. Datenverarbeitungssystem nach Anspruch 17, wobei der Programmcode außerdem dafür konfiguriert ist, mindestens einen Teil eines Prozesses, der Speicherorte in dem erkannten Segment referenziert, von einem ersten Knoten zu einem zweiten Knoten zu übertragen.
  22. Datenverarbeitungssystem nach Anspruch 17, wobei der Programmcode außerdem konfiguriert ist zum: Erkennen einer ersten Cachespeicherseite, die dem erkannten Segment zugeordnet ist; Erkennen einer zweiten Cachespeicherseite, die einer Teilmenge der Speicheranforderungen für die Vielzahl von Segmenten von Speicherorten zugeordnet ist, und Zuweisen eines Status für die zweite Cachespeicherseite, der anzeigt, dass ein Übertragen der zweiten Cachespeicherseite mindestens einen Schritt mehr erfordert als ein Übertragen der ersten Cachespeicherseite.
  23. Programmprodukt, das aufweist: Programmcode, der dafür konfiguriert ist, von mindestens einem Prozessor eines Mehrprozessor-Datenverarbeitungssystems ausgeführt zu werden, wobei der Programmcode außerdem dafür konfiguriert ist, Speicherzugriffe in dem Datenverarbeitungssystem dynamisch zu optimieren durch Ausführen, – während des Ausführens einer Vielzahl von Prozessen durch mindestens eine Teilmenge der Vielzahl physischer Prozessoren in dem Mehrprozessor-Datenverarbeitungssystem, – einer Speicherreferenz-Stichprobenentnahme von Speicherorten eines gemeinsam genutzten Speichers, die von der Vielzahl von Prozessoren referenziert werden, wobei jeder aus einer Vielzahl von Stichproben-Speicherreferenzen, die während einer Speicherreferenz-Stichprobenentnahme gesammelt wurden, eine Latenz und eine physische Position in dem gemeinsam genutzten Speicher zugeordnet werden; Analysieren der Stichproben-Speicherreferenzen, die während einer Speicherreferenz-Stichprobenentnahme gesammelt wurden, um mindestens ein Segment von Speicherorten in dem gemeinsam genutzten Speicher zu erkennen, dem mindestens eine sub-optimale Latenz zugeordnet ist, und dynamisches Anpassen auf der Grundlage der analysierten Stichproben-Speicherreferenzen von mindestens einem aus einer physischen Position des erkannten Segments in dem gemeinsam genutzten Speicher, einem physischen Prozessor, auf dem mindestens ein Prozess ausgeführt wird, der Speicherorte in dem erkannten Segment referenziert, und einem dem erkannten Segment zugeordnetem Status.
DE112012004629.3T 2011-11-30 2012-10-29 Dynamischer Speicheraffinitätsanpasser auf Prozess/Objektebene Pending DE112012004629T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/307,512 US9684600B2 (en) 2011-11-30 2011-11-30 Dynamic process/object scoped memory affinity adjuster
USUS-13/307,512 2011-11-30
PCT/JP2012/006910 WO2013080434A1 (en) 2011-11-30 2012-10-29 Dynamic process/object scoped memory affinity adjuster

Publications (1)

Publication Number Publication Date
DE112012004629T5 true DE112012004629T5 (de) 2014-08-28

Family

ID=48467874

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112012004629.3T Pending DE112012004629T5 (de) 2011-11-30 2012-10-29 Dynamischer Speicheraffinitätsanpasser auf Prozess/Objektebene

Country Status (6)

Country Link
US (1) US9684600B2 (de)
JP (1) JP2015504541A (de)
CN (1) CN103959275B (de)
DE (1) DE112012004629T5 (de)
GB (1) GB2511678B (de)
WO (1) WO2013080434A1 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140196015A1 (en) * 2013-01-04 2014-07-10 Microsoft Corporation Declaration of lifetime of resource reference
US9098269B2 (en) 2013-01-04 2015-08-04 Microsoft Technology Licensing, Llc System and method to ensure resource access safety with immutable object types
US9785581B2 (en) * 2014-02-28 2017-10-10 Red Hat, Inc. Memory distribution across multiple non-uniform memory access nodes
US9858058B2 (en) 2014-03-31 2018-01-02 International Business Machines Corporation Partition mobility for partitions with extended code
JP5949977B1 (ja) * 2015-02-19 2016-07-13 日本電気株式会社 情報処理装置、情報処理方法、メインプロセッサコア、プログラム、情報処理方法、サブプロセッサコア
JP6740773B2 (ja) * 2016-07-25 2020-08-19 富士通株式会社 情報処理装置、プログラム、および情報処理方法
CN106250350A (zh) * 2016-07-28 2016-12-21 浪潮(北京)电子信息产业有限公司 一种基于numa架构的页缓存读取方法及系统
US9606835B1 (en) 2016-09-19 2017-03-28 International Business Machines Corporation Determination of memory access patterns of tasks in a multi-core processor
EP3519970A1 (de) 2016-09-28 2019-08-07 INTEL Corporation Messung der pro-knoten-bandbreite in systemen mit nicht-gleichförmigem speicherzugang (numa)
US10223282B2 (en) 2017-05-23 2019-03-05 International Business Machines Corporation Memory affinity management
CN114090223A (zh) * 2020-08-24 2022-02-25 北京百度网讯科技有限公司 访存请求调度方法、装置、设备以及存储介质
US11847074B2 (en) * 2020-11-02 2023-12-19 Honeywell International Inc. Input/output device operational modes for a system with memory pools

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5025365A (en) * 1988-11-14 1991-06-18 Unisys Corporation Hardware implemented cache coherency protocol with duplicated distributed directories for high-performance multiprocessors
US5269013A (en) * 1991-03-20 1993-12-07 Digital Equipment Corporation Adaptive memory management method for coupled memory multiprocessor systems
JP3889044B2 (ja) 1995-05-05 2007-03-07 シリコン、グラフィクス、インコーポレイテッド 不均一メモリ・アクセス(numa)システムにおけるページ移動
US5860116A (en) 1996-12-11 1999-01-12 Ncr Corporation Memory page location control for multiple memory-multiple processor system
US6289424B1 (en) * 1997-09-19 2001-09-11 Silicon Graphics, Inc. Method, system and computer program product for managing memory in a non-uniform memory access system
US6442585B1 (en) * 1997-11-26 2002-08-27 Compaq Computer Corporation Method for scheduling contexts based on statistics of memory system interactions in a computer system
US6237059B1 (en) * 1997-11-26 2001-05-22 Compaq Computer Corporation Method for estimating statistics of properties of memory system interactions among contexts in a computer system
US6202127B1 (en) * 1997-11-26 2001-03-13 Compaq Computer Corporation Apparatus for spatial and temporal sampling in a computer memory system
US6332178B1 (en) * 1997-11-26 2001-12-18 Compaq Computer Corporation Method for estimating statistics of properties of memory system transactions
US6289369B1 (en) * 1998-08-25 2001-09-11 International Business Machines Corporation Affinity, locality, and load balancing in scheduling user program-level threads for execution by a computer system
US6769017B1 (en) 2000-03-13 2004-07-27 Hewlett-Packard Development Company, L.P. Apparatus for and method of memory-affinity process scheduling in CC-NUMA systems
US6701421B1 (en) 2000-08-17 2004-03-02 International Business Machines Corporation Application-level memory affinity control
US6782410B1 (en) * 2000-08-28 2004-08-24 Ncr Corporation Method for managing user and server applications in a multiprocessor computer system
US7403952B2 (en) * 2000-12-28 2008-07-22 International Business Machines Corporation Numa system resource descriptors including performance characteristics
US20020184290A1 (en) * 2001-05-31 2002-12-05 International Business Machines Corporation Run queue optimization with hardware multithreading for affinity
US6799241B2 (en) * 2002-01-03 2004-09-28 Intel Corporation Method for dynamically adjusting a memory page closing policy
GB0304628D0 (en) * 2003-02-28 2003-04-02 Imec Inter Uni Micro Electr Method for hardware-software multitasking on a reconfigurable computing platform
AU2003248865A1 (en) * 2002-07-08 2004-01-23 Globespanvirata Incorporated Method and system for allocating bandwidth
US6912625B2 (en) * 2003-01-09 2005-06-28 International Business Machines Corporation Method, system, and computer program product for creating and managing memory affinity in logically partitioned data processing systems
US7584476B2 (en) * 2004-03-04 2009-09-01 International Business Machines Corporation Mechanism for reducing remote memory accesses to shared data in a multi-nodal computer system
US7721047B2 (en) 2004-12-07 2010-05-18 International Business Machines Corporation System, method and computer program product for application-level cache-mapping awareness and reallocation requests
US7383396B2 (en) 2005-05-12 2008-06-03 International Business Machines Corporation Method and apparatus for monitoring processes in a non-uniform memory access (NUMA) computer system
US20070022015A1 (en) * 2005-07-22 2007-01-25 Tarinelli Gillian J System and method for the on-line purchase of products through a guest registration
US7895596B2 (en) * 2005-09-13 2011-02-22 Hewlett-Packard Development Company, L.P. Processor assignment in multi-processor systems
US7673114B2 (en) * 2006-01-19 2010-03-02 International Business Machines Corporation Dynamically improving memory affinity of logical partitions
US7584332B2 (en) * 2006-02-17 2009-09-01 University Of Notre Dame Du Lac Computer systems with lightweight multi-threaded architectures
JP4872402B2 (ja) * 2006-03-20 2012-02-08 日本電気株式会社 マルチプロセッサシステムのメモリアクセス負荷分散装置および方法
US8020165B2 (en) * 2006-08-28 2011-09-13 Dell Products L.P. Dynamic affinity mapping to reduce usage of less reliable resources
US8316190B2 (en) * 2007-04-06 2012-11-20 Waratek Pty. Ltd. Computer architecture and method of operation for multi-computer distributed processing having redundant array of independent systems with replicated memory and code striping
US8312230B2 (en) * 2008-06-06 2012-11-13 International Business Machines Corporation Dynamic control of partition memory affinity in a shared memory partition data processing system
US8037280B2 (en) * 2008-06-11 2011-10-11 Vmware, Inc. System and method for improving memory locality of virtual machines
US8462681B2 (en) * 2009-01-15 2013-06-11 The Trustees Of Stevens Institute Of Technology Method and apparatus for adaptive transmission of sensor data with latency controls
US9063825B1 (en) * 2009-09-21 2015-06-23 Tilera Corporation Memory controller load balancing with configurable striping domains
US8856794B2 (en) * 2009-10-13 2014-10-07 Empire Technology Development Llc Multicore runtime management using process affinity graphs
KR101697937B1 (ko) * 2010-01-08 2017-02-01 삼성전자주식회사 멀티프로세서 시스템에서 동적 태스크 마이그레이션을 위한 방법 및 시스템
US8904154B2 (en) * 2010-04-16 2014-12-02 Massachusetts Institute Of Technology Execution migration
US8413158B2 (en) * 2010-09-13 2013-04-02 International Business Machines Corporation Processor thread load balancing manager
US10169087B2 (en) * 2011-01-28 2019-01-01 International Business Machines Corporation Technique for preserving memory affinity in a non-uniform memory access data processing system

Also Published As

Publication number Publication date
GB2511678A (en) 2014-09-10
JP2015504541A (ja) 2015-02-12
US9684600B2 (en) 2017-06-20
CN103959275A (zh) 2014-07-30
GB201410073D0 (en) 2014-07-23
GB2511678B (en) 2018-07-11
CN103959275B (zh) 2017-05-31
WO2013080434A1 (en) 2013-06-06
US20130138885A1 (en) 2013-05-30

Similar Documents

Publication Publication Date Title
DE112012004629T5 (de) Dynamischer Speicheraffinitätsanpasser auf Prozess/Objektebene
DE102013017509B4 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE69822534T2 (de) Gemeinsame Speicherbenutzung mit variablen Blockgrössen für symmetrische Multiporzessor-Gruppen
DE69806564T2 (de) Verfahren zur Schätzung von Statistiken der Eigenschaften von Speichersysteminteraktionen zwischen Kontexten in einem Rechnersystem
DE69716663T2 (de) Prozesszuweisung in einem Mehrrechnersystem
DE2350884C2 (de) Adreßumsetzungseinheit
DE60210633T2 (de) Verfahren und vorrichtungen zur verbesserung des durchsatzes von eingebetteten prozessoren auf cache-basis durch umschalten von tasks als reaktion auf eine cache-verfehlung
DE69821196T2 (de) Anordnung zum räumlichen und zeitlichen Abtasten in einem Rechnerspeichersystem
DE102007006190B4 (de) Techniken zur Verwendung von Speicher-Attributen
DE102006032832A1 (de) Netzwerksystem und Verfahren zur Steuerung verteilter Speicher
DE112005002420T5 (de) Verfahren und Vorrichtung zum Pushen von Daten in den Cache eines Prozessors
DE102013202173A1 (de) Einheitliche Lade-Verarbeitung für Teilsätze von parallelen Threads
DE102013017511A1 (de) Effiziente speichervirtualisierung in mehrsträngigen verarbeitungseinheiten
DE202010017665U1 (de) Datenverteilung bei einer Datenspeichervorrichtung mit Flash-Speicherchips
DE2226382A1 (de) Datenverarbeitungsanlage
DE102014000372A1 (de) Verbesserte steuerung des prefetch-traffics
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE102013205886A1 (de) Dynamische Bankmodus-Adressierung für Speicherzugriff
DE102017213160B4 (de) Kompilierung für knotenvorrichtungs-GPU-basierte Parallelverarbeitung
DE112014000340T5 (de) Vorablesezugriff auf Daten für einen Chip mit einem übergeordneten Kern und einem Scout-Kern
DE112014000336T5 (de) Vorablesezugriff für einen übergeordneten Kern in einem Mehrkern-Chip
DE102013006396A1 (de) Eine grafikverarbeitungseinheit, in der eine standardverarbeitungseinheit verwendet ist, und ein verfahren zum aufbau einer grafikverarbeitungseinheit
DE102013019333A1 (de) Registerzuweisung für als cluster vorliegende mehrebenen-registerdaten
DE112012004926B4 (de) Gemeinsame Speichernutzung durch Prozessoren
DE112010004530T5 (de) Transaktionsaktualisierung bei Dynamischen Verteilten Arbeitslasten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R084 Declaration of willingness to licence
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0015170000

Ipc: G06F0015167000