Làm thế nào để tìm ra gia đình kiến ​​trúc intel từ dòng lệnh


28

Tôi có quyền truy cập vào một số máy xeon để kiểm tra hiệu suất. Tôi muốn tìm hiểu kiến ​​trúc nào họ đang sử dụng như Haswell, Sandybridge, Ivybridge. Có một lệnh để tìm ra điều này?


2
/proc/cpuinfoThực sự cho tên mô hình như thế nào Intel (R) blah blah blah GHz, bạn nên google nó trực tiếp.
Arthur2e5

Tôi đã yêu cầu gia đình kiến ​​trúc
một kỹ sư tò mò

1
Tôi không nghĩ gia đình kiến ​​trúc của người dùng được báo cáo, họ chỉ là tên thương mại. Bạn nhận được tên mô hình /proc/cpuinfo, tôi nghĩ rằng tùy thuộc vào bạn để dịch nó thành tên gia đình tương ứng.
Gilles 'SO- ngừng trở nên xấu xa'

@Ijustwanttocode Bạn phải sử dụng một số loại bảng để tra cứu các tên thương mại đó.
Arthur2e5

Câu trả lời:


45

Đó là một chút giải pháp rẻ tiền nhưng bạn có thể lấy thông tin đó từ gcc! Tôi sẽ giải thích: gcc có thể tối ưu hóa nhị phân cho mỗi subarch với tùy chọn -march. Hơn nữa, nó có thể phát hiện máy của bạn và tự động tối ưu hóa cho máy của bạn với -march = local Giả sử, bạn chỉ cần gọi gcc với march = bản địa và hỏi nó sẽ sử dụng cờ nào: tóm lại

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

đối với tôi nó mang lại

-march=                               bdver1

nhưng máy tính của tôi chạy với bộ xử lý buldzer amd


giải pháp của bạn trả lời câu hỏi. Nó làm việc cho tôi.
AJN

Điều này không làm việc cho tôi vì nó trở lại broadwellthay vì kabylake. Điều này có thể là do phiên bản gcc của tôi không phân biệt hai họ đó khi tạo lắp ráp.
Tyilo

gcc8 có thể xác định skylake như vậy trong khi gcc5 xác định là broadwell, thực sự.
Eric

8

Bạn có thể không thể vì đó là những tên tiếp thị để bán thương mại, không phải tên "kỹ thuật".

Tuy nhiên, bạn có thể có được những gì bạn cần từ dmidecode và sau đó truy cập http://ark.intel.com (cho bộ xử lý Xeon của bạn) để xác định họ thương mại.

[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

Từ đầu ra đó, tôi có thể truy cập trang web ark của Intel và tìm kiếm CPU 3770, nó sẽ cho tôi biết tôi có chip Ivy Bridge.


1
Để thực hiện tự động với tập lệnh, tôi sẽ sử dụng dmidecode hoặc / Proc / cpuinfo và kết hợp nó với grep hoặc awk hoặc perl và phiên bản có thể in của danh sách xeon cpu trên wikipedia mà bạn có được với curl hoặc wget: en.wikipedia.org/ w /
Khải

5

Dưới đây là tập lệnh bash tự động tìm tên mã kiến ​​trúc cho CPU của bạn bằng cách sử dụng /proc/cpuinfohttps://ark.intel.com/ . Để làm việc, nó đòi hỏi bạn phải cài đặt con chó con .

Chạy mã trên máy tính của tôi, tôi nhận được kết quả như sau:

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

Nó hoạt động và làm những gì @erik đề xuất!
Panayotis

5

Dữ liệu này được lưu trữ trong PMU_NAME, chỉ cần gõ:

cat /sys/devices/cpu/caps/pmu_name
haswell
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.