como descobrir a família de arquitetura intel a partir da linha de comando

22

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

    
por I just want to code 18.09.2015 / 23:44

3 respostas

38

É uma solução barata, mas você pode obter essa informação do gcc! Explicarei: o gcc é capaz de otimizar binários para cada subarquivo com a opção -march. Além disso, é capaz de detectar o seu e otimizar automaticamente para sua máquina com -march = native Supondo que você só precisa chamar o gcc com march = native e perguntar quais flags ele usaria: em resumo

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

para mim, isso dá

-march=                               bdver1

mas meu pc roda com um processador amd buldozer

    
por 19.09.2015 / 23:02
6

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

Você pode, no entanto, obter o que precisa no dmidecode e visitar o link (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 arca da Intel e procurar a CPU 3770, que me diria que tenho um chip Ivy Bridge.

    
por 19.09.2015 / 05:15
3

Abaixo está um script bash que encontra automaticamente o nome de código da arquitetura da sua CPU usando /proc/cpuinfo e link . Para funcionar, é necessário que você tenha o filhote instalado.

Executando o código no meu computador, recebo o seguinte resultado:

$ ./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.*//' <<<"$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"
    
por 13.01.2018 / 06:34