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