Detaillierte Erklärung zum dynamischen Aktivieren/Deaktivieren der Hyperthreading-Technologie in Linux

Detaillierte Erklärung zum dynamischen Aktivieren/Deaktivieren der Hyperthreading-Technologie in Linux

Vorwort

Mithilfe der Hyperthreading-Technologie von Intel können zwei Threads parallel auf einem physischen Kern ausgeführt werden, was in den meisten Fällen die Nutzung der Hardwareressourcen verbessern und die Systemleistung steigern kann. Bei CPU-intensiven numerischen Programmen kann die Hyperthreading-Technologie zu einer Verschlechterung der Gesamtprogrammleistung führen. Aus diesem Grund wird empfohlen, die Hyperthreading-Technologie beim Ausführen numerischer OpenMP- oder MPI-Programme zu deaktivieren.

Das Folgende ist ein auf GitHub gefundenes Skript, das die Hyper-Threading-Technologie dynamisch ein- und ausschaltet. Das Prinzip besteht darin, die Beziehung zwischen logischen Kernen gemäß der Datei /sys/devices/system/cpu/cpuX/topology/thread_siblings_list zu finden und dann die Datei /sys/devices/system/cpu/cpuX/online zu bearbeiten, um die Hyperthreading-Technologie dynamisch ein- und auszuschalten.

#!/bin/bash

HYPERTHREADING=1

Funktion toggleHyperThreading() {
 für CPU in /sys/devices/system/cpu/cpu[0-9]*; mache
   CPUID=`Basisname $CPU | cut -b4-`
   echo -en "CPU: $CPUID\t"
   [ -e $CPU/online ] && echo "1" > $CPU/online
   THREAD1=`cat $CPU/topology/thread_siblings_list | cut -f1 -d,`
   wenn [ $CPUID = $THREAD1 ]; dann
     echo "-> aktivieren"
     [ -e $CPU/online ] && echo "1" > $CPU/online
   anders
    if [ "$HYPERTHREADING" -eq "0" ]; dann echo "-> deaktiviert"; sonst echo "-> aktiviert"; fi
     echo "$HYPERTHREADING" > $CPU/online
   fi
 Erledigt
}

Funktion aktiviert() {
    echo -en "HyperThreading aktivieren\n"
    HYPERTHREADING=1
    HyperThreading umschalten
}

Funktion deaktiviert() {
    echo -en "HyperThreading deaktivieren\n"
    HYPERTHREADING=0
    HyperThreading umschalten
}

#
ONLINE=$(cat /sys/devices/system/cpu/online)
OFFLINE=$(cat /sys/geräte/system/cpu/offline)
echo "--------------------------------------------------"
echo -en "CPUs online: $ONLINE\t CPUs offline: $OFFLINE\n"
echo "--------------------------------------------------"
während wahr; tun
  read -p "Geben Sie e ein, um HyperThreading zu aktivieren, d, um es zu deaktivieren, oder q, um es zu beenden [e/d/q]?" ed
  Fall $ed in
    [Ee]* ) aktiviert; Unterbrechung;;
    [Dd]* ) deaktiviert;beenden;;
    [Qq]* ) beenden;;
    * ) echo "Bitte antworten Sie mit e zum Aktivieren oder d zum Deaktivieren von HyperThreading.";;
  esac
Erledigt

Bemerkung:

  1. Zur Ausführung des Skripts sind Root-Rechte erforderlich.
  2. Sie können die aktivierten CPU-Informationen über cat /proc/cpuinfo anzeigen. Für diesen Befehl sind keine Root-Berechtigungen erforderlich.
  3. Mit dem Befehl lscpu kann der Status der CPU angezeigt werden (keine Root-Rechte erforderlich): Der Wert für die Threads pro Kern beträgt 2, wenn Hyperthreading aktiviert ist, und 1, wenn es deaktiviert ist.

siehe

HyperThreading-Kerne zur Laufzeit deaktivieren/aktivieren – Linux

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Zusammenfassung der Methoden zum Beenden von Linux-Threads (empfohlen)
  • Methoden zum Thread-Umschalten und Prozess-Umschalten unter Linux
  • So brechen Sie einen Linux-Thread ab (beenden ihn)
  • Vergleich und Unterschied zwischen Prozessen und Threads in Linux

<<:  MySql 8.0.11 Installations- und Konfigurationstutorial

>>:  Detaillierte Einführungshinweise zu Vue

Artikel empfehlen

Erweiterte MySQL-Datenbankabfrage und Mehrtabellenabfrage

MySQL-Abfrage für mehrere Tabellen Hinzufügen ein...

jQuery realisiert den Gleiteffekt des Dropdown-Menüs

Wenn wir eine Webseite erstellen, möchten wir man...

Drei gängige Möglichkeiten zum Einbetten von CSS in HTML-Dokumente

Die folgenden drei Methoden werden häufig verwende...

So verwenden Sie das JQuery-Editor-Plugin tinyMCE

Ändern Sie die vereinfachte Dateigröße und laden ...

Eine kurze Diskussion über die Magie von parseInt() in JavaScript

Ursache Der Grund für das Schreiben dieses Blogs ...

Prinzip des Linux-Nohup-Befehls und Beispielanalyse

nohup-Befehl Bei der Verwendung von Unix/Linux mö...

Docker5 - Vollfunktionaler Hafenlager-Bauprozess

Harbor ist ein Registry-Server auf Unternehmenseb...

Detaillierte Erläuterung des Lernens von CSS-Zählerattributen

Das CSS-Zählerattribut wird von fast allen Browse...

So verwenden Sie Navicat zum Bedienen von MySQL

Inhaltsverzeichnis Vorwort: 1. Einführung in Navi...

So implementieren Sie das Singleton-Muster in Javascript

Inhaltsverzeichnis Überblick Code-Implementierung...