インストール - CPU-X
概要
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ドライバの更新を確認する。
- OpenCL機能が不要な場合は、ビルド時に
libcpuid関連のビルドエラー
- 原因
- インストールされているlibcpuidのバージョンが古い。
- 対処方法
- Linuxディストリビューションのパッケージが 0.8.0以降であるか確認する。
- もし満たしていない場合は、libcpuidをソースコードからビルドしてインストールするか、Linuxディストリビューションを更新する。
関連情報