comment découvrir la famille d'architecture Intel à partir de la ligne de commande

28

J'ai accès à certaines machines xeon pour vérifier les performances. Je veux savoir quelle architecture ils utilisent comme Haswell, Sandybridge, Ivybridge. Existe-t-il une commande pour le savoir?

un ingénieur curieux
la source
2
/proc/cpuinfodonne en fait le nom du modèle comme Intel (R) blah blah blah GHz, vous devez le rechercher directement sur Google.
Arthur2e5
Je demandais une famille d'architecture
un ingénieur curieux
1
Je ne pense pas que la «famille d'architecture» soit mentionnée, ce ne sont que des noms commerciaux. Vous obtenez le nom du modèle /proc/cpuinfo, je pense que c'est à vous de le traduire dans le nom de famille correspondant.
Gilles 'SO- arrête d'être méchant'
@Ijustwanttocode Vous devez utiliser une sorte de tableau pour rechercher ces noms commerciaux.
Arthur2e5

Réponses:

45

C'est un peu une solution de contournement bon marché mais vous pouvez obtenir ces informations de gcc! Je vais vous expliquer: gcc est capable d'optimiser les binaires pour chaque sous-archivage avec l'option -march. De plus, il est capable de détecter le vôtre et d'optimiser automatiquement pour votre machine avec -march = native En supposant donc, il vous suffit d'appeler gcc avec march = native et de lui demander quels drapeaux il utiliserait: en bref

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

pour moi ça donne

-march=                               bdver1

mais mon pc fonctionne avec un processeur buldozer amd

Nephanth
la source
votre solution répond à la question. Ça marche pour moi.
AJN
Cela ne fonctionne pas pour moi car il revient broadwellau lieu de kabylake. C'est probablement parce que ma version de gcc ne distingue pas ces deux familles lors de la génération de l'assembly.
Tyilo
gcc8 peut identifier skylake en tant que tel tandis que gcc5 identifie comme broadwell, en effet.
Eric
8

Vous ne pouvez probablement pas car ce sont des noms commerciaux pour la vente commerciale, pas le nom "technique".

Vous pouvez cependant obtenir ce dont vous avez besoin sur dmidecode, puis visiter http://ark.intel.com (pour votre processeur Xeon) pour déterminer la famille commerciale.

[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

À partir de cette sortie, je pouvais visiter le site Web arche d'Intel et rechercher le processeur 3770, ce qui me dirait que j'ai une puce Ivy Bridge.

Jason Harris
la source
1
Pour le faire automatisé avec un script, j'utiliserais dmidecode ou / proc / cpuinfo et le combinerais avec grep ou awk ou perl et la version imprimable de la liste des processeurs xeon sur wikipedia que vous obtiendrez avec curl ou wget: en.wikipedia.org/ w /…
erik
5

Vous trouverez ci-dessous un script bash qui trouve automatiquement le nom de code d'architecture de votre processeur à l'aide de /proc/cpuinfoet https://ark.intel.com/ . Pour fonctionner, il faut que vous ayez installé un chiot .

En exécutant le code sur mon ordinateur, j'obtiens le résultat suivant:

$ ./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
la source
Cela fonctionne et fait ce que @erik a suggéré!
Panayotis
5

Ces données sont stockées dans PMU_NAME, tapez simplement:

cat /sys/devices/cpu/caps/pmu_name
haswell
wuseman
la source