Як дізнатися сімейство архітектури 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.