インストール - CPU-X

提供: MochiuWiki : SUSE, EC, PCB

概要

CPU-Xは、CPU、マザーボード、メモリ、グラフィックカード等のハードウェア情報を収集するフリーかつオープンソースのシステムプロファイリングおよびモニタリングツールである。
Windows向けのCPU-Zに相当するツールとして、GNU/LinuxおよびFreeBSD上で動作する。

対応CPUアーキテクチャはx86およびARMである。
現在の公式リポジトリは、TheTumultuousUnicornOfDarkness/CPU-Xで管理されている。

インターフェースとしては以下の3形態が提供される。

  • GTKベースのGUIモード
    グラフィカルなウィンドウで情報を閲覧できる標準的な使用方法である。
  • NCursesベースのTUIモード
    ターミナル上でカーソルキー等を用いて情報を閲覧できる。
  • コマンドラインダンプモード
    標準出力へテキスト形式で情報を出力する。スクリプトやログ収集に適する。



CPU-Xの主な機能

CPU-Xは以下に示すカテゴリの情報を収集し、表示する。

  • CPU
    プロセッサ名、アーキテクチャ、クロック周波数、倍率、コア/スレッド数、キャッシュ情報、命令セット等
  • マザーボード
    メーカー、モデル、BIOS/UEFIバージョン、チップセット等
  • メモリ
    搭載メモリ容量、動作周波数、DIMMスロット情報等
  • システム
    オペレーティングシステム、カーネルバージョン、ホスト名等
  • グラフィック
    GPU名、ドライバ、UMDバージョン、OpenGL/Vulkan情報等
  • ベンチマーク
    簡易的なCPUベンチマーク機能を提供する。


いくつかの情報 (特に高度なCPU情報や一部のセンサデータ) は、特権アクセスがないと収集できない。
このため、CPU-XはデーモンとPolkitを組み合わせた権限昇格の仕組みを利用している。


CPU-Xのインストール

パッケージ管理システムからインストール

主要なLinuxディストリビューションでは、パッケージとして提供されている場合がある。

# RHEL
sudo dnf install cpu-x

# SUSE
sudo zypper install cpu-x


AppImageの使用

CPU-XのGitHub ReleasesからAppImageファイルをダウンロードする。
x64版およびAArch64版が提供されており、AppImageはファイル単体で配布される。

実行環境によってはFUSEが必要になる場合がある。

ダウンロードしたファイルに実行権限を付加する。

chmod u+x CPU-X-v<バージョン>-x86_64.AppImage


必要に応じて、任意のディレクトリに配置して実行する。

./CPU-X-v<バージョン>-x86_64.AppImage


デスクトップ統合を行う場合は、以下に示すようなデスクトップエントリファイルを作成する。

vi ~/.local/share/applications/CPU-X.desktop


 [Desktop Entry]
 Type=Application
 Name=CPU-X
 GenericName=System Profiler
 Comment=Gathers information on CPU, motherboard and more
 Exec=/<インストールディレクトリ>/CPU-X-v<バージョン>-x86_64.AppImage %F
 Icon=/<インストールディレクトリ>/cpu-x.png
 Categories=GTK;System;
 Keywords=CPU;system;core;speed;clock;rate;Intel;AMD;motherboard;
 Terminal=false


Flatpakの使用

CPU-XはFlathub上でFlatpak形式でも提供されている。

flatpak install flathub io.github.thetumultuousunicornofdarkness.cpu-x


CPU-Xを実行するには、以下に示すコマンドを実行する。

flatpak run io.github.thetumultuousunicornofdarkness.cpu-x


ソースコードからインストール

パッケージが提供されていない環境や、最新版をソースからビルドしたい場合は、GitHubリポジトリからソースコードを取得してビルドする。

まず、CPU-Xのビルドに必要な依存関係のライブラリをインストールする。

ビルド依存関係
依存パッケージ 説明
CMake >= 3.12 ビルドシステム
GCC または Clang C/C++コンパイラ
pkg-config または pkgconf ライブラリ検出ツール
NASM (x86のみ) アセンブラ
Gtkmm3 GTK GUIのビルドに必要
NCurses TUIモードのビルドに必要
libcpuid >= 0.8.0 CPU情報取得ライブラリ
pciutils PCIデバイス情報取得
EGL >= 1.5 with OpenGL グラフィック情報取得
Vulkan Vulkan情報取得
OpenCL >= 1.2 OpenCLデバイス情報取得
procps-ng (Linux) または libstatgrab (BSD) システムプロセス/メモリ情報取得


# SUSE
sudo zypper install git cmake pkgconf ncurses-devel gtk3-devel gtkmm3-devel \
                    nasm libcpuid-devel pciutils-devel procps-devel vulkan-devel \
                    ocl-icd-devel opencl-cpp-headers polkit-devel Mesa-libEGL-devel


libcpuidライブラリのビルド

もし、パッケージ管理システムのlibcpuidライブラリのバージョンが古い場合、libcpuidを手動でビルドおよびインストールする必要がある。

libcpuidのGithubにアクセスして、ソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。

tar xf libcpuid-<バージョン>.tar.gz
cd libcpuid-<バージョン>


libcpuidをビルドおよびインストールする。

mkdir build && cd build

../configure --prefix=<libcpuidのインストールディレクトリ>
make -j $(nproc)
make install


CPU-Xのビルド

CPU-XのGithubにアクセスして、CPU-Xのソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。

tar xf v<バージョン>.tar.gz
cd v<バージョン>


または、git cloneコマンドを実行して、ソースコードをダウンロードする。

git clone https://github.com/TheTumultuousUnicornOfDarkness/CPU-X.git
cd CPU-X


CPU-Xをビルドおよびインストールする。

 mkdir build && cd build
 
 # パッケージ管理システムからlibcpuidをインストールした場合
 cmake -DCMAKE_C_COMPILER=<GCC 8以降のコンパイラのパス>      \
       -DCMAKE_CXX_COMPILER=<G++ 8以降のコンパイラのパス>    \
       -DCMAKE_BUILD_TYPE=Release                       \
       -DCMAKE_INSTALL_PREFIX=<CPU-Xのインストールディレクトリ> \
       ..
 make -j $(nproc)
 make install
 
 # ソースコードからlibcpuidをインストールした場合
 export LIBCPUDIR="<libcpuidのインストールディレクトリ>"
 
 export LD_LIBRARY_PATH="$LIBCPUDIR/lib:$LD_LIBRARY_PATH"; \
 export PKG_CONFIG_PATH="$LIBCPUDIR/lib/pkgconfig:$(pkg-config --variable pc_path pkg-config)"; \
 export CFLAGS="-I$LIBCPUDIR/include $CFLAGS"; \
 export CXXFLAGS="-I$LIBCPUDIR/include $CXXFLAGS"
 
 cmake -DCMAKE_C_COMPILER=<GCC 8以降のコンパイラのパス>      \
       -DCMAKE_CXX_COMPILER=<G++ 8以降のコンパイラのパス>    \
       -DCMAKE_BUILD_TYPE=Release                       \
       -DCMAKE_INSTALL_PREFIX=<CPU-Xのインストールディレクトリ> \
       ..
 make -j $(nproc)
 make install


ビルドオプションの例を以下に示す。

  • -DWITH_GTK=0
    GTK3+のGUIサポートを無効にする。
  • -DWITH_NCURSES=0
    NCursesのTUIサポートを無効にする。
  • -DWITH_LIBCPUID=0
    libcpuidを使用しない。
    一部のCPU情報が取得できなくなる。
  • -DFORCE_LIBSTATGRAB=1
    Linuxではprocps-ngの代わりにlibstatgrabを使用する。
    FreeBSDではデフォルトでlibstatgrabが使用される。


必要ならば、CPU-Xを実行するためのラッパーシェルスクリプトを作成する。

vi /<CPU-Xのインストールディレクトリ>/bin/cpu-x.sh


 # /<CPU-Xのインストールディレクトリ>/bin/cpu-x.shファイル
 
 #!/usr/bin/env sh
 
 appname="cpu-x"
 
 # use -f to make the readlink path absolute
 dirname="$(dirname -- "$(readlink -f -- "${0}")" )"
 
 if [ "$dirname" = "." ]; then
    dirname="$PWD/$dirname"
 fi
 
 # Initialize interpreter path
 export LD_LIBRARY_PATH="$dirname/../lib:$LD_LIBRARY_PATH"
 export XDG_DATA_DIRS="$dirname/../share:$XDG_DATA_DIRS"
 
 # Run CPU-X binary
 "$dirname/$appname" "$@"


上記のラッパーシェルスクリプトに実行権限を付加する。

chmod u+x /<CPU-Xのインストールディレクトリ>/bin/cpu-x.sh


CPU-Xのデスクトップエントリファイルを作成する。

vi ~/.local/share/applications/CPU-X.desktop


 # ~/.local/share/applications/CPU-X.desktopファイル
 
 [Desktop Entry]
 Type=Application
 Name=CPU-X
 GenericName=CPU-X
 Comment=Gathers information on CPU, motherboard and more
 Exec=/<CPU-Xのインストールディレクトリ>/bin/cpu-x.sh %F
 Icon=/<CPU-Xのインストールディレクトリ>/share/icons/hicolor/128x128/apps/cpu-x.png
 Categories=GTK;System;
 Keywords=CPU;system;core;speed;clock;rate;Intel;AMD;motherboard;
 Terminal=false


ビルド後の実行には、追加のランタイムライブラリが必要となる場合がある。

# SUSE
sudo zypper install gtk3 libcpuid15



実行と権限昇格の仕組み

CPU-Xは通常のユーザ権限で実行できるが、一部の情報 (MSRレジスタ等) はroot権限が必要である。
このため、CPU-Xはデーモン (cpu-x-daemon) とPolkitポリシーを組み合わせて、必要に応じて権限を昇格させる仕組みを持つ。

デーモンとPolkitの設定

ソースコードからインストールした場合や、ローカルディレクトリに配置した場合は、Polkitアクションファイルをシステムディレクトリにコピーする必要がある。

sudo cp /<インストールディレクトリ>/share/polkit-1/actions/io.github.thetumultuousunicornofdarkness.cpu-x-daemon.policy \
        /usr/share/polkit-1/actions/


このポリシーファイルが正しく配置されていない場合、特権が必要な情報が空欄や不明な値として表示される。

実行方法

  • GUIモード
     cpu-x
    

  • TUIモード
     cpu-x --ncurses
    

  • ダンプモード
     cpu-x --dump
    


AppImageやFlatpakの場合も、基本的な実行方法は同様である。
AppImageの場合は、ポータブル実行の特性上、デーモン経由の権限昇格が制限される場合がある。


トラブルシューティング

ラベルが空欄になる

  • 原因
    デーモンが起動していない、または、Polkitポリシーが正しくインストールされていない。
  • 対処方法
    • Polkitポリシーファイルが /usr/share/polkit-1/actions/ ディレクトリに存在するか確認する。
    • 存在しない場合は、インストールディレクトリからコピーする。
    • CPU-Xを再起動する。


キャッシュタブやベンチマークタブでCPU使用率が高い

  • 原因
    ベンチマーク実行中や、キャッシュレイテンシの測定中は一時的にCPU負荷が上昇する。
  • 対処方法
    • これは正常な動作である。
      測定完了後に負荷は低下する。
    • 継続的に高負荷がかかる場合は、該当タブを閉じるか、アプリケーションを再起動する。


OpenCL関連で不安定になる

  • 原因
    特定のGPUドライバやOpenCL実装との互換性問題である。
  • 対処方法
    • OpenCL機能が不要な場合は、ビルド時に -DWITH_OPENCL=0 を指定して無効化する。
    • パッケージ版を使用している場合は、該当GPUドライバの更新を確認する。


libcpuid関連のビルドエラー

  • 原因
    インストールされているlibcpuidのバージョンが古い。
  • 対処方法
    Linuxディストリビューションのパッケージが 0.8.0以降であるか確認する。
    もし満たしていない場合は、libcpuidをソースコードからビルドしてインストールするか、Linuxディストリビューションを更新する。



関連情報