GNU/Linux >> Znalost Linux >  >> Linux

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

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

Existují moduly třetích stran pro oba Perl (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 narození, 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

Sady procesorů můžete sestavit také na příkazovém řádku. man cpuset Později jim můžete přiřadit (běžící) procesy.


Linux
  1. Jak zabít proces zombie na Linuxu

  2. Linux – Jak nastavit afinitu procesoru k procesu v Linuxu?

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

  1. Jak nastavit proměnnou $Path v Linuxu

  2. Jak nastavit afinitu CPU pro proces SYSTEMD v CentOS/RHEL 7

  3. Jak nastavit ID procesu v Linuxu pro konkrétní program

  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?