Як дізнатися сімейство архітектури Intel з командного рядка


28

Я отримую доступ до деяких машин xeon для перевірки працездатності. Я хочу дізнатися, яку архітектуру вони використовують, такі як Haswell, Sandybridge, Ivybridge. Чи є команда дізнатися це?


2
/proc/cpuinfoнасправді дає назву моделі на кшталт Intel (R) blah blah blah GHz, ви повинні безпосередньо перейти в Google.
Arthur2e5

Я запитував родину архітектури
цікавий інженер

1
Я не думаю, що "сім'я архітектури" повідомляється, це просто комерційні назви. Ви отримаєте ім'я моделі /proc/cpuinfo, я думаю, що вам належить перекласти це у відповідне прізвище.
Жил "ТАК - перестань бути злим"

@Ijustwanttocode Для пошуку цих комерційних назв потрібно використовувати якусь таблицю.
Arthur2e5

Відповіді:


45

Це трохи дешевий шлях, але ви можете отримати цю інформацію від gcc! Я поясню: gcc здатний оптимізувати бінарні файли для кожного subarch за допомогою параметра -march. Більше того, він може виявити ваш і автоматично оптимізувати вашу машину за допомогою -march = native Припустимо, що вам потрібно просто зателефонувати gcc з march = native і запитати, які прапори він би використовував: коротше

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

для мене це дає

-march=                               bdver1

але мій ПК працює з процесором amd buldozer


ваше рішення відповідає на питання. Це працює для мене.
AJN

Це не працює для мене, оскільки він повертається broadwellзамість kabylake. Це, мабуть, тому, що моя версія gcc не відрізняє ці дві сім'ї при створенні збірки.
Тиїло

gcc8 може ідентифікувати skylake як такий, тоді як gcc5 насправді визначає як широкий спектр.
Ерік

8

Напевно, ви не можете, оскільки це маркетингові назви для комерційного продажу, а не "технічні" назви.

Однак ви можете отримати те, що вам потрібно, з dmidecode, а потім відвідати http://ark.intel.com (для вашого процесора Xeon), щоб визначити комерційну родину.

[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

З цього виходу я міг завітати на веб-сайт ковчега Intel і знайти процесор 3770, який би сказав мені, що у мене є чіп Ivy Bridge.


1
Щоб зробити це автоматизованим зі сценарієм, я б використав dmidecode або / proc / cpuinfo та поєднав би його з grep або awk або perl та версією для друку списку процесорів xeon у wikipedia, який ви отримуєте з curl або wget: en.wikipedia.org/ в /…
erik

5

Нижче наведено скрипт bash, який автоматично знаходить кодове ім’я архітектури для вашого процесора за допомогою /proc/cpuinfoта https://ark.intel.com/ . Для його роботи потрібно встановити цуценя .

Запускаючи код на своєму комп’ютері, я отримую такий результат:

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

Це працює і робить те, що запропонував @erik!
Панайотис

5

Ці дані зберігаються в PMU_NAME, просто введіть:

cat /sys/devices/cpu/caps/pmu_name
haswell
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.