Wie verbraucht apt-get upgrade weniger Ressourcen?

26

Wenn ich sudo apt-get upgrademit vielen Paketen auf meinem Low-End-Laptop arbeite, kommt es zu einer spürbaren Systemverlangsamung, manchmal mit einem Bildschirmabsturz von bis zu 3 Sekunden.

Gibt es eine Möglichkeit, diesen Job als sehr niedrig zu kennzeichnen, dh sehr wenig CPU, MEM und Festplatte zu verwenden? Es ist mir eigentlich egal, ob es apt-get upgradezwei Stunden länger dauern würde, bis ich fertig bin. Ich möchte einfach ohne die Unterbrechungen während des Upgrades weiterarbeiten.

user1350992
quelle

Antworten:

26

Der Befehl nicekann verwendet werden, um die Prioritäten der Prozess- CPU-Zeitplanung zu manipulieren . Der Befehl weist dem Prozess einen "Nizza" -Wert von -20 (am wichtigsten) bis +19 (am wenigsten wichtig) zu. Root kann einen beliebigen Wert zuweisen, andere Benutzer nur positive (untergeordnete Bedeutung). Der Standardwert ist 0.

nice -n <niceness> <command>

Um die Priorität eines Befehls apt-get auf den niedrigsten Wert zu setzen, können Sie den Befehl verwenden

sudo nice -n 19 apt-get upgrade

Um die Priorität eines bereits laufenden Prozesses festzulegen, renicekann der Befehl verwendet werden:

renice -n <niceness> -p <pid>

Bearbeiten: Vielen Dank an @David für die Erwähnung des ioniceBefehls, mit dem Sie die E / A-Priorität der Festplatte bearbeiten können . Es kann einen Prozess in drei verschiedene Klassen einteilen:

  • Im Leerlauf wird nur die Prozessfestplattenzeit angezeigt, sofern kein anderer Prozess dies derzeit behauptet.
  • Best-Effort (Standardklasse). Auf diese Weise können Sie Prioritäten von 0 bis 7 zuweisen, wobei 0 am wichtigsten ist und 7 am wenigsten. Sie können versuchen, -n 7als Prioritätsstufe zuzuweisen.
  • Echtzeitprozesse werden vor allen anderen Vorgängen abgewickelt, sodass die Datenträger-E / A für andere Prozesse angehalten wird, sobald sie für sich selbst erforderlich sind. Mit Vorsicht verwenden!

IOnice kombiniert die Syntax von nice und renice:

ionice [-c class] [-n level] command             #To start a new process
ionice [-c class] [-n level] -p pid              #To change a running process

Beide Befehle können kombiniert werden, z

sudo ionice -n 7 nice -n 19 apt-get upgrade      #Omitting the -c switch will assign Best-effort
sudo nice -n 19 ionice -n 7 apt-get upgrade
nice -n 19 ionice -n 7 sudo apt-get upgrade
...
s3lph
quelle
6
Ich bin überrascht, dass es so viele positive Stimmen gibt. apt-get upgrade ist IO-gebunden!
Joshua
3
wie wäre es ionice?
David LeBauer
1
Also, um zu verdeutlichen, ist das sudoin Ihrem Befehl nicht für nice, sondern für sich apt-getselbst? Es scheint, dass das nice -n 19 sudo apt-get upgradeauch bei mir funktioniert. Gibt es einen wichtigen Unterschied?
Wchargin
1
@WChargin sudo nice apt-getläuft gut als root und erlaubt es, niedrigere Prioritäten als 0 zu setzen. Apt-get läuft immer noch als root. nice sudo apt-getläuft als aktueller Benutzer einwandfrei und lässt daher nur Prioritäten größer oder gleich 0 zu. apt-get wird als root gestartet.
S3LPH
1
@ David Ich habe ionice zu meiner Antwort hinzugefügt.
S3LPH