jak znaleźć rodzinę architektury Intel z linii poleceń


28

Mam dostęp do niektórych maszyn Xeon do sprawdzania wydajności. Chcę dowiedzieć się, jakiej architektury używają, takich jak Haswell, Sandybridge, Ivybridge. Czy istnieje polecenie, aby się tego dowiedzieć?


2
/proc/cpuinfowłaściwie podaje nazwę modelu Intel (R) blah blah blah GHz, powinieneś google go bezpośrednio.
— Arthur2e5

Poprosiłem o rodzinę architektury
— ciekawy inżynier

1
Nie sądzę, że „rodzina architektury” jest zgłaszana, to tylko nazwy handlowe. Dostajesz nazwę modelu /proc/cpuinfo, myślę, że to od Ciebie zależy, czy przełożysz ją na odpowiednie nazwisko.
— Gilles „SO- przestań być zły”

@Ijustwanttocode Musisz użyć jakiejś tabeli, aby wyszukać te nazwy handlowe.
— Arthur2e5

Odpowiedzi:


45

To trochę tanie obejście, ale możesz uzyskać te informacje z gcc! Wyjaśnię: gcc jest w stanie zoptymalizować pliki binarne dla każdego subarcha z opcją -march. Co więcej, jest w stanie wykryć twój i automatycznie zoptymalizować dla twojego komputera z -march = native Zakładając, że po prostu musisz wywołać gcc z march = native i zapytać go, jakich flag użyłby: w skrócie

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

dla mnie to daje

-march=                               bdver1

ale mój komputer działa z procesorem amd buldozer


twoje rozwiązanie odpowiada na pytanie. Mi to pasuje.
— AJN

To nie działa dla mnie, ponieważ zwraca broadwellzamiast kabylake. Jest tak prawdopodobnie dlatego, że moja wersja gcc nie rozróżnia tych dwóch rodzin podczas generowania zestawu.
— Tyilo

gcc8 może identyfikować skylake jako taki, podczas gdy gcc5 identyfikuje się jako broadwell.
— Eric,

8

Prawdopodobnie nie możesz, ponieważ są to nazwy marketingowe do sprzedaży komercyjnej, a nie nazwa „techniczna”.

Możesz jednak uzyskać potrzebne informacje z dmidecode, a następnie odwiedzić stronę http://ark.intel.com (dla swojego procesora Xeon), aby ustalić rodzinę komercyjną.

[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

Z tego wyjścia mogłem odwiedzić stronę Arka Intela i poszukać procesora 3770, który powiedziałby mi, że mam układ Ivy Bridge.


1
Aby zrobić to automatycznie za pomocą skryptu, użyłbym dmidecode lub / proc / cpuinfo i połączyłbym go z grep lub awk lub perl i wersją do wydrukowania listy procesorów xeon na wikipedii, którą otrzymałeś z curl lub wget: en.wikipedia.org/ w /…
— erik

5

Poniżej znajduje się skrypt bash, który automatycznie znajduje nazwę kodową architektury twojego procesora za pomocą /proc/cpuinfoi https://ark.intel.com/ . Do pracy wymaga zainstalowania szczenięcia .

Po uruchomieniu kodu na moim komputerze otrzymuję następujący wynik:

$ ./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"

Działa i robi to, co sugerował @erik!
— Panayotis

5

Te dane są przechowywane w PMU_NAME, wystarczy wpisać:

cat /sys/devices/cpu/caps/pmu_name
haswell
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.