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

Wie beschränke ich einen Prozess auf einen CPU-Kern in Linux?

Führen Sie unter Linux den sched_setaffinity aus Systemaufruf. Die Affinität eines Prozesses ist die Menge der Prozessoren, auf denen er ausgeführt werden kann. Es gibt einen Standard-Shell-Wrapper:taskset . Um beispielsweise einen Prozess an CPU #0 anzuheften (Sie müssen eine bestimmte CPU auswählen):

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

Es gibt Module von Drittanbietern für beide Perl (Sys::CpuAffinity ) und Python (affinity ), um die Affinität eines Prozesses festzulegen. Beide funktionieren sowohl unter Linux als auch unter Windows (Windows erfordert möglicherweise andere Module von Drittanbietern mit Sys::CpuAffinity ); Sys::CpuAffinity funktioniert auch auf einigen anderen Unix-Varianten.

Wenn Sie die Affinität eines Prozesses ab dem Zeitpunkt seiner Geburt festlegen möchten, legen Sie die Affinität des aktuellen Prozesses unmittelbar vor dem Aufruf von execve fest . Hier ist ein trivialer Wrapper, der die Ausführung eines Prozesses auf CPU 0 erzwingt.

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

Sie können CPU-Sets auch auf der Befehlszeile erstellen. man cpuset Später können Sie diesen (laufende) Prozesse zuweisen.


Linux
  1. Linux – Wie stellt man die Prozessoraffinität eines Prozesses unter Linux ein?

  2. Linux – Wie beschränke ich einen Prozess auf einen CPU-Kern in Linux??

  3. So legen Sie die CPU-Affinität für den SYSTEMD-Prozess in CentOS/RHEL 7 fest

  4. Wie stellt man die CPU-Affinität für einen Prozess von C oder C++ in Linux ein?

  5. Wie kann ich die Prozessoraffinität eines Prozesses unter Linux einstellen?

So überwachen Sie eine CPU-Temperatur auf einem Redhat 7 Linux-System

So legen Sie das Limit für ulimit und Dateideskriptoren auf Linux-Servern fest

So beenden Sie einen Prozess in Linux

So legen Sie den Hostnamen unter Linux fest oder ändern ihn

So erhalten Sie die CPU-Auslastung eines einzelnen Prozesses in Linux

Wie man einen Prozess unter Linux beendet