GNU/Linux >> Znalost Linux >  >> Linux

Jak omezit využití CPU procesu v Linuxu

Někdy může konkrétní proces spotřebovat více CPU a ovlivnit výkon celého systému. Protože tento konkrétní proces spotřebovává více CPU, nemůžete dělat jiné úkoly. Před zahájením nového úkolu musíte počkat na dokončení tohoto procesu. Naštěstí to nyní může vyřešit užitečná utilita s názvem CPULimit . Jak název napovídá, CPULimit omezuje využití CPU procesem. To je docela užitečné pro řízení dávkových úloh, když nechcete, aby spotřebovávaly více CPU. Hlavním cílem CPULimit je zabránit tomu, aby proces běžel déle, než je zadaný časový poměr. Nemění to hezké hodnotu nebo jiné nastavení priority plánování, ale skutečné využití procesoru. Také se dokáže dynamicky a rychle přizpůsobit celkové zátěži systému. Bude fungovat na většině distribucí podobných Unixu. V tomto stručném průvodci uvidíme, jak omezit využití CPU procesem v Linuxu.

Instalovat CPULimit

CPULimit je k dispozici na většině výchozích repozitářů distribuce podobných Unixu. Můžete jej nainstalovat pomocí výchozích správců balíčků v příslušné distribuci Linuxu, jak je uvedeno níže.

Na Arch Linuxu a jeho derivátech:

$ sudo pacman -S cpulimit

V systémech Debian, Ubuntu, Linux Mint:

$ sudo apt-get install cpulimit

Na RHEL, CentOS, Fedora:

Nejprve povolte úložiště EPEL.

$ sudo yum install epel-release

A poté nainstalujte cpuclimit pomocí příkazu:

$ sudo yum install cpulimit

Nebo,

$ sudo dnf install cpulimit

Na SUSE/openSUSE:

$ sudo zypper install cpulimit

Omezit využití CPU procesu v Linuxu pomocí CPULimit

Spusťte program, který spotřebovává více CPU. Následující příkazy by měly být spouštěny jako uživatel root.

Vytvořte soubor s názvem highcpu.sh .

$ vi highcpu.sh

Přidejte následující obsah.

#!/bin/bashwhile :; udělat :; hotovo;

Stiskněte klávesu ESC a zadejte :wq pro uložení a zavření souboru. Tento krátký program se bude nekonečně opakovat a spotřebovává maximální využití procesoru. Doporučuji vám to tedy otestovat na virtuálním počítači.

Nastavit tento soubor jako spustitelný:

$ chmod +x highcpu.sh

Poté spusťte proces na pozadí pomocí příkazu:

$ ./highcpu.sh &

Ukázkový výstup:

[1] 2331

Zde 2331 je PID výše uvedeného procesu.

Chcete-li zjistit, kolik CPU spotřebovává, použijte příkaz "top".

$ top

Ukázkový výstup:

top - 17:16:34 nahoru 10 min, 2 uživatelé, průměrná zátěž:1,12, 0,53, 0,26Úkoly:87 celkem, 4 běžící, 83 spánek, 0 zastaveno, 0 zombie%Cpu(s):91,9 us, 2,7 sy, 5,4 ni, 0,0 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 stKiB Paměť:630108 celkem, 274868 zdarma, 85904 použitých, 269336 buff/cacheKiB celkem,83 celkem, 1443 buff/cacheKiB Swa celkem 428172 k dispozici Mem PID UŽIVATELE PR NI VIRT RES SHR S %CPU %MEM TIME+ PŘÍKAZ  2331 root 20 0 113120 1184 1004 R 97,7 0,2 2:40,91 highcpu.sh 2412 kořen 39 19 244516 11020 4496 R 1,3 1,7 0:00,11 dnf 10 kořen 20 0 0 0 0 S 0,3 0,0 0:00,68 rcu_sched 13 96 01 0. 3 96 01 20. kořen systému 0,0 0,0 0:00,00 kthreadd 3 root 20 0 0 0 0 S 0,0 0,0 0:00,06 ksoftirqd/0 6 root 20 0 0 0 0 S 0,0 0,0 0:00,00 kworker/urt 0:0 0:00,00 migrace/0 8 kořen 20 0 0 0 0 S 0,0 0,0 0:00,00 rcu_bh 9 kořen 20 0 0 0 0 S 0,0 0,0 0:00,00 rcuob/0 11 kořen 20 0 0 0,0 0. /0 12 kořen rt 0 0 0 0 S 0,0 0,0 0:00,02 hlídací pes/0 13 kořen 0 -20 0 0 0 S 0,0 0,0 0:00,00 khelper 14 kořen 20 0 0 0 0 0 S 0:0 05,0 0 0,0 050,0 0 -20 0 0 0 S 0,0 0,0 0:00,00 netns 16 root 0 -20 0 0 0 S 0,0 0,0 0:00,00 perf 17 root 0 -20 0 0 0 S 0,0 0,0 0:00,00 writeb 

Jak vidíte na výše uvedeném výstupu, proces highcpu.sh spotřebovává více než 97 % využití CPU. Vzhledem k tomu, že spotřebovával více CPU, je docela obtížné spouštět jiné úlohy. Po několika minutách může systém přestat reagovat nebo zamrznout. Zde přichází na pomoc CPULimt.

Nyní omezme využití CPU tohoto procesu pomocí nástroje CPULimit. Řekněme například, že tento proces omezíme pomocí PID na 30 % CPU.

Chcete-li to provést, spusťte:

$ cpulimit -l 30 -p 2331 &

Tady,

  • "-l 30" příznak omezuje proces na 30 %.
  • "-p 2331" je PID highcpu.sh

Nyní znovu zkontrolujme využití procesoru výše uvedeným procesem pomocí příkazu:

$ top

Ukázkový výstup:

top - 17:29:16 nahoru 5 min, 1 uživatel, průměrná zátěž:0,61, 0,57, 0,27 Úkoly:86 celkem, 2 běžící, 83 spící, 1 zastaveno, 0 zombie%Cpu(s):7,2 us, 0,0 sy, 0,0 ni, 92,8 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 stKiB Paměť:630108 celkem, 435348 zdarma, 78052 použitých, 116708 celkem, 116708 buff/cache:434 S celkem 442040 k dispozici MemPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ PŘÍKAZ  2331 root 20 0 113120 1180 1004 T 29,7 0,2 3:36,97 highcpu.sh 2334 kořen 9 -11 4324 692 572 S 1,7 0,1 0:00,47 cpulimit 1 kořen 20 0 43900 6480 3900 S 0,3 1,0 0:01,65 systemd 2 kořen 00:0 0 0. 0. 0. 0. 0. S 0,0 0,0 0:00,02 ksoftirqd/0 5 kořen 0 -20 0 0 0 S 0,0 0,0 0:00,00 kworker/0:0H 6 root 20 0 0 0 0 S 0,0 0,0 0:00/u21:0 rt 0 0 0 S 0,0 0,0 0:00,00 migrace/0 8 kořen 20 0 0 0 0 S 0,0 0,0 0:00,00 rcu_bh 9 kořen 20 0 0 0 0 0,0 0,0 0:00/00 01 rcu 0,0 0,0 0:00,44 rcu_sched 11 kořen 20 0 0 0 0 R 0,0 0,0 0:00,37 rcuos/0 12 kořen rt 0 0 0 0 S 0,0 0,0 0:00,05 hlídací pes 02/0.0 :00,00 khelper 14 root 20 0 0 0 0 S 0,0 0,0 0:00,00 kdevtmpfs 15 root 0 -20 0 0 0 S 0,0 0,0 0:00,00 netns 16 root 0 -20 0 0 0:0.0.0> 

Jak vidíte na výše uvedeném výstupu, využití procesoru highcpu.sh kleslo na 29,7 % , což je velmi blízko 30 %. Nyní můžete mít více prostředků CPU, abyste mohli volně spouštět další procesy.

Viděli jsme, jak omezit proces pomocí PID. Případně můžeme spustit výše uvedený příkaz zadáním názvu souboru spustitelného programu.

Výše uvedený příkaz by například byl:

$ cpulimit -l 30 ./highcpu.sh &

Podobně můžete na pozadí spustit libovolný počet procesů a omezit jejich využití CPU, jak chcete.

Procesy, které běží na pozadí, můžete kdykoli přenést do popředí pomocí "fg" příkaz:

$ fg

Ukázkový výstup:

cpulimit -l 30 -p 2331

Závěr

CPULimit může být užitečný, když spouštíte proces, který spotřebovává více CPU. Příště Pokud si všimnete, že program spotřebovává více CPU, stačí najít PID procesu pomocí příkazu "top" a omezit jeho využití CPU na minimální hodnotu pomocí příkazu CPULimit, jak je popsáno výše. Tuto aplikaci můžete také použít k testování výkonu aplikace při nízkém využití procesoru.


Linux
  1. Linux – Omezit využití paměti pro jeden linuxový proces?

  2. Linux – Jak omezit proces na jedno jádro CPU v Linuxu?

  3. Jak získat celkové využití CPU v Linuxu pomocí C++

  1. Jak zabít proces zombie na Linuxu

  2. Jak zjistit využití CPU

  3. Jak omezit využití paměti aplikací v linuxu?

  1. Načíst využití CPU a paměti jedním procesem v Linuxu?

  2. Jak vypočítat využití CPU procesu pomocí PID v Linuxu z C?

  3. Omezení využití procesní paměti/CPU v linuxu