como descobrir a família de arquitetura intel na linha de comando

28

Eu tenho acesso a algumas máquinas xeon para verificar o desempenho. Quero descobrir qual arquitetura eles estão usando, como Haswell, Sandybridge, Ivybridge. Existe um comando para descobrir isso?

um engenheiro curioso
fonte
2
/proc/cpuinfona verdade, dá o nome do modelo como Intel (R) blah blah blah GHz, você deve pesquisá-lo diretamente no Google.
precisa saber é o seguinte
Eu estava pedindo para a arquitetura da família
um engenheiro curiosa
11
Eu não acho que a "família de arquitetura" seja relatada, eles são apenas nomes comerciais. Você pega o nome do modelo /proc/cpuinfo, acho que cabe a você traduzir isso para o nome de família correspondente.
Gilles 'SO- stop be evil'
@Ijustwanttocode Você precisa usar algum tipo de tabela para procurar esses nomes comerciais.
Arthur2e5

Respostas:

45

É uma solução alternativa barata, mas você pode obter essas informações no gcc! Vou explicar: o gcc é capaz de otimizar binários para cada subarquivo com a opção -march. Além disso, ele é capaz de detectar o seu e otimizar automaticamente para sua máquina com -march = native Supondo que você tenha que chamar gcc com march = native e perguntar quais sinalizadores seria usado: em resumo

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

para mim dá

-march=                               bdver1

mas meu pc roda com um processador amd buldozer

Nephanth
fonte
sua solução responde à pergunta. Funciona para mim.
AJN
Isso não funciona para mim, pois retorna em broadwellvez de kabylake. Isso provavelmente ocorre porque minha versão do gcc não distingue essas duas famílias ao gerar montagem.
Tyilo 13/01/19
O gcc8 pode identificar o skylake como tal, enquanto o gcc5 se identifica como broadwell.
Eric
8

Você provavelmente não pode, porque esses são nomes de marketing para venda comercial, não o nome "técnico".

No entanto, você pode obter o que precisa no dmidecode e, em seguida, visitar http://ark.intel.com (para o seu processador Xeon) para determinar a família comercial.

[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

A partir dessa saída, eu poderia visitar o site da Intel em ark e procurar a CPU 3770, que me diria que tenho um chip Ivy Bridge.

Jason Harris
fonte
11
Para automatizar com um script, eu usaria dmidecode ou / proc / cpuinfo e o combinaria com grep ou awk ou perl e a versão imprimível da lista xeon cpu na wikipedia que você obtém com curl ou wget: en.wikipedia.org/ w /…
erik
5

Abaixo está um script bash que encontra automaticamente o nome do código de arquitetura para sua CPU usando /proc/cpuinfoe https://ark.intel.com/ . Para funcionar, é necessário que você tenha o pup instalado.

Running the code on my computer I get the following result:

$ ./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
fonte
Funciona e faz o que o @erik sugeriu!
Panayotis
5

Esses dados são armazenados em PMU_NAME, basta digitar:

cat /sys/devices/cpu/caps/pmu_name
haswell
wuseman
fonte