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

Zusammenfassung einiger gängiger Protokolle in MySQL

Vorwort: Im MySQL-System gibt es viele verschiede...

Eine kurze Diskussion über Lösungen zum Stören von CSS3-Animationen

Warum steckt es fest? Es gibt eine Prämisse, die ...

Centos7-Installation des in Nginx integrierten Lua-Beispielcodes

Vorwort Der von mir verwendete Computer ist ein M...

Detaillierte Erläuterung des React setState-Datenaktualisierungsmechanismus

Inhaltsverzeichnis Warum setState verwenden? Verw...

Grundlegende Anwendungsmethoden für eingebettete und externe JavaScript-Links

Inhaltsverzeichnis Grundlegende Anwendung eingebe...

Javascript-Countdown-Eingabeaufforderungsfeld

In diesem Artikelbeispiel wird der spezifische Ja...

MySQL-Lösung für zeitgesteuerte Backups (mithilfe von Linux crontab)

Vorwort Obwohl manche Liebe auf dieser Welt ihren...

Achten Sie bei der Webseitenerstellung auf die Verwendung von HTML-Tags

Dieser Artikel stellt einige Aspekte von HTML-Tag...

Detaillierte Erklärung der JavaScript-Timer

Inhaltsverzeichnis Kurze Einleitung Intervall fes...

HTML+CSS zum Erstellen von Herzschlag-Spezialeffekten

Heute werden wir einen einfachen Herzschlageffekt...

Detaillierte Erläuterung der Dateisystemformate der EXT-Serie in Linux

Linux-Dateisystem In der Abbildung oben sind herk...

Implementierung des Aufbaus eines Kubernetes-Clusters mit VirtualBox+Ubuntu16

Inhaltsverzeichnis Über Kubernetes Grundlegende U...

Oberflächliches Webdesign

<br />Ich war schon immer der Meinung, dass ...