コマンドラインからIntelアーキテクチャファミリーを見つける方法


28

パフォーマンスをチェックするためにいくつかのxeonマシンにアクセスできます。Haswell、Sandybridge、Ivybridgeなど、彼らが使用しているアーキテクチャを調べたい。これを見つけるコマンドはありますか?


2
/proc/cpuinfo実際にのようなモデル名を指定Intel (R) blah blah blah GHzします、直接グーグルで検索する必要があります
Arthur2e5


1
「アーキテクチャファミリ」は報告されていないと思います。それらは単なる商用名です。でモデル名を取得/proc/cpuinfoします。それを対応する姓に変換するのはあなた次第だと思います。
ジル「SO-悪であるのをやめる」

@Ijustwanttocodeこれらの商用名を検索するには、何らかの種類のテーブルを使用する必要があります。
Arthur2e5

回答:


45

それは少し安っぽい回避策ですが、その情報はgccから得ることができます!説明します。gccは、-marchオプションを使用して各サブアーキテクチャのバイナリを最適化できます。さらに、-march = nativeであなたのものを検出し、あなたのマシンのために自動的に最適化することができます。

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

私にとっては

-march=                               bdver1

しかし、私のPCはAMDブルドーザープロセッサで実行されます


ソリューションが質問に答えます。わたしにはできる。
AJN

これはのbroadwell代わりに戻るので、私には機能しませんkabylake。これはおそらく、私のバージョンのgccがアセンブリを生成するときにこれら2つのファミリを区別しないためです。
ティロ

実際、gcc8はskylakeをそのように識別できますが、gcc5はbroadwellとして識別します。
エリック

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のarkウェブサイトにアクセスして3770 CPUを検索できます。これにより、Ivy Bridgeチップがあることがわかります。


1
スクリプトで自動化するには、dmidecodeまたは/ proc / cpuinfoを使用し、grepまたはawkまたはperlと、curlまたはwgetで取得できるウィキペディアのxeon cpuリストの印刷可能バージョンと組み合わせます:en.wikipedia.org/ w /…
エリック

5

以下は、自動的に使用して、CPUのアーキテクチャのコードネームを見つけbashスクリプトである/proc/cpuinfohttps://ark.intel.com/が。動作させるには、pupがインストールされている必要があります。

コンピューターでコードを実行すると、次の結果が得られます。

$ ./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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.