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?


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


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.


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"

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.