GNU/Linux >> Linux Esercitazione >  >> Linux

Come limitare un processo a un core della CPU in Linux?

Sotto Linux, esegui sched_setaffinity chiamata di sistema. L'affinità di un processo è l'insieme di processori su cui può essere eseguito. C'è uno shell wrapper standard:taskset . Ad esempio, per bloccare un processo sulla CPU #0 (devi scegliere una CPU specifica):

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

Esistono moduli di terze parti sia per Perl (Sys::CpuAffinity ) e Python (affinity ) per impostare l'affinità di un processo. Entrambi funzionano sia su Linux che su Windows (Windows potrebbe richiedere altri moduli di terze parti con Sys::CpuAffinity ); Sys::CpuAffinity funziona anche su molte altre varianti unix.

Se vuoi impostare l'affinità di un processo dal momento della sua nascita, imposta l'affinità del processo corrente immediatamente prima di chiamare execve . Ecco un banale wrapper che forza l'esecuzione di un processo sulla CPU 0.

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

Puoi anche creare set di cpu sulla riga di comando. man cpuset Successivamente puoi assegnare a questi processi (in esecuzione).


Linux
  1. Come impostare la variabile $ Path in Linux

  2. Come impostare l'affinità della CPU per il processo SYSTEMD in CentOS/RHEL 7

  3. Come impostare l'affinità della CPU per un processo da C o C++ in Linux?

  4. Processo in background in Linux

  5. Come impostare l'ID processo in Linux per un programma specifico

Come monitorare la temperatura della CPU su un sistema Linux Redhat 7

Come impostare ulimit e il limite dei descrittori di file sui server Linux

Come uccidere un processo in Linux

Come impostare o modificare il nome host su Linux

Come ottenere l'utilizzo della CPU di un singolo processo in Linux

Come KILL un processo su Linux