Einführung
In diesem Lab lernen Sie, wie Sie die Leistung eines RHEL-Systems mit tuned optimieren und Prozessprioritäten mit nice und renice verwalten. Sie beginnen mit der Überprüfung der tuned-Installation und der Auflistung der verfügbaren Profile, um dann zu beobachten, wie sich das Ändern der tuned-Profile auf Systemparameter auswirkt.
Das Lab führt Sie durch das Starten und Überwachen von CPU-intensiven Prozessen, gefolgt von der Anpassung ihrer Prioritäten mit nice und renice, um deren Auswirkungen auf die Ressourcenallokation zu verstehen. Abschließend lernen Sie, wie Sie laufende Prozesse bereinigen, um ein umfassendes Verständnis der Performance-Optimierung unter RHEL zu gewährleisten.
tuned-Status überprüfen und verfügbare Profile auflisten
In diesem Schritt lernen Sie, wie Sie den Status des tuned-Daemons überprüfen und verfügbare Tuning-Profile auf Ihrem RHEL-System auflisten. tuned ist ein dynamischer, adaptiver System-Tuning-Daemon, der Systemeinstellungen optimiert, um die Leistung für bestimmte Workloads zu optimieren. Er verwendet Tuning-Profile, um eine Reihe von systemweiten Einstellungen anzuwenden.
Überprüfen Sie, ob der
tuned-Daemon läuft. In dieser Containerumgebung überprüfen wir, ob dertuned-Daemon läuft, indem wir nach seinem Prozess suchen. Wir können seine Funktionalität auch überprüfen, indem wir prüfen, ob er auf Befehle reagiert.Überprüfen Sie zuerst, ob der
tuned-Prozess läuft:pgrep tunedWenn
tunedläuft, gibt dieser Befehl seine Prozess-ID (PID) zurück. Wenn keine PID zurückgegeben wird, können Sie den Daemon manuell starten:sudo /usr/sbin/tuned &Überprüfen Sie dann, ob er läuft:
pgrep tunedSie sollten eine Ausgabe ähnlich der folgenden sehen:
739(Hinweis: Der PID-Wert in Ihrer Ausgabe variiert.)
Darüber hinaus können Sie überprüfen, ob
tunedfunktionsfähig ist, indem Sie prüfen, ob er auf Statusabfragen reagiert:sudo tuned-adm activeDies sollte das aktuell aktive Profil ohne Fehler zurückgeben.
Listen Sie die verfügbaren Tuning-Profile auf und identifizieren Sie das aktive Profil. Der Befehl
tuned-adm listzeigt alle verfügbaren Tuning-Profile an und hebt das aktuell aktive Profil hervor.sudo tuned-adm listSie werden nach Ihrem Passwort gefragt. Beachten Sie das
Current active profilein der Ausgabe.Available profiles: - accelerator-performance - Throughput performance based tuning with disabled higher latency STOP states - aws - Optimize for aws ec2 instances - balanced - General non-specialized tuned profile - balanced-battery - Balanced profile biased towards power savings changes for battery - desktop - Optimize for the desktop use-case - hpc-compute - Optimize for HPC compute workloads - intel-sst - Configure for Intel Speed Select Base Frequency - latency-performance - Optimize for deterministic performance at the cost of increased power consumption - network-latency - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance - network-throughput - Optimize for streaming network throughput, generally only necessary on older CPUs or 40G+ networks - optimize-serial-console - Optimize for serial console use. - powersave - Optimize for low power consumption - throughput-performance - Broadly applicable tuning that provides excellent performance across a variety of common server workloads - virtual-guest - Optimize for running inside a virtual guest - virtual-host - Optimize for running KVM guests Current active profile: virtual-guestÜberprüfen Sie die Konfiguration des
virtual-guest-Profils. Dasvirtual-guest-Profil ist oft die Standardeinstellung für virtuelle Maschinen. Sie können seine Konfigurationsdatei untersuchen, um zu verstehen, welche Einstellungen es anwendet.cat /usr/lib/tuned/virtual-guest/tuned.confDieser Befehl zeigt die
tuned-Konfiguration für dasvirtual-guest-Profil, einschließlich der Parameter, die es von anderen Profilen erbt.# ## tuned configuration # [main] summary=Optimize for running inside a virtual guest include=throughput-performance [vm] ## If a workload mostly uses anonymous memory and it hits this limit, the entire ## working set is buffered for I/O, and any more write buffering would require ## swapping, so it's time to throttle writes until I/O can catch up. Workloads ## that mostly use file mappings may be able to use even higher values. # ## The generator of dirty data starts writeback at this percentage (system default ## is 20%) dirty_ratio = 30 [sysctl] ## Filesystem I/O is usually much more efficient than swapping, so try to keep ## swapping low. It's usually safe to go even lower than this on systems with ## server-grade storage. vm.swappiness = 30Überprüfen Sie, ob der Parameter
vm.dirty_background_ratioangewendet wird. Dasvirtual-guest-Profil enthältthroughput-performance. Überprüfen wir einen Parameter, denthroughput-performancetypischerweise setzt, wie z. B.vm.dirty_background_ratio. Dieser Parameter steuert, wann das System im Hintergrund beginnt, Dirty Pages auf die Festplatte zu schreiben.sysctl vm.dirty_background_ratioDie Ausgabe zeigt den aktuellen Wert dieses Kernel-Parameters.
vm.dirty_background_ratio = 10
tuned-Profil ändern und Änderungen der Systemparameter beobachten
In diesem Schritt lernen Sie, wie Sie das aktive tuned-Profil ändern und die unmittelbaren Auswirkungen auf Systemparameter beobachten. Das Ändern eines tuned-Profils ermöglicht es Ihnen, schnell eine Reihe von Leistungsoptimierungen anzuwenden, die auf verschiedene Workloads zugeschnitten sind, wie z. B. durchsatzintensive Aufgaben oder Energiesparen.
Ändern Sie das aktuell aktive Tuning-Profil in
throughput-performance. Das Profilthroughput-performanceist für Systeme konzipiert, die einen hohen Durchsatz erfordern, oft unter Inkaufnahme einer gewissen Latenz. Es optimiert typischerweise für Festplatten-I/O und Netzwerkleistung. Verwenden Sie den Befehltuned-adm profile, um die Profile zu wechseln.sudo tuned-adm profile throughput-performanceSie werden nach Ihrem Passwort gefragt.
$ sudo tuned-adm profile throughput-performance [sudo] password for user:Bestätigen Sie das neue aktive Profil. Nach dem Ändern des Profils ist es gute Praxis, zu überprüfen, ob das neue Profil tatsächlich aktiv ist. Sie können dies mit
tuned-adm activetun.sudo tuned-adm activeDie Ausgabe sollte jetzt
throughput-performanceals aktives Profil anzeigen.Current active profile: throughput-performanceÜberprüfen Sie, ob sich die Parameter
vm.dirty_ratioundvm.swappinessgeändert haben. Das Profilthroughput-performanceändert Kernel-Parameter, die sich auf die Speicherverwaltung beziehen, wie z. B.vm.dirty_ratioundvm.swappiness. Obwohl das Profilvirtual-guestvonthroughput-performanceerbt, wendet das direkte Umschalten auf das Profilthroughput-performancedie Basiswerte ohne dievirtual-guest-spezifischen Modifikationen an.vm.dirty_ratio: Dieser Parameter definiert den maximalen Prozentsatz des Systemspeichers, der mit Dirty Pages (Seiten, die geändert, aber noch nicht auf die Festplatte geschrieben wurden) gefüllt werden kann, bevor das System beginnt, sie auf die Festplatte zu schreiben. Ein höherer Wert kann den Durchsatz verbessern, indem mehr Daten im Speicher gepuffert werden können.vm.swappiness: Dieser Parameter steuert, wie aggressiv der Kernel anonymen Speicher (Anwendungsdaten) aus dem RAM in den Swap-Bereich auslagert. Ein niedrigerer Wert bedeutet, dass der Kernel versuchen wird, mehr Anwendungsdaten im RAM zu halten, was im Allgemeinen besser für die Leistung ist.
Überprüfen wir ihre aktuellen Werte mit
sysctl.sysctl vm.dirty_ratio sysctl vm.swappinessSie sollten feststellen, dass sich die Werte von den Einstellungen des Profils
virtual-guest(dirty_ratio = 30, vm.swappiness = 30) auf die Basiswerte des Profilsthroughput-performancegeändert haben:vm.dirty_ratio = 40 vm.swappiness = 10(Hinweis: Diese Werte spiegeln die Basis-throughput-performance-Optimierungen ohne die virtual-guest-spezifischen Modifikationen wider.)
CPU-intensive Prozesse unter RHEL starten und überwachen
In diesem Schritt lernen Sie, wie Sie CPU-intensive Prozesse starten und ihre Ressourcenauslastung überwachen. Dies ist entscheidend, um zu verstehen, wie Prozesse Systemressourcen verbrauchen und wie Engpässe identifiziert werden können. Wir verwenden den Befehl sha1sum /dev/zero, der kontinuierlich die SHA1-Prüfsumme eines endlosen Datenstroms von Nullen berechnet und somit effektiv CPU-Zyklen verbraucht.
Wichtig: Diese Übung verwendet Befehle, die endlose Prüfsummen auf einer Gerätedatei ausführen und absichtlich erhebliche CPU-Ressourcen verbrauchen. Sie müssen alle Übungsprozesse beenden, bevor Sie diese Übung verlassen oder zum nächsten Lab wechseln.
Ermitteln Sie die Anzahl der CPU-Kerne auf Ihrem System. Das Verständnis der Anzahl der CPU-Kerne hilft Ihnen bei der Entscheidung, wie viele CPU-intensive Prozesse ausgeführt werden sollen, um das System vollständig auszulasten. Sie finden diese Informationen in
/proc/cpuinfo.grep -c '^processor' /proc/cpuinfoDieser Befehl zählt die Anzahl der Zeilen, die mit
processorbeginnen, was der Anzahl der logischen CPU-Kerne (oder virtuellen Prozessoren) entspricht.2(Hinweis: Ihre Ausgabe zeigt möglicherweise eine andere Anzahl von Kernen, abhängig von der Systemkonfiguration.)
Starten Sie zwei Instanzen des Befehls
sha1sum /dev/zero &für jeden CPU-Kern. Um ein stark ausgelastetes System zu simulieren, starten wir mehrere Instanzen vonsha1sum /dev/zero &. Das&am Ende des Befehls führt den Prozess im Hintergrund aus, sodass Sie das Terminal weiterhin verwenden können. Wenn Sie beispielsweise 2 CPU-Kerne haben, würden Sie 4 Instanzen starten (2 Instanzen/Kern * 2 Kerne).for i in $(seq 1 $(grep -c '^processor' /proc/cpuinfo | awk '{print $1 * 2}')); do sha1sum /dev/zero & doneDieser Befehl berechnet dynamisch die Anzahl der zu startenden Prozesse basierend auf Ihrer CPU-Kernanzahl.
[1] 1234 [2] 1235 [3] 1236 [4] 1237(Hinweis: Die PID-Werte in Ihrer Ausgabe variieren vom Beispiel.)
Überprüfen Sie, ob die Hintergrundjobs laufen. Der Befehl
jobslistet alle Prozesse auf, die derzeit im Hintergrund von Ihrer Shell-Sitzung ausgeführt werden.jobsSie sollten eine Liste der
sha1sum-Prozesse sehen, die Sie gerade gestartet haben.[1] Running sha1sum /dev/zero & [2] Running sha1sum /dev/zero & [3] Running sha1sum /dev/zero & [4]- Running sha1sum /dev/zero &Verwenden Sie die Befehle
psundpgrep, um den Prozentsatz der CPU-Auslastung für jedensha1sum-Prozess anzuzeigen. Der Befehlpsmeldet eine Momentaufnahme der aktuellen Prozesse. Wir kombinieren ihn mitpgrep, um nachsha1sum-Prozessen zu filtern.ps -o pid,pcpu,nice,comm: Dies gibt das Ausgabeformat an: Prozess-ID (pid), Prozentsatz der CPU-Auslastung (pcpu),nice-Wert (nice) und Befehlsname (comm).$(pgrep sha1sum): Diese Befehlssubstitution findet die PIDs aller Prozesse mit dem Namensha1sumund übergibt sie als Argumente anps.
ps -o pid,pcpu,nice,comm $(pgrep sha1sum)Sie sollten sehen, dass jeder
sha1sum-Prozess einen signifikanten Prozentsatz der CPU verbraucht.PID %CPU NI COMMAND 5248 48.8 0 sha1sum 5249 48.7 0 sha1sum 5250 48.8 0 sha1sum 5251 48.8 0 sha1sum(Hinweis: Die
%CPU-Werte können schwanken, sollten aber hoch sein, was auf eine hohe CPU-Auslastung hindeutet. Die SpalteNIzeigt den Nice-Wert.)Beenden Sie alle laufenden
sha1sum-Prozesse und überprüfen Sie, ob keine mehr vorhanden sind. Es ist entscheidend, diese CPU-intensiven Prozesse zu bereinigen, bevor Sie fortfahren. Der Befehlpkillbeendet Prozesse basierend auf ihrem Namen.pkill sha1sumÜberprüfen Sie nun, ob keine
sha1sum-Jobs mehr im Hintergrund laufen.jobsDie Ausgabe sollte leer sein oder anzeigen, dass alle Jobs beendet wurden.
[1] Terminated sha1sum /dev/zero [2] Terminated sha1sum /dev/zero [3] Terminated sha1sum /dev/zero [4]- Terminated sha1sum /dev/zero(Hinweis: Möglicherweise sehen Sie "Terminated"-Meldungen, was erwartet wird, da die Prozesse gestoppt werden.)
Prozesspriorität mit nice und renice unter RHEL anpassen
In diesem Schritt lernen Sie, wie Sie die Scheduling-Priorität von Prozessen mithilfe der Befehle nice und renice beeinflussen können. Der nice-Wert (auch als Niceness bekannt) eines Prozesses gibt seine Priorität für den Linux-Scheduler an. Ein niedrigerer nice-Wert (negativer) bedeutet eine höhere Priorität, während ein höherer nice-Wert (positiver) eine niedrigere Priorität bedeutet. Der Bereich für nice-Werte liegt typischerweise zwischen -20 (höchste Priorität) und 19 (niedrigste Priorität), wobei 0 der Standardwert ist.
Starten Sie mehrere Instanzen von
sha1sum /dev/zero &und starten Sie dann eine zusätzliche Instanz mit einemnice-Level von 10. Wir starten mehreresha1sum-Prozesse, um ein ausgelastetes System zu simulieren. Dann starten wir einen mit einer absichtlich niedrigeren Priorität (höherernice-Wert), um die Auswirkungen zu beobachten.Starten Sie zuerst drei reguläre Instanzen (passen Sie sie bei Bedarf an Ihre CPU-Kernanzahl an, aber mindestens so viele wie virtuelle Prozessoren, um Konflikte zu erzeugen):
for i in {1..3}; do sha1sum /dev/zero & doneStarten Sie als Nächstes die vierte Instanz mit einem
nice-Level von 10. Dieser Prozess hat eine niedrigere Priorität im Vergleich zu den anderen.nice -n 10 sha1sum /dev/zero &Sie sehen eine ähnliche Ausgabe wie diese, die die PIDs der Hintergrundprozesse anzeigt:
[1] 5443 [2] 5444 [3] 5445 [4] 5446(Hinweis: Die PID-Werte in Ihrer Ausgabe variieren.)
Verwenden Sie die Befehle
psundpgrep, um die PID, den Prozentsatz der CPU-Auslastung, dennice-Wert und den Ausführungsnamen für jeden Prozess anzuzeigen. Beobachten Sie die Spalten%CPUundNI. Die Instanz mit demnice-Wert von 10 sollte einen geringeren Prozentsatz der CPU-Auslastung anzeigen als die anderen Instanzen, da der Scheduler ihr weniger CPU-Zeit gibt.ps -o pid,pcpu,nice,comm $(pgrep sha1sum)Suchen Sie nach dem Prozess mit dem
NI-Wert10. Sein%CPUsollte deutlich niedriger sein als die anderen.PID %CPU NI COMMAND 5443 56.8 0 sha1sum 5444 58.0 0 sha1sum 5445 56.5 0 sha1sum 5446 6.7 10 sha1sum(Hinweis: Die genauen
%CPU-Werte variieren je nach Systemauslastung und Kernanzahl, aber der Prozess mitnice 10sollte einen geringeren Anteil haben.)Verwenden Sie den Befehl
sudo renice, um dennice-Level eines der regulären Prozesse auf 5 zu ändern. Mit dem Befehlrenicekönnen Sie dennice-Wert eines bereits laufenden Prozesses ändern. Wir demonstrieren dies, indem wir einen der regulären Prozesse (nice-Wert 0) in einen nice-Wert von 5 ändern.Ermitteln Sie zunächst die PID eines der
sha1sum-Prozesse, der einennice-Wert von 0 hat, aus der Ausgabe des vorherigenps-Befehls. Verwenden wir den ersten aus dem obigen Beispiel (PID 5443).sudo renice -n 5 <PID_of_regular_process>Ersetzen Sie
<PID_of_regular_process>durch die tatsächliche PID, die Sie identifiziert haben. Zum Beispiel:sudo renice -n 5 5443Sie sollten eine Ausgabe sehen, die die Prioritätsänderung bestätigt:
5443 (process ID) old priority 0, new priority 5Wiederholen Sie die Befehle
psundpgrep, um den CPU-Prozentsatz und dennice-Level anzuzeigen. Beobachten Sie die Änderung der CPU-Auslastung für den Prozess, dessennice-Wert Sie geändert haben. Der Prozess mit dem nice-Wert 5 sollte jetzt eine etwas geringere CPU-Auslastung im Vergleich zu den Prozessen mit dem nice-Wert 0 aufweisen, aber höher als der Prozess mit dem nice-Wert 10.ps -o pid,pcpu,nice,comm $(pgrep sha1sum)Sie sollten sehen, dass der
NI-Wert für den geänderten Prozess jetzt5ist und seine CPU-Auslastung sein neues Prioritätsniveau widerspiegelt.PID %CPU NI COMMAND 5443 55.4 5 sha1sum 5444 67.2 0 sha1sum 5445 67.1 0 sha1sum 5446 7.5 10 sha1sum(Hinweis: Die genauen
%CPU-Werte variieren, aber Sie sollten beobachten, dass Prozesse mit niedrigeren nice-Werten (höherer Priorität) mehr CPU-Zeit erhalten.)
Laufende Prozesse bereinigen
In diesem letzten Schritt stellen Sie sicher, dass alle im Lab gestarteten Hintergrundprozesse ordnungsgemäß beendet werden. Dies ist ein kritischer Bereinigungsschritt, um eine unbeabsichtigte Ressourcenauslastung zu verhindern und sicherzustellen, dass die Lab-Umgebung für die zukünftige Nutzung zurückgesetzt wird.
Verwenden Sie den Befehl
pkill, um alle laufenden Prozesse mit dem Namensmustersha1sumzu beenden. Der Befehlpkillist eine effiziente Möglichkeit, ein Signal (standardmäßigSIGTERM) an Prozesse basierend auf ihrem Namen zu senden. Dadurch werden allesha1sum-Prozesse gestoppt, die Sie in den vorherigen Schritten gestartet haben.pkill sha1sumMöglicherweise sehen Sie Meldungen, die anzeigen, dass Prozesse beendet wurden.
[3]- Terminated sha1sum /dev/zero [2]- Terminated sha1sum /dev/zero [4]+ Terminated nice -n 10 sha1sum /dev/zero [1]+ Terminated sha1sum /dev/zeroÜberprüfen Sie, ob keine
sha1sum-Prozesse mehr laufen. Sie könnenpgrepverwenden, um zu überprüfen, ob nochsha1sum-Prozesse aktiv sind. Wennpgrepkeine Ausgabe zurückgibt, bedeutet dies, dass keine solchen Prozesse ausgeführt werden.pgrep sha1sumDieser Befehl sollte keine Ausgabe zurückgeben, was darauf hindeutet, dass alle
sha1sum-Prozesse erfolgreich beendet wurden.$ pgrep sha1sum $
Zusammenfassung
In diesem Lab haben wir gelernt, wie man tuned für die Systemleistungsoptimierung unter RHEL verwaltet und nutzt. Wir begannen mit der Überprüfung der Installation und des Status des tuned-Dienstes und der Auflistung der verfügbaren Tuning-Profile, wobei wir verstanden, dass tuned die Systemeinstellungen mithilfe dieser Profile dynamisch an spezifische Workloads anpasst. Anschließend übten wir uns im Einloggen in eine simulierte servera-Umgebung per SSH als Benutzer labex und bestätigten die Installation des tuned-Pakets mit dnf list tuned.
Das Lab führte uns weiter durch das Ändern von tuned-Profilen, um deren Auswirkungen auf Systemparameter zu beobachten, und demonstrierte, wie verschiedene Profile das Systemverhalten verändern können. Wir sammelten auch praktische Erfahrungen beim Starten und Überwachen von CPU-intensiven Prozessen, was für die Identifizierung von Leistungsengpässen von entscheidender Bedeutung ist. Schließlich lernten wir, Prozessprioritäten mithilfe der Befehle nice und renice anzupassen, um die Ressourcenzuweisung effektiv zu verwalten, und schlossen mit der Bereinigung laufender Prozesse ab, um das System in seinen ursprünglichen Zustand zurückzusetzen.



