DE112016003974T5 - Dynamisches Abstimmen von Multiprozessor-/Multikern-Rechnersystemen - Google Patents

Dynamisches Abstimmen von Multiprozessor-/Multikern-Rechnersystemen Download PDF

Info

Publication number
DE112016003974T5
DE112016003974T5 DE112016003974.3T DE112016003974T DE112016003974T5 DE 112016003974 T5 DE112016003974 T5 DE 112016003974T5 DE 112016003974 T DE112016003974 T DE 112016003974T DE 112016003974 T5 DE112016003974 T5 DE 112016003974T5
Authority
DE
Germany
Prior art keywords
application
scalability problem
processors
resource
access conflict
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
DE112016003974.3T
Other languages
English (en)
Inventor
Kequing Wu
Kingsum Chow
Ying Feng
Khun Ban
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE112016003974T5 publication Critical patent/DE112016003974T5/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/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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3442Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Im Allgemeinen stellt diese Offenbarung Systeme, Vorrichtungen, Verfahren und computerlesbare Medien zum dynamischen Abstimmen von Multiprozessor- und Multikern-Rechnersystemen bereit, um die Anwendungsleistung und Skalierbarkeit zu verbessern. Ein System kann eine Anzahl von Prozessoreinheiten (CPUs) und eine Profilierungsschaltungsanordnung umfassen, die konfiguriert ist, das Vorliegen eines Skalierbarkeitsproblems zu detektieren, das der Ausführung einer Anwendung auf CPUs zugeordnet ist, und zu bestimmen, ob das Skalierbarkeitsproblem auf einen Zugriffskonflikt oder eine Ressourcenbeschränkung zurückzuführen ist. Das System kann auch eine Planungsschaltungsanordnung umfassen, die konfiguriert ist, die Anwendung an einen Teilsatz der Gesamtanzahl von CPUs anzubinden, falls das Skalierbarkeitsproblem auf einen Zugriffskonflikt zurückzuführen ist.

Description

  • GEBIET
  • Die vorliegende Offenbarung betrifft Multiprozessor- und Multikern-Rechnersysteme, und insbesondere das dynamische Abstimmen von Multiprozessor- und Multikern-Rechnersystemen, um die Anwendungsleistung und Skalierbarkeit zu verbessern.
  • HINTERGRUND
  • Computer- und Kommunikationssysteme, einschließlich mobiler Plattformen, werden mit einer immer größeren Anzahl von Prozessoren (z.B. zentrale Recheneinheit oder CPU) und einer immer größeren Anzahl von Prozessorkernen (z.B. Hardware-Kernen) angeboten, die auf diesen CPUs integriert sind. Dies wird im Allgemeinen deshalb durchgeführt, um durch einen erhöhten Parallelismus eine größere Rechenleistung bereitzustellen. Jeder Hardware-Kern kann auch mehrere Hardware-Threads umfassen (werden auch als logische Kerne oder Hyperthreading bezeichnet), um die Anzahl paralleler Vorgänge weiter zu erhöhen. Allerdings sind Softwareanwendungen oftmals nicht darauf ausgelegt, diesen Parallelismus vorteilhaft nutzen zu können und ihre Leistung kann tatsächlich abnehmen, wenn Hardware aufgestockt wird, um eine größere parallele Verarbeitungskapazität zu bieten. Dies kann z.B. durch eine relativ ineffiziente Synchronisation zwischen den verschiedenen Bestandteilen der Software (z.B. Prozesse und/oder Software-Threads) verursacht werden, die für die parallele Ausführung abgeteilt wurden. Dies kann auch durch die Notwendigkeit verursacht werden, dass jene Bestandteile beschränkte Ressourcen gemeinsam nutzen müssen. Diese Schwierigkeiten können demnach die Skalierbarkeit von Softwareanwendungen in Bezug auf das Zurechtkommen mit einer ansteigenden Auslastung oder mehr Durchsatz, das nur auf einer erhöhten Rechenleistung basiert, zu beschränken.
  • Figurenliste
  • Merkmale und Vorteile der Ausführungsformen des beanspruchten Gegenstands gehen aus den Vorgängen der nachfolgenden detaillierten Beschreibung und aus der Durchsicht der Zeichnungen hervor, in denen ähnliche Bezugsziffern ähnliche Teile bezeichnen, und in denen:
    • 1 ein Top-Level-Systemdiagramm einer beispielhaften Ausführungsform in Übereinstimmung mit der vorliegenden Offenbarung zeigt;
    • 2 ein Blockdiagramm einer beispielhaften Ausführungsform in Übereinstimmung mit der vorliegenden Offenbarung zeigt;
    • 3 ein Blockdiagramm einer weiteren beispielhaften Ausführungsform in Übereinstimmung mit der vorliegenden Offenbarung zeigt;
    • 4 ein Flussdiagramm von Vorgängen einer beispielhaften Ausführungsform in Übereinstimmung mit der vorliegenden Offenbarung zeigt;
    • 5 ein Flussdiagramm von Vorgängen einer weiteren beispielhaften Ausführungsform in Übereinstimmung mit der vorliegenden Offenbarung zeigt; und
    • 6 ein Systemdiagramm einer Plattform einer weiteren beispielhaften Ausführungsform in Übereinstimmung mit der vorliegenden Offenbarung zeigt.
  • Obwohl die nachfolgende detaillierte Beschreibung auf beispielhafte Ausführungsformen Bezug nimmt, sind viele Alternativen, Modifikationen und Variationen davon für Fachleute auf dem Gebiet klar ersichtlich.
  • DETAILLIERTE BESCHREIBUNG
  • Im Allgemeinen stellt diese Offenbarung Systeme, Vorrichtungen, Verfahren und computerlesbare Medien zum dynamischen Abstimmen von Multiprozessor- und Multikern-Rechnersystemen, einschließlich Hyperthreading-Systeme, bereit, um die Anwendungsleistung und Skalierbarkeit zu verbessern und den Systemleistungsverbrauch zu verringern. Der Begriff „Skalierbarkeit“, wie hierin verwendet, bezieht sich auf das Vorhandensein einer Beziehung (z.B. ein gewisses Ausmaß einer Proportionalität oder Linearität) zwischen der Leistung oder dem Durchsatz einer Softwareanwendung und der gemessenen Auslastung des Prozessors. Die Leistung oder der Durchsatz stellt ein gewisses Maß der Arbeitsleistung dar, die von der Softwareanwendung erzielt wird.
  • Die Softwareanwendung kann zur Ausführung auf mehrere CPUs, Prozessorkerne und Hardware-Threads (oder logische Kerne) aufgeteilt werden, um Vorgänge zumindest in gewissem Ausmaß parallel auszuführen. Diese parallel ausführenden Komponenten können z.B. Prozesse und Software-Threads umfassen.
  • Die Ausführung der Anwendung kann profiliert oder überwacht werden, um die Leistung zu bewerten und Skalierbarkeitsprobleme zu detektieren. Das Vorliegen eines Skalierbarkeitsproblems kann bestimmt werden, wenn die Prozessorauslastung mit einer schnelleren Rate ansteigt als der Anwendungsdurchsatz, wie nachstehend genauer beschrieben wird. Dies kann z.B. eintreten, wenn die Anwendungssoftware nicht so geschrieben wurde, dass sie Synchronisationsprobleme auf relativ effiziente Weise handhabt, und somit statt der Erfüllung der beabsichtigen Funktionen Prozesszyklen verbraucht, die auf die Synchronisation warten.
  • Eine Analyse kann durchgeführt werden, um zu bestimmen, um die Ursache dieser Skalierbarkeitsprobleme auf einen Zugriffskonflikt oder auf die gemeinsame Nutzung beschränkter Ressourcen zurückzuführen ist. Ein Zugriffskonflikt kann z.B. ein Sperrkonflikt oder Datenzugriffskonflikte zwischen den parallelen Komponenten der Anwendung umfassen, wobei Sperren (z.B. Spinlocks oder andere solche geeignete Mechanismen) verwendet werden, um für eine Synchronisation zwischen den Komponenten zu sorgen. Beschränkte Ressourcen können z.B. ArbeitsspeicherCaches, Ausführungspipelinepuffer und andere Hardware-Ressourcen der CPUs und/oder Kerne umfassen. Dynamisches Abstimmen (auch als Abgleichen oder erneutes Abgleichen bezeichnet) kann basierend auf dieser Analyse durchgeführt werden, um das erneute Anbinden der Anwendung an weniger CPUs, das Blockieren von Hyperthreading und/oder das Blockieren einiger Kerne eines CPUs zu umfassen, wie hierin besprochen werden kann.
  • 1 zeigt ein Top-Level-Systemdiagramm 100 einer beispielhaften Ausführungsform in Übereinstimmung mit der vorliegenden Offenbarung. Ein Benutzer 102 kann mit einem lokalen Client-System 104 interagieren, um über ein Netzwerk 110 Zugriff auf ein Fernserversystem 106 zu erhalten. Das Serversystem 106 kann konfiguriert sein, eine oder mehrere Softwareanwendungen 108 zu hosten oder auszuführen. Eine Softwareanwendung 108 kann eine geschäftliche/Unternehmens-Softwareanwendung sein, einschließlich, aber nicht ausschließlich z.B. einer Software zum Verwalten der Kundenbeziehung, einer Software zum Planen der Firmenressourcen, einer Software zum Verwalten des Humankapitals und einer Business Intelligence Software. Der Server 106 kann konfiguriert sein, vielen Benutzern 102 und Client-Systemen 104 Zugriff auf diese geschäftliche/Unternehmens-Softwareanwendung 108 zu geben. In manchen Ausführungsformen kann der Benutzer Anfragen an die geschäftliche/Unternehmens-Softwareanwendung 108 senden, die auf dem Server 106 vorhanden ist, und die geschäftliche/Unternehmens-Anwendung führt die Anfragen aus und kommuniziert die Ergebnisse wieder zurück zum Benutzer. Die geschäftliche/Unternehmens-Anwendungssoftware 108 kann auch mit anderen Servern 112 wie z.B. Datenbankservern, kommunizieren. Die anderen Server 112 können sich fern vom Server 106 befinden und somit kann die Kommunikation zwischen ihnen auch über das Netzwerk 110 geschehen.
  • Der Server 106 kann mehrere CPUs und Prozesskerne umfassen, von denen jeder beliebige ferner für einen Hyperthreading-Betrieb konfiguriert sein kann. Der Server 106 ist ebenfalls so dargestellt, dass er eine dynamische Abstimmungsschaltungsanordnung 114 umfasst, die konfiguriert ist, um die Anwendungsleistung/den Durchsatz zu überwachen, zu bestimmen, ob Skalierbarkeitsprobleme vorliegen (aufgrund eines Konflikts oder Beschränkungsproblemen) und die Verteilung der Softwareanwendungen über die CPUs und Kerne auszugleichen oder erneut auszugleichen, wie nachstehend beschrieben wird. Das Abstimmen wird als dynamisch bezeichnet, da es durchgeführt werden kann, während die Anwendung ausgeführt wird (z.B. in Echtzeit).
  • Obwohl sich die Diskussion verschiedener Ausführungsformen in der vorliegenden Schrift auf ein Serversystem beziehen können, die eine geschäftliche/Unternehmen-Anwendungssoftware ausführt, gilt anzuerkennen, dass der Server 106 ein beliebiger Typ einer Multiprozessor-(Multikern-Rechner- oder Kommunikationsplattform sein kann, und dass die Software eine beliebige Art von Software sein kann, die ein gewisses Ausmaß einer Netzwerkkommunikation umfasst.
  • 2 zeigt ein Blockdiagramm 200 einer beispielhaften Ausführungsform in Übereinstimmung mit der vorliegenden Offenbarung. Der Server 106 ist so dargestellt, dass er einen Systemkern oder ein Betriebssystem (OS) 206, eine Netzwerkschnittstelle 208, eine oder mehrere Softwareanwendungen 108 und die dynamische Abstimmungsschaltungsanordnung 114 umfasst. Die dynamische Abstimmungsschaltungsanordnung 114 kann ferner eine Profilierungs- (oder Überwachungs-) Schaltungsanordnung 202 und Planungs-Schaltungsanordnung 204 umfassen, deren Vorgänge nachstehend genauer beschrieben werden. Der Server 106 ist auch so dargestellt, dass er eine Anzahl (N) von CPUs 210 umfasst, von denen jede eine Anzahl (M) von Prozesskernen 212 umfassen kann. Jeder Kern kann wiederum konfiguriert sein, mehrere Hardware-Threads auszuführen (z.B. logische Kerne oder Hyperthreading). Die Softwareanwendungen 108 können somit in Komponententeile (z.B. Prozesse, Softwarethreads etc.) aufgeteilt sein, die zumindest in einem gewissen Ausmaß parallel auf jeder CPU, jedem Kern und/oder logischen Kern ausgeführt werden.
  • Der Systemkern 206 kann konfiguriert sein, die Ausführung der Softwareanwendungen 108 zu verwalten und die Komponentenprozesse jener Anwendungen auf die verschiedenen CPUs 210 und Kerne 212 zu verteilen. Der Systemkern 206 kann verschiedene Datenstrukturen wie z.B. eine Ausführungswarteschlange für jeden CPU aufrechterhalten, die Prozesse auflisten, die auf dieser CPU ausgeführt werden können. Zusätzlich dazu kann der Systemkern ein Register oder eine Bitmaske aufrechterhalten, das/die jedem Prozess zugeordnet ist, um anzuzeigen, auf welchen Kernen dieser Prozess ausgeführt werden kann.
  • Die Netzwerkschnittstelle 208 kann konfiguriert sein, Pakete, z.B. Daten- und/oder Steuerpakete, über das Netzwerk 110 zu senden und zu empfangen, was eine Kommunikation zwischen den Softwareanwendungen 108 auf Server 106 und anderen Fernservern oder -Systemen ermöglicht. Die Netzwerkschnittstelle 208 kann ebenfalls konfiguriert sein, den Netzwerktraffic (z.B. die Anzahl von Paketen, die über einen gegebenen Zeitraum gesendet und/oder empfangen wurden) zu messen.
  • Unter Bezugnahme auf 3 sind die CPUs 210 so dargestellt, dass sie mehrere Kerne 212 umfassen, wobei jeder Kern ferner mehrere (K) Hardware-Threads oder logische Kerne 302 umfasst. Die CPUs 210 können konfiguriert sein, gemeinsame Ressourcen 310 zur gemeinsamen Nutzung bereitzustellen, z.B. von Kernen 212 dieser CPU. Die Kerne 212 können konfiguriert sein, gemeinsame Ressourcen 304 zur gemeinsamen Nutzung bereitzustellen, z.B. von den Hardware-(HW) Threads 302 dieses Kerns.
  • Beispiele für gemeinsam genutzte Kernressourcen 304 können Mikroarchitektur-Befehlspipelineressourcen wie z.B. Umordnungspuffer, Ladungspuffer, Reservierungsstationen und Caches Level 1 und Level 2 umfassen. Beispiele für gemeinsam genutzte CPU-Ressourcen 310 können zumindest den Cache des letzten Levels (LLC) umfassen.
  • Leistungszähler 320 (auch als Hardwarezähler bezeichnet) können auch für jede CPU 210 bereitgestellt werden und konfiguriert sein, Ereigniszähler oder andere Statistiken in Bezug auf verschiedene Arten von Hardware-Verwendungsereignissen oder Bedingungen in einem gegebenen Zeitrahmen bereitzustellen. In manchen Ausführungsformen können die Leistungszähler als Teil einer Hardwareleistungsüberwachungseinheit (PMU) implementiert sein, die in die CPU integriert ist, und die Zähler können in Register- und/oder Arbeitsspeicherpositionen integriert sein, die von der PMU aktualisiert werden und von der Profilierungsschaltungsanordnung 202 lesbar sind. Beispielsweise können Zähler bereitgestellt werden, um die Verwendung (oder verfügbare Kapazität) einer beliebigen der Befehlspipelineressourcen (Puffer, Caches etc.) anzugeben, die mit einer Befehlspipelineverzögerung in Zusammenhang stehen können. Andere Zähler können bereitgestellt werden, um Cache-Snoop-Antworten zu zählen, die darauf hindeuten, dass sich der Cache in einem modifizierten Zustand befindet, der mit Arbeitsspeicherkonflikten und möglichen Sperrkonflikten in Zusammenhang stehen kann. Andere Zähler können bereitgestellt werden, um Cache-Fehlerraten zu zählen, die abhängig von den Werten der anderen Leistungszähler auf Cache-Kapazitätsbeschränkungen oder Cache-Konflikte hindeuten können. Noch weitere Zähler können bereitgestellt werden, um Konflikte in Adressräumen, die auf Arbeitsspeichersteuerungen kartiert sind, die das Teilen der LLC zwischen Kernen erleichtern, nachzuverfolgen.
  • Viele Arten von Leistungszählern können verwendet werden, und die obige Liste soll nicht erschöpfend sein. Manche Arten von Zählern können angeben, dass Ressourcen eingeschränkt werden (z.B. der Befehlsumordnungspuffer ist voll), während andere Arten von Zählern Konflikte angeben (z.B. modifizierter Cache-Snoop-Zustand). In manchen Fällen können Kombinationen aus verschiedenen Zählern verwendet werden, um zu bestimmen, ob ein Skalierbarkeitsproblem auf Konflikte oder Beschränkungen zurückzuführen ist. Falls sich beispielsweise die Cache-Fehlerrate erhöht, aber der modifizierte Cache-Snoop-Zustandszähler auf einem relative geringen Wert bleibt, dann ist ein Cache-Fehler aufgrund einer Kapazitätsbeschränkung wahrscheinlicher als ein Zugriffskonflikt.
  • Zusätzlich dazu kann Netzwerkschnittstelle 208 konfiguriert sein, Zähler bereitzustellen, um die Anzahl von Paketen anzugeben, die gesendet und/oder empfangen wurden, um den Netzwerktraffic zu messen. Der Durchsatz oder die Leistung der Anwendung kann basierend auf einer Messung des jener Anwendung zugeordneten Netzwerktraffics geschätzt werden, der im Allgemeinen mit der Menge an Arbeitslast korreliert, die von der Anwendung erzielt wird (z.B. Seitendownloads pro Sekunde, Übertragungen pro Sekunde, Arbeitsvorgänge pro Sekunde, Benutzeranfragen, die pro Sekunde verarbeitet werden etc.). Dies trifft vor allem auf geschäftliche/Unternehmens-Softwareanwendungen zu. Die Verwendung eines einer Softwareanwendung zugehörigen gemessenen Netzwerktraffics verhindert als Indikator des Anwendungsdurchsatzes die Notwendigkeit von bereits zuvor bekannten Informationen zum speziellen Verhalten, den inneren Arbeitsabläufen oder dem Zweck der Anwendung, die als allgemeines Informationsmaterial nur schwierig zu erhalten sind. Somit kann dieses Verfahren des Schätzens des Anwendungsdurchsatzes auf eine beliebige Anwendung (die Netzwerkkommunikationen verwendet) von einem beliebigen Software-Verkäufer ohne Notwendigkeit für eine Zusammenarbeit mit diesem Verkäufer oder als Analyse des Anwendungssoftwareaufbaus durchgeführt werden.
  • Die Profilierungsschaltungsanordnung 202 kann konfiguriert sein, um: die CPU-Verwendung (z.B. den Prozentsatz der Zeit, in der die CPU ungenutzt ist) zu messen; den Anwendungsdurchsatz (z.B. basierend auf dem Netzwerkdurchsatz) zu schätzen, um das Vorliegen eines Skalierbarkeitsproblems zu identifizieren; und einen oder mehrere der Leistungszähler 320 zu lesen und zu analysieren, um die Ursache des Skalierbarkeitsproblems zu bestimmen. In manchen Ausführungsformen kann die Profilierungschaltungsanordnung 202 als Softwaredriver-Komponente des Systemkerns 206 oder als eine Komponente des Systemkernplaners ausgeführt sein. Die Profilierungsschaltungsanordnung 202 kann Informationen durch direktes Abfühlen der Leistungszähler (oder PMU) oder unter Verwendung existierender Profilierungswerkzeuge wie „EMON“, bereitgestellt von Intel, oder „perf“, bereitgestellt von Linux OS, erhalten. Der Betrieb der Profilierungsschaltungsanordnung 202 wird nachstehend in Verbindung mit 4 und insbesondere in Verbindung mit Vorgängen 404, 406, 408, 410 und 414 näher beschrieben.
  • Die Planungsschaltungsanordnung 204 kann konfiguriert sein, die Verteilung der Softwareanwendungskomponenten (z.B. Prozesse, Softwarethreads etc.) auf die CPUs, lokalen Kerne und logischen Kerne basierend auf der von der Profilierungsschaltungsanordnung 202 bereitgestellten Analyse abgleichen oder erneut abgleichen. Dies kann z.B. durch erneutes Anbinden der Anwendung an weniger CPUs, durch Blockieren des Hyperthreadings und/oder durch Blockieren einiger Kerne einer CPU erzielt werden. Der Betrieb der Planungsschaltungsanordnung 204 wird nachstehend in Verbindung mit 4 und insbesondere in Verbindung mit Vorgängen 412, 416 und 418 näher beschrieben.
  • 4 zeigt ein Flussdiagramm von Vorgängen 400 einer beispielhaften Ausführungsform in Übereinstimmung mit der vorliegenden Offenbarung. Bei Vorgang 402 wird die Softwareanwendung ausgeführt. Bei Vorgang 404 wird die CPU-Verwendung gemessen und mit einem Schwellenverwendungswert verglichen. In manchen Ausführungsformen kann der Schwellenverwendungswert in einem Bereich von 45 bis 55 % Verwendung liegen. Falls die Verwendung geringer ist als der Schwellenwert, kann die Belastung des Systems klein genug sein, dass ein dynamisches Abstimmen keine ausreichende Leistungsverbesserung bereitstellen kann, um ihre Verwendung zu rechtfertigen, und somit wird die Ausführung der Anwendung ohne Modifikation weiter zugelassen.
  • Falls die CPU-Verwendung jedoch die Schwelle überschreitet, dann kann die Systemprofilierung und Analyse in Vorgang 406 eingeleitet werden. Dies kann das Schätzen des Durchsatzes der Anwendung umfassen, das z.B. wie bereits zuvor beschrieben auf dem gemessenen Netzwerktraffic basieren kann.
  • Bei Vorgang 408 wird eine Bestimmung vorgenommen, ob die Anwendung in einem annehmbaren Ausmaß skaliert oder ob sie Skalierbarkeitsprobleme aufweist. Der geschätzte Anwendungsdurchsatz von Vorgang 406 wird über einen ausgewählten Zeitraum hinweg nachverfolgt und mit der CPU-Verwendung verglichen. Falls herausgefunden wird, dass die CPU-Verwendung oder die Last auf dem System mit einer schnelleren Rate ansteigt als der Anwendungsdurchsatz, dann kann ein Skalierbarkeitsproblem vorliegen. Falls sich die gemessene Verwendung beispielsweise von 52 % auf 89 % erhöht (einem Anstieg von etwa 70 %), der geschätzte Anwendungsdurchsatz jedoch nur um 40 % ansteigt, dann kann bestimmt werden, dass ein Skalierbarkeitsproblem vorliegt. Anders ausgedrückt kann ein gewisses Maß an Proportionalität oder einer linearen Beziehung zwischen der Verwendung und dem Durchsatz erwartet werden, wenn eine Anwendung gut skaliert, und eine Abweichung von diesem Maß an Proportionalität kann auf ein Skalierbarkeitsproblem hindeuten. Die Differenz zwischen der Anstiegsrate der CPU-Verwendung und der Anstiegsrate des Anwendungsdurchsatzes, die erforderlich ist, um die Detektion eines Skalierbarkeitsproblems auszulösen, kann basierend auf heuristischen Bewertungen, Versuchen oder anderen geeigneten Verfahren bestimmt werden. Diese Differenz zwischen Anstiegsraten kann als Skalenfaktor ausgedrückt werden, und ein Schwellenskalenfaktor kann ausgewählt werden, um die Detektion eines Skalierbarkeitsproblems auszulösen, wenn eine Schwelle überschritten wird. In manchen Ausführungsformen kann der Schwellenskalenfaktor auf einen Wert im Bereich von 1,2 bis 1,3 eingestellt werden, um die Tatsache miteinzubinden, dass, obwohl ein theoretischer Wert von 1,0 erwartet werden könnte (welcher eine perfekte Proportionalität zwischen der Anstiegsrate der CPU-Verwendung und der Anstiegsrate des Anwendungsdurchsatzes angibt), es in der Praxis zu Abweichungen und Rauschen in der Messung kommen kann.
  • Falls ein Skalierbarkeitsproblem detektiert wird, dann wird bei Vorgang 410 eine Bestimmung vorgenommen, ob das Skalierbarkeitsproblem durch Konflikte oder durch eine beschränkte Ressourcenteilung verursacht wird. In manchen Ausführungsformen kann auf Hardwareleistungszähler zugegriffen und diese können gelesen werden, um Statistiken über Konflikte über Beschränkungen zu erhalten, und wie sich diese auf die Anwendungsausführung auswirken, wie bereits zuvor in Verbindung mit 3 beschrieben wurde. Falls bestimmt wird, dass die Skalierbarkeit von einem Beschränkungsproblem beeinträchtigt wird, dann kann die Anwendung bei Vorgang 412 erneut auf eine geringere Anzahl von CPUs angebunden werden. Dies reduziert die Möglichkeit eines Konflikts zwischen CPUs, die Komponenten derselben Anwendung ausführen (z.B. Reduzieren der Kommunikation zwischen CPUs für Sperren etc.). Dies kann auch manche jener CPUs freistellen, die andere Prozesse ausführen, die anderen Anwendungen zugeordnet sind (was die gesamte Systemeffizienz verbessern kann) oder es ihnen ermöglichen, unbenutzt zu sein (was den Leistungsverbrauch verbessern kann). Dieses erneute Anbinden kann z.B. bei manchen Systemkernen durch Modifizieren einer Bitmaske erreicht werden, die dem Prozess der Anwendung zugeordnet ist.
  • Falls jedoch bestimmt wird, dass die Skalierbarkeit von Ressourcenbeschränkungen beeinträchtigt wird, dann wird bei Vorgang 414 eine weitere Bestimmung vorgenommen, die angibt, ob die identifizierten Ressourcen von mehreren Threads auf demselben Kern oder von mehreren Kernen auf derselben CPU gemeinsam genutzt werden. Im Fall einer gemeinsamen Nutzung durch mehrere Threads auf demselben Kern (z.B. ist die gemeinsam genutzte Ressource auf einen Prozesskern beschränkt), dann wird das Hyperthreading bei Vorgang 416 deaktiviert. Anderenfalls werden manche der Kerne auf der CPU bei Vorgang 418 deaktiviert.
  • Nach dem Abstimmen der Anwendungsausführung wie z.B. bei beliebigen der Vorgänge 412, 416 oder 418 wird der Anwendung erlaubt, die Ausführung bei Vorgang 402 fortzusetzen. Die Anwendung wird weiterhin überwacht und zusätzliche Abstimmungen oder ein erneutes Abgleichen können falls notwendig durchgeführt werden, z.B. falls die Bedingungen zwischen Konflikt und Ressourcenbeschränkung variieren. Falls außerdem in manchen Ausführungsformen bestimmt wird, dass Abstimmungsänderungen einen gegenteiligen (oder relativ vernachlässigbaren) Effekt auf die Leistung ausüben, können jene Veränderungen zurückgenommen oder umgekehrt werden.
  • 5 zeigt ein Flussdiagramm von Vorgängen 500 einer weiteren beispielhaften Ausführungsform in Übereinstimmung mit der vorliegenden Offenbarung. Die Vorgänge stellen ein Verfahren zum dynamischen Abstimmen von Multiprozessor- und Multikern-Rechnersystemen bereit. Bei Vorgang 510 wird das Auftreten eines Skalierbarkeitsproblems, das der Ausführung einer Anwendung auf dem Multiprozessorrechnersystem zugeordnet ist, detektiert. Bei Vorgang 520 wird eine Bestimmung dessen vorgenommen, ob das Skalierbarkeitsproblem mit einem Zugriffskonflikt oder einer Ressourcenbeschränkung in Zusammenhang steht. Bei Vorgang 530 wird die Anwendung, falls das Skalierbarkeitsproblem einem Zugriffskonflikt zugeordnet wurde, erneut an eine geringere Anzahl von Prozessoren des Multiprozessorrechnersystems angebunden.
  • 6 zeigt ein Systemdiagramm 600 einer beispielhaften Ausführungsform in Übereinstimmung mit der vorliegenden Offenbarung. Das System 600 kann eine Rechenplattform 610 wie z.B. ein Server, ein Arbeitsplatzgerät oder ein Desktopcomputer sein. Es gilt jedoch anzuerkennen, dass Ausführungsformen des hierin beschriebenen Systems nicht auf Rechenplattformen beschränkt sind, und in manchen Ausführungsformen kann das System 600 eine Kommunikations-, Unterhaltungs- oder eine beliebige andere geeignete Art von Vorrichtung sein, wie z.B. ein Smartphone, ein Smart-Tablet, ein persönlicher digitaler Assistent (PDA), eine mobile Internetvorrichtung (MID), ein konvertierbares Tablet, ein Notebook oder ein Laptopcomputer. Die Vorrichtung kann dem Benutzer im Allgemeinen über ein Displayelement 660 wie z.B. einem Touchscreen, einem Flüssigkristalldisplay (LCD) oder einem beliebigen anderen Displaytyp verschiedene Schnittstellen anzeigen.
  • Das System 600 ist so dargestellt, dass es ein Prozessorsystem 602 umfasst, dass ferner eine beliebige Anzahl von Prozessoren 620 und Arbeitsspeichern 630 umfassen kann. In manchen Ausführungsformen können die Prozessoren 620 als eine beliebige Anzahl von Prozessorkernen implementiert sein (z.B. als HW-Kerne). Der Prozessor (oder Prozessorkerne) können eine beliebige Art von Prozessor sein, z.B. ein Allzweckprozessor, ein Mikroprozessor, ein eingebetteter Prozessor, ein digitaler Signalprozessor (DSP), ein Grafikprozessor (GPU), ein Netzwerkprozessor, eine feldprogrammierbare Gateanordnung oder eine andere Vorrichtung, die konfiguriert ist, um Code auszuführen. Die Prozessoren können Multithread-Kerne sein, in denen die HW-Kerne mehr als einen Hardware-Thread-Kontext (oder „logischen Kern“) pro HW-Kem umfassen. Der Arbeitsspeicher 630 kann an die Prozessoren gekoppelt sein. Der Arbeitsspeicher 630 kann ein beliebiger aus einer großen Vielzahl von Arbeitsspeichern sein (einschließlich verschiedener Ebenen einer Arbeitsspeicherhierarchie und/oder Arbeitsspeichercaches), wie auf dem Gebiet bekannt oder ansonsten auf dem Gebiet verfügbar. Es gilt anzuerkennen, dass die Prozessoren und der Arbeitsspeicher konfiguriert sein können, eine oder mehrere Benutzeranwendungen oder andere Software zu speichern, zu hosten und/oder auszuführen. Diese Anwendungen können z.B. einen beliebigen aus einem geschäftlichen/Unternehmens-, Rechen-, Kommunikations-, Datenverwaltungs-, Datenspeicher- und/oder Benutzerschnittstellenvorgang umfassen. In manchen Ausführungsformen können diese Anwendungen eine beliebige andere Komponente der Plattform 610 verwenden oder damit interagieren.
  • System 600 ist ebenfalls so dargestellt, dass es eine Netzwerkschnittstellenschaltungsanordnung 208 umfasst, die drahtgebundene oder drahtlose Kommunikationsfähigkeiten wie z.B. Ethernet, Zellenkommunikationen, drahtloses LAN-Netzwerk (WLAN), Bluetooth® und/oder Nahfeldkommunikation (NFC) aufweist. Die Netzwerkkommunikationen können einem beliebigen bestehenden oder noch zu entwickelnden Kommunikationsstandard, einschließlich vergangener, aktueller und zukünftiger Versionen von Ethernet-, Bluetooth®-, WLAN- und Handy-Kommunikationsstandards, entsprechen oder anderweitig mit diesen kompatibel sein.
  • System 600 ist auch so dargestellt, dass es ein Eingabe-/Ausgabe- (IO) System oder eine Steuereinheit 650 umfasst, die konfiguriert sein kann, eine Datenkommunikation zwischen Prozessor 620 und anderen Elementen von System 600 oder anderen Elementen (nicht dargestellt), die extern zu dem System 600 sind, zu ermöglichen oder zu verwalten. System 600 ist ebenfalls so dargestellt, dass es ein Speichersystem 640 umfasst, dass z.B. als ein oder mehrere Festplattenlaufwerke (HDDs) oder Festkörperlaufwerke (SSDs) konfiguriert sein kann.
  • System 600 ist so dargestellt, dass es eine dynamische Abstimmungsschaltungsanordnung 114 umfasst, die mit dem Prozessorsystem 602 gekoppelt ist und konfiguriert ist, ein Profilieren/Überwachen und Planen/erneutes Abgleichen von Softwareanwendungen durchzuführen, wie bereits zuvor beschrieben.
  • Es gilt anzuerkennen, dass die verschiedenen Komponenten des Systems 600 in manchen Ausführungsformen in einer System-on-Chip- (SoC) Architektur kombiniert werden können. In manchen Ausführungsformen können die Komponenten Hardware-Komponenten, Firmware-Komponenten, Software-Komponenten oder eine beliebige geeignete Kombination von Hardware, Firmware oder Software sein.
  • „Schaltungsanordnung“, wie hierin in einer beliebigen Ausführungsform verwendet, kann z.B. festverdrahtete Schaltungsanordnungen, programmierbare Schaltungsanordnungen wie Computerprozessoren, umfassend einen oder mehrere einzelne befehlsverarbeitende Kerne, Zustandsmaschinenschaltungsanordnungen und/oder Firmware, die von der programmierbaren Schaltungsanordnung ausgeführte Befehle speichert, einzeln oder in einer beliebigen Kombination umfassen. die Schaltungsanordnung kann einen Prozessor und/oder eine Steuereinheit umfassen, der/die konfiguriert ist, einen oder mehrere Befehle auszuführen, um einen oder mehrere der hierin beschriebenen Vorgänge durchzuführen. Die Befehle können z.B. als Anwendung, Software, Firmware etc. ausgeführt sein, die konfiguriert sein können, auszulösen, dass die Schaltungsanordnung einen beliebigen der zuvor genannten Vorgänge durchführt. Software kann als ein Softwarepaket, Code, Befehle, Befehlssätze und/oder Daten ausgeführt sein, das/die auf einem computerlesbaren Speichermedium aufgezeichnet ist/sind. Software kann so ausgeführt oder implementiert sein, dass sie eine beliebige Anzahl von Prozessen umfasst, und die Prozesse können wiederum so ausgeführt oder implementiert sein, dass sie eine beliebige Anzahl von Threads etc. in hierarchischer Ordnung umfassen. Firmware kann als Code, Befehle oder Befehlssätze und/oder Daten ausgeführt sein, die in Arbeitsspeichervorrichtungen festcodiert (z.B. nichtflüchtig) sind. Die Schaltungsanordnung kann kollektiv oder einzeln als Schaltungsanordnung ausgeführt sein, die einen Teil eines größeren Systems bildet, z.B. einer integrierten Schaltung (IC), einer anwendungsspezifischen integrierten Schaltung (ASIC), einem System-on-Chip (SoC), von Desktop-Computern, von Laptop-Computern, von Tablet-Computern, von Servern, von Smartphones etc. Andere Ausführungsformen können als Software implementiert sein, die von einer programmierbaren Steuervorrichtung ausgeführt wird. Wie hierin beschrieben, können verschiedene Ausführungsformen unter Verwendung von Hardwareelementen, Softwareelementen oder einer beliebigen Kombination davon implementiert werden. Beispiele für Hardwareelemente können Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z.B. Transistoren, Widerstände, Kondensatoren, Induktoren usw.), integrierte Schaltungen, anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare Logikvorrichtungen (PLD), digitale Signalprozessoren (DSP), feldprogrammierbare Gateanordnungen (FPGA), Logik-Gates, Register, Halbleitervorrichtungen, Chips, Mikrochips, Chipsätze usw. umfassen.
  • Ein beliebiger der hierin beschriebenen Vorgänge kann in einer oder mehreren Speichervorrichtungen implementiert werden, auf der Befehle einzeln oder in Kombination gespeichert sind, die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, einen oder mehrere Vorgänge durchführen. Zudem ist ebenfalls vorgesehen, dass die hierin beschriebenen Vorgänge einzeln oder ein einer beliebigen Teilkombination durchgeführt werden können. Somit müssen nicht alle Vorgänge (z.B. ein beliebiges der Flussdiagramme) durchgeführt werden, und die vorliegende Offenbarung sieht ausdrücklich vor, dass alle Teilkombinationen solcher Vorgänge möglich sind, wie von einem Fachmann verstanden wird. Zudem ist ebenfalls vorgesehen, dass hierin beschriebene Vorgänge auf eine Vielzahl von physikalischen Vorrichtungen aufgeteilt werden können, darunter Verarbeitungsstrukturen an mehr als einer physikalischen Position. Die Speichervorrichtungen können einen beliebigen Typ von realen Vorrichtungen umfassen, z.B. einen beliebigen Typ von Laufwerk, einschließlich Festplatten, Disketten, optische Laufwerke, Compact-Disk-Nur-Lesespeicher (CD-ROMs), Compact-Disk-Rewritables (CD-RWs) und magnetooptische Speicher, Halbleitervorrichtungen wie Nur-Lesespeicher (ROMs), Direktzugriffsspeicher (RAMs) wie dynamische und statische RAMs, löschbare programmierbare Nur-Lesespeicher (EPROMs), elektrisch löschbare programmierbar Nur-Lesespeicher (EEPROMs), Flash-Speicher, Halbleiterplatten (SSDs), magnetische oder optische Karten oder einen beliebigen Typ von Medium, der sich zum Speichern von elektronischen Befehlen eignet.
  • Somit stellt die vorliegende Offenbarung Systeme, Vorrichtungen, Verfahren und computerlesbare Medien zum dynamischen Abstimmen von Multiprozessor- und Multikern-Rechnersystemen bereit, um die Anwendungsleistung und Skalierbarkeit zu verbessern und den Leistungsverbrauch des Systems zu verringern. Die folgenden Beispiele gehören zu weiteren Ausführungsformen.
  • Gemäß Beispiel 1 ist ein System zum Abstimmen mehrerer Prozessoren bereitgestellt. Das System kann Folgendes umfassen: eine Vielzahl von Prozessoreinheiten (CPUs); Profilierungsschaltungsanordnung zum Detektieren des Vorliegens eines Skalierbarkeitsproblems, das dem Ausführen einer Anwendung auf der Vielzahl von CPUs zuzuordnen ist, und zum Bestimmen, ob das Skalierbarkeitsproblem auf einen Zugriffskonflikt oder eine Ressourcenbeschränkung zurückzuführen ist; und eine Planungsschaltungsanordnung zum Anbinden der Anwendung an einen Teilsatz aus der Vielzahl von CPUs, falls das Skalierbarkeitsproblem auf einen Zugriffskonflikt zurückzuführen ist.
  • Beispiel 2 kann den Gegenstand von Beispiel 1 umfassen, und die Profilierungsschaltungsanordnung ist weiters ausgelegt, zu bestimmen, ob die Ressource von mehreren Prozessorkernen von einer der CPUs gemeinsam genutzt wird, wenn das Skalierbarkeitsproblem auf die Ressourcenbeschränkung zurückzuführen ist; und die Planungsschaltungsanordnung ist ferner ausgeführt, einen Teilsatz der mehreren Prozessorkerne zu deaktivieren, falls die Bestimmung der gemeinsamen Nutzung der Ressourcen zutrifft.
  • Beispiel 3 kann den Gegenstand der Beispiele 1 und 2 umfassen, und die Profilierungsschaltungsanordnung ist ferner ausgelegt, zu bestimmen, ob die Ressource auf einen Prozessorkern einer der CPUs beschränkt ist, ob das Skalierbarkeitsproblem auf die Ressourcenbeschränkung zurückzuführen ist; und die Planungsschaltungsanordnung ist ferner ausgelegt, das Hyperthreading auf dem Prozessorkern zu deaktivieren, wenn die Bestimmung der Ressourcenbeschränkung zutrifft.
  • Beispiel 4 kann den Gegenstand der Beispiele 1-3 umfassen, und die Profilierungsschaltungsanordnung ist ferner ausgelegt, das Vorliegen eines Skalierbarkeitsproblems basierend auf den Folgenden zu detektieren: Messen einer Anstiegsrate der Verwendung von zumindest einer der CPUs; Messen einer Anstiegsrate des Durchsatzes der Anwendung; und Bestimmen, dass eine Anstiegsrate der Verwendung um einen Schwellenskalenfaktor größer ist als die Anstiegsrate des Durchsatzes.
  • Beispiel 5 kann den Gegenstand der Beispiele 1-4 umfassen, und die Profilierungsschaltungsanordnung ist ferner ausgelegt, das Vorliegen eines Skalierbarkeitsproblems basierend auf der Bestimmung zu detektieren, dass die Verwendung der zumindest einen CPUs einen Schwellenverwendungswert überschreitet.
  • Beispiel 6 kann den Gegenstand der Beispiele 1-5 umfassen, und der Durchsatz der Anwendung wird basierend auf dem gemessenen Netzwerktraffic, der der Anwendung zugeordnet ist, geschätzt.
  • Beispiel 7 kann den Gegenstand der Beispiele 1-6 umfassen, und der Zugriffskonflikt ist ein Datenzugriffskonflikt oder ein Konflikt für eine Synchronisationssperre.
  • Beispiel 8 kann den Gegenstand der Beispiele 1-7 umfassen, und die Ressourcenbeschränkung ist der Kapazität der Befehlspipelinepuffer oder der Kapazität der Cache-Speicher zugeordnet.
  • Beispiel 9 kann den Gegenstand der Beispiele 1-8 umfassen, der ferner einen oder mehrere Leistungszähler zum Nachverfolgen von Ereignissen umfasst, die der Hardwareleistung zugeordnet sind, und die Profilierungsschaltungsanordnung ist ferner ausgelegt, basierend auf dem Auslesen eines oder mehrerer der Leistungszähler zu bestimmen, ob das Skalierbarkeitsproblem auf einen Zugriffskonflikt oder einer Ressourcenbeschränkung zurückzuführen ist.
  • Gemäß Beispiel 10 ist ein Verfahren zum Abstimmen eines Multiprozessor-Rechnersystems bereitgestellt. Das Verfahren kann Folgendes umfassen: Detektieren des Vorliegens eines Skalierbarkeitsproblems, das dem Ausführen einer Anwendung auf einer Anzahl von Prozessoren des Multiprozessor-Rechnersystems zugeordnet ist; Bestimmen, ob das Skalierbarkeitsproblem auf einen Zugriffskonflikt oder eine Ressourcenbeschränkung zurückzuführen ist; und wenn das Skalierbarkeitsproblem auf einen Zugriffskonflikt oder eine Ressourcenbeschränkung zurückzuführen ist, Anbinden der Anwendung an eine geringere Anzahl der Prozessoren des Multiprozessor-Rechnersystems.
  • Beispiel 11 kann den Gegenstand von Beispiel 10 umfassen, der ferner Folgendes umfasst, wenn das Skalierbarkeitsproblem auf die Ressourcenbeschränkung zurückzuführen ist: Bestimmen, ob die Ressource von mehreren Prozessorkernen eines der Prozessoren gemeinsam genutzt wird; und, falls die Bestimmung zutrifft, Deaktivieren eines Teilsatzes der mehreren Prozessorkerne.
  • Beispiel 12 kann den Gegenstand der Beispiele 10 und 11 umfassen, der ferner Folgendes umfasst, wenn das Skalierbarkeitsproblem auf die Ressourcenbeschränkung zurückzuführen ist: Bestimmen, ob die Ressource auf einen Prozessorkern aus einem der Prozessoren beschränkt ist; und, falls die Bestimmung zutrifft, Deaktivieren des Hyperthreadings auf dem Prozessorkern.
  • Beispiel 13 kann den Gegenstand der Beispiele 10-12 umfassen, und das Detektieren des Vorliegens eines Skalierbarkeitsproblems umfasst ferner Folgendes: Messen einer Anstiegsrate der Verwendung von zumindest einem der Prozessoren; Messen einer Anstiegsrate des Durchsatzes der Anwendung; und Bestimmen, dass eine Anstiegsrate der Verwendung die Anstiegsrate des Durchsatzes um einen Schwellenskalenfaktor übersteigt.
  • Beispiel 14 kann den Gegenstand der Beispiele 10-13 umfassen, und das Detektieren des Vorliegens eines Skalierbarkeitsproblems umfasst ferner das Bestimmen, dass die Verwendung des zumindest einen der Prozessoren einen Schwellenverwendungswert übersteigt.
  • Beispiel 15 kann den Gegenstand der Beispiele 10-14 umfassen, und der Durchsatz der Anwendung wird basierend auf gemessenem Netzwerktraffic geschätzt, der der Anwendung zugeordnet ist.
  • Beispiel 16 kann den Gegenstand der Beispiele 10-15 umfassen, und der Zugriffskonflikt ist ein Datenzugriffskonflikt oder ein Konflikt um eine Synchronisationssperre.
  • Beispiel 17 kann den Gegenstand der Beispiele 10-16 umfassen, und die Ressourcenbeschränkung ist der Kapazität der Befehlspipelinepuffer oder der Kapazität der Cache-Speicher zugeordnet.
  • Beispiel 18 kann den Gegenstand der Beispiele 10-17 umfassen, und das Bestimmen, ob das Skalierbarkeitsproblem auf einen Zugriffskonflikt oder eine Ressourcenbeschränkung zurückzuführen ist, umfasst ferner das Auslesen eines oder mehrerer Zähler, um Ereignisse nachzuverfolgen, die der Hardwareleistung zuzuschreiben sind.
  • Gemäß Beispiel 19 ist/sind ein computerlesbares Speichermedium oder computerlesbare Speichermedien bereitgestellt, auf dem Befehle gespeichert sind, die, wenn sie von einem Prozessor ausgeführt werden, die folgenden Vorgänge zum Abstimmen eines Multiprozessor-Rechnersystems auslösen. Die Vorgänge können Folgendes umfassen: Detektieren des Vorliegens eines Skalierbarkeitsproblems, das der Ausführung einer Anwendung auf einer Anzahl von Prozessoren des Multiprozessor-Rechnersystems zugeordnet ist; Bestimmen, ob das Skalierbarkeitsproblem auf einen Zugriffskonflikt oder eine Ressourcenbeschränkung zurückzuführen ist; und falls das Skalierbarkeitsproblem auf einen Zugriffskonflikt zurückzuführen ist, Anbinden der Anwendung an eine geringere Anzahl der Prozessoren des Multiprozessor-Rechnersystems.
  • Beispiel 20 kann den Gegenstand von Beispiel 19 umfassen, der ferner Folgendes umfasst, wenn das Skalierbarkeitsproblem auf eine Ressourcenbeschränkung zurückzuführen ist: Bestimmen, ob die Ressource von mehreren Prozessorkernen eines der Prozessoren gemeinsam genutzt wird; und falls die Bestimmung zutrifft, Deaktivieren eines Teilsatzes der mehreren Prozessorkerne.
  • Beispiel 21 kann den Gegenstand der Beispiele 19 und 20 umfassen, der ferner Folgendes umfasst, wenn das Skalierbarkeitsproblem auf eine Ressourcenbeschränkung zurückzuführen ist: Bestimmen, ob die Ressource auf einen Prozessorkern eines der Prozessoren beschränkt ist; und, falls die Bestimmung zutrifft, Deaktivieren des Hyperthreadings auf dem Prozessorkern.
  • Beispiel 22 kann den Gegenstand der Beispiele 19-21 umfassen, und das Detektieren des Vorliegens eines Skalierbarkeitsproblems umfasst ferner Folgendes: Messen einer Anstiegsrate der Verwendung von zumindest einem der Prozessoren; Messen einer Anstiegsrate des Durchsatzes der Anwendung; und Bestimmen, dass die Anstiegsrate der Verwendung die Anstiegsrate des Durchsatzes um einen Schwellenskalenwert übersteigt.
  • Beispiel 23 kann den Gegenstand der Beispiele 19-22 umfassen, und das Detektieren des Vorliegens eines Skalierbarkeitsproblems umfasst ferner des bestimmen, dass die Verwendung von zumindest einem der Prozessoren einen
  • Beispiel 24 kann den Gegenstand der Beispiele 19-23 umfassen, und der Durchsatz der Anwendung wird basierend auf dem gemessenen Netzwerktraffic, der der Anwendung zugeordnet ist, geschätzt.
  • Beispiel 25 kann den Gegenstand der Beispiele 19-24 umfassen, und der Zugriffskonflikt ist ein Datenzugriffskonflikt oder ein Konflikt um eine Synchronisationssperre.
  • Beispiel 26 kann den Gegenstand der Beispiele 19-25 umfassen, und die Ressourcenbeschränkung ist der Kapazität der Befehlspipelinepuffer oder der Kapazität der Cache-Speicher zugeordnet.
  • Beispiel 27 kann den Gegenstand der Beispiele 19-26 umfassen, und das Bestimmen, ob das Skalierbarkeitsproblem auf einen Zugriffskonflikt oder eine Ressourcenbeschränkung zurückzuführen ist, umfasst ferner das Auslesen eines oder mehrerer Zähler, um Ereignisse nachzuverfolgen, die der Hardwareleistung zugeordnet sind.
  • Gemäß Beispiel 28 ist ein System zum Abstimmen eines Multiprozessor-Rechnersystems bereitgestellt. Das System kann Folgendes umfassen: Mittel zum Detektieren des Vorliegens eines Skalierbarkeitsproblems, das der Ausführung einer Anordnung auf einer Anzahl von Prozessoren des Multiprozessor-Rechnersystems zugeordnet ist; Mittel zum Bestimmen, ob das Skalierbarkeitsproblem auf einen Zugriffskonflikt oder eine Ressourcenbeschränkung zurückzuführen ist; und falls das Skalierbarkeitsproblem auf den Zugriffskonflikt zurückzuführen ist, Mittel zum Anbinden der Anwendung an eine geringere Anzahl der Prozessoren des Multiprozessor-Rechnersystems.
  • Beispiel 29 kann den Gegenstand von Beispiel 28 umfassen, das ferner Folgendes umfasst, wenn das Skalierbarkeitsproblem auf die Ressourcenbeschränkung zurückzuführen ist: Mittel zum Bestimmen, ob die Ressource von mehreren Prozessorkernen eines der Prozessoren gemeinsam genutzt wird, und, falls die Bestimmung zutrifft, Mittel zum Deaktivieren eines Teilsatzes der mehreren Prozessorkerne.
  • Beispiel 30 kann den Gegenstand der Beispiele 28 und 29 umfassen, der ferner Folgendes umfasst, wenn das Skalierbarkeitsproblem auf die Ressourcenbeschränkung zurückzuführen ist: Mittel zum Bestimmen, ob die Ressource auf einen Prozessorkern aus einem der Prozessoren beschränkt ist; und, falls die Bestimmung zutrifft, Mittel zum Deaktivieren des Hyperthreadings auf dem Prozessorkern.
  • Beispiel 31 kann den Gegenstand der Beispiele 28-30 umfassen, und das Detektieren des Vorliegens eines Skalierbarkeitsproblems umfasst ferner Folgendes: Mittel zum Messen einer Anstiegsrate der Verwendung von zumindest einem der Prozessoren; Mittel zum Messen einer Anstiegsrate des Durchsatzes der Anwendung; und Mittel zum Bestimmen, dass die Anstiegsrate der Verwendung die Anstiegsrate des Durchsatzes um einen Schwellenskalenfaktor übersteigt.
  • Beispiel 32 kann den Gegenstand der Beispiele 28-31 umfassen, und das Detektieren des Vorliegens eines Skalierbarkeitsproblems umfasst ferner Mittel zum Bestimmen, dass die Verwendung des zumindest einen Prozessors einen Schwellenverwendungswert übersteigt.
  • Beispiel 33 kann den Gegenstand der Beispiele 28-32 umfassen, und der Durchsatz der Anwendung wird basierend auf dem gemessenen Netzwerktraffic geschätzt, der der Anwendung zugeordnet ist.
  • Beispiel 34 kann den Gegenstand der Beispiele 28-33 umfassen, und der Zugriffskonflikt ist ein Datenzugriffskonflikt oder ein Konflikt um eine Synchronisationssperre.
  • Beispiel 35 kann den Gegenstand der Beispiele 28-34 umfassen, und die Ressourcenbeschränkung ist der Kapazität der Befehlspipelinepuffer oder der Kapazität der Cache-Speicher zugeordnet.
  • Beispiel 36 kann den Gegenstand der Beispiele 28-35 umfassen, und das Bestimmen, ob das Skalierbarkeitsproblem auf einen Zugriffskonflikt oder eine Ressourcenbeschränkung zurückzuführen ist, umfasst ferner Mittel zum Auslesen eines oder mehrerer Zähler, um Ereignisse, die der Hardwareleistung zugeordnet sind, nachzuverfolgen.
  • Die Terminologie und Ausdrücke, die hierin verwendet wurden, werden als beschreibende und nicht als beschränkende Terminologie verwendet, und es besteht keine Absicht in der Verwendung solcher Terminologie und Ausdrücke, jegliche Äquivalente von hierin dargestellten und beschriebenen Merkmalen (oder Teilen davon) auszuschließen, und es gilt zu verstehen, dass verschiedene Modifikationen innerhalb des Schutzumfangs der Patentansprüche möglich sind. Dementsprechend sollen die Patentansprüche alle solche Äquivalente abdecken. Verschiedene Merkmale, Aspekte und Ausführungsformen wurden hierin beschrieben. Die Merkmale, Aspekte und Ausführungsformen sind auch für die Kombination miteinander sowie für Variationen und Modifikationen ausgelegt, wie Fachleute auf dem Gebiet verstehen. Die vorliegende Offenbarung sollte deshalb als eine solche angesehen werden, die solche Kombinationen, Variationen und Modifikationen umfasst.

Claims (25)

  1. System, das Folgendes umfasst: eine Vielzahl von Prozessoreinheiten (CPUs); eine Profilierungsschaltungsanordnung zum Detektieren des Vorliegens eines Skalierbarkeitsproblems, das der Ausführung einer Anwendung auf der Vielzahl von CPUs zugeordnet ist, und zum Bestimmen, ob das Skalierbarkeitsproblem auf einen Zugriffskonflikt oder eine Ressourcenbeschränkung zurückzuführen ist; und eine Planungsschaltungsanordnung zum Anbinden der Anwendung an einen Teilsatz aus der Vielzahl von CPUs, wenn das Skalierbarkeitsproblem auf den Zugriffskonflikt zurückzuführen ist.
  2. System nach Anspruch 1, wobei die Profilierungsschaltungsanordnung ferner ausgelegt ist, zu bestimmen, ob die Ressource von mehreren Prozessorkernen einer der CPUs gemeinsam genutzt wird, wenn das Skalierbarkeitsproblem auf die Ressourcenbeschränkung zurückzuführen ist; und die Planungsschaltungsanordnung ferner ausgelegt ist, einen Teilsatz der mehreren Prozessorkerne zu deaktivieren, wenn die Bestimmung der gemeinsamen Nutzung der Ressource zutrifft.
  3. System nach Anspruch 1, wobei die Profilierungsschaltungsanordnung ferner ausgelegt ist, zu bestimmen, ob die Ressource auf einen Prozessorkern einer der CPUs beschränkt ist, wenn das Skalierbarkeitsproblem auf die Ressourcenbeschränkung zurückzuführen ist; und die Planungsschaltungsanordnung ferner ausgelegt ist, das Hyperthreading auf dem Prozessorkern zu deaktivieren, wenn die Bestimmung der Ressourcenbeschränkung zutrifft.
  4. System nach Anspruch 1, wobei die Profilierungsschaltungsanordnung ferner ausgelegt ist, das Vorliegen eines Skalierbarkeitsproblems basierend auf Folgenden zu detektieren: Messung einer Anstiegsrate der Verwendung von zumindest einer der CPUs; Messung einer Anstiegsrate des Durchsatzes der Anwendung; und Bestimmung, dass die Anstiegsrate der Verwendung die Anstiegsrate des Durchsatzes um einen Schwellenskalenfaktor übersteigt.
  5. System nach Anspruch 4, wobei die Profilierungsschaltungsanordnung ferner ausgelegt ist, das Vorliegen eines Skalierbarkeitsproblems basierend auf der Bestimmung zu detektieren, dass die Verwendung von der zumindest einen der CPUs einen Schwellenverwendungswert übersteigt.
  6. System nach Anspruch 4, wobei der Durchsatz der Anwendung basierend auf dem gemessenen Netzwerktraffic, der der Anwendung zugeordnet ist, geschätzt wird.
  7. System nach Anspruch 4, wobei der Zugriffskonflikt ein Datenzugriffskonflikt oder ein Konflikt um eine Synchronisationssperre ist.
  8. System nach Anspruch 4, wobei die Ressourcenbeschränkung der Kapazität der Befehlspipelinepuffer oder der Kapazität der Cache-Speicher zugeordnet ist.
  9. System nach Anspruch 4, das ferner einen oder mehrere Leistungszähler umfasst, um Ereignisse nachzuverfolgen, die der Hardwareleistung zugeordnet sind, wobei die Profilierungsschaltungsanordnung ferner ausgelegt ist, basierend auf dem Auslesen eines oder mehrerer der Leistungszähler zu bestimmen, ob das Skalierbarkeitsproblem auf einen Zugriffskonflikt oder eine Ressourcenbeschränkung zurückzuführen ist.
  10. Verfahren zum Abstimmen eines Multiprozessor-Rechnersystems, wobei das Verfahren Folgendes umfasst: Detektieren des Vorliegens eines Skalierbarkeitsproblems, das der Ausführung einer Anwendung auf einer Anzahl von Prozessoren des Multiprozessor-Rechnersystems zugeordnet ist; Bestimmen, ob das Skalierbarkeitsproblem auf einen Zugriffskonflikt oder eine Ressourcenbeschränkung zurückzuführen ist; und wenn das Skalierbarkeitsproblem auf den Zugriffskonflikt zurückzuführen ist, Anbinden der Anwendung an eine geringere Anzahl der Prozessoren des Multiprozessor-Rechnersystems.
  11. Verfahren nach Anspruch 10, das ferner Folgendes umfasst, wenn das Skalierbarkeitsproblem auf die Ressourcenbeschränkung zurückzuführen ist: Bestimmen, ob die Ressource von mehreren Prozessorkernen eines der Prozessoren gemeinsam genutzt wird; und falls die Bestimmung zutrifft, Deaktivieren eines Teilsatzes der mehreren Prozessorkerne.
  12. Verfahren nach Anspruch 10, das ferner Folgendes umfasst, wenn das Skalierbarkeitsproblem auf die Ressourcenbeschränkung zurückzuführen ist: Bestimmen, ob die Ressource auf einen Prozessorkern eines der Prozessoren zurückzuführen ist; und falls die Bestimmung zutrifft, Deaktivieren des Hyperthreadings auf dem Prozessorkern.
  13. Verfahren nach Anspruch 10, wobei das Detektieren des Vorliegens eines Skalierbarkeitsproblems ferner Folgendes umfasst: Messen einer Anstiegsrate der Verwendung von zumindest einem der Prozessoren; Messen einer Anstiegsrate des Durchsatzes der Anwendung; und Bestimmen, dass die Anstiegsrate der Verwendung die Anstiegsrate des Durchsatzes um einen Schwellenskalenfaktor übersteigt.
  14. Verfahren nach Anspruch 13, wobei das Detektieren des Vorliegens eines Skalierbarkeitsproblems ferner das Bestimmen umfasst, dass die Verwendung des zumindest einen der Prozessoren einen Schwellenverwendungswert übersteigt.
  15. Verfahren nach Anspruch 13, wobei der Durchsatz der Anwendung basierend auf der Messung des Netzwerktraffic geschätzt wird, der der Anwendung zugeordnet ist.
  16. Verfahren nach Anspruch 10, wobei der Zugriffskonflikt ein Datenzugriffskonflikt oder ein Konflikt um eine Synchronisationssperre ist.
  17. Verfahren nach Anspruch 10, wobei die Ressourcenbeschränkung der Kapazität der Befehlspipelinepuffer oder der Kapazität der Cache-Speicher zugeordnet ist.
  18. Verfahren nach Anspruch 10, wobei das Bestimmen, ob das Skalierbarkeitsproblem auf einen Zugriffskonflikt oder eine Ressourcenbeschränkung zurückzuführen ist, ferner das Auslesen eines oder mehrerer Zähler umfasst, um Ereignisse nachzuverfolgen, die der Hardwareleistung zugeordnet sind.
  19. Computerlesbares Speichermedium oder computerlesbare Speichermedien mit darauf gespeicherten Befehlen, die, wenn sie von einem Prozessor ausgeführt werden, zu den folgenden Vorgängen zum Abstimmen eines Multiprozessor-Rechnersystems führen, wobei die Vorgänge Folgendes umfassen: Detektieren des Vorliegens eines Skalierbarkeitsproblems, das der Ausführung einer Anwendung auf einer Anzahl von Prozessoren des Multiprozessor-Rechnersystems zugeordnet ist; Bestimmen, ob das Skalierbarkeitsproblem auf einen Zugriffskonflikt oder eine Ressourcenbeschränkung zurückzuführen ist; und wenn das Skalierbarkeitsproblem auf den Zugriffskonflikt zurückzuführen ist, Anbinden der Anwendung an eine geringere Anzahl der Prozessoren des Multiprozessor-Rechnersystems.
  20. Computerlesbares Speichermedium nach Anspruch 19, das ferner Folgendes umfasst, wenn das Skalierbarkeitsproblem auf die Ressourcenbeschränkung zurückzuführen ist: Bestimmen, ob die Ressource von mehreren Prozessorkernen eines der Prozessoren gemeinsam genutzt wird; und falls die Bestimmung zutrifft, Deaktivieren eines Teilsatzes der mehreren Prozessorkerne.
  21. Computerlesbares Speichermedium nach Anspruch 19, das ferner Folgendes umfasst, wenn das Skalierbarkeitsproblem auf die Ressourcenbeschränkung zurückzuführen ist: Bestimmen, ob die Ressource auf einen Prozessorkern eines der Prozessoren beschränkt ist; und falls die Bestimmung zutrifft, Deaktivieren des Hyperthreadings auf dem Prozessorkern.
  22. Computerlesbares Speichermedium nach Anspruch 19, wobei das Detektieren des Vorliegens eines Skalierbarkeitsproblems ferner Folgendes umfasst: Messen einer Anstiegsrate der Verwendung von zumindest einem der Prozessoren; Messen einer Anstiegsrate des Durchsatzes der Anwendung; und Bestimmen, dass die Anstiegsrate der Verwendung die Anstiegsrate des Durchsatzes um einen Schwellenskalenwert übersteigt.
  23. Computerlesbares Speichermedium nach Anspruch 22, wobei das Detektieren des Vorliegens des Skalierbarkeitsproblems ferner das Bestimmen umfasst, dass die Verwendung des zumindest einen der Prozessoren einen Schwellenverwendungswert übersteigt.
  24. Computerlesbares Speichermedium nach Anspruch 22, wobei der Durchsatz der Anwendung basierend auf dem gemessenen Netzwerktraffic geschätzt wird, der der Anwendung zugeordnet ist.
  25. Computerlesbares Speichermedium nach Anspruch 19, wobei der Zugriffskonflikt ein Datenzugriffskonflikt oder ein Konflikt um eine Synchronisationssperre ist.
DE112016003974.3T 2015-09-01 2016-07-28 Dynamisches Abstimmen von Multiprozessor-/Multikern-Rechnersystemen Pending DE112016003974T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/842,359 2015-09-01
US14/842,359 US9760404B2 (en) 2015-09-01 2015-09-01 Dynamic tuning of multiprocessor/multicore computing systems
PCT/US2016/044439 WO2017039895A1 (en) 2015-09-01 2016-07-28 Dynamic tuning of multiprocessor/multicore computing systems

Publications (1)

Publication Number Publication Date
DE112016003974T5 true DE112016003974T5 (de) 2018-06-14

Family

ID=58095555

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016003974.3T Pending DE112016003974T5 (de) 2015-09-01 2016-07-28 Dynamisches Abstimmen von Multiprozessor-/Multikern-Rechnersystemen

Country Status (4)

Country Link
US (2) US9760404B2 (de)
CN (1) CN107851041B (de)
DE (1) DE112016003974T5 (de)
WO (1) WO2017039895A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10498817B1 (en) * 2017-03-21 2019-12-03 Amazon Technologies, Inc. Performance tuning in distributed computing systems
US10564702B2 (en) * 2017-06-28 2020-02-18 Dell Products L.P. Method to optimize core count for concurrent single and multi-thread application performance
US11327869B2 (en) * 2017-07-10 2022-05-10 Dell Products L.P. Distributed architecture for determining performance parameters
FR3103663B1 (fr) 2019-11-27 2021-11-19 Amadeus Sas Tests et maintien d’une résilience face aux pannes des ressources de serveur
TWI819662B (zh) * 2022-06-16 2023-10-21 瑞昱半導體股份有限公司 系統剖析調校方法與電腦系統

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6813760B1 (en) 2000-11-30 2004-11-02 Nortel Networks Limited Method and a tool for estimating probability of data contention in a multi-processor shared-memory system
JP4394298B2 (ja) 2001-02-20 2010-01-06 日本電気株式会社 マルチプロセッサシステムとその共有メモリ制御方法、及び共有メモリ制御プログラム
US7234143B2 (en) * 2002-06-20 2007-06-19 Hewlett-Packard Development Company, L.P. Spin-yielding in multi-threaded systems
US7707578B1 (en) * 2004-12-16 2010-04-27 Vmware, Inc. Mechanism for scheduling execution of threads for fair resource allocation in a multi-threaded and/or multi-core processing system
US7430220B2 (en) * 2005-07-29 2008-09-30 International Business Machines Corporation System load based dynamic segmentation for network interface cards
US7890626B1 (en) 2008-09-11 2011-02-15 Gadir Omar M A High availability cluster server for enterprise data management
CN101770401B (zh) * 2008-12-30 2013-09-18 北京天融信网络安全技术有限公司 一种建立多核运行环境的方法
CN102375761A (zh) 2010-08-06 2012-03-14 中兴通讯股份有限公司 业务管理方法和装置、以及设备
US8522251B2 (en) 2011-01-10 2013-08-27 International Business Machines Corporation Organizing task placement based on workload characterizations
US8695008B2 (en) * 2011-04-05 2014-04-08 Qualcomm Incorporated Method and system for dynamically controlling power to multiple cores in a multicore processor of a portable computing device
CN104657219B (zh) * 2015-02-27 2017-10-20 西安交通大学 一种用于异构众核系统下的应用程序线程数动态调整方法
US20160378168A1 (en) * 2015-06-26 2016-12-29 Advanced Micro Devices, Inc. Dynamic power management optimization
US9740266B2 (en) 2015-09-04 2017-08-22 Mediatek Inc. Apparatus and method for controlling multi-core of electronic device
US10572261B2 (en) 2016-01-06 2020-02-25 Nxp Usa, Inc. Providing task-triggered deterministic operational mode for simultaneous multi-threaded superscalar processor

Also Published As

Publication number Publication date
US9760404B2 (en) 2017-09-12
US20170337083A1 (en) 2017-11-23
CN107851041B (zh) 2022-03-29
US10452443B2 (en) 2019-10-22
US20170060635A1 (en) 2017-03-02
WO2017039895A1 (en) 2017-03-09
CN107851041A (zh) 2018-03-27

Similar Documents

Publication Publication Date Title
DE112016003974T5 (de) Dynamisches Abstimmen von Multiprozessor-/Multikern-Rechnersystemen
DE112012000749B4 (de) Techniken zum Verwalten des Stromverbrauchszustands eines Prozessors
DE112013002995B4 (de) Echtzeitmessung von Virtualisierungs-E/A-Verarbeitungsverzögerungen
Reiss et al. Towards understanding heterogeneous clouds at scale: Google trace analysis
DE112017004808T5 (de) Dynamische zuteilung virtueller cpu-kerne
DE102020120019A1 (de) Proaktive di/dt-spannungs-dachabfall-abschwächung
US9800523B2 (en) Scheduling method for virtual processors based on the affinity of NUMA high-performance network buffer resources
US9954744B2 (en) Estimation of application performance variation without a priori knowledge of the application
DE102020102783A1 (de) Verfahren und einrichtungen zum verbessern einer leistungsdatensammlung einer hochleistungsberechnungsanwendung
DE112012007115T5 (de) Wahlweise Logikprozessor-Zählung und Typauswahl für eine gegebene Arbeitsbelastung basierend auf Wärme- und Leistungsbudget-Einschränkungen der Plattform
DE102020102237A1 (de) Echtzeit-eingabe/ausgabe-bandbreitenschätzung
CN108664367B (zh) 一种基于处理器的功耗控制方法及装置
DE102012215439A1 (de) Verfahren für Energie-optimierte Mehrprozessor-Synchronisation
DE112021003294T5 (de) Systemverwaltung auf grundlage von leistung und leistungsfähigkeit
DE112017003323T5 (de) Prozessoren, Verfahren und Systeme zum Identifizieren von Speichern, die externe transaktionale Ausführungsabbrüche verursachen
US10346204B2 (en) Creating models based on performance metrics of a computing workloads running in a plurality of data centers to distribute computing workloads
DE102012221253B4 (de) Verfahren zum Zählen von Ereignissen in einer elektronischen Einheit, Ereigniszähler für eine integrierte Schaltungseinheit sowie Computersystem und Computerprogrammprodukt hierfür
DE102018130166A1 (de) Latenzmessungstechnologie
CN104794040B (zh) 业务监控方法、装置及系统
DE112016006686T5 (de) Verfahren und vorrichtung zur zeit- und ereignisausgerichteten mehrschicht-, mehrfachagent-leistungsüberwachung
DE102018001896A1 (de) Hardwarebeschleuniger für das Auswählen von Datenelementen
US20140082305A1 (en) Providing usage statistics for virtual storage
US11003565B2 (en) Performance change predictions
CN113835953A (zh) 作业信息的统计方法、装置、计算机设备和存储介质
Gu et al. Application-driven energy-efficient architecture explorations for big data

Legal Events

Date Code Title Description
R012 Request for examination validly filed