GNU/Linux >> Znalost Linux >  >> Linux

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

Tato otázka zde již obsahuje odpovědi :Jak mohu nastavit afinitu procesoru k procesu v Linuxu?

(4 odpovědi)
Uzavřeno před 3 lety.

Jak omezit proces na jedno jádro procesoru?

Něco podobného jako ulimit nebo cpulimit by bylo hezké. (Jen pro zajištění:NECHCI omezovat procentuální využití ani dobu provádění. Chci aplikaci (se všemi jejími potomky, procesy (vlákny)) přinutit, aby používala jedno jádro CPU (nebo 'n' jader CPU)).

Přijatá odpověď:

V Linuxu spusťte sched_setaffinity systémové volání. Afinita procesu je sada procesorů, na kterých může běžet. Existuje standardní obal shellu:taskset . Chcete-li například připnout proces k CPU #0 (musíte vybrat konkrétní CPU):

taskset -c 0 mycommand --option  # start a command with the given affinity
taskset -c -pa 0 1234            # set the affinity of a running process

Pro oba Perl existují moduly třetích stran (Sys::CpuAffinity ) a Python (affinity ) pro nastavení afinity procesu. Oba fungují na Linuxu i Windows (Windows může vyžadovat jiné moduly třetích stran s Sys::CpuAffinity ); Sys::CpuAffinity funguje také na několika dalších unixových variantách.

Pokud chcete nastavit afinitu procesu od okamžiku jeho zrodu, nastavte afinitu aktuálního procesu bezprostředně před voláním execve . Zde je triviální obal, který nutí proces ke spuštění na CPU 0.

#!/usr/bin/env perl
use POSIX;
use Sys::CPUAffinity;
Sys::CpuAffinity::setAffinity(getpid(), [0]);
exec $ARGV[0] @ARGV

Linux
  1. Jak omezit využití CPU procesu v Linuxu

  2. Jak nainstalovat vtop na Linux

  3. Jak nastavit afinitu CPU pro proces z C nebo C++ v Linuxu?

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

  2. Proces na pozadí v linuxu

  3. Jak omezit proces na jedno jádro CPU v Linuxu?

  1. Jak obnovit všechna vlákna (a děti) jednoho procesu v Linuxu?

  2. Jak deaktivovat jeden CPU

  3. Linux:jak zjistit, které procesy jsou připojeny ke kterému jádru?