커맨드 라인에서 인텔 아키텍처 제품군을 찾는 방법


28

성능을 확인하기 위해 일부 제온 머신에 액세스 할 수 있습니다. Haswell, Sandybridge, Ivybridge와 같은 아키텍처를 사용하고 싶습니다. 이것을 알아내는 명령이 있습니까?


2
/proc/cpuinfo실제로와 같은 모델 이름을 제공 Intel (R) blah blah blah GHz하므로 직접 Google에 입력해야합니다.
Arthur2e5

나는 건축 가족을 요구했다
호기심 많은 엔지니어

1
나는“아키텍처 패밀리”가보고 된 것이 아니라 단지 상업적 이름 일 뿐이라고 생각합니다. 에 모델 이름이 표시됩니다. 해당 모델 이름 /proc/cpuinfo으로 변환하는 것은 귀하의 몫입니다.
Gilles 'SO- 악마 그만'

@Ijustwanttocode 상업적 이름을 찾으려면 일종의 테이블을 사용해야합니다.
Arthur2e5

답변:


45

약간의 저렴한 해결 방법이지만 gcc에서 해당 정보를 얻을 수 있습니다! 설명하겠습니다 : gcc는 -march 옵션을 사용하여 각 하위 조직에 대한 바이너리를 최적화 할 수 있습니다. 또한 -march = native를 사용하여 사용자를 감지하고 컴퓨터에 자동으로 최적화 할 수 있으므로 march = native로 gcc를 호출하고 사용할 플래그를 물어보십시오.

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

나를 위해 그것은 준다

-march=                               bdver1

하지만 내 PC는 amd buldozer 프로세서로 실행됩니다.


솔루션이 질문에 대답합니다. 그것은 나를 위해 작동합니다.
AJN

broadwell대신 반환하여 작동하지 않습니다 kabylake. 아마도 내 gcc 버전은 어셈블리를 생성 할 때 두 제품군을 구별하지 않기 때문일 수 있습니다.
Tyilo

gcc8은 스카이 레이크를 식별 할 수 있지만 gcc5는 실제로 브로드 웰로 식별합니다.
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

그 결과, 인텔의 방주 웹 사이트를 방문하여 3770 CPU를 검색하면 Ivy Bridge 칩이 있음을 알 수 있습니다.


1
스크립트로 자동화하려면 dmidecode 또는 / proc / cpuinfo를 사용하고 grep 또는 awk 또는 perl 및 curl 또는 wget을 사용하는 wikipedia의 xeon cpu 목록의 인쇄 가능한 버전과 결합하십시오 : en.wikipedia.org/ w /…
erik

5

다음은 자동으로 사용하여 CPU의 아키텍처 코드 명을 발견 bash는 스크립트 /proc/cpuinfohttps://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

5

이 데이터는 PMU_NAME에 저장되며 다음을 입력하십시오.

cat /sys/devices/cpu/caps/pmu_name
haswell
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.