Mit dem nice
Befehl können Sie die Planungspriorität ("Nizza") eines Programms anpassen. Auf allen Unix-ähnlichen Systemen, die ich verwendet habe, wird die Genauigkeit durch eine Reihe von Ganzzahlen angegeben, wobei -20 die günstigste Planungspriorität, 0 die Standardeinstellung und 19 die ungünstigste ist.
0 als Standardfeinheit zu haben, ist intuitiv genug, aber warum wurden -20 und 19 als Endpunkte des Bereichs ausgewählt? Warum nicht -128 und 127, die genau in ein 8-Bit-Byte mit Vorzeichen passen? Oder warum nicht -100 bis 100, was für dezimal denkende Menschen intuitiver ist, oder ähnlich, aber etwas ergonomischer, -99 bis 99? Wurde der Bereich -20 bis 19 willkürlich ausgewählt oder besteht eine Beziehung zu den Interna des Schedulers, mit dem nice
ursprünglich eine Schnittstelle bestand? (Ich verstehe, dass es heute keine solche Beziehung gibt, zumindest für Linux, dessen Scheduler Prioritäten im Bereich von 0 bis 139 verwendet. Ich bin jedoch an den historischen Gründen für den Bereich von -20 bis 19 interessiert.)
quelle
min(127, (recent CPU usage on a scale of 0 to 15) + 50 + pp->p_nice - 20
) und Prioritäten <25 reserviert wurden Prozesse, die unterbrechungsfreie Dinge tun. Die Freundlichkeit musste also in einem begrenzten Bereich liegen.Antworten:
Die internen Helligkeitsstufen sind 0-39, aber die Inkremente sind positiv oder negativ. Quelle . Die Antwort lautet also, dass Sie mit den vom
nice
Befehl akzeptierten Zahlen (positiv und negativ) von 20, der Standardstufe, an eine beliebige Stelle im Bereich von 0 bis 39 gelangen.Warum also 0-39? Das spezifische Sortiment war das, was in der ursprünglichen Implementierung der Designer funktioniert hat. Der Grund dafür, dass positivere Werte besser sind, besteht darin, dass bei der Bestimmung der Priorität der aktuelle CPU-Verbrauch eines Prozesses um den netten Wert erhöht wird. Um eine ungefähre Round-Robin-Planung zu ermöglichen, protokolliert der Kernel, wie viel CPU jeder Prozess in letzter Zeit gebrannt hat, und wechselt zu Prozessen, die nicht so viel hatten. Je höher die angenehme Stufe, desto mehr CPU-Zeit scheint der Prozess verbraucht zu haben, und desto häufiger wird dieser Prozess vom Scheduler in den Energiesparmodus versetzt oder in den Energiesparmodus versetzt. Siehe Das Design des UNIX-Betriebssystems von Maurice J. Bach, Prentice-Hall 1986, Sek. 8.1 (8.1.4 speziell für die Freundlichkeit). ISBN 0-13-201799-7.
quelle
Sie täuschen sich: Wenn Sie auf einem UNIX-System arbeiten, auf dem die nice () - Schnittstelle noch Sinn macht,
NZERO
ist nice der Standardwert undNZERO is 20
.Um es klarer zu machen: Sie haben nach dem Befehl gefragt
nice
und gleichzeitig die absoluten Ebenen erwähnt, aber der Befehl nice verwaltet keine absoluten Werte, sondern erhöht sich relativ zur aktuellen Ebene. Im Falle des Standardzustands ist das nette LevelNZERO
20.Schöne Werte sind 0..2 * NZERO-1 oder 0..39
Beachten Sie, dass der Standard-UNIX-Scheduler möglicherweise noch etwas Nützliches mit einem guten Wert kann, aber keine Bedeutung hat, wenn Sie einen speziellen Scheduler verwenden, z. B. einen Echtzeit-Scheduler.
quelle
nice
Shell-Befehl.