Cómo averiguar la familia de arquitectura Intel desde la línea de comandos


28

Tengo acceso a algunas máquinas xeon para verificar el rendimiento. Quiero saber qué arquitectura están utilizando, como Haswell, Sandybridge, Ivybridge. ¿Hay un comando para descubrir esto?


2
/proc/cpuinfoen realidad da el nombre del modelo como Intel (R) blah blah blah GHz, deberías buscarlo en Google directamente.
— Arthur2e5

Estaba preguntando por la familia de la arquitectura
— un ingeniero curioso

1
No creo que se informe de la "familia de la arquitectura", son solo nombres comerciales. Obtienes el nombre del modelo /proc/cpuinfo, creo que depende de ti traducir eso al apellido correspondiente.
— Gilles 'SO- deja de ser malvado'

@Ijustwanttocode Debe usar algún tipo de tabla para buscar esos nombres comerciales.
— Arthur2e5

Respuestas:


45

Es una solución un poco barata, ¡pero podría obtener esa información de gcc! Explicaré: gcc puede optimizar los binarios para cada subarchivo con la opción -march. Además, puede detectar el tuyo y optimizarlo automáticamente para tu máquina con -march = native Suponiendo que así sea, solo tienes que llamar a gcc con march = native y preguntar qué banderas usaría: en resumen

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

para mi da

-march=                               bdver1

pero mi PC funciona con un procesador AMD Buldozer


Su solución responde a la pregunta. Esto funciona para mi.
— AJN

Esto no funciona para mí, ya que regresa en broadwelllugar de kabylake. Esto probablemente se deba a que mi versión de gcc no distingue a esas dos familias al generar el ensamblaje.
— Tyilo

gcc8 puede identificar skylake como tal, mientras que gcc5 se identifica como broadwell, de hecho.
— Eric

8

Probablemente no pueda porque esos son nombres de marketing para venta comercial, no el nombre "técnico".

Sin embargo, puede obtener lo que necesita de dmidecode y luego visitar http://ark.intel.com (para su procesador Xeon) para determinar la familia 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 de ese resultado, podría visitar el sitio web de arca de Intel y buscar la CPU 3770, lo que me diría que tengo un chip Ivy Bridge.


1
Para hacerlo automatizado con un script, usaría dmidecode o / proc / cpuinfo y lo combinaría con grep o awk o perl y la versión imprimible de la lista de xeon cpu en wikipedia que obtienes con curl o wget: en.wikipedia.org/ w / ...
— erik

5

A continuación se muestra un script bash que encuentra automáticamente el nombre del código de arquitectura para su CPU usando /proc/cpuinfoy https://ark.intel.com/ . Para trabajar requiere que tengas cachorro instalado.

Al ejecutar el código en mi computadora obtengo el siguiente 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.*/\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 y hace lo que @erik sugirió!
— Panayotis

5

Estos datos se almacenan en PMU_NAME, solo escriba:

cat /sys/devices/cpu/caps/pmu_name
haswell
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.