wie man Intel-Architekturfamilie von der Kommandozeile herausfindet

27

Ich erhalte Zugriff auf einige xeon-Maschinen, um die Leistung zu überprüfen. Ich möchte herausfinden, welche Architektur sie verwenden, wie Haswell, Sandybridge, Ivybridge. Gibt es einen Befehl, um das herauszufinden?

ein neugieriger Ingenieur
quelle
2
/proc/cpuinfoGibt das Modell eigentlich so aus Intel (R) blah blah blah GHz, sollte man es direkt googeln.
Arthur2e5
Ich war für Architektur Familie gefragt
einen kuriosen Ingenieur
1
Ich glaube nicht, dass über die „Architekturfamilie“ berichtet wird, sie sind nur Handelsnamen. Wenn Sie den Modellnamen /proc/cpuinfoeingeben, liegt es an Ihnen, ihn in den entsprechenden Familiennamen zu übersetzen.
Gilles,
@Ijustwanttocode Sie müssen eine Tabelle verwenden, um diese Handelsnamen nachzuschlagen.
Arthur2e5

Antworten:

45

Es ist ein billiger Workaround, aber Sie könnten diese Informationen von gcc bekommen! Ich erkläre: Mit der Option -march kann gcc die Binärdateien für jeden Subarch optimieren. Darüber hinaus kann es Ihre erkennen und mit -march = native automatisch für Ihre Maschine optimieren. Vorausgesetzt, Sie müssen gcc nur mit march = native aufrufen und danach fragen, welche Flags es verwenden würde: kurz

gcc -march=native -Q --help=target|grep march

für mich gibt es

-march=                               bdver1

aber mein pc läuft mit einem amd buldozer prozessor

Nephanth
quelle
Ihre Lösung beantwortet die Frage. Für mich geht das.
AJN
Dies funktioniert bei mir nicht, da es broadwellstattdessen zurückkehrt kabylake. Dies liegt wahrscheinlich daran, dass meine Version von gcc diese beiden Familien beim Generieren der Assembly nicht unterscheidet.
Tyilo
gcc8 kann skylake als solches identifizieren, während gcc5 sich tatsächlich als broadwell identifiziert.
Eric
8

Dies ist wahrscheinlich nicht möglich, da dies Markennamen für den kommerziellen Verkauf sind, nicht der "technische" Name.

Sie können jedoch das, was Sie benötigen, von dmidecode beziehen und dann http://ark.intel.com (für Ihren Xeon-Prozessor) besuchen , um die kommerzielle Familie zu bestimmen.

[root@mediasrv ~]# dmidecode|grep -i intel
        Socket Designation: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
        Manufacturer: Intel
        Version: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz

Von dieser Ausgabe aus konnte ich Intels Arche-Website besuchen und nach der 3770-CPU suchen, die mir sagen würde, dass ich einen Ivy-Bridge-Chip habe.

Jason Harris
quelle
1
Um dies mit einem Skript zu automatisieren, würde ich dmidecode oder / proc / cpuinfo verwenden und es mit grep oder awk oder perl und der druckbaren Version der xeon-cpu-Liste auf Wikipedia kombinieren, die Sie mit curl oder wget erhalten: en.wikipedia.org/ w /…
erik
5

Unten ist ein Bash - Skript, das die Architektur Codenamen für Ihre CPU mit automatisch findet /proc/cpuinfound https://ark.intel.com/ . Für die Arbeit muss ein Welpe installiert sein.

Beim Ausführen des Codes auf meinem Computer erhalte ich das folgende Ergebnis:

$ ./intel_codename
Processor name: i7-7700HQ
Kaby Lake

#!/bin/bash

set -euo pipefail

if [[ $# == 0 ]]; then
    modelname=$(cat /proc/cpuinfo | grep 'model name' | head -1)
    if ! grep Intel <<<"$modelname" > /dev/null; then
        echo "You don't seem to have an Intel processor" >&2
        exit 1
    fi

    name=$(sed 's/.*\s\(\S*\) CPU.*/\1/' <<<"$modelname")
    echo "Processor name: $name" >&2
else
    name=$1
fi

links=($(curl --silent "https://ark.intel.com/search?q=$name" | pup '.result-title a attr{href}'))

results=${#links[@]}
if [[ $results == 0 ]]; then
    echo "No results found" >&2
    exit 1
fi

link=${links[0]}
if [[ $results != 1 ]]; then
    echo "Warning: $results results found" >&2
    echo "Using: $link" >&2
fi

url="https://ark.intel.com$link"
codename=$(curl --silent "$url" | pup '.CodeNameText .value text{}' | xargs | sed 's/Products formerly //')

echo "$codename"
Tyilo
quelle
Es funktioniert und macht was @erik vorgeschlagen hat!
Panayotis
3

Diese Daten werden in PMU_NAME gespeichert. Geben Sie einfach Folgendes ein:

cat /sys/devices/cpu/caps/pmu_name
haswell
Wuseman
quelle