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

js, um die Funktion zum Hochladen von Bildern zu realisieren

Das Prinzip des Hochladens von Bildern auf dem Fr...

HTML-Kopfstruktur

Im Folgenden werden die häufig verwendete Kopfstr...

Lösung für den Fehler bei der Installation von Docker auf der CentOS-Version

1. Versionsinformationen # Katze /etc/system-rele...

Anfänger lernen einige HTML-Tags (3)

Anfänger, die mit HTML in Berührung kommen, lerne...

Nginx implementiert dynamische und statische Trennung Beispielerklärung

Um das Parsen der Website zu beschleunigen, könne...

Detaillierte Erklärung zur Verwendung von JavaScript-Funktionen

Inhaltsverzeichnis 1. Deklarieren Sie eine Funkti...

jQuery implementiert ein atmendes Karussell

In diesem Artikel wird der spezifische Code von j...

Detaillierte Erläuterung der MERGE-Speicher-Engine von MySQL

Die MERGE-Speicher-Engine behandelt eine Gruppe v...