Inhouse-Lernsitzung von Ozvision LT-Material.
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
# -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
# 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
# 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
Wert der Prozessfreundlichkeit, Prioritätskorrekturwert (Einstellwert für den Benutzerbereich)
Tatsächliche Prozesspriorität, auf die im Kernel-Scheduler verwiesen wird Allgemeine Prozess-PR-Formel: 20 --NI
Ein Befehlscode, der von einem Computer interpretiert und ausgeführt werden kann. Im Allgemeinen wird es im Dateiformat gespeichert.
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.
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.
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
--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
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.
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
Als Voraussetzung ist der Bedarf an Echtzeit gering, und es wird eine starke Verarbeitung vorausgesetzt.
nice -n 10 /batch_sh/huge_time_and_low_priority.sh
nice -n 10 mysqldump -u xxxx -p DBNAME > all_db_dump.sql
nice -n 10 zgrep -E `^\d+$` 1GB_FILE.log.gz
#Die Verarbeitung von zgrep und regulären Ausdrücken ist eine CPU-intensive Aufgabe
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.
--APACHE, Batch, Shell-Befehl, wenn Sie etwas tun, ist es ein Prozess.
nice
können Sie die Zeit begrenzen, die Sie für einen Prozess aufwenden.renice
Ändern Sie die Schönheit eines vorhandenen Prozesses
Recommended Posts