"OZV Study Group LT" "Linux" Prozess und Priorität mit netten Befehlen zu wissen

Inhouse-Lernsitzung von Ozvision LT-Material.


Was ist nett

Führen Sie das Programm mit der geänderten Planungspriorität aus man page : https://linuxjm.osdn.jp/html/GNU_coreutils/man1/nice.1.html

nice [OPTION] [COMMAND [ARG]...]  

-n, --adjustment=N
Fügen Sie der Priorität einen ganzzahligen Wert N hinzu(Standard: 10)

--help
Zeigen Sie diese Verwendung und beenden Sie

--version
Versionsinformationen anzeigen und beenden

Wie man Nizza benutzt

# -n [niceness value]Option erforderlich
#Der Bereich der Freundlichkeit ist, 19 ~ -20 * Je niedriger die Schönheit, desto höher die Priorität.

nice -n /something/default_nicevalue_is_10
nice -n 0 /batch_sh/something.sh #Freundlichkeitswert 0
nice -n 5 zgrep "something text" very_huge_data.log.gz
nice -n 10 mysqldump -u user -p DBNAME TABLE_NAME > OUTPUT_FILE
nice -n -10 /something/this_is_high_priority_execution

Überprüfen Sie die Prozesspriorität


Überprüfen Sie mit ps

# PRI,Überprüfen Sie NI

[vagrant@comics ~]$ ps l
F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
0  1000 22121 22120  20   0 124924  4256 -      Ss   pts/0      0:00 -bash
0  1000 22647 22121  20   0 160236  2204 -      R+   pts/0      0:00 ps l

Überprüfen Sie oben

# PR,Fragen Sie bei NI nach

[vagrant@comics ~]$ top
top - 18:36:27 up  2:22,  1 user,  load average: 1.15, 0.77, 0.66
Tasks: 167 total,   3 running,  90 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.4 us,  2.9 sy,  0.0 ni, 94.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1009004 total,   263660 free,   337808 used,   407536 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   508032 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
22255 apache    20   0  523200  30656  11248 R  20.6  3.0   0:00.69 httpd
 3018 mysql     20   0 2050332 121596  19976 S   0.7 12.1   0:11.54 mysqld
    8 root      20   0       0      0      0 R   0.3  0.0   0:03.04 rcu_sched
 3217 root      20   0  236900  22764   4652 S   0.3  2.3   0:02.13 fluentd
22867 vagrant   20   0  171112   4592   3896 R   0.3  0.5   0:02.46 top

PR und NI


Was ist NI?

Wert der Prozessfreundlichkeit, Prioritätskorrekturwert (Einstellwert für den Benutzerbereich)

Was ist PR (PRI)?

Tatsächliche Prozesspriorität, auf die im Kernel-Scheduler verwiesen wird Allgemeine Prozess-PR-Formel: 20 --NI


Programme und Prozesse


Was ist ein Programm?

Ein Befehlscode, der von einem Computer interpretiert und ausgeführt werden kann. Im Allgemeinen wird es im Dateiformat gespeichert.

Was ist ein Prozess?

Eine Ressource, die aus dem Zeitpunkt generiert wird, zu dem ein Ausführungsbefehl an ein Programm gesendet wird.

Für die durchschnittliche Person werden Prozessressourcen in den Speicher geladen Unter der Kontrolle der OS-Prozessplanung Anweisungen werden von übergeordneten Speicher- und Recheneinheiten verarbeitet.


Beziehung zwischen Programmen und Prozessen

image.png


Notwendigkeit der Prozesspriorität


Warum kann das Betriebssystem so viele Programme ausführen und verarbeiten?

Grundsätzlich kann 1 CPU (1 KERN) jeweils nur einen Befehl verarbeiten. (1 Mal = 1 Hz, 3 GHz = 3 Milliarden Mal in 1 Sekunde können Anweisungen verarbeitet werden)

Warum haben Sie das Gefühl, dass Ihre Programme unter diesen Bedingungen gleichzeitig verarbeitet werden?

Es gibt ein Konzept von und es ist etabliert.


Prozessplanung

Die meisten Betriebssysteme verwenden unterschiedliche Algorithmen, um mehrere Prozesse zu handhaben, verwenden jedoch grundsätzlich das Konzept der Zeitteilung. Die Zeit, die mehrere Prozesse in ihrer eigenen Reihenfolge verarbeiten können, wird entsprechend der Priorität festgelegt.

Ein leicht verständliches Beispiel ist der Round-Robin-Algorithmus image.png


Prozessstatusänderung (Lebenszyklus)

image.png

--creation: Erstellen Sie einen neuen Prozess --dispatch: Der OS-Scheduler weist der Ausführung der Verarbeitung CPU-Berechnungszeit zu. Übergang in den Betriebszustand --timeout: Die zugewiesene Berechnungszeit ist abgelaufen. Geben Sie Ressourcen zurück und wechseln Sie in den Status Bereit


Was wäre, wenn es keine Prioritäten und Zeitpläne gäbe?

Wenn mehrere Prozesse gleichzeitig zugewiesen werden, verzögert sich die Gesamtverarbeitungszeit umso mehr, je mehr Prozesse vorhanden sind. Das Problem ist, dass wichtige Prozesse und Systemprozesse ebenfalls betroffen sind und das Steuerbefehlssystem des Systems nicht funktioniert.


In der Praxis


Beachten Sie, dass das Ausführen von Vorgängen in einer Betriebssystemumgebung ein Prozess ist

Das Ausführen eines Befehls oder Programms auf dem Server bedeutet, dass ein Teil der begrenzten Ressourcen des Computers in Form von Zeit belegt wird.

Wenn Sie nicht die Priorität allgemeiner Prozesse angeben, kann das gleiche Ressourcenverhältnis zugewiesen werden. Je mehr Prozesse vorhanden sind, desto stärker wird die Verarbeitungszeit anderer Prozesse beeinflusst.

nice kann diese Zeitbelegung angeben und die Verarbeitungspriorität für jeden Prozess begrenzen.

#Ist es möglich?
Auf einem Produktionswebserver verlangsamte das Hinzufügen der Stapelverarbeitung die Antwortgeschwindigkeit der gesamten Website.
>>> APACHE(prefork setting)Im Fall von wird eine Anforderung zu einem Prozess, sodass sie natürlich von der Prozesspriorität beeinflusst wird.
>>>Wenn die Stapelverarbeitung nicht zeitkritisch ist, muss die Ausführung mit niedrigerer Priorität ausgeführt werden (wenn nicht bis zu separaten Servern).

Nach dem manuellen Ausführen eines Batches auf dem Produktions-Batch-Server
Die Bearbeitungszeit anderer Chargen, die unbedingt fertiggestellt werden musste, verzögerte sich.
>>>Manuell ausgeführte Stapel sollten ordnungsgemäß priorisiert und ausgeführt werden, es sei denn, es gibt einen bestimmten Grund

Beispiel für die Verwendung von nice

Als Voraussetzung ist der Bedarf an Echtzeit gering, und es wird eine starke Verarbeitung vorausgesetzt.

Auf dem Produktions-Batch-Server sind manuelle Stapelausführungsarbeiten erforderlich

nice -n 10 /batch_sh/huge_time_and_low_priority.sh

Speichern Sie große Datenmengen mit mysqldump

nice -n 10 mysqldump -u xxxx -p DBNAME > all_db_dump.sql

Produktionswebserver, Produktionsprotokollserver grep

nice -n 10 zgrep -E `^\d+$` 1GB_FILE.log.gz

#Die Verarbeitung von zgrep und regulären Ausdrücken ist eine CPU-intensive Aufgabe

Binäre Ausführung durch systematischen Aufruf in PHP

exec('nice -n 10 /something/command', $result, $ret);

#Bei Bedarf in einem Systemaufruf in der Stapelverarbeitung oder in der asynchronen Verarbeitung
#Es wird nicht für die Verwendung von Systemaufrufen empfohlen. Suchen Sie daher nach Referenzen.

Fazit

--APACHE, Batch, Shell-Befehl, wenn Sie etwas tun, ist es ein Prozess.


Beilage: renice

Ändern Sie die Schönheit eines vorhandenen Prozesses

Recommended Posts

"OZV Study Group LT" "Linux" Prozess und Priorität mit netten Befehlen zu wissen
[Linux] Anzeigen der CPU-Auslastung mit dem Befehl ps, Anzeigen des Headers und nicht Anzeigen des Grep-Prozesses
Befehl [linux] kill, um den Prozess abzubrechen
Übergeben von Argumenten oder Umgebungsvariablen mit Makefile und Befehl make unter #Linux
Yum-Befehl zum Zugriff auf MySQL mit Python 3 unter Linux
Linux-Studiengruppe 1: Virtuelle Konsole und Dateimanipulation
[Linux] Nachdem Sie mit teraterm eine Verbindung zur DB hergestellt und den Befehl Sqlplus eingegeben haben, bis Sie sich bei DB (oracle) angemeldet haben.