GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux-Befehle:So manipulieren Sie die Prozesspriorität

Die Verwaltung von Prozessen unter Linux ist ein grundlegendes Konzept, mit dem jeder gute Systemadministrator vertraut sein sollte. Ein Großteil der Arbeit, die Sie mit diesen Prozessen erledigen, besteht aus grundlegenden, sich wiederholenden Aufgaben wie dem Starten und Stoppen von Prozessen, dem Suchen nach ihnen, dem Beenden von ihnen usw.

In einigen weniger häufigen Fällen müssen Sie Ihre Prozesse aufgrund der Systemressourcenzuweisung möglicherweise neu anordnen. Wenn diese Situationen auftreten, wenden sich viele von uns an ihre bevorzugte Suchmaschine, um herauszufinden, wie dies am effizientesten zu tun ist. Nachdem Sie der Suchalgorithmus hierher geführt hat, um Sysadmin zu aktivieren, möchten wir Ihnen die Antworten liefern, nach denen Sie suchen.

Ich werde aufschlüsseln, wie die Priorität bestimmt wird, und Ihnen dann zeigen, wie Sie diese Werte weiter unten bearbeiten können.

Prozesspriorität und Relativität

Linux-Systeme führen routinemäßig mehr Prozesse aus, als Verarbeitungseinheiten im Computer vorhanden sind. Aus diesem Grund springt der Prozessplaner schnell zwischen Prozessen auf einem einzelnen Kern hin und her, wodurch die Illusion entsteht, dass wir mehrere gleichzeitige Prozesse ausführen.

In Wirklichkeit wird jedem Prozess eine Prozessplanungsrichtlinie zugewiesen. Innerhalb dieser Richtlinie gibt es eine 40-Punkte-Skala, die verwendet wird, um das Nett zu messen Ebenen eines Prozesses. Das Nice-Level ist eine Maßeinheit, die die relative Priorität des Prozesses beschreibt. Beachten Sie bei der Erörterung von Nettigkeitsstufen, dass die Skala von -20 (höchste Priorität) bis 19 (niedrigste Priorität) reicht und dass ein Prozess seine Nettigkeitsstufe vom übergeordneten Prozess erbt (meistens 0).

[Das könnte Ihnen auch gefallen: Grundlagen von Linux-Befehlen:7 Befehle für die Prozessverwaltung ]

Nun, wenn ein Prozess eine niedrigere Nettigkeitsstufe (unter Null) hat, dann ist es weniger wahrscheinlich, dass er seine CPU-Auslastung aufgibt (nicht sehr nett). ist es?). Auf der anderen Seite gibt ein Prozess mit einem hohen Niceness-Wert (über Null) mit größerer Wahrscheinlichkeit die CPU-Auslastung auf.

Eine einfache Möglichkeit, sich daran zu erinnern, ist, wenn jemand (oder ein Prozess) wirklich nett ist, er eher dazu neigt, mit anderen zu teilen. Wenn sie nicht sehr nett sind, neigen sie dazu, das, was ihnen gehört, eher zu schützen (in diesem Fall CPU-Ressourcen).

Wenn es keinen Ressourcenmangel gibt, werden auch Prozesse mit hohen Nettness-Stufen die gesamte verfügbare CPU-Zeit verwenden. Die einzige Zeit, in der ein Prozess seine Ressourcen freigibt, ist, wenn es einen Bandbreitenmangel gibt.

Prioritätsbericht

Nachdem wir nun den gesamten Kontext rund um die Prozesspriorität kennen, wollen wir uns einige Möglichkeiten ansehen, wie diese Informationen am Terminal angezeigt werden können.

Der schnellste und einfachste Weg, um Netness-Informationen anzuzeigen, ist die Verwendung von top Befehl. Es zeigt diese Informationen standardmäßig in der vierten Spalte (von links nach rechts) an und benötigt daher keine zusätzlichen Optionen oder Flags.

Die andere und etwas kompliziertere Methode ist die Verwendung von ps Befehl mit einer großzügigen Portion Formatierungsoptionen. Der folgende Befehl zeigt Prozesse mit ihren Prozess-IDs, Namen, Netness-Level und Scheduling-Klasse (absteigend sortiert) an:

[tcarrigan@localhost ~]$ ps axo pid,comm,nice,cls --sort=-nice

Jetzt in Echtzeit:

Bestehende Freundlichkeit manipulieren

Wir wissen jetzt, wie man die Nettigkeit eines bestehenden Prozesses anzeigt, aber was ist, wenn diese Nettigkeitsstufe nicht unseren Anforderungen entspricht? Wie können wir diese Werte ändern, um das Beste aus unserem System herauszuholen? Nun, wenn Sie einen bestimmten Prozess haben, der Ressourcen verschlingt, die Sie woanders benötigen, können Sie das nette Niveau dieses spezifischen Prozesses verringern. Dazu verwenden wir den renice Befehl.

Hinweis :nur der Root-Benutzer kann ein Niceness-Level reduzieren (Priorität erhöhen). Unprivilegierte Benutzer können Nice-Levels erhöhen, aber ohne Root-Rechte nicht verringern.

Sehen Sie sich dieses sleep 500 an Prozess. Es hat eine PID von 23990 und einen netten Standardwert von 0.

[tcarrigan@localhost ~]$ ps -o pid,comm,nice 23990
    PID COMMAND          NI
  23990 sleep             0

Wenn ich diesem Prozess weniger Priorität einräumen wollte, würde ich das folgende renice verwenden Befehl:

Um den Prozess wichtiger zu machen (Senkung des Nice-Levels), würden Sie die gleiche Befehlssyntax wie ein privilegierter Benutzer verwenden.

[Kostenloser Spickzettel:Kubernetes-Glossar] 

Eine letzte Sache

Okay, bevor wir zum Abschluss kommen, gibt es noch einen Trick, den ich hier einbeziehen wollte. Wenn Sie einen Prozess starten, der normalerweise einen unerwünschten Standard-Nice-Level hat, können Sie diesen Parameter tatsächlich beim Starten des Prozesses festlegen. Wir werden den sleep verwenden erneut befehlen. Diesmal werden wir es jedoch mit dem nice erstellen Befehl (der den Prozess standardmäßig auf Nice Level 10 setzt).

Sie können ein bestimmtes Nice-Level festlegen, indem Sie denselben Befehl mit der folgenden Syntax verwenden:

[tcarrigan@localhost ~]$ nice -n 19 sleep 500 &

Der obige Befehl setzt den Hintergrund sleep 500 auf ein nettes Niveau von 19.

Es hat eine Menge Spaß gemacht, diese Befehle zu lernen und vorzuführen. Wenn ich in Zukunft auf Probleme mit Systemressourcen oder hungrigen Prozessen stoße, kann ich die ihnen zugewiesenen Ressourcen ändern.


Linux
  1. So beenden Sie einen Zombie-Prozess unter Linux

  2. 8 Linux-Befehle für effektives Prozessmanagement

  3. So installieren Sie vtop unter Linux

  4. So legen Sie die Linux-Prozesspriorität mit den Befehlen nice und renice fest

  5. So ändern Sie die Prozesspriorität mithilfe von Linux Nice- und Renice-Beispielen

So beenden Sie einen Prozess in Linux

So führen Sie Linux-Befehle im Hintergrund aus

So beenden Sie Zombie-Prozesse in Linux

Wie man einen Prozess unter Linux beendet

So verwenden Sie Linux-FTP-Befehle

Befehle für das Prozessmanagement in Linux