[LINUX] So führen Sie einen Prozessthread nur auf einem bestimmten CPU-Kern aus

In einer Mehrkern-CPU hängt der CPU-Kern, auf dem der Prozessthread ausgeführt wird, vom Scheduler des Betriebssystems ab, und der Kontext kann je nach Situation auf einen anderen CPU-Kern verschoben werden. Unter Linux können Sie die CPU-Affinität festlegen, um solche Bewegungen zu verhindern, und zulassen, dass Prozessthreads nur auf bestimmten CPU-Kernen ausgeführt werden (hauptsächlich aufgrund von Leistungsproblemen).

Was ist CPU-Affinität?

Eine Sammlung logischer CPUs, die der Thread ausführen darf. Die CPU-Affinität wird durch eine Bitmaske dargestellt.

Beispielsweise ist CPU0 "0x00000001", CPU1 ist "0x00000002" und der Satz von CPU0,1,3 ist "0x0000000b".

Sie können überprüfen, welcher CPU-Kern CPU0 tatsächlich ist, indem Sie cat / proc / cpuinfo verwenden.

So stellen Sie die CPU-Affinität per Befehl ein

Sie können die CPU-Affinität eines Prozesses mit dem Befehlstaskensatz festlegen.

# taskset -p mask pid

Geben Sie für Maske die CPU-Affinität und für pid den Prozess an, den Sie ändern möchten.

Verwenden Sie die Option -a, um für alle Threads in der Prozess-PID zu ändern.

# taskset -a -p mask pid

So führen Sie nur einen bestimmten Prozess auf einem CPU-Prozessor aus

Nur dieser Prozess darf auf dieser CPU ausgeführt werden, und alle anderen Prozesse werden davon abgehalten.

# ps -e -o pid= | xargs -n 1 taskset -p 0xFFFFFFFE
# taskset -p 0x00000001 PID

So stellen Sie die CPU-Affinität programmgesteuert ein

Verwenden Sie die Funktion sched_setaffinity (), um die CPU-Affinität programmgesteuert festzulegen.

#define _GNU_SOURCE             /* feature_test_Siehe Makros*/
#include <sched.h>

void
func(void)
{
  cpu_set_t mask;
  int ret;

  //Schalten Sie alle Masken aus
  CPU_ZERO(&mask);

  // CPU_AFFINITY_Erlaube das Laufen auf dem Kern von MASK
  CPU_SET(CPU_AFFINITY_MASK, &mask);

  //Stellen Sie die CPU-Affinität ein
  ret = sched_setaffinity(0, sizeof(mask), &mask);
  if (ret != 0) {
    // error
  }
}

Recommended Posts

So führen Sie einen Prozessthread nur auf einem bestimmten CPU-Kern aus
So führen Sie Django unter IIS auf einem Windows-Server aus
So führen Sie ein geschultes Transformatormodell lokal auf CloudTPU aus
Wie erstelle ich ein Multiplayer-Online-Actionspiel mit Slack?
Wie man einen lockeren Bot macht
Wie erstelle ich einen Crawler?
So erstellen Sie eine rekursive Funktion
Wie man Matplotlib auf Heroku ausführt
[Blender] So erstellen Sie ein Blender-Plug-In
Wie erstelle ich einen Crawler?
[C-Sprache] So erstellen, vermeiden und erstellen Sie einen Zombie-Prozess
So erstellen Sie eine .dylib-Bibliothek aus einer .a-Bibliothek mit OSX (El Capitan)
[Python] Wie man eine Klasse iterierbar macht
So erstellen Sie einen benutzerdefinierten Backtrader-Indikator
So testen Sie auf einer von Django authentifizierten Seite
Wie erstelle ich eine Pelican Site Map?
Hinweise zum Ausführen von Cython unter OSX
So führen Sie Maya Python-Skripte aus
So registrieren Sie nur eine Daten auf dem Django-Verwaltungsbildschirm
Wie man ein Dialogsystem für Anfänger erstellt
Ein Memorandum, um WebDAV nur mit Nginx zu erstellen
So machen Sie mehrere Kernel auf Jupyter auswählbar
So erstellen Sie ein Wörterbuch mit einer hierarchischen Struktur.
So führen Sie MeCab unter Ubuntu 18.04 LTS Python aus
LINUX: Wie man Pfeiltasten macht, entspricht 2,4,6,8 auf Noten ohne zehn Tasten
So erstellen Sie ein QGIS-Plug-In (Paketerzeugung)
Slackbot nur auf bestimmte Kanäle reagieren lassen (Python Slackbot)
Ich las "Wie man ein Hacking Lab macht"
Wie man mit 2017 Windows ein anständiges Leben führt
So führen Sie eine Django-Anwendung auf einem Docker-Container aus (Entwicklungs- und Produktionsumgebung)
So zählen Sie Zahlen in einem bestimmten Bereich
Festlegen der CPU-Affinität für Prozessthreads
So wenden Sie mit matplotlib Marker nur auf bestimmte Daten an
So stellen Sie eine Django-Anwendung in der Alibaba-Cloud bereit
So installieren Sie Linux auf einem 32-Bit-UEFI-PC
Wie man ein Schießspiel mit toio macht (Teil 1)
Ein Memorandum zur Verwendung von Keras 'keras.preprocessing.image
So erstellen Sie eine Django (Python) -Umgebung auf Docker
So führen Sie Self Bot mit Discord.py aus [Einfacher Vandalismus! ]]
So erstellen Sie ein Python-Paket mit VS Code
Wie man setUp nur einmal in Python unittest ausführt
Grundlagen von PyTorch (2) - Wie erstelle ich ein neuronales Netzwerk?
So erstellen Sie eine Python-Umgebung unter Amazon Linux 2
Wie man einen bestimmten Prozess am Anfang und Ende der Spinne mit Scrapy einfügt
Verwendung von GitHub auf einem Server für mehrere Personen ohne Kennwort
Verwendung von Fujifilm X-T3 als Webcam unter Ubuntu 20.04
[Python] So erstellen Sie eine Liste von Zeichenfolgen Zeichen für Zeichen
So erstellen Sie eine neue virtuelle Python-Umgebung unter Ubuntu
So führen Sie eine Python-Datei an einer Windows 10-Eingabeaufforderung aus
So führen Sie ein Python-Programm in einem Shell-Skript aus
Verliere nicht gegen Ruby! Wie man Python (Django) auf Heroku ausführt
So erstellen Sie ein Hacking-Labor - Kali Linux (2020.1) VirtualBox 64-Bit Teil 2-
So verschieben Sie ein zweidimensionales Array nur mit Python [Hinweis]
So mounten Sie ein Windows 10-Verzeichnis unter Ubuntu-Server 20.04 auf VMware Workstation 15.
So erstellen Sie ein Hacking-Labor - Kali Linux (2020.1) VirtualBox 64-Bit-Edition -
Wie erstelle ich ein Python-Paket (geschrieben für Praktikanten)
Hinweise zum Laden einer virtuellen Umgebung mit PyCharm
Wie man ein einfaches Flappy Bird-Spiel mit Pygame macht
So extrahieren Sie mit Numpy einen anderen als einen bestimmten Index
So registrieren Sie ein Paket in PyPI (Stand September 2017)