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

So begrenzen Sie die CPU-Auslastung mit CPULimit unter Ubuntu Linux

In dieser Anleitung wird beschrieben, wie Sie die CPU-Auslastung in Ubuntu 18.04 begrenzen. Ich werde zu diesem Zweck das Dienstprogramm cpulimit verwenden. Cpulimit ist ein Tool, das die CPU-Auslastung eines Prozesses begrenzt (ausgedrückt in Prozent, nicht in CPU-Zeit). Es ist nützlich, Batch-Jobs zu steuern, wenn Sie nicht möchten, dass sie zu viele CPU-Zyklen verbrauchen. Das Ziel von cpulimit ist es, zu verhindern, dass ein Prozess länger als ein bestimmtes Zeitverhältnis läuft. Es ändert nicht den netten Wert oder andere Scheduling-Prioritätseinstellungen, sondern die tatsächliche CPU-Auslastung. Außerdem ist es in der Lage, sich dynamisch und schnell an die Gesamtsystemlast anzupassen.

Die Kontrolle der verwendeten CPU-Menge erfolgt durch Senden von SIGSTOP- und SIGCONT-POSIX-Signalen an Prozesse. Alle untergeordneten Prozesse und Threads des angegebenen Prozesses teilen sich den gleichen Prozentsatz der CPU.

1 Vorbemerkung

Dieses Tutorial basiert auf dem Ubuntu 18.04 LTS (Bionic Beaver)-Server, daher sollten Sie eine grundlegende Ubuntu 18.04-Serverinstallation einrichten, bevor Sie mit diesem Tutorial fortfahren. Das System sollte eine statische IP-Adresse haben. Ich verwende 192.168.1.100 als IP-Adresse in diesem Tutorial und server1.example.com als Hostnamen.

2 CPULimit-Installation

Zuerst müssen wir cpulimit wie folgt installieren:

apt-get update
apt-get install cpulimit

3 Begrenzung der CPU-Nutzung 

Jetzt überprüfen wir das Dienstprogramm zur Begrenzung der CPU-Auslastung. Dazu werden wir zunächst die CPU-Auslastung ohne cpulimit überprüfen und dann das cpulimit implementieren, um dasselbe auszuwerten. Machen wir es uns anhand des Beispiels klar.

  1. Hier ist ein Beispiel dafür, wie Sie Ihre CPU mit einer Anwendung in einer Single-Core-CPU nutzen können:
dd if=/dev/zero of=/dev/null &

Dann prüfen wir die CPU-Auslastung mit dem Befehl:

top
top - 11:24:18 up 49 min,  1 user,  load average: 0.94, 1.02, 1.79
Tasks: 249 total,   2 running, 247 sleeping,   0 stopped,   0 zombie
%Cpu(s): 13.4 us, 11.6 sy,  0.0 ni, 74.9 id,  0.0 wa,  0.1 hi,  0.0 si,  0.0 st
KiB Mem:   1010540 total,   271652 used,   738888 free,    21760 buffers
KiB Swap:  1048572 total,        0 used,  1048572 free.   158204 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                   
 1850 root      20   0    7224    616    520 R 100.0  0.1   1:20.33 dd                        
 1851 root      20   0   24952   1756   1180 R   0.3  0.2   0:00.03 top                       
    1 root      20   0   33480   2776   1456 S   0.0  0.3   0:05.31 init                      
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd        

Da wir sehen können, dass die CPU-Auslastung auf 100 % gestiegen ist, werden wir jetzt cpulimit verwenden, um die CPU-Auslastung zu begrenzen. Wir können diesen Prozess mit fg in den Vordergrund holen Befehl und brechen Sie ihn mit STRG+C

ab
fg

Jetzt können wir cpulimit testen, um zu sehen, ob es tatsächlich tut, was es soll. Lassen Sie es wie folgt testen:

cpulimit -l 30 dd if=/dev/zero of=/dev/null &
[email protected]:~# cpulimit -l 30 dd if=/dev/zero of=/dev/null &
[1] 1852
[email protected]:~# Prozess 1853 erkannt

[1]+  Fertig                    cpulimit -l 30 dd if=/dev/zero of=/dev/null
[email protected]:~#

Jetzt prüfen wir die CPU-Auslastung mit dem Top-Befehl:

top
top - 11:30:54 up 55 min,  1 user,  load average:0,20, 0,58, 1,34
Aufgaben:250 insgesamt,   2 laufen, 247 schlafen,   1 gestoppt,   0 Zombie
%Cpu(s ):  4.5 us,  4.1 sy,  0.0 ni, 91.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   1010540 insgesamt,   271944 verwendet,   738596 kostenlos,    21816 Puffer
KiB Swap 1048572 insgesamt,        0 verwendet,  1048572 kostenlos. 158212 zwischengespeicherter Speicher

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                   
 1853 root      20   0    7224    612                       /stark> 0,1 0:35,53 dd
1 Root 20 0 33480 2776 1456 S 0.0 0,3 0:05,37 init
2 root 20 0 0 0 0 s 0.0 0,0 0:00,01 kthreadd
3 Root 20 0 0 0 0 0 0 0 0 0 0 0      0 S   0.0  0.0   0:00.02 ksoftirqd/0               
    4 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0

Jetzt können Sie sehen, dass die CPU-Auslastung von 100 % auf 33,8 % um fast 30 % gesunken ist. Daher haben wir das Dienstprogramm cpulimit erfolgreich getestet, das in der Lage ist, die Nutzung des CPU-Verbrauchs in einer Single-Core-Ubuntu-Distribution zu begrenzen.

  1. Hier ist ein Beispiel dafür, wie Sie Ihre CPU mit einer Anwendung in einer Mehrkern-CPU nutzen können:

Um Ihren CPU-Kern zu überprüfen, verwenden Sie den Befehl:

nproc   

In meinem Fall war die Anzahl der CPU-Kerne 4.
Jetzt werden wir die CPU-Auslastung ohne cpulimit in allen 4 Kernen für die Anwendung wie folgt überprüfen:

for j in `seq 1 4`; do dd if=/dev/zero of=/dev/null & done

Es führt den Befehl unter Verwendung aller Kerne aus und ergibt die Ausgabe als:

[E-Mail-geschützt]:~# für j in „seq 1 4“; do dd if=/dev/zero of=/dev/null &done
[1] 1263
[2] 1264
[3] 1265
[4] 1266
[E-Mail geschützt]:~#


Überprüfen Sie nun die CPU-Auslastung mit dem Top-Befehl:

top
top - 11:47:45 up 4 min,  1 user,  load average:3,63, 1,53, 0,57
Tasks:290 total,   5 running, 285 sleeping,   0 gestoppt,   0 Zombie
%Cpu0  :48,3 us, 51,3 sy,  0,0 ni,  0,0 id,  0,0 wa,  0,3 hi,  0,0 si,  0,0 st
%Cpu1  :47,8 us, 52,2 sy,  0,0 ni,  0,0 id,  0,0 wa,  0,0 hi,  0,0 si, 0,0 st
%Cpu2  :53,3 us, 46,4 sy,  0,0 ni,  0,0 id,  0,0 wa,  0,3 hi,  0,0 si,  0,0 st
%Cpu3  :52,0 us, 48,0 sy,  0,0 ni,  0,0 id ,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
KiB Mem:   1010540 insgesamt,   209712 verwendet,   800828 frei,    20276 Puffer
KiB Swap:  1048572 insgesamt,        0 verwendet,  10,4857 93632 zwischengespeicherter Speicher

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                   
 1263 root      20   0    <"0.0 612    520 R ="1:red style ="1 /stark> 0.1   2:21.40 dd                       
 1264 root      20   0    7224    616    520 R 100.0  0.1   2:21.41 dd                       
 1265 root      20   0    7224    612    520 R  99,0 0.1   2:21.03 dd                        
 1266 root      20   0    7224    616    520 R  98,0  0,1 2:20,82 dd
1281 Root 20 0 104416 3992 2920 S 1,0 0,4 0:00,03 SSHD
1283 Root 20 0 104416 3988 2920 S 1,0 0,4 0:00.03 SSHD
1279 Wurzel 20 0 1045566665666566656665665665656565656565656566. 4008   2924 S   0,7  0,4   0:00,08 sshd


Der Befehl dd verbraucht fast 100 % der CPU aller Kerne. Als Nächstes überprüfen wir den Befehl mit dem Dienstprogramm cpulimit. Beenden Sie dazu vorherige Ablaufverfolgungen für den dd-Befehl wie folgt:

killall dd
[email protected]:~# killall dd
[1]   Beendet              dd if=/dev/zero of=/dev/null
[3]-  Beendet              dd if=/dev/zero of=/dev /null
[2]-  Beendet              dd if=/dev/zero of=/dev/null
[4]+  Beendet              dd if=/dev/zero of=/dev/null
[E-Mail-geschützt]:~#


Verwenden Sie nun cpulimit mit demselben Befehl wie folgt:

for j in `seq 1 4`; do cpulimit -l 20 dd if=/dev/zero of=/dev/null & done
[E-Mail-geschützt]:~# für j in „seq 1 4“; do cpulimit -l 20 dd if=/dev/zero of=/dev/null &done
[1] 1429
[2] 1430
[3] 1431
[4 ] 1432
[email protected]:~# Prozess 1434 erkannt
Prozess 1433 erkannt
Prozess 1437 erkannt
Prozess 1439 erkannt

[1]   Fertig                    cpulimit -l 20 dd if=/dev/zero of=/dev/null
[2]   Fertig                    cpulimit -l 20 dd if=/dev/zero of=/dev/null
[3]-  Fertig cpulimit -l 20 dd if=/dev/zero of=/dev/null
[4]+  Fertig                    cpulimit -l 20 dd if=/dev/zero of=/dev/null
[email protected ]:~#


Überprüfen Sie nun die CPU-Auslastung mit dem cpulimit-Dienstprogramm.

top
top - 11:59:10 bis 16 min,  2 Benutzer,  Lastdurchschnitt:0,47, 0,71, 0,81
Aufgaben:256 insgesamt,   2 laufen, 251 schlafen,   3 gestoppt,   0 Zombie
%Cpu0  :  2,0 us,  2,0 sy,  0,0 ni, 96,0 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
%Cpu1  :26,2 us, 22,8 sy,  0,0 ni, 50,7 id,  0,0 wa,  0,3 hi,  0,0 si 0,0 st
%Cpu2  :14,0 us, 12,3 sy,  0,0 ni, 73,8 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
%Cpu3  :13,3 us, 11,6 sy,  0,0 ni, 75,1 id ,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
KiB Mem:   1010540 insgesamt,   204064 verwendet,   806476 frei,    20408 Puffer
KiB Swap:  1048572 insgesamt,        0 verwendet,  10,4857 98340 zwischengespeicherter Speicher

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                   
 1433 root      20   0    <2 24    612    520 T. strong>8 0.1   0:12.00 dd                       
 1439 root      20   0    7224    616    520 R  26.6  0.1   0:12.13 dd                        
 1434 root      20   0    7224    612    520 T  25.3  0.1   0:11.97 dd                       
 1437 root      20   0    7224    612    516 T  22.9 0,1 0:11,93 dd
7 root 20 0 0 0 0 s 0.3 0.0 0:00,22 RCU_Sch
8 root 20 0 0 0 0 s 0.3 0.0 0:00,21 RCUOS /0


Wie Sie oben sehen können, ist die CPU-Auslastung bei CPUs mit mehreren Kernen von 100 % auf fast 20 % begrenzt.

Herzlichen Glückwunsch! Wir haben das cpulimit zur Begrenzung der CPU-Auslastung in Ubuntu 18.04 erfolgreich getestet :)

  •     Ubuntu:http://www.ubuntu.com/
  •     cpulimit :https://github.com/opsengine/cpulimit

Ubuntu
  1. So überprüfen Sie die CPU-Auslastung in Linux mit der Befehlszeile

  2. So installieren Sie PostgreSQL 9.1.3 mit pgAdmin3 auf Ubuntu 11.10 / Linux Mint 12

  3. So begrenzen Sie die CPU-Auslastung eines Prozesses in Linux

  4. So installieren Sie Suphp mit Apache unter Ubuntu / Linux

  5. So schützen Sie Ihr Ubuntu-Linux-System mit SurfShark VPN

So verschlüsseln Sie Linux-Partitionen mit VeraCrypt unter Ubuntu

So erstellen Sie Linux-Betriebssystemvorlagen mit KVM unter Ubuntu 20.04

So installieren und beginnen Sie mit Itch unter Ubuntu Linux

So installieren Sie Laravel PHP Framework mit Nginx unter Ubuntu Linux

So konfigurieren Sie die Firewall mit UFW unter Ubuntu Linux

So überprüfen Sie die Linux-CPU-Auslastung oder -Auslastung