วิธีค้นหาตระกูลสถาปัตยกรรม Intel จากบรรทัดคำสั่ง


28

ฉันได้รับการเข้าถึงเครื่อง xeon บางเครื่องเพื่อตรวจสอบประสิทธิภาพ ฉันต้องการค้นหาว่าพวกเขาใช้สถาปัตยกรรมใดเช่น Haswell, Sandybridge, Ivybridge มีคำสั่งให้ค้นหาสิ่งนี้หรือไม่?


2
/proc/cpuinfoจริงให้ชื่อรุ่นเช่นIntel (R) blah blah blah GHzคุณควร google มันโดยตรง
Arthur2e5

ฉันขอครอบครัวสถาปัตยกรรม
วิศวกรที่อยากรู้อยากเห็น

1
ฉันไม่คิดว่ามีการรายงาน“ ตระกูลสถาปัตยกรรม” พวกเขาเป็นเพียงชื่อทางการค้า คุณได้ชื่อรุ่น/proc/cpuinfoมาฉันคิดว่ามันขึ้นอยู่กับคุณที่จะแปลมันเป็นชื่อสกุลที่สอดคล้องกัน
Gilles 'หยุดความชั่วร้าย'

@Ijustwanttocode คุณต้องใช้ตารางบางอย่างเพื่อค้นหาชื่อทางการค้าเหล่านั้น
Arthur2e5

คำตอบ:


45

มันเป็นวิธีแก้ปัญหาราคาถูกนิดหน่อย แต่คุณสามารถรับข้อมูลนั้นได้จาก gcc! ฉันจะอธิบาย: gcc สามารถเพิ่มประสิทธิภาพไบนารีสำหรับแต่ละ subarch ด้วยตัวเลือก -march ยิ่งไปกว่านั้นมันสามารถตรวจจับของคุณและปรับให้เหมาะสมกับเครื่องของคุณโดยอัตโนมัติด้วย -march = เนทีฟสมมติว่าคุณเพียงแค่เรียก gcc ด้วย march = native และถามว่าจะใช้ค่าสถานะใด: ในระยะสั้น

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

สำหรับฉันมันให้

-march=                               bdver1

แต่พีซีของฉันทำงานด้วยโปรเซสเซอร์ buldzer และ amd


โซลูชันของคุณตอบคำถาม มันใช้งานได้สำหรับฉัน
AJN

นี้ไม่ได้ทำงานสำหรับฉันเป็นมันจะกลับแทนbroadwell kabylakeอาจเป็นเพราะ gcc รุ่นของฉันไม่แยกความแตกต่างระหว่างสองตระกูลเมื่อสร้างชุดประกอบ
Tyilo

gcc8 สามารถระบุ skylake เช่นนี้ในขณะที่ gcc5 ระบุว่าเป็น Broadwell แน่นอน
Eric

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 และค้นหา CPU 3770 ซึ่งจะบอกฉันว่าฉันมีชิป Ivy Bridge


1
หากต้องการทำมันโดยอัตโนมัติด้วยสคริปต์ฉันจะใช้ dmidecode หรือ / proc / cpuinfo และรวมเข้ากับ grep หรือ awk หรือ perl และรุ่น xeon cpu list ที่พิมพ์ได้ใน wikipedia ซึ่งคุณได้รับด้วย curl หรือ wget: en.wikipedia.org w / …
erik

5

ด้านล่างเป็นสคริปต์ทุบตีที่พบชื่อรหัสสถาปัตยกรรมโดยอัตโนมัติสำหรับ CPU ของคุณโดยใช้/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 แนะนำ!
Panayotis

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.