GNU/Linux >> Linux Esercitazione >  >> Linux

Verifica se HyperThreading è abilitato o no?

Ho sempre usato quanto segue e ho guardato 'Thread(s) per core:'.

hostname:~ # lscpu
Architecture:          x86_64
CPU(s):                24
Thread(s) per core:    2                <-- here
Core(s) per socket:    6
CPU socket(s):         2
NUMA node(s):          2
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 44
Stepping:              2
CPU MHz:               1596.000
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              12288K

Nota, tuttavia, questa tecnica fallirà se qualsiasi processore logico è stato disattivato con un semplice

echo 0 > /sys/devices/system/cpu/cpuX/online

Note aggiunte l'8 luglio 2014: Come ha sottolineato Riccardo Murri, la mia risposta di seguito mostra solo se il processore segnala di supportare l'hyperthreading. Generalmente, i sistemi operativi *nix sono configurati per abilitare l'hyperthreading se supportato. Tuttavia, per verificarlo effettivamente a livello di codice, vedere ad esempio la risposta di Nils!

---- Risposta originale del 25 marzo 2012:

Sei davvero sulla strada giusta :) con

dmidecode -t processor | grep HTT

Su Linux, generalmente cerco solo "ht" nella riga "flags" di /proc/cpuinfo . Vedi ad esempio

grep '^flags\b' /proc/cpuinfo | tail -1

o se vuoi includere "ht" nel pattern

grep -o '^flags\b.*: .*\bht\b' /proc/cpuinfo | tail -1

(\b corrisponde ai confini delle parole e aiuta a evitare falsi positivi nei casi in cui "ht" fa parte di un altro flag.)


Se il numero di processori logici è il doppio del numero di core, hai HT. Usa il seguente script per decodificare /proc/cpuinfo :

#!/bin/sh
CPUFILE=/proc/cpuinfo
test -f $CPUFILE || exit 1
NUMPHY=`grep "physical id" $CPUFILE | sort -u | wc -l`
NUMLOG=`grep "processor" $CPUFILE | wc -l`
if [ $NUMPHY -eq 1 ]
  then
    echo This system has one physical CPU,
  else
    echo This system has $NUMPHY physical CPUs,
fi
if [ $NUMLOG -gt 1 ]
  then
    echo and $NUMLOG logical CPUs.
    NUMCORE=`grep "core id" $CPUFILE | sort -u | wc -l`
    if [ $NUMCORE -gt 1 ]
      then
        echo For every physical CPU there are $NUMCORE cores.
    fi
  else
    echo and one logical CPU.
fi
echo -n The CPU is a `grep "model name" $CPUFILE | sort -u | cut -d : -f 2-`
echo " with`grep "cache size" $CPUFILE | sort -u | cut -d : -f 2-` cache"

Linux
  1. Aes-ni non è passato all'ospite in Virtualbox?

  2. Perché Lpd non è abilitato per impostazione predefinita nella trasmissione?

  3. Come posso sapere se l'opzione set -e è abilitata o meno?

  4. Come verificare se il kernel Linux è abilitato o meno per Retpoline?

  5. Firewalld - Registrazione dei pacchetti negati abilitata - nessuna registrazione

Perché Cd non è un programma?

Env o non Env?

La CPU è gratuita, ma lo script Bash non utilizza tutte le risorse della CPU?

Utilizzo elevato della CPU - Installazione SQL non completata

La CPU host non scala la frequenza quando il guest KVM ne ha bisogno

Perché alcuni modelli di CPU della famiglia Intel 6 (Core 2, Pentium M) non sono supportati da intel_idle?