DE60226176T2 - Verfahren und programme zur einstellung von prioritätsstufen in einem datenverarbeitungssystem mit multiprogrammierung und priorisierte warteschlangenbildung - Google Patents

Verfahren und programme zur einstellung von prioritätsstufen in einem datenverarbeitungssystem mit multiprogrammierung und priorisierte warteschlangenbildung Download PDF

Info

Publication number
DE60226176T2
DE60226176T2 DE60226176T DE60226176T DE60226176T2 DE 60226176 T2 DE60226176 T2 DE 60226176T2 DE 60226176 T DE60226176 T DE 60226176T DE 60226176 T DE60226176 T DE 60226176T DE 60226176 T2 DE60226176 T2 DE 60226176T2
Authority
DE
Germany
Prior art keywords
priority
strands
computer system
priority level
level
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.)
Expired - Lifetime
Application number
DE60226176T
Other languages
English (en)
Other versions
DE60226176D1 (de
Inventor
Bob Janssen
Peter Gerardus Jansen
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.)
Real Enterprise Solutions Development BV
Original Assignee
Real Enterprise Solutions Development BV
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 Real Enterprise Solutions Development BV filed Critical Real Enterprise Solutions Development BV
Publication of DE60226176D1 publication Critical patent/DE60226176D1/de
Application granted granted Critical
Publication of DE60226176T2 publication Critical patent/DE60226176T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Description

  • Die Erfindung betrifft ein Verfahren zum Einstellen von Prioritätsniveaus in einem Multiprogrammierungs-Computersystem mit Prioritätsplanung, ein Multiprogrammierungs-Computersystem mit Prioritätsplanung und ein Computerprogramm, das auf ein Multiprogrammierungs-Computersystem mit Prioritätsplanung geladen werden kann.
  • Ein Multiprogrammierungs-Computersystem ist ein Computersystem, das in der Lage ist, zwischen mehreren in einem Speicher geladenen Programmen hin und her zu wechseln. Das Betriebssystem eines solchen Computers weist ein Steuerprogramm auf, eine Komponente, die auswählt, welcher von zwei oder mehr Ausführungssträngen, die bereit zum Ausführen sind, als nächstes ausgeführt werden soll. Um sicherzustellen, dass bestimmte Stränge mit größerer Wahrscheinlichkeit als andere ausgewählt werden, weisen Stränge ein ihnen zugeordnetes Prioritätsniveau auf.
  • Wenngleich gebräuchliche Betriebssysteme Mechanismen zum Ändern von Prioritätsniveaus aufweisen, wird die Grundeinstellung des Prioritätsniveaus für Prozesse und/oder Stränge, die erzeugt werden, wenn ein Anwendungsprogramm ausgeführt wird, nicht von dem Betriebssystem vorgenommen. Das Niveau wird entweder von dem Anbieter des Anwendungsprogramms eingestellt oder es wird von einem Systemadministrator eingestellt. Das kann zu Problemen führen, wenn das Ausführen eines bestimmten Programms einen großen Anteil einer Prozessorkapazität benötigt. Die hohe Prioritätseinstellung führt zu einer Situation, wo der Ausführungsstrang oder die Ausführungsstränge dieses Programms alle verfügbaren Verarbeitungsressourcen verbrauchen. Das ist nachteilig für das Ausführen anderer Prozesse, die gleichzeitig auf dem Computersystem ablaufen.
  • In Situationen, in denen verschiedene Anwender Anwendungsprogramme auf einem System ausführen, kann ein von einem der Anwender gestarteter Prozess dazu führen, dass andere Prozesse sehr langsam auf Befehle reagieren, die von einem anderen Anwender eingegeben werden.
  • WO 99/21081 offenbart ein System und ein Verfahren zum Ausführen von Computer-Verarbeitungsoperationen in einem Datenverarbeitungssystem, das einen Multi-Strang-Prozessor und eine Strang-Schaltlogik aufweist. Der Multi-Strang-Prozessor ist in der Lage, zwischen zwei oder mehr Befehlssträngen umzuschalten, welche unabhängig voneinander ausgeführt werden können. Jeder Strang weist einen zugeordneten Status in einem Strang-Statusregister auf, der von seinem Ausführungsstatus abhängt. Die Strang-Schaltlogik weist ein Strang-Schalt-Kontrollregister auf, so dass die Bedingungen gespeichert werden, unter welchen ein Strang auftritt. Die Strang-Schaltlogik weist ein Unterbrechungsregister auf, welches einen Strang-Schalter betätigt, wenn das Ausführen des aktiven Strangs in dem Multi-Strang-Prozessor eine programmierbare Zeitperiode überschreitet. Die Strang-Schaltlogik weist außerdem ein Vorwärts-Ablauf-Zählregister auf, so dass ein wiederholtes Strang-Wechseln zwischen Strängen in dem Multi-Strang-Prozessor vermieden wird. Die Strang-Schaltlogik reagiert ferner auf einen Softwaremanager, der in der Lage ist, die Priorität der verschiedenen Stränge zu ändern und dadurch Strang-Schaltereignisse zu ersetzen.
  • EP 880 095 offenbart ein Verfahren zum Planen von Aufgaben, die in einem Computersystem von einer Ressource ausgeführt werden sollen, wobei die Aufgaben in Klassen eingeteilt sind, wobei die Aufgabenklassen, die um die Anforderung einer Ressource konkurrieren, in einer Hierarchie angeordnet sind. Jede Aufgabenklasse hat einen Zeitfunktionswert, der steuert, wann die Aufgabenklasse von der Ressource ausgewählt wird, sobald Verarbeitungszeit verfügbar wird. Innerhalb eines bestimmten Niveaus der Hierarchie werden Planungsprioritäten durch eine oder mehrere zeitbasierte Funktionen definiert, von denen jede konstant oder dynamisch veränderlich sein kann. Wenn konstante zeitbasierte Funktionen verwendet werden, hat jede Aufgabenklasse einen Planungswert, der über einen Zeitraum beibehalten wird. Wenn dynamische zeitbasierte Funktionen verwendet werden, werden Aufgabenklassen-"Zeitfunktionswerte" modifiziert, so dass der Zeitverlauf verändert wird, mit welchem die Aufgabenklasse die Ressource bekommt.
  • Es ist ein Ziel der Erfindung, ein Multiprogrammierungs-Computersystem und ein Computerprogramm gemäß dem Oberbegriff der Ansprüche 1, 10 bzw. 11 bereitzustellen, das zum Vermindern von Effizienzproblemen verwendet werden kann, die durch einen verarbeitungsintensiven Ausführungsstrang verursacht werden.
  • Demzufolge stellt die Erfindung ein Verfahren zum Einstellen von Prioritätsniveaus in einem Multiprogrammierungs-Computersystem mit Prioritätsplanung bereit, in welchem Ausführungsstränge eines jeden Prozesses ein Standard-Prioritätsniveau aufweisen, welches das Messen einer relativen Nutzung eines oder mehrerer Prozessoren in dem System durch die Ausführungsstränge eines Prozesses aufweist, wobei die Prioritätsniveaus eines oder mehrerer Ausführungsstränge vermindert werden, wenn ihre gemessene relative Nutzung eine bestimmte Eskalationsschwelle für die Dauer einer Eskalationszeitperiode überschreitet.
  • Auf diese Weise wird ein verarbeitungsintensiver Strang ermittelt. Er erhält eine niedrigere Priorität im Vergleich zu den anderen Ausführungssträngen. Das Steuerprogramm in dem Betriebssystem ordnet diesem Strang daher weniger Zeitfenster zu. Für die anderen Ausführungsstränge werden mehr Zeitfenster bereitgestellt.
  • Vorzugsweise wird das Prioritätsniveau aller Ausführungsstränge, die zu einem Prozess gehören, vermindert, wenn die Summe der relativen Nutzung durch die Stränge des Prozesses eine Eskalationsschwelle für die Dauer der Eskalationszeitperiode überschreitet.
  • Dadurch entgeht in einem Computersystem, das in der Lage ist, Multi-Strang-Code auszuführen, ein Prozess mit viel mehr Ausführungssträngen, als andere Prozesse, nicht der Ermittlung. Anwender bemerken im Allgemeinen lediglich, ob sich ein Prozess schwerfällig verhält. Ein Verringern der Priorität aller Ausführungsstränge eines Prozesses, wenn die gesamte von ihnen genutzte Verarbeitungskapazität eine Schwelle überschreitet, lässt die anderen Prozesse besser reagieren.
  • Vorzugsweise wird das Prioritätsniveau zumindest eines Strangs auf das niedrigste Niveau innerhalb eines Bereichs möglicher Werte verringert.
  • Dadurch tritt der Effekt sofort ein. Es ist nicht notwendig, die Priorität über mehrere Zeitperioden allmählich zurückzunehmen. In Kombination mit der Verwendung einer Eskalationszeitperiode ist das Verfahren stabil, reagiert jedoch ausreichend, so dass Ungeduld auf der Seite der Anwender vermieden wird.
  • Vorzugsweise werden die verringerten Prioritätsniveaus auf das Standard-Prioritätsniveau zurückgeführt, wenn die relative Nutzung für die Dauer einer Probezeitperiode niedriger als eine Probeschwelle ist.
  • Das Verfahren bleibt deshalb über ein verlängertes Zeitintervall effizient, da es nicht möglich ist, dass das Prioritätsniveau eines jeden Prozess sukzessive verringert wird, bis alle auf dem niedrigsten Niveau sind.
  • In einer bevorzugten Ausführungsform wird ein Ereignis des Änderns eines Prioritätsniveaus registriert.
  • Es ist dadurch möglich, "CPU-hungrige" Prozesse zu erfassen. Dieses Wissen kann vorteilhaft genutzt werden, beispielsweise indem solche Prozesse nachts ausgeführt werden.
  • Gemäß einem Aspekt der Erfindung wird ein Multiprogrammierungs-Computersystem mit Prioritätsplanung bereitgestellt, das in der Lage ist oder dazu eingerichtet ist, ein Verfahren gemäß irgendeinem der Ansprüche 1 bis 9 auszuführen.
  • Das Computersystem, welches auch ein Multi-Anwender-Computersystem sein kann, reagiert auf Anwenderbefehle, sogar wenn viele Prozesse gleichzeitig ablaufen.
  • Gemäß einem weiteren Aspekt der Erfindung wird ein Computerprogramm bereitgestellt, das auf ein Multiprogrammierungs-Computersystem mit Prioritätsplanung geladen werden kann, so dass das Computersystem, wenn das Computerprogramm ausgeführt wird, in der Lage ist, ein Verfahren gemäß irgendeinem der Ansprüche 1 bis 9 auszuführen.
  • Dieses Programm kann zum Vermindern von Problemen verwendet werden, die von einem Prozess verursacht werden, der zu viel Verarbeitungskapazität beansprucht. Insbesondere stellt es sicher, dass andere Prozesse weiter in einem Tempo ablaufen, welches für die Anwender des Computersystems akzeptabel ist.
  • Die Erfindung wird nun bezugnehmend auf die beigefügten Zeichnungen im Einzelnen beschrieben.
  • 1 zeigt ein sehr schematisches Diagramm einiger Komponenten eines einfachen Computersystems.
  • 2 zeigt ein sehr schematisches Diagramm von Prozessen und Strängen auf verschiedenen Prioritätsniveaus.
  • 3 zeigt eine Graphik des relativen Betrags an CPU-Verarbeitungsleistung, die von einem Prozess verwendet wird.
  • 1 zeigt ein sehr schematisches Diagramm einiger Basiskomponenten eines Computersystems, lediglich zum Darstellen der Aufgabe der Erfindung. Das System weist eine zentrale Verarbeitungseinheit (CPU 2) mit einem Cache 3 auf, der über einen Cache-Bus 4 angeschlossen ist. Ein Brücken-Chip 5 verbindet die CPU 2 mit dem Systemspeicher 6 und einem Festplatten-Controller 7 über einen lokalen Bus 8 und einen Systembus 9 bzw. einen Hauptbus 10. Der Festplatten- Controller stellt über einen peripheren Gerätebus 12 einen Zugriff auf eine Festplatte 11 her.
  • Wenngleich das System von 1 eine einzelne CPU 2 aufweist, ist die Erfindung nicht auf Einzelprozessor-Computersysteme beschränkt. In der Tat kann sie nicht nur in Verbindung mit einem Multiprozessor-Computer verwendet werden, sondern auch in einem dezentralen Computersystem, das mehrere miteinander verbundene Knoten aufweist, wobei jeder Knoten ein System ähnlich zu dem von 1 aufweist. In solch einem dezentralen System kann das erfindungsgemäße Verfahren auf jedem Knoten separat implementiert werden, oder auf dem gesamten System.
  • Das erfindungsgemäße Verfahren ist für Multiprogrammierungs-Systeme bestimmt. Im Folgenden wird auf 2 Bezug genommen, so dass einige Begriffe in einem Multiprogrammierungs-System erklärt werden.
  • Ein oder mehrere Programme werden auf der Festplatte 11 gespeichert, wobei Algorithmen in irgendeiner geeigneten Notation ausgedrückt werden. Wenn ein Programm ablaufen soll, werden ein oder mehrere Prozesse auf dem Computersystem ausgeführt. Ein Prozess ist im Kontext der vorliegenden Anwendung eine Aktivität jeglicher Art. Ein Prozess hat eine Eingabe, eine Ausgabe und einen Status. Üblicherweise gibt es einen Prozess für jedes ablaufende Anwendungsprogramm, aber gelegentlich startet das Anwendungsprogramm andere Prozesse.
  • In 2 sind ein erster Prozess 13 und ein zweiter Prozess 14 schematisch dargestellt. Jeder Prozess 13, 14 hat irgendeinen ihm zugeordneten Adressbereich in dem Systemspeicher 6, eine Liste von Speicherpositionen, die ein Prozess auslesen und beschreiben kann. Wenn einer der Prozesse 13, 14 ausgeführt werden soll, wird der Inhalt des Adressbereichs in die Register der CPU geladen und die Befehle, welche auch in dem Adressbereich jedes Prozesses gespeichert sind, werden ausgeführt.
  • Das System von 1 ist ein Multiprogrammierungs-System, was bedeutet, dass der erste Prozess 13 und der zweite Prozess 14 gleichzeitig im Systemspeicher 6 ablaufen können. Das System schaltet zwischen den Prozessen 13, 14 auf solch eine Weise hin und her, dass der Anwender den Eindruck hat, die Prozesse 13, 14 würden gleichzeitig ablaufen. Wenn beide Prozesse 13, 14 bereit zum Ausführen sind, wird in dem Betriebssystem ein Planungsalgorithmus verwendet, so dass entschieden wird, welcher Prozess ausgeführt werden soll.
  • In einem Multi-Strang-System kann jeder Prozess ein oder mehrere Ausführungsstränge aufweisen. In dem Beispiel von 2 weist der erste Prozess 13 in 2 einen ersten Strang 15 und einen zweiten Strang 16 auf. Der zweite Prozess 14 weist ebenfalls zwei Stränge 17 auf. Ein Ausführungsstrang ist eine Einheit, die zum Ausführen auf der CPU 2 eingeplant ist. Jeder der Stränge 15, 16, 17 hat einen Programmzähler, der seinen Verlauf anzeigt, Register, die seine aktuellen Arbeitsvariablen enthalten, und einen Stapelspeicher. Die Ausführungsstränge 15, 16 des ersten Prozesses 13 benutzen gemeinsam den Adressbereich dieses Prozesses 13, offene Dateien und andere Ressourcen. Das Gleiche gilt für die Stränge 17 des zweiten Prozesses 14.
  • In einem Multiprogrammierungs-System, das Mehrstrangigkeit unterstützt, schaltet das System zwischen den Ausführungssträngen 15 bis 17 hin und her. Wieder bestimmt der Planungsalgorithmus, welcher der Stränge 15 bis 17 ablaufen soll, wenn mehr als ein Strang bereit sind. Die Erfindung wird im Kontext eines Multiprogrammierungs-Systems erklärt, dass Mehrstrangigkeit unterstützt. Der Fachmann versteht allerdings, dass in einem System, das Mehrstrangigkeit nicht unterstützt, jeder Prozess genau einen Ausführungsstrang aufweist. In solch einem System kann die Erfindung dennoch eingesetzt werden. Die Begriffe Strang und Prozess können dann ausgetauscht werden.
  • Die meisten modernen Betriebssysteme verwenden eine Form eines Prioritätsplanungs-Algorithmus. Es existieren mehrere Varianten und die Erfindung ist nicht auf die Anwendung bei irgendeiner besonderen Variante beschränkt. Allerdings wird die Erfindung im Kontext einer Variante erklärt, die in einem weit verbreiteten Betriebssystem eingesetzt wird, welches auch Mehrstrangigkeit unterstützt. Bezugnehmend auf 2 wird ein Feld 18 von Prioritätsniveaus gezeigt. Jeder der Ausführungsstränge 15 bis 17 befindet sich auf einem Prioritätsniveau innerhalb eines Bereichs verfügbarer Anwender-Prioritätsniveaus. In dem Beispiel bezeichnet P0 das niedrigste verfügbare Niveau, P1 das höchste. Das Feld 18 weist außerdem einen Bereich von System-Prioritätsniveaus 20 in einem Bereich von P1 bis P2 auf. Die System-Prioritätsniveaus sind für Stränge von Betriebssystemprozessen reserviert.
  • In dem Betriebssystem, das hier zum Erläutern der Erfindung verwendet wird, gibt es mehrere Prozess-Prioritätsklassen und mehrere Strang-Prioritätsklassen. Jeder der Stränge 15 bis 17 weist ein Basis-Prioritätsniveau auf, das sowohl von der dem Strang zugeordneten Prioritätsklasse als auch von der Prozess-Prioritätsklasse, die dem Prozess zugeordnet ist, zu dem der Strang gehört, bestimmt wird. Dadurch befindet sich der erste Strang 15 des ersten Prozesses 13 in einer höheren Strang-Prioritätsklasse als ein zweiter Strang 16. Der erste Strang 15 befindet sich deshalb auf einem höheren Anwender-Prioritätsniveau 13 als der zweite Strang 16.
  • Die Verarbeitungszeit in der CPU 2 wird in Quanten eingeteilt, typischerweise zwischen 20 ms und 200 ms. Das Steuerprogramm tritt immer dann in Aktion, wenn eines von drei Ereignissen auftritt: ein Zeitquant hat geendet, ein Strang blockiert (d. h. er kann nicht weiter ablaufen, weil er eine Eingabe benötigt, die nicht sofort verfügbar ist) oder eine Unterbrechung tritt ein. An diesem Punkt wählt das Steuerprogramm den Strang auf dem höchsten der Prioritätsniveaus zuerst aus. Wo sich mehrere Stränge auf einem Prioritätsniveau befinden, wird eine Warteschleife verwendet, so dass nacheinander jeder der Stränge auf dem Niveau ausgewählt wird.
  • Die Basispriorität eines Strangs wird von dem Betriebssystem nicht geändert. Sie startet auf einem Standardniveau; einem Niveau, das von dem Programm oder von dem Systemadministrator eingestellt wurde, wobei das Niveau normalerweise während des Ausführens des Strangs beibehalten wird.
  • Das Betriebssystem kann einen Wert zu dem Basis-Prioritätsniveau addieren. In dem beispielhaften Betriebssystem kann das Prioritätsniveau eines Strangs durch Addieren eines Faktors zu dem Basis-Prioritätsniveau zeitweise erhöht werden. Andere Betriebssysteme addieren einen zeitveränderlichen Betrag zu der Basispriorität, so dass das gesamte Prioritätsniveau absinkt, wenn der Strang ausgeführt wird, und sich erhöht, wenn nicht.
  • Es wurde herausgefunden, dass weder ein zeitweiliges Erhöhen noch das Addieren eines zeitveränderlichen Faktors zu dem Basis-Prioritätsniveau Probleme ausreichend vermeidet, die von Strängen oder Prozessen mit einem allzu hohen Basis-Prioritätsniveau verursacht werden. Solch ein Strang wird dauerhaft zum Ausführen ausgewählt, öfter, als das ganze Zeitquantum nicht verbraucht wird. In dem hier verwendeten beispielhaften Betriebssystem wird ein niedriges Anwender-Prioritätsniveau nur für die Dauer von ein oder zwei Zeitquanten erhöht. Das ist genug zum Eingeben eines Befehls an solch einen Prozess, aber nicht genug für den Prozess, um viel mit dem Befehl anzufangen. In dem Moment, wenn das zeitweise Erhöhen geendet hat, übernimmt wieder der Strang mit dem höheren Basis-Prioritätsniveau. Auf einer makroskopischen Zeitskala, die einige Größenordnungen größer ist, als die der Zeitquanten, führt die CPU vorwiegend die Stränge mit dem höheren Basis-Prioritätsniveau aus.
  • Daraus können ernste Probleme erwachsen, speziell in Computersystemen, die hochwertige vernetzte Server und Arbeitsstationen aufweisen, welche von mehreren Anwendern benutzt werden. Wenn beispielweise ein Anwender eine Bildverarbeitungsanwendung mit einem hohen Basis-Prioritätsniveau ausführt, bemerken andere Anwender, dass ihre Anwendungen langsamer werden und schlechter reagieren. Typischerweise beklagt sich ein Anwender bei einem Systemadministrator, der die Basispriorität der Stränge der Bildverarbeitungsanwendung von Hand zurücksetzt.
  • Die Erfindung stellt ein Programm bereit, welches in der Lage ist, automatisch Basis-Prioritätsniveaus einzustellen, so dass solche Einstellungen durch einen Systemadministrator nicht länger notwendig sind. Die relative Nutzung der CPU 2 durch die Ausführungsstränge 15, 16, 17 wird gemessen. Das Basis-Prioritätsniveau eines Ausführungsstrangs wird ausgehend von seinem Standardniveau verringert, wenn die relative Nutzung während einer Eskalationszeitperiode einer bestimmten Länge eine bestimmte Eskalationsschwelle überschreitet. Wie oben erwähnt, ist das Standardniveau das vorgegebene Niveau, bei welchem der Strang normalerweise ausgeführt wird.
  • Dadurch wird in dem beispielhaften System die relative Nutzung des Prozessors durch die Ausführungsstränge 15, 16 des ersten Prozesses 13 gemessen, genauso wie die relative Nutzung durch die Ausführungsstränge 17 des zweiten Prozesses 14. In einem System, das Mehrstrangigkeit unterstützt, ist ein einzelnes Beobachten von jedem der Ausführungsstränge aus der Sicht eines Anwenders nicht empfehlenswert. Eine Bildverarbeitungsanwendung mit vielen Ausführungssträngen kann der Beobachtung entgehen, da jeder einzelne Strang keinen großen Anteil an Verarbeitungszeit verbraucht. Allerdings können die Stränge eines Prozesses zusammengenommen die Stränge anderer Prozesse davon abhalten, ausgeführt zu werden.
  • Deshalb werden in einem System, das Mehrstrangigkeit unterstützt, die Prioritätsniveaus aller Ausführungsstränge, die zu einem Prozess gehören, verringert, wenn die gesamte relative Nutzung durch die Stränge dieses Prozesses während einer bestimmten Zeitperiode eine bestimmte Eskalationsschwelle überschreitet.
  • In dem beispielhaften System kann dies durch Verringern der Prozess-Prioritätsklasse leicht erreicht werden, beispielsweise durch einen Systemaufruf an das Betriebssystem.
  • Bezugnehmend auf 3 wird die relative Nutzung der CPU 2 durch den ersten Prozess 13 gezeigt. Die Graphik ist von einem System abgeleitet, dass das erfindungsgemäße Verfahren verwendet. Die relative Nutzung wird als ein Prozentwert an Verarbeitungszeit ausgedrückt, aber jegliche anderen Messwerte, wie die Anzahl der Operationen, können im Prinzip verwendet werden. Die Eskalationsschwelle ist in diesem Beispiel auf 80% eingestellt worden. Zu einem Zeitpunkt T0 überschreitet die relative Nutzung des Prozessors durch den ersten Prozess 13 die Eskalationsschwelle. Tatsächlich liegt die relative Nutzung im Wesentlichen bei 100%. Weil die relative Nutzung während eines Zeitintervalls ΔT1 oberhalb von 80% bleibt, wird der erste Prozess 13 auf eine niedrigere Prozess-Prioritätsklasse gesetzt. Das Prioritätsniveau von beiden Strängen 15, 16 des Prozesses 13, inklusive des "CPU-hungrigen" Strangs, wird folglich ebenso verringert. Infolgedessen sinkt die relative Nutzung auf etwa 95%, was ausreicht, um dem zweiten Prozess zu erlauben, ohne große Behinderung zu arbeiten.
  • Die Länge des Zeitintervalls ΔT1 hängt größtenteils vom Umfang der Toleranz der Anwender des Computersystems ab. Wie aus der Graphik von 3 ersichtlich ist, ist es möglich, dass die anderen Prozesse während des Zeitintervalls ΔT1 wirksam vom Ausführen ausgeschlossen werden. Natürlich ist nach dem Herabsetzen des Prioritätsniveaus des ersten Prozesses 13 das Prioritätsniveau des "CPU-hungrigen" Strangs immer noch höher als das aller Stränge des zweiten Prozesses 14, nichts passiert, bis ein anderes Zeitintervall der Länge ΔT1 vergangen ist. Das wäre inakzeptabel.
  • Infolgedessen wird das Prioritätsniveau zum Zeitpunkt T1 auf das niedrigste Niveau innerhalb eines Bereichs erlaubter Werte verringert. In dem beispielhaften System wird die Prozess-Prioritätsklasse auf das niedrigste mögliche Niveau verringert. Innerhalb des Bereichs der Erfindung kann allerdings zusätzlich die Strang-Prioritätsklasse aller Stränge des Prozesses auf das niedrigste mögliche Niveau verringert werden. Beide Stränge 15, 16 des ersten Prozesses 13 würden sich dann auf dem Niveau P0 befinden.
  • Oft verbraucht ein Prozess oder Strang nur zeitweise zu viel Prozessorkapazität. Eine beispielhafte Situation ist, dass zwei Anwender eine Textverarbeitungsanwendung auf einer Maschine ausführen. Jeder der zwei Prozesse befindet sich auf dem gleichen Basis-Prioritätsniveau. Ein Anwender kann beschließen, ein Makro auszuführen. Zu diesem Zeitpunkt kann sein Prozess so viel Prozessorkapazität verbrauchen, dass der andere Prozess beeinflusst wird. Das Prioritätsniveau des Prozesses, der ein Makro ausführt, wird dann verringert. Wenn zu einem späteren Zeitpunkt der andere Anwender ein Makro ausführt, wird die Priorität seines Prozesses verringert. Beide Prozesse befinden sich jetzt auf dem niedrigsten Prioritätsniveau. Es gibt keine weiteren Gegenmaßnahmen mehr, wenn ein Prozess wieder zu dominieren beginnt.
  • Diese unerwünschte Situation wird vermieden, weil die verringerten Prioritätsniveaus auf das Standard-Prioritätsniveau zurückgeführt werden, wenn die relative Nutzung niedriger als eine Probeschwelle ist. In 3 ist die Probeschwelle auf 40% eingestellt.
  • Natürlich könnte die CPU-Nutzung zeitweise unter die Probeschwelle abfallen. Wenn die Prioritätsniveaus sofort auf das Standard-Prioritätsniveau zurückgeführt werden müssten, dann wäre das Resultat ein sehr unstabiles System, in welchem Basis-Prioritätsniveaus nahezu jede Sekunde verändert würden.
  • Das wird dadurch vermieden, dass die Prioritätsniveaus nur dann auf das Standard-Prioritätsniveau zurückgeführt werden, wenn die relative Nutzung während einer Probezeitperiode niedriger als die Probeschwelle einer bestimmten Dauer ΔT2 ist. Deshalb werden in 3 die Prioritätsniveaus der Stränge 15, 16 des ersten Prozesses 13 zum Zeitpunkt T3 auf ihre Standardniveaus zurückgeführt.
  • Das erfindungsgemäße Verfahren existiert neben dem Planungsalgorithmus des Betriebssystems. Es wird als ein separates Programm bereitgestellt, das im Anwenderbereich abläuft. Das Steuerprogramm des Betriebssystems läuft im Kernbereich, wobei es die Basisprioritäten bestimmt, die von dem erfindungsgemäßen Programm eingestellt werden.
  • Das Betriebssystem-Steuerprogramm und das erfindungsgemäße Verfahren dienen verschiedenen aber komplementären Zwecken. Das Steuerprogramm stellt primär sicher, dass die Ressourcen des Computersystems effizient genutzt werden, beispielsweise dass dieses auf die Tastaturbefehle und andere Formen von Eingabe und Ausgabe reagiert. Deshalb sind Steuerprogrammparameter plattformabhängig.
  • Das erfindungsgemäße Verfahren stellt eine bessere Anwendererfahrung sicher. Dafür werden Parametern Anwenderpräferenzen zugrunde gelegt, beispielsweise, wie lange eine Person bereit ist, auf das Fortsetzen eines Prozesses zu warten. Es ist deshalb vorteilhaft, dass das Verfahren in einem Anwenderbereich abläuft, so dass das Programm auf unterschiedlichen Systemen mit unterschiedlichen Betriebssystemen laufen kann oder auf Betriebssysteme übertragen werden kann.
  • Wenngleich beide, das Betriebssystem-Steuerprogramm und das erfindungsgemäße Programm, Strang-Prioritätsniveaus einstellen, tun sie das auf einer unterschiedlichen Zeitskala. Das Betriebssystem-Steuerprogramm arbeitet auf einer Zeitskala, die von den Zeitquanten bestimmt ist, typischerweise 10 ms bis 100 ms. Das erfindungsgemäße Programm arbeitet auf der Zeitskala, die von der Eskalationszeit-Periodenlänge ΔT1 bestimmt ist. Die Länge der Eskalationszeitperiode ist größer als 1 s. Üblicher ist eine noch größere Eskalationszeitperiode, beispielsweise 2 s oder 5 s. Das erfindungsgemäße Programm beeinträchtigt den Planungsalgorithmus daher nicht auf eine solche Weise, dass das Computersystem unstabil wird.
  • Das erfindungemäße Programm ist als eine Lösung für die Probleme bestimmt, denen Systemadministratoren gemeinhin gegenüberstehen. Es befreit sie von der Bürde, die Basis-Prioritätsniveaus von Strängen oder Prozessen manuell einstellen zu müssen. Es stellt außerdem zwei zusätzliche Merkmale bereit.
  • Als Erstes wird ein Ereignis des Veränderns eines Prioritätsniveaus registriert. In einem Protokoll wird ein Eintrag zum Zeitpunkt T1 und zum Zeitpunkt T3 vorgenommen. Der Eintrag identifiziert zumindest den schuldigen Prozess. Ein Systemadministrator verwendet das Protokoll, um zu Entscheiden, dass das Standard-Prioritätsniveaus eines Prozesses verringert wird oder dass der Prozess zu einer geeigneten Zeit ausgeführt wird, beispielsweise nachts. Da ein Eintrag sowohl dann gemacht wird, wenn das Prioritätsniveau verringert wird, als auch, wenn es vergrößert wird, ist es möglich, zu bestimmen, wie lange ein Prozess die Verarbeitungsleistung der CPU 2 übermäßig beansprucht.
  • Als ein zweites Merkmal ist der Systemadministrator in der Lage, zumindest eine der Schwellen und/oder Zeitperiodenlängen ΔT1, ΔT2 einzustellen, aber vorzugsweise alle von ihnen. Er kann so die Leistung des Systems jederzeit genau einstellen.
  • Es können Veränderungen der Eskalationsschwelle vorgenommen werden, so dass die Anzahl der laufenden Prozesse berücksichtigt wird. 95% können durchaus akzeptabel sein, wo nur zwei Prozesse ablaufen, weil die verbleibenden 5% durchaus ausreichend sind. Wenn mehrere hundert Prozesse ablaufen, können für alle von ihnen 5% viel zu wenig sein, um in einem akzeptablen Tempo abzulaufen. Veränderungen der Probeschwelle können genauso verwendet werden, um die Anzahl der laufenden Prozesse zu berücksichtigen.
  • Ein leichtes Vergrößern der Eskalationszeitperiode ΔT1 kann beispielsweise nützlich sein, wenn ein Prozess durch mehrere große CPU-Rechenphasen gekennzeichnet ist, von denen jede eine Dauer aufweist, die etwas länger die normale Eskalationszeitperiode ΔT1 ist. Das Vergrößern von ΔT1 würde häufige Änderungen des Basis-Prioritätsniveaus vermeiden.
  • Es ist für Fachleute ersichtlich, dass die Erfindung nicht auf die oben beschriebene Ausführungsform beschränkt ist, sondern innerhalb des Bereichs der Ansprüche variiert werden kann. Diesbezüglich ist zu bemerken, dass einige Betriebssysteme negative Prioritätsniveaus verwenden. Prozesse oder Stränge auf einem Prioritätsniveau mit einem niedrigeren (d. h. negativeren) Wert haben Vorrang vor denen mit einem höheren Wert. In der vorliegenden Anmeldung soll ein höheres Prioritätsniveau als ein Prioritätsniveau verstanden werden, das einem Prozess oder Strang auf diesem Niveau Vorrang vor Prozessen auf niedrigerem Niveau ermöglicht.

Claims (11)

  1. Verfahren zum Einstellen von Prioritätsniveaus in einem Multiprogrammierungs-Computersystem (1) mit Prioritätsplanung, wobei in dem Verfahren Ausführungsstränge (15, 16, 17) eines jeden Prozesses (13, 14) ein Standard-Prioritätsniveau aufweisen, wobei das Verfahren ein Messen einer relativen Nutzung von einem oder mehr Prozessoren (2) in dem System (1) durch die Ausführungsstränge (15, 16, 17) eines Prozesses (13, 14) aufweist, dadurch gekennzeichnet, dass das oder die Prioritätsniveau(s) von einem oder mehr Ausführungssträngen (15, 16, 17) verringert werden, wenn deren gemessene relative Nutzung für die Dauer einer Eskalationszeitperiode (ΔT1) eine bestimmte Eskalationsschwelle überschreitet.
  2. Verfahren gemäß Anspruch 1, wobei die Prioritätsniveaus aller Ausführungsstränge (15, 16, 17), die zu einem Prozess (13, 14) gehören, verringert werden, wenn die gesamte relative Nutzung durch die Stränge (15, 16, 17) dieses Prozesses (13, 14) für die Dauer der Eskalationszeitperiode (ΔT1) eine Eskalationsschwelle überschreitet.
  3. Verfahren gemäß Anspruch 1 oder 2, wobei das Prioritätsniveau von zumindest einem Strang auf das niedrigste Niveau innerhalb eines Bereichs möglicher Werte (19) verringert wird.
  4. Verfahren gemäß einem der Ansprüche 1 bis 3, wobei die verringerten Prioritätsniveaus auf das Standard-Prioritätsniveau zurückgeführt werden, wenn die relative Nutzung niedriger ist als eine Probeschwelle.
  5. Verfahren gemäß Anspruch 4, wobei die verringerten Prioritätsniveaus auf das Standard-Prioritätsniveau zurückgeführt werden, wenn die relative Nutzung für die Dauer einer Probezeitperiode (ΔT2) niedriger ist als eine Probeschwelle.
  6. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei die Prioritätsniveaus durch ein in einem Anwenderbereich ablaufendes Programm verändert werden, und die Prioritäten von einem Betriebssystem-Steuerprogramm benutzt werden.
  7. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei ein Auftreten des Veränderns eines Prioritätsniveaus registriert wird.
  8. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei die Eskalationszeitperiode (ΔT1) länger als eine Sekunde ist.
  9. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei zumindest eine der Schwelle(n) und/oder Zeitperiode(n) (ΔT1, ΔT2) hinsichtlich ihres Werts durch einen Administrator des Computersystems (1) eingestellt wird.
  10. Multiprogrammierungs-Computersystem mit Prioritätsplanung, wobei das Multiprogrammierungs- Computersystem dazu fähig oder eingerichtet ist, ein Verfahren gemäß einem der Ansprüche 1 bis 9 auszuführen.
  11. Computerprogramm, welches auf ein Multiprogrammierungs-Computersystem (1) mit Prioritätsplanung geladen werden kann, so dass das Computersystem (1), wenn es in Betrieb ist, fähig ist, ein Verfahren gemäß einem der Ansprüche 1 bis 9 auszuführen.
DE60226176T 2002-01-30 2002-01-30 Verfahren und programme zur einstellung von prioritätsstufen in einem datenverarbeitungssystem mit multiprogrammierung und priorisierte warteschlangenbildung Expired - Lifetime DE60226176T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/NL2002/000070 WO2003065214A1 (en) 2002-01-30 2002-01-30 Method of setting priority levels in a multiprogramming computer system with priority scheduling, multiprogramming computer system and program therefor

Publications (2)

Publication Number Publication Date
DE60226176D1 DE60226176D1 (de) 2008-05-29
DE60226176T2 true DE60226176T2 (de) 2009-05-14

Family

ID=27656496

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60226176T Expired - Lifetime DE60226176T2 (de) 2002-01-30 2002-01-30 Verfahren und programme zur einstellung von prioritätsstufen in einem datenverarbeitungssystem mit multiprogrammierung und priorisierte warteschlangenbildung

Country Status (11)

Country Link
US (1) US7565652B2 (de)
EP (1) EP1474744B1 (de)
JP (1) JP2005516303A (de)
AT (1) ATE392662T1 (de)
AU (1) AU2002230272B2 (de)
CA (1) CA2474477C (de)
DE (1) DE60226176T2 (de)
DK (1) DK1474744T3 (de)
ES (1) ES2305216T3 (de)
NZ (1) NZ534314A (de)
WO (1) WO2003065214A1 (de)

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7657893B2 (en) * 2003-04-23 2010-02-02 International Business Machines Corporation Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor
US7350060B2 (en) * 2003-04-24 2008-03-25 International Business Machines Corporation Method and apparatus for sending thread-execution-state-sensitive supervisory commands to a simultaneous multi-threaded (SMT) processor
US20040216101A1 (en) * 2003-04-24 2004-10-28 International Business Machines Corporation Method and logical apparatus for managing resource redistribution in a simultaneous multi-threaded (SMT) processor
US7290261B2 (en) * 2003-04-24 2007-10-30 International Business Machines Corporation Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor
US7155600B2 (en) * 2003-04-24 2006-12-26 International Business Machines Corporation Method and logical apparatus for switching between single-threaded and multi-threaded execution states in a simultaneous multi-threaded (SMT) processor
US7562362B1 (en) * 2003-06-18 2009-07-14 Apple Inc. User control of task priority
US7380247B2 (en) * 2003-07-24 2008-05-27 International Business Machines Corporation System for delaying priority boost in a priority offset amount only after detecting of preemption event during access to critical section
US9098340B2 (en) * 2003-12-08 2015-08-04 Teradata Us, Inc. Virtual regulator for a database system
US8176489B2 (en) * 2004-12-09 2012-05-08 International Business Machines Corporation Use of rollback RCU with read-side modifications to RCU-protected data structures
JP2007287085A (ja) * 2006-04-20 2007-11-01 Fuji Xerox Co Ltd 画像処理装置及びプログラム
US8813082B2 (en) * 2006-06-22 2014-08-19 International Business Machines Corporation Thread priority based on object creation rates
EP1892625B1 (de) * 2006-08-09 2018-07-11 Red Bend Software Feinkornplanung von Betriebssystemen
KR101282139B1 (ko) * 2006-09-11 2013-07-04 삼성전자주식회사 별도 버튼을 이용하여 성능모드 변경이 가능한컴퓨터시스템 및 그 제어방법
JP5152175B2 (ja) * 2007-03-20 2013-02-27 富士通モバイルコミュニケーションズ株式会社 情報処理装置
US7853950B2 (en) * 2007-04-05 2010-12-14 International Business Machines Corporarion Executing multiple threads in a processor
US8832702B2 (en) * 2007-05-10 2014-09-09 Freescale Semiconductor, Inc. Thread de-emphasis instruction for multithreaded processor
US20090070762A1 (en) * 2007-09-06 2009-03-12 Franaszek Peter A System and method for event-driven scheduling of computing jobs on a multi-threaded machine using delay-costs
US8117618B2 (en) * 2007-10-12 2012-02-14 Freescale Semiconductor, Inc. Forward progress mechanism for a multithreaded processor
US9830670B2 (en) 2008-07-10 2017-11-28 Apple Inc. Intelligent power monitoring
US8161493B2 (en) * 2008-07-15 2012-04-17 International Business Machines Corporation Weighted-region cycle accounting for multi-threaded processor cores
JP5173713B2 (ja) 2008-09-30 2013-04-03 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法
EP2369478A1 (de) * 2010-02-22 2011-09-28 Telefonaktiebolaget L M Ericsson (PUBL) Technik zur Aufgabenplanung in einem System
EP2369477B1 (de) 2010-02-22 2017-10-11 Telefonaktiebolaget LM Ericsson (publ) Technik zur Bereitstellung der Aufgabenpriorität im Zusammenhang mit zur Aufgabenplanung in einem System vorgesehenen Informationen
JP2011180894A (ja) * 2010-03-02 2011-09-15 Fujitsu Ltd ジョブスケジューリングプログラム、ジョブスケジューリング装置、及びジョブスケジューリング方法
US8904399B2 (en) * 2010-03-15 2014-12-02 Qualcomm Incorporated System and method of executing threads at a processor
WO2011158405A1 (ja) * 2010-06-18 2011-12-22 パナソニック株式会社 優先度情報生成装置、情報処理装置
US8866701B2 (en) 2011-03-03 2014-10-21 Citrix Systems, Inc. Transparent user interface integration between local and remote computing environments
US9210213B2 (en) 2011-03-03 2015-12-08 Citrix Systems, Inc. Reverse seamless integration between local and remote computing environments
US9015449B2 (en) * 2011-03-27 2015-04-21 International Business Machines Corporation Region-weighted accounting of multi-threaded processor core according to dispatch state
GB2491165A (en) * 2011-05-26 2012-11-28 Realvnc Ltd Mobile device having a priority adjusting thread for link wi th remote terminal
JP5777992B2 (ja) * 2011-09-26 2015-09-16 株式会社三菱東京Ufj銀行 監視制御装置
US9355009B2 (en) * 2011-10-31 2016-05-31 International Business Machines Corporation Performance of scheduled tasks via behavior analysis and dynamic optimization
US8904397B2 (en) 2011-10-31 2014-12-02 International Business Machines Corporation Staggering execution of scheduled tasks based on behavioral information
US9047396B2 (en) 2011-10-31 2015-06-02 International Business Machines Corporation Method, system and computer product for rescheduling processing of set of work items based on historical trend of execution time
US9128754B2 (en) * 2012-05-31 2015-09-08 Hewlett-Packard Development Company, L.P. Resource starvation management in a computer system
WO2014035936A2 (en) 2012-08-31 2014-03-06 Citrix Systems Inc. Reverse seamless integration between local and remote computing environments
US9021493B2 (en) 2012-09-14 2015-04-28 International Business Machines Corporation Management of resources within a computing environment
JP2014059918A (ja) * 2013-12-27 2014-04-03 Bank Of Tokyo-Mitsubishi Ufj Ltd 監視制御装置
US9665372B2 (en) 2014-05-12 2017-05-30 International Business Machines Corporation Parallel slice processor with dynamic instruction stream mapping
US9672043B2 (en) 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
US9772959B2 (en) 2014-05-30 2017-09-26 Apple Inc. I/O scheduling
US9582326B2 (en) 2014-05-30 2017-02-28 Apple Inc. Quality of service classes
US9760375B2 (en) 2014-09-09 2017-09-12 International Business Machines Corporation Register files for storing data operated on by instructions of multiple widths
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
US10133581B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Linkable issue queue parallel execution slice for a processor
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
DE102016200777A1 (de) * 2016-01-21 2017-07-27 Robert Bosch Gmbh Verfahren und Vorrichtung zum Überwachen und Kontrollieren quasi-paralleler Ausführungsstränge in einem ereignisorientierten Betriebssystem
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
JP6282773B1 (ja) * 2017-06-30 2018-02-21 株式会社ショーワ マスキング治具、電気メッキ装置
CN109582223B (zh) * 2018-10-31 2023-07-18 华为技术有限公司 一种内存数据迁移的方法及装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0954699A (ja) * 1995-08-11 1997-02-25 Fujitsu Ltd 計算機のプロセススケジューラ
US5797305A (en) * 1996-02-12 1998-08-25 Moore Business Forms, Inc. On demand cross web perforation
US5838968A (en) * 1996-03-01 1998-11-17 Chromatic Research, Inc. System and method for dynamic resource management across tasks in real-time operating systems
US6223201B1 (en) * 1996-08-27 2001-04-24 International Business Machines Corporation Data processing system and method of task management within a self-managing application
US6601083B1 (en) * 1996-08-29 2003-07-29 Frederick John Reznak Multitasking data processing system and method of controlling allocation of a shared resource
US6263359B1 (en) 1997-05-22 2001-07-17 International Business Machines Corporation Computer resource proportional utilization and response time scheduling
FR2766592B1 (fr) * 1997-07-23 1999-08-27 Bull Sa Dispositif et procede de regulation dynamique de l'attribution des ressources sur un systeme informatique
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6243788B1 (en) 1998-06-17 2001-06-05 International Business Machines Corporation Cache architecture to enable accurate cache sensitivity
US6584488B1 (en) * 1999-04-12 2003-06-24 International Business Machines Corporation Controlling allocation of system resources with an enhanced priority calculation
US6542921B1 (en) * 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US7028298B1 (en) * 1999-09-10 2006-04-11 Sun Microsystems, Inc. Apparatus and methods for managing resource usage
US20020019843A1 (en) 2000-04-26 2002-02-14 Killian Robert T. Multiprocessor object control
US6859926B1 (en) * 2000-09-14 2005-02-22 International Business Machines Corporation Apparatus and method for workload management using class shares and tiers
GB2372847B (en) 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
JP3796124B2 (ja) * 2001-03-07 2006-07-12 株式会社ルネサステクノロジ スレッド間優先度可変プロセッサ
US6895585B2 (en) * 2001-03-30 2005-05-17 Hewlett-Packard Development Company, L.P. Method of mixed workload high performance scheduling
US20030187908A1 (en) * 2002-03-26 2003-10-02 Sun Microsystems, Inc. Methods and systems for customer based resource priority control
US7536689B2 (en) * 2003-01-10 2009-05-19 Tricerat, Inc. Method and system for optimizing thread scheduling using quality objectives
US7383548B2 (en) * 2003-11-28 2008-06-03 Nortel Networks Limited CPU usage regulation

Also Published As

Publication number Publication date
CA2474477C (en) 2011-04-12
EP1474744B1 (de) 2008-04-16
WO2003065214A1 (en) 2003-08-07
DE60226176D1 (de) 2008-05-29
ES2305216T3 (es) 2008-11-01
EP1474744A1 (de) 2004-11-10
DK1474744T3 (da) 2008-07-28
AU2002230272B2 (en) 2008-03-13
US20060037025A1 (en) 2006-02-16
US7565652B2 (en) 2009-07-21
CA2474477A1 (en) 2003-08-07
ATE392662T1 (de) 2008-05-15
NZ534314A (en) 2005-04-29
JP2005516303A (ja) 2005-06-02

Similar Documents

Publication Publication Date Title
DE60226176T2 (de) Verfahren und programme zur einstellung von prioritätsstufen in einem datenverarbeitungssystem mit multiprogrammierung und priorisierte warteschlangenbildung
EP1831786B1 (de) Verfahren zur verteilung von rechenzeit in einem rechnersystem
DE112004001320B3 (de) Verfahren, System und Vorrichtung zur Verbesserung der Leistung von Mehrkernprozessoren
DE69907512T2 (de) Gerät und verfahren zur automatischen frequenzregelung einer zentralen verarbeitungseinheit
DE60307532T2 (de) Paralleles Prozess-Ausführungsverfahren und Mehrprozessorenrechner
DE69822935T2 (de) Vorrichtung und Verfahren zur dynamischen Regelung der Betriebsmittelzuweisung in einem Computersystem
DE60008267T2 (de) Verfahren zum planen von zeitverteilten anwendungen in einem rechnerbetriebssystem
DE102004012056B4 (de) System und Verfahren zum Überwachen von Ressourcenausnutzung und Anwendungsleistungsfähigkeit
DE69529365T2 (de) Brauchersteuerbare Gleichzeitigkeitsfunktionalität
DE10231668B4 (de) Multitaskingbetriebssystem zur Verringerung des Stromverbrauchs und elektronische Steuerung im Fahrzeug, die selbiges benutzt
DE102010029209B4 (de) Verfahren zur dynamischen Verteilung von einem oder mehreren Diensten in einem Netz aus einer Vielzahl von Rechnern
DE112010005096T5 (de) Verfahren und Vorrichtungen zum Bewerten der Ressourcen-Kapazität in einem System von virtuellen Containern
DE102004053979A1 (de) Verfahren zur Prüfung der Echtzeitfähigkeit eines Systems
EP0010570A2 (de) Verfahren und Einrichtung zur selbstadaptiven Zuordnung der Arbeitslast einer Datenverarbeitungsanlage
DE102009056282A1 (de) Technik zum Steuern von Verarbeitungsressourcen
DE60125540T2 (de) Verfahren und gerät für einen ablaufsplanungstreiber zum implementieren eines protokolls mittels zeitschätzungen für anwendung mit einem gerät das keine unterbrechungen erzeugt
DE69909924T2 (de) Verfahren und Vorrichtung zur Reduzierung der Verlustleistung in einer Schaltung
EP1149338B1 (de) Lastverteilungsverfahren eines multiprozessorsystems und multiprozessorsystem
DE112004002505T5 (de) Entkoppeln der Anzahl der logischen Threads von der Anzahl der gleichzeitigen physischen Threads in einem Prozessor
DE102013211266B4 (de) Aufrechterhalten der Bandbreiten-Servicequalität einer Hardware-Ressource über einen Hardware-Zähler
DE10206865C1 (de) Reaktionszeit-Beschränkung eines Software-Prozesses
DE102010003512A1 (de) Geteilte zentrale Verarbeitung von Daten
DE102011083468A1 (de) Schaltungsanordnung zur Ablaufplanung bei einer Datenverarbeitung
DE202016107027U1 (de) Modulation von Prozessorkernoperationen
DE102020214951A1 (de) Verfahren zum dynamischen Zuweisen von Speicherbandbreite

Legal Events

Date Code Title Description
8364 No opposition during term of opposition