Der vollständige Befehl, den Sie möchten, lautet:
chrt -b 0 nice -n 19 ionice -c 2 -n 7 [command]
Der chrt
Befehl am Anfang schaltet die Dinge in die Stapelplanungsklasse um, was dem Hinzufügen von 0,5 zum netten Wert entspricht. Die Option -n für Ionice hat für die Optionen Echtzeit ( -c 1
) und Best-Effort ( -c 2
) eine einfache Priorität , wobei niedrigere Werte ebenso wie schöne Werte eine höhere Priorität haben (jedoch im Bereich von 0 bis 7). Der Befehl ionice ist jedoch nicht unbedingt erforderlich, da die E / A-Planungsklasse und die Priorität standardmäßig aus den CPU-Planungsparametern abgeleitet werden und dies nice -n 19
implizieren ionice -c 2 -n 7
.
Sie können jedoch die absolut minimale Ressourcennutzung erzielen, indem Sie sowohl die CPU- als auch die E / A-Planungsklasse auf Leerlauf setzen. In beiden Fällen sind die "inaktiven" Scheduler keine inaktiven Scheduler, und Sie können weiterhin Ressourcen verwenden. Es ist nur so, dass alles eine höhere Priorität hat.
Für die CPU-Planungsklasse wird auch der chrt
Befehl verwendet, allerdings ohne Notwendigkeit nice
(Priorität muss 0
in der Leerlaufplanungsklasse festgelegt werden) und sieht folgendermaßen aus:
chrt -i 0 {command or PID}
Der nice
Befehl unter Linux spiegelt die SVR4-Version wider, was bedeutet, dass die Planungsklasse nicht geändert werden kann, sondern nur ein netter Wert (der sich auch unter Linux anders verhält als unter klassischem UNIX, aber das ist ein bisschen OT). Da die ursprünglichen alternativen Planungsklassen POSIX.1E in Echtzeit waren SCHED_RR
und SCHED_FIFO
der Befehl zum Festlegen von Planungsklassen aufgerufen wurde chrt
. Die -i
Option gibt an, dass die SCHED_IDLE
Planungsklasse verwendet werden soll
Für die E / A-Planungsklasse verwenden Sie ionice
. Der genaue Befehl sieht folgendermaßen aus:
ionice -c 3 {command or PID}
Die -c
Option gibt an, welche Planungsklasse verwendet werden soll, und 3 ist die Nummer für die Leerlaufklasse. Beachten Sie, dass dies je nach verwendetem Block-E / A-Scheduler möglicherweise keine Auswirkungen hat. Insbesondere unterstützt der noop
E / A-Scheduler überhaupt keine Prioritäten oder Planungsklassen, und ich bin mir ziemlich sicher, dass die deadline
Scheduler (sowohl der Legacy- als auch der blk-mq-Scheduler) dies auch nicht tun.
Wenn Sie dies programmgesteuert tun möchten, entweder für Ihr eigenes Programm oder um Dinge für andere Prozesse anzupassen, lesen Sie die Manpages für die sched_setscheduler
und ioprio_set
Systemaufrufe (obwohl beide lesenswert sind, wenn Sie nur mehr Hintergrund wünschen).