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?


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


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.


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"

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.