DE112014002754T5 - Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus - Google Patents

Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus Download PDF

Info

Publication number
DE112014002754T5
DE112014002754T5 DE112014002754.5T DE112014002754T DE112014002754T5 DE 112014002754 T5 DE112014002754 T5 DE 112014002754T5 DE 112014002754 T DE112014002754 T DE 112014002754T DE 112014002754 T5 DE112014002754 T5 DE 112014002754T5
Authority
DE
Germany
Prior art keywords
lock
tasks
lock mechanism
predefined threshold
queue
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
DE112014002754.5T
Other languages
English (en)
Inventor
Lokesh M. Gupta
David B. Whitworth
Michael T. Benhase
Trung N. NGUYEN
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 DE112014002754T5 publication Critical patent/DE112014002754T5/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms

Abstract

Für eine effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus wird gestattet, dass sich ehe neue Aufgabe auf dem Sperrmechanismus in eine Warteschleife einreiht, wenn eine Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, kleiner als ein vordefinierter Schwellenwert für parallele Operationen ist, die Sperren zwischen den mehreren Threads erfordern.

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft im Allgemeinen Datenverarbeitungssysteme und insbesondere Systeme und Verfahren für eine effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus für parallele Operationen, die Sperren zwischen den mehreren Threads in einer Datenverarbeitungsumgebung erfordern.
  • Beschreibung des einschlägigen Stands der Technik
  • In der Gesellschaft von heute gehören Computersysteme zum Alltag. Computersysteme sind am Arbeitsplatz, zu Hause oder in der Schule zu finden. Computersysteme können Datenspeichersysteme oder Plattenspeichersysteme zum Verarbeiten und Speichern von Daten enthalten. In Anbetracht dessen, dass sich die Gesellschaft von heute ständig immer mehr auf Computer verlässt, musste sich die Computertechnologie an vielen Fronten weiterentwickeln, um mit den erhöhten Anforderungen Schritt halten zu können. Ein spezielles Fachgebiet von bedeutenden Forschungs- und Entwicklungsbemühungen ist Parallelismus, d. h. die parallele Ausführung von mehreren Aufgaben.
  • Zum Vereinfachen einer zunehmenden Parallelverarbeitung wurde eine Anzahl von Computer-Software- und Hardware-Technologien entwickelt. Von einem Software-Standpunkt aus wurden Multithread-Betriebssysteme und Kernel entwickelt, die es ermöglichen, dass Computerprogramme gleichzeitig in mehreren „Threads” ausgeführt werden, sodass mehrere Aufgaben im Wesentlichen zu derselben Zeit ausgeführt werden können. Threads stellen im Allgemeinen unabhängige Ausführungspfade für ein Programm dar. Für eine E-Commerce-Computeranwendung könnten zum Beispiel verschiedene Threads zu verschiedenen Kunden zugewiesen werden, sodass jede spezifische E-Commerce-Transaktion eines Kunden in einem separaten Thread bearbeitet wird. Von einem Hardware-Standpunkt aus sind Computer zunehmend auf mehrere Mikroprozessoren angewiesen, um eine höhere Arbeitslastkapazität bereitzustellen. Ferner wurden einige Mikroprozessoren entwickelt, die die Fähigkeit unterstützen, mehrere Threads parallel auszuführen, wobei effektiv viele derselben Leistungssteigerungen bereitgestellt werden, die durch die Verwendung mehrerer Mikroprozessoren erzielbar sind.
  • KURZDARSTELLUNG DER ERFINDUNG
  • In einer Ausführungsform wird ein Verfahren für eine effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus bereitgestellt, der mindestens eine Prozessoreinheit in einer Datenverarbeitungsumgebung verwendet. In einer nur als Beispiel angeführten Ausführungsform wird gestattet, dass sich eine neue Aufgabe auf dem Sperrmechanismus in eine Warteschleife einreiht, wenn eine Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, kleiner als ein vordefinierter Schwellenwerk für parallele Operationen ist, die Sperren zwischen den mehreren Threads erfordern.
  • In einer weiteren Ausführungsform wird ein Computersystem für eine effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus bereitgestellt, der mindestens eine Prozessoreinheit in einer Datenverarbeitungsumgebung verwendet. Das Computersystem enthält ein computerlesbares Medium und einen Prozessor in betriebsfähiger Datenübertragung mit dem computerlesbaren Medium. In einer nur als Beispiel angeführten Ausführungsform gestattet der Prozessor, dass sich eine neue Aufgabe auf dem Sperrmechanismus in eine Warteschleife einreiht, wenn eine Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, kleiner als ein vordefinierter Schwellenwert für parallele Operationen ist, die Sperren zwischen den mehreren Threads erfordern.
  • In einer weiteren Ausführungsform wird ein Computerprogrammprodukt für eine effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus bereitgestellt, der mindestens eine Prozessoreinheit in einer Datenverarbeitungsumgebung verwendet. Auf dem computerlesbaren Speichermedium sind computerlesbare Programmcode-Abschnitte gespeichert. Die computerlesbaren Programmcode-Abschnitte enthalten einen ersten ausführbaren Abschnitt, der gestattet, dass sich eine neue Aufgabe auf dem Sperrmechanismus in eine Warteschleife einreiht, wenn eine Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, kleiner als ein vordefinierter Schwellenwert für parallele Operationen ist, die Sperren zwischen den mehreren Threads erfordern.
  • Zusätzlich zu der vorgenannten beispielhaften Verfahrens-Ausführungsform werden weitere beispielhafte System- und Computerprodukt-Ausführungsformen bereitgestellt und sorgen für zugehörige Vorteile. Die vorgenannte Kurzdarstellung wurde bereitgestellt, um eine Auswahl von Konzepten in einer vereinfachten Form vorzustellen, die im Folgenden genauer unter „Ausführliche Beschreibung” beschrieben werden. Zweck dieser Kurzdarstellung ist nicht, Schlüsselmerkmale oder wesentliche Merkmale des beanspruchten Erfindungsgegenstands zu identifizieren, noch ist beabsichtigt, sie als Hilfe beim Festlegen des Schutzumfangs des beanspruchten Erfindungsgegenstands zu verwenden. Der beanspruchte Erfindungsgegenstand ist nicht auf Umsetzungen beschränkt, die einige oder alle Nachteile beheben, die unter „Hintergrund” angegeben wurden.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Damit die Vorteile der Erfindung leicht zu verstehen sind, wird unter Bezugnahme auf spezifische Ausführungsformen, die in den Zeichnungen im Anhang veranschaulicht werden, eine speziellere Beschreibung der oben kurz umrissenen Erfindung vorgelegt. Das Verständnis vorausgesetzt, dass diese Zeichnungen nur typische Ausführungsformen der Erfindung veranschaulichen und daher nicht als deren Schutzumfang einschränkend zu betrachten sind, wird die Erfindung mit zusätzlicher Spezifität und Ausführlichkeit unter Verwendung der begleitenden Zeichnungen beschrieben und erklärt, wobei:
  • 1 ein Blockschaubild ist, das eine Datenverarbeitungssystem-Umgebung mit einer beispielhaften Speichereinheit veranschaulicht, in der Aspekte der vorliegenden Erfindung verwirklicht werden können;
  • 2 ein Blockschaubild ist, das eine beispielhafte Hardware-Struktur eines Datenspeichersystems in einem Computersystem gemäß der vorliegenden Erfindung veranschaulicht, in der Aspekte der vorliegenden Erfindung verwirklicht werden können;
  • 3 ein Ablaufplan ist, der ein beispielhaftes Verfahren für eine effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus veranschaulicht, in dem Aspekte der vorliegenden Erfindung verwirklicht werden können; und
  • 4 ein Ablaufplan ist, der ein weiteres beispielhaftes Verfahren für eine effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus veranschaulicht, in dem Aspekte der vorliegenden Erfindung verwirklicht werden können.
  • AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGEN
  • In einer Ausführungsform ist eine Architektur in einem Mehrprozessor-Computersystem eine dezentrale Architektur mit gemeinsam genutztem Arbeitsspeicher. Eine dezentrale Architektur mit gemeinsam genutztem Arbeitsspeicher enthält mehrere Knoten, in denen Prozessoren und Arbeitsspeicher liegen. Die mehreren Knoten tauschen Daten über ein dazwischengekoppeltes Netzwerk aus. Wenn er als Ganzes betrachtet wird, bildet der in den mehreren Knoten enthaltene Arbeitsspeicher den gemeinsam genutzten Arbeitsspeicher für das Computersystem. Verzeichnisse können zum Identifizieren verwendet werden, welche Knoten zwischengespeicherte Kopien von Daten besitzen, die einer bestimmten Adresse entsprechen. Kohärenz-Aktivitäten können über eine Überprüfung der Verzeichnisse generiert werden. In einer Ausführungsform sind dezentrale Systeme mit gemeinsam genutztem Arbeitsspeicher skalierbar und überwinden somit verschiedene Einschränkungen, die dezentralen Bus-Architekturen zugehörig sind. Da viele der Zugriffe des Prozessors in einem Knoten abgeschlossen werden, haben Knoten typischerweise viel geringere Bandbreiten-Anforderungen auf dem Netzwerk im Vergleich mit den Bandbreiten-Anforderungen, die eine gemeinsam genutzte Bus-Architektur in Bezug auf den gemeinsam genutzten Bus erfüllen muss, um eine vergleichbare Leistung zu erzielen. Die Knoten können bei hoher Taktfrequenz und Bandbreite arbeiten, wobei sie auf das Netzwerk bei Bedarf zugreifen. Weitere Knoten können dem Netzwerk hinzugefügt werden, ohne die lokale Bandbereite der Knoten zu beeinträchtigen. Mit logischer Partitionierung verwaltet eine gemeinsam genutzte Ressource, die als „Hypervisor” oder Partitionsmanager bezeichnet wird, die logischen Partitionen und vereinfacht die Zuordnung von Ressourcen zu verschiedenen logischen Partitionen. Zum Beispiel kann ein Partitionsmanager Ressourcen wie beispielsweise Prozessoren, Workstation-Adapter, Speichereinheiten, Arbeitsspeicherplatz, Netzwerk-Adapter usw. zu verschiedenen Partitionen zuordnen, um den relativ unabhängigen Betrieb jeder logischen Partition auf fast dieselbe Weise zu unterstützen wie ein separater physischer Computer.
  • Des Weiteren erfordern in einer Ausführungsform große Datenbanken und Internet-Transaktionsanwendungen parallele Server, die fähig sind, auf Maschinen mit zwanzig bis einhundert Prozessoren oder mehr ausgeführt zu werden. Des Weiteren kann in einer Ausführungsform eine parallele Programmierung auf gewisse Weise die Verwendung einer Sperre auf den untersten Ebenen umfassen. Sperren sind Primitive, die einen gegenseitigen Ausschluss bereitstellen, wodurch es Datenstrukturen ermöglicht wird, in konsistenten Zuständen zu bleiben. In einer Ausführungsform ohne Sperrmechanismus können mehrere Ausführungs-Threads gleichzeitig eine Datenstruktur modifizieren. Ohne einen sorgfältig durchdachten und für gewöhnlich komplexen sperrenfreien Algorithmus ist das Ergebnis normalerweise ein Absturz oder Hängen beim Eintreten nicht beabsichtigter Programmzustände. Da die Erstellung eines sperrenfreien Algorithmus extrem schwierig ist, verwenden die meisten Programme Sperren. Wenn eine Aktualisierung einer Datenstruktur langsam erfolgt, ist die bevorzugt gewählte Sperre ein Mutex (z. B. gegenseitiger Ausschluss) irgendeiner Art. Diese überträgt bei einer Sperrung die Kontrolle an das Betriebssystem. Damit wird gestattet, dass ein weiterer Thread ausgeführt wird und eventuell einen Fortschritt erzielt, während der erste Thread ruht. Diese Kontrollübertragung besteht aus einem Paar von Kontextwechseln, die eine ziemlich langsame Operation sind. Wenn also erwartet wird, dass die Sperrenhaltezeit kurz ist, dann dürfte dies nicht das schnellste Verfahren sein.
  • In einer Ausführungsform kann eine Spinlock-Operation (Warteschleifensperren-Operation) in parallelen Operationen verwendet werden, und die Spinlock-Operation kann Software-Sperren zugehörig sein, die von Programmen zum Sicherstellen verwendet werden, dass jeweils nur ein paralleler Prozess auf einen kritischen Bereich des Arbeitsspeichers zugreifen kann. In einer Ausführungsform können Spinlocks für einen gegenseitigen Ausschluss verwendet werden. Ein Spinlock ist eine Sperre, die veranlasst, dass ein Thread, der sie zu erlangen versucht, einfach in einer Warteschleife („spin”) wartet, während wiederholt geprüft wird, ob die Sperre verfügbar ist. Da der Thread aktiv bleibt, aber keine nützliche Aufgabe ausführt, ist die Verwendung einer derartigen Sperre eine Art von aktivem Warten. Sobald sie erlangt sind, können Spinlocks gehalten werden, bis sie explizit freigegeben werden, obwohl sie in einigen Umsetzungen automatisch freigegeben werden können, wenn der Thread, auf den gewartet wird (der die Sperre aufhält) blockiert oder „in den Ruhemodus geht”.
  • In einer Ausführungsform kann das Spinlock (z. B. ein Semaphor) als eine Variable oder ein Token umgesetzt werden, das einem gemeinsam genutzten Zeiger auf einer Datenstruktur zugehörig ist, und das von mehreren Threads gelesen werden kann, um zu bestimmen, ob der Zeiger gegenwärtig von einem der Threads verwendet wird. Sobald ein Thread ein Semaphor liest, das angibt, dass gegenwärtig kein anderer Thread den Zeiger verwendet, kann der Thread das Semaphor auf einen Wert setzen, der für alle anderen Threads angibt, dass der Zeiger gegenwärtig verwendet wird (ein Prozess, der als „Erlangen” eines Semaphors bezeichnet wird). Wenn daher ein anderer Thread auf die Datenstruktur zugreifen möchte, aber erkennt, dass das Semaphor von einem anderen Thread gehalten wird, muss dieser Thread warten, bis der andere Thread das Semaphor freigibt, um anzugeben, dass der Zeiger (und somit die Datenstruktur) wieder für andere Threads zugänglich ist. In einer Ausführungsform darf nur ein Thread ein Semaphor zu einem bestimmten Zeitpunkt halten.
  • Ferner reiht sich in einer Ausführungsform statt eines Kontextwechsels ein Spinlock in eine „Warteschleife” ein und prüft wiederholt, ob die Sperre aufgehoben ist. Das Spinning (Ablauf der Warteschleife) ist sehr schnell, sodass die Latenz zwischen einem Entsperren-Sperren-Paar klein ist. Durch Spinning wird jedoch keinerlei Arbeit ausgeführt, sodass es möglicherweise nicht so effizient wie ein ruhender Mutex ist, wenn die aufgewendete Zeit maßgeblich wird. Daher stellt die vorliegende Erfindung eine Lösung bereit, die (1) Datenverarbeitungseffizienz durch Verringern der Verschwendung von CPU-Zyklen erhöht, während das Spinning die gesamte Zeit über ausgeführt wird, und (2) gestattet, dass vermieden wird, dass die Aufgaben in einen Ruhezustand übergehen, und die Aufgabe immer wieder neu abgefertigt wird, wenn die Aufgaben nicht sofort eine Sperre erhalten können.
  • In der vorliegenden Ausführungsform wird somit ein Verfahren für eine effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus bereitgestellt, der mindestens eine Prozessoreinheit in einer Datenverarbeitungsumgebung verwendet. In einer nur als Beispiel angeführten Ausführungsform wird gestattet, dass sich eine neue Aufgabe auf dem Sperrmechanismus in die Warteschleife einreiht, wenn eine Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, kleiner als ein vordefinierter Schwellenwert für parallele Operationen ist, die Sperren zwischen den mehreren Threads erfordern. Es wird verhindert/unterbunden, dass die neue Aufgabe sich auf dem Sperrmechanismus in die Warteschleife einreiht, wenn die Anzahl der Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, gleich dem vordefinierten Schwellenwert oder größer als dieser ist. Die Anzahl der Aufgaben, die sich gegenwärtig auf dem Sperrmechanismus in einer Warteschleife befinden, wird erhalten, bevor gestattet wird, dass sich die neue Aufgabe auf dem Sperrmechanismus in eine Warteschleife einreiht. Die neue bzw. neuen Aufgaben schlagen fehl, wenn die Anzahl der Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, gleich dem vordefinierten Schwellenwert und/oder größer als dieser ist. Die neuen Aufgaben werden auf eine Abfertigungswarteschlange ausgelagert, wenn die Anzahl der Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, entweder gleich dem vordefinierten Schwellenwert oder größer als dieser ist. Der Sperrmechanismus wird aufgerufen, um zu bestimmen, ob die Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, kleiner als der Tordefinierte Schwellenwert ist. In einer Ausführungsform setzt die vorliegende Erfindung den Sperrmechanismus um, um zu bestimmen, ob die Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, kleiner als der vordefinierte Schwellenwert zuzüglich einer Sperre auf Ticket-Grundlage oder einer Sperre auf Warteschlangen-Grundlage ist. Der Sperrmechanismus ist ein neuer Lock-Try-Or-Spin-Mechanismus (Sperrversuch-oder-Warteschleifen-Mechanismus). Der Lock-Try-Or-Spin-Mechanismus reiht sich für die Sperre auf der Grundlage eines vordefinierten Schwellenwerts in eine Warteschleife ein und/oder lagert die Aufgabe in die Abfertigungswarteschlange aus. Dies ist eine Bezeichnung für die Hauptkonzepte der vorliegenden Erfindung, die eine ähnliche Aktivität wie ein herkömmlicher Try-Lock-Mechanismus (Sperrversuch-Mechanismus) aufweist, bei dem der Code mehrmals versucht, eine Sperre zu erhalten, und den Vorgang beendet, wenn er keine Sperre erhalten kann, wogegen der neue Lock-Try-Or-Spin-Mechanismus sich für eine Sperre in eine Warteschleife einreiht, wenn die vordefinierten Schwellenwertkriterien erfüllt sind, und sofort beendet, wenn dies nicht der Fall ist. In einer Ausführungsform ist eine Sperre auf Ticket-Grundlage ein Sperralgorithmus, der eine Art Spinlock ist, das „Tickets” verwendet, um zu kontrollieren, welcher Ausführungs-Thread in einen kritischen Abschnitt eintreten darf.
  • In einer Ausführungsform arbeitet die Ticket-Sperre wie folgt: es gibt zwei ganzzahlige Werte, die mit O beginnen. Der erste Wert ist das Warteschlangen-Ticket, der zweite ist das Ticket zum Entfernen aus der Warteschlange. Wenn ein Thread ankommt, erhält er automatisch ein Warteschlangen-Ticket und erhöht die Anzahl. Anschließend wird der Ticket-Wert (vor der Erhöhung) automatisch mit dem Ticket-Wert zum Entfernen aus der Warteschlange verglichen. Wenn sie identisch sind, wird dem Thread gestattet, in den kritischen Abschnitt einzutreten. Wenn sie nicht identisch sind, muss sich bereits ein anderer Thread in dem kritischen Abschnitt befinden, und dieser Thread muss in den aktiven Wartezustand oder Platz machen. Wenn ein Thread den durch die Sperre kontrollierten kritischen Abschnitt verlässt, erhöht er automatisch die Anzahl der Tickets zum Entfernen aus der Warteschlange. Damit wird dem nächsten wartenden Thread gestattet, in den kritischen Abschnitt einzutreten.
  • In einer Ausführungsform vermeiden die Spinlocks auf Warteschlangen-Grundlage eine Konkurrenzsituation durch eine Anordnung, in der sich jeder wartende Thread auf einer separaten lokalen Markierung im Arbeitsspeicher in die Warteschleife einreiht. Die Spinlocks auf Warteschlangen-Grundlage garantieren ein gerechtes Verhalten durch Verwalten einer Warteschlange von wartenden Threads und durch Vergabe der Sperre an den ersten wartenden Thread während einer Sperrenaufhebungsoperation. In einer Ausführungsform mit der Sperre auf Warteschlangen-Grundlage wird jeder Warteprozess mit seinem Vorgänger und Nachfolger in der Warteschlange verknüpft. Die Spinlocks auf Warteschlangen-Grundlage können auch als Try-Locks (Versuchssperren) bezeichnet werden und einen Prozess zulassen, um nach einer bestimmten Zeitdauer den Versuch abzubrechen, eine Sperre zu erhalten. Der Prozess kann anschließend einem anderen Codepfad folgen.
  • In einer Ausführungsform kann die vorliegende Erfindung Sperren auf Warteschlangen-Grundlage und/oder Ticket-Sperren verwenden, die angeben, wie viele Aufgaben sich auf einem Spinlock in einer Warteschleife befinden. In einer Ausführungsform für ein Test- und festgelegtes Spinlock können die Prozesse gegenseitig anonym sein. In einer Sperre auf Warteschlangen-Grundlage schließen sie sich nicht gegenseitig aus und jeder wartende Prozess wird mit seinem Vorgänger und Nachfolger in der Warteschlange verknüpft. Somit ist die vorliegende Erfindung mit den Sperren auf Warteschlangen-Grundlage fähig, zu erkennen/anzugeben, wie viele Aufgaben sich auf einer Sperre in einer Warteschleife befinden. Selbst ohne Sperren auf Warteschlangen-Grundlage erstellt die vorliegende Erfindung ein Spinlock, das angeben kann, wie viele Aufgaben sich auf einer Sperre in einer Warteschleife befinden. Zum Beispiel kann die vorliegende Erfindung mit Ticket-Sperren mindestens die zuletzt angegebene Ticketnummer und die aktuelle bereitgestellte Ticketnummer beobachten und sehen, wie viele Aufgaben sich in einer Warteschleife befinden.
  • Unterfolgender Bezugnahme auf 1 wird eine beispielhafte Architektur 10 einer Umgebung eines Datenverarbeitungssystems dargestellt. Das Computersystem 10 enthält eine Zentraleinheit (CPU) 12, die mit einem Datenübertragungsanschluss 18 und einer Arbeitsspeichereinheit 16 verbunden ist. Der Datenübertragungsanschluss 18 steht mit einem Datenübertragungsnetzwerk 20 in Verbindung. Das Datenübertragungsnetzwerk 20 und ein Speichernetzwerk können so konfiguriert sein, dass sie mit Servern (Hosts) 24 und Speichersystemen in Verbindung stehen, die Speichereinheiten 14 enthalten können. Die Speichereinheiten können Festplatteneinheiten (HDD), Solid-State-Einheiten (SSD) usw. enthalten, die in einer redundanten Anordnung von unabhängigen Platten (RAID) konfiguriert sein können. Die im Folgenden beschriebenen Operationen können auf einer oder mehreren Speichereinheiten 14 ausgeführt werden, die sich in dem System 10 oder anderswo befinden, und können mehrere Arbeitsspeichereinheiten 16 haben, die unabhängig von und/oder in Verbindung mit anderen CPU-Einheiten 12 arbeiten. Die Arbeitsspeichereinheit 16 kann Arbeitsspeicher als elektronisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM) oder eine Menge zugehöriger Einheiten enthalten. Die Arbeitsspeichereinheit 16 und die Speichereinheiten 14 sind mit der CPU 12 über ein Signalträgermedium verbunden. Außerdem ist die CPU 12 über den Datenübertragungsanschluss 18 mit einem Datenübertragungsnetzwerk 20 verbunden, das eine damit verbundene Vielzahl von weiteren Computer-Hostsystemen 24 aufweist. Außerdem kann die Arbeitsspeichereinheit 16 und die CPU 12 in jede Komponente des Datenverarbeitungssystems eingebettet und integriert sein. Jedes Speichersystem kann auch separate und/oder unterschiedliche Arbeitsspeichereinheiten 16 und die CPU 12 enthalten, die in Verbindung oder als separate Arbeitsspeichereinheit 16 und/oder CPU 12 arbeiten.
  • 2 ist ein beispielhaftes Blockschaubild 200, das eine Hardware-Struktur eines Datenspeichersystems in einem Computersystem gemäß der vorliegenden Erfindung zeigt. Gezeigt werden Host-Computer 210, 220, 225, von denen jeder als eine Zentraleinheit zum Ausführen einer Datenverarbeitung als Teil eines Datenspeichersystems 200 arbeitet. Die Hosts (physische oder virtuelle Einheiten) 210, 220 und 225 können eine oder mehrere neue physische Einheiten oder logische Einheiten zum Erreichen der Zwecke der vorliegenden Erfindung in dem Datenspeichersystem 200 sein. Nur als Beispiel kann in einer Ausführungsform das Datenspeichersystem 200 als IBM® System StorageTM DS8000TM umgesetzt werden. Eine Netzwerkverbindung 260 kann eine Fibre-Channel-Struktur, eine Fibre Channel-Punkt-zu-Punkt-Verbindung, eine Fibre-Channel-über-Ethernet-Struktur oder Punkt-zu-Punkt-Verbindung, eine FICON- oder ESCON-E/A-Schnittstelle, irgendein anderer E/A-Schnittstellentyp, ein drahtloses Netzwerk, ein drahtgebundenes Netzwerk, ein LAN, ein WAN, heterogen, homogen, öffentlich (z. B. das Internet), privat oder eine beliebige Kombination davon sein. Die Hosts 210, 220 und 225 können lokal oder auf eine oder mehrere Positionen verteilt sein und können mit einem beliebigen Typ von Struktur (oder Strukturkanal) (nicht gezeigt in 2) oder Netzwerkadapter 260 zu einem Speicher-Controller 240 ausgestattet sein, wie beispielsweise Fbre-Channel-, FICON-, ESCON-, Ethernet-, Lichtwellenleiter-, drahtlose oder koaxiale Adapter. Das Datenspeichersystem 200 ist dementsprechend mit einer geeigneten Struktur (nicht gezeigt in 2) oder dem Netzwerkadapter 260 zum Übertragen von Daten ausgestattet. Das Datenspeichersystem 200 wird in 2 veranschaulicht und weist den Speicher-Controller 240 und einen Speicher 230 auf. In einer Ausführungsform können die hierin beschriebenen Ausführungsformen auf eine Vielfalt von Typen von Datenverarbeitungsarchitekturen anwendbar sein, wie beispielsweise in einer virtuellen Cluster-Verwaltungsumgebung unter Verwendung der verschiedenen hierin beschriebenen Ausführungsformen.
  • Um ein besseres Verständnis der hierin beschriebenen Verfahren zu unterstützen, wird der Speicher-Controller 240 in 2 als eine einzelne Verarbeitungseinheit gezeigt, die einen Mikroprozessor 242, einen Systemarbeitsspeicher 243 und einen nicht-flüchtigen Speicher („NVS”) 216 enthält, die im Folgenden ausführlicher beschrieben werden. Es wird angemerkt, dass in einigen Ausführungsformen der Speicher-Controller 240 mehrere Verarbeitungseinheiten aufweist, die jeweils ihren eigenen Prozessorkomplex und Systemarbeitsspeicher haben und durch ein dediziertes Netzwerk in dem Datenspeichersystem 200 miteinander verbunden sind. Der Speicher 230 kann eine oder mehrere Speichereinheiten aufweisen, wie beispielsweise Speicheranordnungen, die durch ein Speichernetzwerk mit dem Speicher-Controller 240 verbunden sind.
  • In einigen Ausführungsformen können die im Speicher 230 enthaltenen Einheiten in einer Schleifenarchitektur verbunden sein. Der Speicher-Controller 240 verwaltet den Speicher 230 und erleichtert die Verarbeitung von Schreib- und Lese-Anforderungen, die für den Speicher 230 bestimmt sind. Der Systemarbeitsspeicher 243 des Speicher-Controllers 240 speichert die Betriebssoftware 250, Programmanweisungen und Daten, auf die der Prozessor 242 zugreifen kann, um Funktionen und Verfahrensschritte auszuführen, die dem Verwalten des Speichers 230 zugehörig sind, und um die Schritte und Verfahren der vorliegenden Erfindung auszuführen. Wie in 2 gezeigt, kann der Systemarbeitsspeicher 243 auch eine Datenübertragung enthalten oder mit einem Zwischenspeicher 245 für den Speicher 230 in Datenübertragung stehen, der hierin auch als „Cache-Speicher” bezeichnet wird, um „Schreibdaten” und „Lesedaten” zu Puffern, die jeweils auf Schreib-/Lese-Anforderungen und deren zugehörige Daten verweisen. In einer Ausführungsform wird der Zwischenspeicher 245 in einer außerhalb des System-Arbeitsspeichers 243 befindlichen Einheit zugeordnet, wobei auf ihn jedoch weiterhin durch den Mikroprozessor 242 zugegriffen werden kann und er zusätzlich zu einem Ausführen der hierin beschriebenen Operationen zum Bereitstellen eines zusätzlichen Schutzes vor Datenverlust dienen kann.
  • In einigen Ausführungsformen wird der Zwischenspeicher 245 mit einem flüchtigen Arbeitsspeicher und einem nichtflüchtigen Arbeitsspeicher umgesetzt und für eine verbesserte Leistung des Datenspeichersystems 200 mit dem Mikroprozessor 242 über einen lokalen Bus (nicht gezeigt in 2) verbunden. Auf den in dem Datenspeicher-Controller enthaltenen NVS 216 kann durch den Mikroprozessor 242 zugegriffen werden, und er dient zum Bereitstellen von zusätzlicher Unterstützung von Vorgängen und der Ausführung der vorliegenden Erfindung, wie in weiteren Figuren beschrieben. Der NVS 216 kann auch als „permanenter” Zwischenspeicher oder „Cache-Arbeitsspeicher” bezeichnet werden und wird mit einem nicht-flüchtigen Arbeitsspeicher umgesetzt, der eine externe Stromquelle zum Beibehalten der darin gespeicherten Daten verwenden kann. Der NVS kann in und zusammen mit dem Zwischenspeicher 245 für alle Zwecke gespeichert werden, die geeignet sind, um die Ziele der vorliegenden Erfindung zu erreichen. In einigen Ausführungsformen versorgt eine Notstromversorgungsquelle (nicht gezeigt in 2) wie beispielsweise eine Batterie den NVS 216 mit ausreichender Energie, um die darin gespeicherten Daten im Fall eines Spannungsverlusts des Datenspeichersystems 200 beizubehalten. In bestimmten Ausführungsformen ist die Kapazität des NVS 216 kleiner oder gleich der Gesamtkapazität des Zwischenspeichers 245.
  • Der Speicher 230 kann physisch aus einer oder mehreren Speichereinheiten wie beispielsweise Speicheranordnungen bestehen. Eine Speicheranordnung ist eine logische Gruppierung von einzelnen Speichereinheiten wie beispielsweise eine Festplatte. In bestimmten Ausführungsformen besteht der Speicher 230 aus einer JBOD-(Just a Bunch of Disks)Anordnung oder einer RAID-(Redundant Array of Independent Disks)Anordnung. Eine Sammlung von physischen Speicheranordnungen kann ferner kombiniert werden, um eine Speicherbank zu bilden, die den physischen Speicher von der logischen Konfiguration löst. Der Speicherplatz in einer Speicherbank kann in logischen Datenträgern zugeordnet werden, die den Speicherort definieren, der in einer Schreib-/Lese-Anforderung angegeben wird.
  • In einer Ausführungsform kann das in 2 gezeigte Speichersystem einen logischen Datenträger oder einfach „Datenträger” enthalten, der verschiedene Arten von Zuordnungen aufweisen kann. Speicher 230a, 230b und 230n werden im Datenspeichersystem 200 als Speicherbänke gezeigt, und auf sie wird hierin als Speicherbank 230a, 230b und 230n Bezug genommen. Speicherbänke können für das Datenspeichersystem 200 lokal sein oder können sich an einem physisch entfernten Ort befinden. Mit anderen Worten, ein lokaler Speicher-Controller kann mit einem entfernt angeordneten Speicher-Controller verbunden sein und den Speicher an dem entfernt angeordneten Ort verwalten. Die Speicherbank 230a wird als mit zwei vollständigen Datenträgern 234 und 236 sowie einem teilweisen Datenträger 232a konfiguriert gezeigt. Die Speicherbank 230b wird mit einem weiteren teilweisen Datenträger 232b gezeigt. Somit wird der Datenträger 232 über die Speicherbänke 230a und 230b übergreifend zugeordnet. Die Speicherbank 230n wird als vollständig einem Datenträger 238 zugeordnet gezeigt – d. h. die Speicherbank 230n nimmt auf den vollständigen Speicher für den Datenträger 238 Bezug. Aus den vorgenannten Beispielen wird klar, dass eine Speicherbank so konfiguriert werden kann, dass sie einen oder mehrere teilweise und/oder vollständige Datenträger enthält. Datenträger und Speicherbänke können ferner in sogenannte „Spuren” unterteilt werden, die einen festen Speicherblock darstellen. Eine Spur ist daher einem vorgegebenen Datenträger zugehörig und kann einer vorgegebene Speicherbank zugeordnet werden.
  • Der Speicher-Controller 240 kann ein Parallelverarbeitungsmodul 255 (z. B. parallele Operationen verarbeitendes Modul), ein Sperrmodul 257 (z. B. ein Lock-Try-or-Spin-Modul), ein Aufgaben-Spinning-Modul 258 und ein Berechnungsmodul 259 sein (z. B. ein Berechnungsmodul zum Bestimmen der Spinning-Anzahl von Aufgaben). Das Parallelverarbeitungsmodul 255, das Sperrmodul 257, das Aufgaben-Spinning-Modul 258 und ein Berechnungsmodul 259 können ein vollständiges Modul, das gleichzeitig arbeitet, oder separate Module sein. Das Parallelverarbeitungsmodul 255, das Sperrmodul 257, das Aufgaben-Spinning-Modul 258 und ein Berechnungsmodul 259 können einen internen Arbeitsspeicher (nicht gezeigt) haben und können nicht verarbeitete, verarbeitete oder „halbverarbeitete” Daten speichern. Das Parallelverarbeitungsmodul 255, das Sperrmodul 257, das Aufgaben-Spinning-Modul 258 und ein Berechnungsmodul 259 können in Verbindung mit jeder einzelnen Komponente des Speicher-Controllers 240, den Hosts 210, 220, 225 und weiteren Speicher-Controllern 240 und Hosts 210, 220 und 225 arbeiten, die entfernt angeordnet über die Speicherstruktur 260 verbunden sein können. Das Parallelverarbeitungsmodul 255, das Sperrmodul 257, das Aufgaben-Spinning-Modul 258 und ein Berechnungsmodul 259 können ein strukturell vollständiges Modul sein oder können anderen einzelnen Modulen zugehörig und/oder in diesen enthalten sein. Das Parallelverarbeitungsmodul 255, das Sperrmodul 257, das Aufgaben-Spinning-Modul 258 und ein Berechnungsmodul 259 können sich auch in dem Zwischenspeicher 245 oder anderen Komponenten des Speicher-Controllers 240 befinden.
  • Der Speicher-Controller 240 enthält einen Steuerschalter 241 zum Steuern des Fibre Channel Protocol zu den Host-Computern 210, 220, 225, einen Mikroprozessor 242 zum Steuern aller Speicher-Controller 240, einen nicht flüchtigen Steuerungs-Arbeitsspeicher 243 zum Speichern eines Mikroprogramms (Betriebssoftware) 250 zum Steuern des Betriebs des Speicher-Controllers 240, einen Zwischenspeicher 245 zum temporären Speichern (Puffern) von Daten und Puffer 244 zum Unterstützen des Zwischenspeichers 245 beim Lesen und Schreiben von Daten, einen Steuerschalter 241 zum Steuern eines Protokolls zum Steuern einer Datenübertragung zu oder von dem Parallelverarbeitungsmodul 255, dem Sperrmodul 257, dem Aufgaben-Spinning-Modul 258 und einem Berechnungsmodul 259, in denen Informationen festgelegt werden können. Mehrere Puffer 244 können zum Unterstützen der Verfahren und Schritte wie hierin beschrieben umgesetzt werden.
  • In einer Ausführungsform werden die Host-Computer oder eine oder mehrere physische oder virtuelle Einheiten 210, 220, 225 und der Speicher-Controller 240 über einen Netzwerkadapter (dieser könnte ein Fibre Channel sein) 260 als Schnittstelle verbunden, d. h. über einen als „Struktur” bezeichneten Schalter. Der Mikroprozessor 242 kann den Arbeitsspeicher 243 so steuern, dass er Befehlsinformationen von dem Cluster-Host/der Knoteneinheit (physisch oder virtuell) 210 und Informationen zum Identifizieren des Cluster-Host/der Knoteneinheit (physisch oder virtuell) 210 speichert. Der Steuerschalter 241, die Puffer 244, der Zwischenspeicher 245, die Betriebssoftware 250, der Mikroprozessor 242, der Arbeitsspeicher 243, der NVS 216, das Parallelverarbeitungsmodul 255, das Sperrmodul 257, das Aufgaben-Spinning-Modul 258 und ein Berechnungsmodul 259 stehen miteinander in Datenübertragung und können separate Komponenten oder eine einzelne Komponente sein. Ferner können einige, wenn nicht alle der Komponenten wie beispielsweise die Betriebssoftware 250 in dem Arbeitsspeicher 243 enthalten sein. Alle Komponenten in den gezeigten Einheiten können miteinander verbunden sein und zu Zwecken, die für die vorliegende Erfindung geeignet sind, miteinander in Datenübertagung stehen.
  • Unter Bezugnahme auf 3 veranschaulicht ein Ablaufplan ein beispielhaftes Verfahren 300 für eine effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus. Das Verfahren 300 beginnt (Schritt 302). Das Verfahren 300 gestattet, dass sich eine neue Aufgabe auf dem Sperrmechanismus in die Warteschleife einreiht, wenn eine Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, kleiner als ein vordefinierter Schwellenwert für parallele Operationen ist, die Sperren zwischen den mehreren Threads erfordern (Schritt 304). Das Verfahren 300 endet (Schritt 306).
  • Unter Bezugnahme auf 4 veranschaulicht ein Ablaufplan ein weiteres beispielhaftes Verfahren 400 für eine effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus. Das Verfahren 400 beginnt (Schritt 402). Das Verfahren 400 setzt einen Lock Lock-Try-or-Spin-Mechanismus um oder ruft diesen ab (Schritt 404). Das Verfahren 400 erhält die Anzahl von Aufgaben die sich auf dem Lock-Try-or-Spin-Mechanismus in einer Warteschleife befinden (Schritt 406). Das Verfahren 400 ermittelt anschließend, ob die Anzahl von Aufgaben, die sich auf den Sperren in einer Warteschleife befinden (z. B. einem Lock-Try-or-Spin-Mechanismus), höher als eine vordefinierte Anzahl ist (z. B. N, wobei N mindestens ein Wert größer 0 sein kann, wie beispielsweise 1) (Schritt 408). Falls ja, fertigt das Verfahren 400 eine Aufgabe neu ab, wenn die Anzahl von Aufgaben, die sich auf dem Lock-Try-or-Spin Mechanismus in einer Warteschleife befinden, höher als eine vordefinierte Anzahl ist (z. B. N, wobei N mindestens ein Wert größer 0 sein kann, wie beispielsweise 1) (Schritt 410). Wenn die Anzahl von Aufgaben, die sich für den Lock-Try-or-Spin-Mechanismus in einer Warteschleife befinden, gleich der oder kleiner als die vordefinierte Anzahl ist, reiht sich die neue Aufgabe auf der Sperre in die Warteschleife ein (Schritt 412). Das Verfahren 400 endet (Schritt 414).
  • In einer Ausführungsform setzt die vorliegende Erfindung einen neuen Lock-Try-or-Spin-Mechanismus auf dem Spinlock um. Der neue Lock-Try-or-Spin-Mechanismus arbeitet wie folgt: 1) Wenn die Anzahl von Aufgaben, die sich auf dem Spinlock in einer Warteschleife befinden, größer als N ist (N kann 1 sein), gibt der Algorithmus eine Fehlerbenachrichtigung zurück. Wenn die Anzahl von Aufgaben, die sich auf dem Spinlock in einer Warteschleife befinden, gleich und/oder größer N ist (N kann 1 sein), gibt der Algorithmus an, dass sich die Aufgabe auf der Sperre in eine Warteschleife einreiht. Die Anzahl von Aufgaben, die sich bereits in einer Warteschleife befinden, kann von anderen Typen von Sperren (z. B. Ticket-Sperren) erhalten werden. Zum Beispiel kann die vorliegende Erfindung bei Ticket-Sperren angeben, wie viele Aufgaben/CPUs seit der letzten angegebenen Ticketnummer und aktuellen bereitgestellten Ticketnummer warten.
  • In einer Ausführungsform ruft die vorliegende Erfindung den Lock-Try-or-Spin-Mechanismus ab. Wenn der Lock-Try-or-Spin-Mechanismus nicht erfolgreich ist, beendet die vorliegende Erfindung den Prozessor, und die Aufgabe wird in die Abfertigungswarteschlange verschoben. Somit beseitigt die vorliegende Erfindung die Notwendigkeit, überhaupt zu warten, wie bei Sperren auf Warteschlangen-Grundlage. In einer Ausführungsform beseitigt die vorliegende Erfindung die Notwendigkeit, eine bestimmte Zeit zu warten, und bricht die Aufgabe in den Warteschlangen-Sperren ab, wodurch die Verschwendung von CPU-Zyklen beseitigt wird.
  • Des Weiteren beseitigt die vorliegende Erfindung die Notwendigkeit, dass sich jede Aufgabe in eine Warteschlange einreihen muss, wie bei Ticket-Sperren erforderlich, was bedeutet, dass CPU-Zyklen von anderen Aufgaben verwendet werden können. Somit kann der neue Lock-Try-or-Spin-Mechanismus zusätzlich zu Ticket-Sperren und/oder Sperren auf Warteschlangen-Grundlage umgesetzt werden.
  • Wie einem Fachmann klar sein wird, können Aspekte der vorliegenden Erfindung als ein System, Verfahren oder Computerprogrammprodukt verkörpert werden. Dementsprechend können Aspekte der vorliegenden Erfindung in der Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform {einschließlich Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform vorliegen, die Software- und Hardware-Aspekte kombiniert, auf die alle hierin allgemein als „Schaltung”, „Modul” oder „System” Bezug genommen werden kann. Des Weiteren können Aspekte der vorliegenden Erfindung die Gestalt eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien mit einem darin ausgeführten computerlesbaren Programmcode ausgeführt ist.
  • Jede Kombination von einem oder mehreren computerlesbaren Medien kann verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein physisches computerlesbares Speichermedium sein. Ein physisches computerlesbares Speichermedium kann zum Beispiel ein elektronisches, magnetisches, optisches, Quarz-, Polymer-, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder Einheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu Beispielen für ein physisches computerlesbares Speichermedium zählen eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein RAM, ein ROM, ein EPROM, ein Flash-Speicher, ein Lichtwellenleiter, ein CD-ROM, eine optische Speichereinheit, eine Magnetspeichereinheit oder jede geeignete Kombination des Vorgenannten, sie sind aber nicht darauf beschränkt. In dem Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes konkrete Medium sein, das ein Programm oder Daten zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Anweisungsausführung enthalten oder speichern kann.
  • In einem computerlesbaren Medium verkörperter Computercode kann unter Verwendung jedes geeigneten Mediums übertragen werden, einschließlich drahtlos, drahtgebunden, über ein Lichtwellenleiterkabel, Funkfrequenz (HF) usw. oder jede geeignete Kombination des Vorgenannten, ist aber nicht darauf beschränkt. Computercode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in jeder statischen Sprache geschrieben werden wie beispielsweise der Programmiersprache „C” oder ähnlichen Programmiersprachen. Der Computercode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jeden Typ von Netzwerk oder Datenübertragungssystem verbunden werden, einschließlich ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), ein konvergentes Netzwerk, oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Nutzung eines Internet-Dienstanbieters), es ist jedoch nicht darauf beschränkt.
  • Aspekte der vorliegenden Erfindung werden im Vorgenannten unter Bezugnahme auf Veranschaulichungen des Ablaufplans und/oder der Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block in den Veranschaulichungen von Ablaufplänen und/oder den Blockschaubildern und Kombinationen von Blöcken in den Veranschaulichungen von Ablaufplänen und/oder den Blockschaubildern durch Computerprogrammanweisungen umgesetzt werden können. Diese Computerprogrammanweisungen können für einen Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, ausgeführt werden, Mittel zum Umsetzen der Funktionen/Handlungen erstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere Vorrichtung, die programmierbare Daten verarbeitet, oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Weise funktionieren, sodass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsgegenstand erzeugen, einschließlich Anweisungen, die die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegebene Funktion/Handlung umsetzen. Die Computerprogrammanweisungen können auch auf einen Computer, eine andere Vorrichtung, die programmierbare Daten verarbeitet, oder andere Einheiten geladen werden, um die Ausführung einer Serie von Arbeitsschritten auf dem Computer, einer anderen Vorrichtung, die programmierbare Daten ausführt, oder anderen Einheiten zu veranlassen, um einen über den Computer umgesetzten Prozess zu erzeugen, sodass die Anweisungen, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Handlungen bereitstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
  • Der Ablaufplan und die Blockschaubilder in den vorgenannten Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. Diesbezüglich kann jeder Block in dem Ablaufplan oder in den Blockschaubildern ein Modul, ein Segment oder einen Codeabschnitt darstellen, der eine oder mehrere ausführbare Anweisungen zum Umsetzen der angegebenen logischen Funktion(en) aufweist. Es ist ebenfalls anzumerken, dass in einigen alternativen Umsetzungen die in dem Block angegebenen Funktionen in einer anderen Reihenfolge auftreten können als in den Figuren angegeben. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es wird ebenfalls angemerkt, dass jeder Block in den Blockschaubildern und/oder in der Veranschaulichung des Ablaufplans und Kombinationen von Blöcken in den Blockschaubildern und/oder der Veranschaulichung des Ablaufplans durch spezielle Systeme auf der Grundlage von Hardware, die die angegebenen Funktionen oder Handlungen ausführen, oder Kombinationen von spezieller Hardware und Computeranweisungen umgesetzt werden können.
  • Obwohl eine oder mehrere Ausführungsformen der vorliegenden Erfindung ausführlich veranschaulicht worden sind, wird für Fachleute offenkundig sein, dass an diesen Ausführungsformen Modifizierungen und Anpassungen vorgenommen werden können, ohne vom Schutzumfang der vorliegenden Erfindung abzuweichen, wie in den folgenden Ansprüchen dargelegt.

Claims (20)

  1. Verfahren zur effizienten Aufgabenplanung unter Verwendung eines Sperrmechanismus durch eine Prozessoreinheit in einer Datenverarbeitungsumgebung, wobei das Verfahren aufweist: Gestatten, dass sich eine neue Aufgabe auf dem Sperrmechanismus in eine Warteschleife einreiht, wenn eine Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, kleiner als ein vordefinierter Schwellenwert für parallele Operationen ist, die Sperren zwischen den mehreren Threads erfordern.
  2. Verfahren nach Anspruch 1, das ferner ein Unterbinden enthält, dass sich die neue Aufgabe auf dem Sperrmechanismus in eine Warteschleife einreiht, wenn die Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, entweder gleich oder größer als der vordefinierte Schwellenwert ist.
  3. Verfahren nach Anspruch 2, das ferner ein Erhalten der Anzahl von Aufgaben enthält, die sich gegenwärtig auf dem Sperrmechanismus in einer Warteschleife befinden, bevor der neuen Aufgabe gestattet wird, sich auf dem Sperrmechanismus in eine Warteschleife einzureihen.
  4. Verfahren nach Anspruch 1, das ferner ein Scheitern der neuen Aufgabe enthält, wenn die Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, entweder gleich oder größer als der vordefinierte Schwellenwert ist.
  5. Verfahren nach Anspruch 1, das ferner ein Auslagern der neuen Aufgabe auf eine Abfertigungswarteschlange enthält, wenn die Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, entweder gleich oder größer als der vordefinierte Schwellenwert ist.
  6. Verfahren nach Anspruch 1, das ferner ein Abrufen des Sperrmechanismus enthält, um zu bestimmen, ob die Anzahl von Aufgaben, die sich auf dem Sperrmechanismus befinden, kleiner als der vordefinierte Schwellenwert ist.
  7. Verfahren nach Anspruch 1, das ferner ein Umsetzen des Sperrmechanismus enthält, um zu bestimmen, ob die Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, kleiner als der vordefinierte Schwellenwert zuzüglich einer Sperre auf Ticket-Grundlage und einer Sperre auf Warteschlangen-Grundlage ist, wobei der Sperrmechanismus ein Lock-Try-or-Spin-Mechanismus ist.
  8. System zur effizienten Aufgabenplanung unter Verwendung eines Sperrmechanismus in einer Datenverarbeitungsumgebung, wobei das System aufweist: den Sperrmechanismus; und mindestens eine Prozessoreinheit, die in der Datenverarbeitungsumgebung in Datenübertragung mit dem Sperrmechanismus betriebsfähig ist, wobei die Prozessoreinheit: gestattet, dass sich eine neue Aufgabe auf dem Sperrmechanismus in eine Warteschleife einreiht, wenn eine Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, kleiner als ein vordefinierter Schwellenwert für parallele Operationen ist, die Sperren zwischen den mehreren Threads erfordern.
  9. System nach Anspruch 8, wobei die mindestens eine Prozessoreinheit unterbindet, dass sich die neue Aufgabe auf dem Sperrmechanismus in eine Warteschleife einreiht, wenn die Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, entweder gleich oder größer als der vordefinierte Schwellenwert ist.
  10. System nach Anspruch 9, wobei die mindestens eine Prozessoreinheit die Anzahl von Aufgaben erhält, die sich gegenwärtig auf dem Sperrmechanismus in einer Warteschleife befinden, bevor der neuen Aufgabe gestattet wird, sich auf dem Sperrmechanismus in eine Warteschleife einzureihen.
  11. System nach Anspruch 8, wobei die mindestens eine Prozessoreinheit mit der Aufgabe scheitert, wenn die Anzahl der Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, entweder gleich oder größer als der vordefinierte Schwellenwert ist.
  12. System nach Anspruch 8, wobei die mindestens eine Prozessoreinheit die neue Aufgabe in eine Abfertigungswarteschlange auslagert, wenn die Anzahl der Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, entweder gleich oder größer als der vordefinierte Schwellenwert ist.
  13. System nach Anspruch 8, wobei die mindestens eine Prozessoreinheit den Sperrmechanismus abruft, um zu bestimmen, ob die Anzahl von Aufgaben, die sich auf dem Sperrmechanismus befinden, kleiner als der vordefinierte Schwellenwert ist.
  14. System nach Anspruch 8, wobei die mindestens eine Prozessoreinheit den Sperrmechanismus umsetzt, um zu bestimmen, ob die Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, kleiner als der vordefinierte Schwellenwert zuzüglich einer Sperre auf Ticket-Grundlage und einer Sperre auf Warteschlangen-Grundlage ist, wobei der Sperrmechanismus ein Lock-Try-or-Spin-Mechanismus ist.
  15. Computerprogrammprodukt für effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus in einer Datenverarbeitungsumgebung durch mindestens eine Prozessoreinheit, wobei das Computerprogrammprodukt ein nicht-transitorisches computerlesbares Speichermedium mit darin gespeicherten computerlesbaren Programmcodeabschnitten aufweist, wobei die computerlesbaren Programmcodeabschnitte aufweisen: einen ersten ausführbaren Abschnitt, der gestattet, dass sich eine neue Aufgabe auf dem Sperrmechanismus in eine Warteschleife einreiht, wenn eine Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, kleiner als ein vordefinierter Schwellenwert für parallele Operationen ist, die Sperren zwischen den mehreren Threads erfordern.
  16. Computerprogrammprodukt nach Anspruch 15, das ferner einen zweiten ausführbaren Abschnitt enthält, der unterbindet, dass sich die neue Aufgabe auf dem Sperrmechanismus in eine Warteschleife einreiht, wenn die Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, entweder gleich oder größer als der vordefinierte Schwellenwert ist.
  17. Computerprogrammprodukt nach Anspruch 16, das ferner einen dritten ausführbaren Abschnitt enthält, der die Anzahl von Aufgaben erhält, die sich gegenwärtig auf dem Sperrmechanismus in einer Warteschleife befinden, bevor der neuen Aufgabe gestattet wird, sich auf dem Sperrmechanismus in eine Warteschleife einzureihen.
  18. Computerprogrammprodukt nach Anspruch 15, das ferner einen zweiten ausführbaren Abschnitt enthält, der eines ausführt von: Scheitern der neuen Aufgabe, wenn die Anzahl der Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, gleich dem oder größer als der vordefinierte Schwellenwert ist, und Auslagern der neuen Aufgabe auf eine Abfertigungswarteschlange, wenn die Anzahl der Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, entweder gleich dem vordefinierten Schwellenwert oder größer als dieser ist.
  19. Computerprogrammprodukt nach Anspruch 15, das ferner einen zweiten ausführbaren Abschnitt enthält, der den Sperrmechanismus abruft, um zu bestimmen, ob die Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, kleiner als der vordefinierte Schwellenwert ist.
  20. Computerprogrammprodukt nach Anspruch 15, das ferner einen zweiten ausführbaren Abschnitt enthält, der den Sperrmechanismus umsetzt, um zu bestimmen, ob die Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, kleiner als der vordefinierte Schwellenwert zuzüglich einer Sperre auf Ticket-Grundlage und einer Sperre auf Warteschlangen-Grundlage ist, wobei der Sperrmechanismus ein Lock-Try-or-Spin-Mechanismus ist.
DE112014002754.5T 2013-08-14 2014-07-28 Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus Pending DE112014002754T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/966,468 US10579413B2 (en) 2013-08-14 2013-08-14 Efficient task scheduling using a locking mechanism
USUS-13/966,468 2013-08-14
PCT/CN2014/083148 WO2015021855A1 (en) 2013-08-14 2014-07-28 Efficient task scheduling using locking mechanism

Publications (1)

Publication Number Publication Date
DE112014002754T5 true DE112014002754T5 (de) 2016-03-03

Family

ID=52467788

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112014002754.5T Pending DE112014002754T5 (de) 2013-08-14 2014-07-28 Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus

Country Status (6)

Country Link
US (1) US10579413B2 (de)
JP (1) JP2016530625A (de)
CN (1) CN105393212B (de)
DE (1) DE112014002754T5 (de)
GB (1) GB2532400B (de)
WO (1) WO2015021855A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9542236B2 (en) * 2011-12-29 2017-01-10 Oracle International Corporation Efficiency sequencer for multiple concurrently-executing threads of execution
US9558035B2 (en) * 2013-12-18 2017-01-31 Oracle International Corporation System and method for supporting adaptive busy wait in a computing environment
GB2532424B (en) * 2014-11-18 2016-10-26 Ibm An almost fair busy lock
US11119903B2 (en) * 2015-05-01 2021-09-14 Fastly, Inc. Race condition testing via a scheduling test program
US10606487B2 (en) * 2017-03-17 2020-03-31 International Business Machines Corporation Partitioned memory with locally aggregated copy pools
CN109086124B (zh) * 2017-06-13 2021-08-20 龙芯中科技术股份有限公司 调整时间的方法、装置、电子设备及存储介质
CN108710541B (zh) * 2018-05-22 2022-02-01 泰康保险集团股份有限公司 一种定时任务的执行方法及装置
US10713082B2 (en) * 2018-11-28 2020-07-14 Sap Se Cloud platform integration load balancer
CN111552574A (zh) * 2019-09-25 2020-08-18 华为技术有限公司 一种多线程同步方法及电子设备
WO2022265248A1 (en) * 2021-06-15 2022-12-22 Samsung Electronics Co., Ltd. Method and electronic device for distributing packet flow
CN115934370A (zh) * 2022-12-23 2023-04-07 科东(广州)软件科技有限公司 自旋锁的获取方法、装置、设备及存储介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2804478B2 (ja) 1988-05-26 1998-09-24 株式会社日立製作所 タスク制御方式及びオンライン・トランザクション・システム
US5274809A (en) * 1988-05-26 1993-12-28 Hitachi, Ltd. Task execution control method for a multiprocessor system with enhanced post/wait procedure
JPH02171952A (ja) 1988-12-26 1990-07-03 Hitachi Ltd マルチプロセッサにおけるディスパッチ方式
JPH0318935A (ja) 1989-06-15 1991-01-28 Hitachi Ltd データリストに対するアクセスの直列化方式
JPH0612394A (ja) 1992-06-25 1994-01-21 Hitachi Ltd プロセススケジュール方式
US6112222A (en) * 1998-08-25 2000-08-29 International Business Machines Corporation Method for resource lock/unlock capability in multithreaded computer environment
US6965961B1 (en) 2002-03-01 2005-11-15 University Of Rochester Queue-based spin lock with timeout
US20050081204A1 (en) 2003-09-25 2005-04-14 International Business Machines Corporation Method and system for dynamically bounded spinning threads on a contested mutex
US7861042B2 (en) * 2006-10-23 2010-12-28 Hewlett-Packard Development Company, L.P. Processor acquisition of ownership of access coordinator for shared resource
US8086437B2 (en) 2008-04-02 2011-12-27 Microsoft Corporation Modeling and simulating software contention
WO2011096163A1 (ja) 2010-02-03 2011-08-11 日本電気株式会社 情報処理システム、排他制御方法および排他制御用プログラム
US9158596B2 (en) * 2011-03-18 2015-10-13 Oracle International Corporation Partitioned ticket locks with semi-local spinning
US20130080672A1 (en) * 2011-09-27 2013-03-28 Kaminario Technologies Ltd. System, method and computer program product for access control
CN102508381B (zh) 2011-11-29 2015-02-11 深圳市华星光电技术有限公司 一种用于液晶面板的烘烤设备
CN102566979B (zh) * 2011-12-02 2014-12-03 华为技术有限公司 实现自适应锁的方法和装置以及多核处理器系统
US8905000B2 (en) 2011-12-22 2014-12-09 Continental Automotive Systems, Inc. Throttle body assembly

Also Published As

Publication number Publication date
GB2532400B (en) 2020-06-03
US20150052529A1 (en) 2015-02-19
GB201603638D0 (en) 2016-04-13
WO2015021855A1 (en) 2015-02-19
CN105393212B (zh) 2018-08-24
GB2532400A (en) 2016-05-18
CN105393212A (zh) 2016-03-09
US10579413B2 (en) 2020-03-03
JP2016530625A (ja) 2016-09-29

Similar Documents

Publication Publication Date Title
DE112014002754T5 (de) Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus
DE102016221811B4 (de) Zuordnung von Ressourcen mit mehrschichtigem Speicher
DE112011101633B4 (de) Virtualisierung und dynamische Ressourcenzuweisung berücksichtigendes Neuordnen von Speicherebenen
DE112015004336B4 (de) Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls
DE102014117462A1 (de) Poolen von Speicherressourcen über mehrere Knoten hinweg
DE102012215918A1 (de) Spiegeln virtueller Maschinen von einem primären auf einen sekundären Host
DE102010044531B4 (de) Autonome Speicherarchitektur
DE102012224265A1 (de) Gemeinsame Nutzung dicht benachbarter Daten-Cachespeicher
DE112010005821T5 (de) Kontextwechsel
DE102005029852A1 (de) Multiprozessorsystem mit mehreren Speicherpositionen zum jeweiligen Speichern von TLB-Abschussdaten für mehrere Prozessorknoten
DE112015004750T5 (de) Eine beinahe faire aktive sperre
DE112011103408T5 (de) Verwalten von komprimiertem Speicher unter Verwendung gestaffelter Interrupts
DE112018003524T5 (de) Dynamische datenverlagerung unter verwendung von speicherbänken auf cloud-grundlage
DE112013000369T5 (de) Verwaltung von Threads innerhalb einer Datenverarbeitungsumgebung
DE112020004181T5 (de) Bereitstellen eines direkten datenzugriffs zwischen beschleunigern und speicher in einer datenverarbeitungsumgebung
DE112012001660T5 (de) Speicher-Checkpointing in einem System gespiegelter virtueller Maschinen
DE102010044529A1 (de) Autonome Subsystem-Architektur
DE102013209643B4 (de) Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens
DE112015001477T5 (de) Hardwarezähler zum Verfolgen einer Auslastung in einem Multithreading-Computersystem
DE112020004661T5 (de) Ermitteln einer optimalen Anzahl von Threads pro Kern in einem Mehrkern-Prozessorkomplex
DE112011100564T5 (de) Einfügen eines Flash-Zwischenspeichers in große Speichersysteme
DE112011101019T5 (de) Verarbeitung von Befehlen mit mehreren Prioritäten zwischen Back-End-Prozessoren
DE112015001502T5 (de) Ausstieg aus mehreren Threads in einem Computer
DE102020103521A1 (de) Minimieren der Nutzung von Hardware-Zählern bei getriggerten Operationen für kollektive Kommunikation
DE112013000687T5 (de) Verteilte Funktionsausführung für Hybridsysteme

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication