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

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

Für diese Frage gibt es hier bereits Antworten :Wie kann ich die Prozessoraffinität eines Prozesses unter Linux einstellen?

(4 Antworten)
Vor 3 Jahren geschlossen.

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

Etwas Ähnliches wie ulimit oder cpulimit wäre nett. (Nur um sicherzustellen:Ich möchte die prozentuale Nutzung oder die Ausführungszeit NICHT einschränken. Ich möchte die App (mit all ihren untergeordneten Prozessen (Threads)) zwingen, einen CPU-Kern (oder 'n' CPU-Kerne) zu verwenden). /P>

Akzeptierte Antwort:

Führen Sie unter Linux die 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 Nr. 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

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

  2. Wie berechnet man die CPU-Auslastung eines Prozesses durch PID in Linux von C?

  3. Hintergrundprozess unter Linux

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

  5. Wie kann man alle Threads (und untergeordneten Elemente) eines Prozesses unter Linux neu erstellen?

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

So beenden Sie einen Prozess in Linux

So begrenzen Sie die CPU-Auslastung mit CPULimit unter Ubuntu Linux

So beenden Sie Zombie-Prozesse in Linux

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

Wie man einen Prozess unter Linux beendet