試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

cpufreqの状態をリアルタイム表示する

cpufrequtilsパッケージのcpufreq-infoコマンドは、cpufreqに関する各種情報を出力してくれるが、実行した時点での情報を一度出力したら、それでおしまいとなる。このため、特にcpufreqdの動作テストを行っているときなど、リアルタイムで情報の取得と更新を行い、表示してくれるようなものがあると助かる。通常の運用時でも、常にクロックとgovernorが見えていると便利。

デスクトップ環境のパネルに表示

パネルにcpufreqの情報を表示するプラグイン
デスクトップ環境パッケージ
GNOME 2gnome-applets(標準で含まれる)
KDE 3kcpufreq パッケージ無しのディストリが多い?*1
Xfce 4.4xfce4-cpufreq-plugin(ディストリのパッケージ名はバラバラなので注意)

GKrellMのプラグイン

glrellm2-cpufreqというパッケージをインストールする。Gentoo Linuxではパッケージが存在するが、無いディストリでは、手動でビルドする。

$ tar zxf gkrellm2-cpufreq-0.6.1.tar.gz
$ cd gkrellm2-cpufreq-0.6.1/
$ make

この後、cpufreq.so${HOME}/.gkrellm2/plugins/にコピーするだけでもよい(cpufreqdを使用している場合はこれで十分)。付属のgovernor切り替えツール(cpufreqnextgovernor)を使用する場合は、代わりに

$ sudo make install
$ sudo make install-sudo

を実行する。

CLI環境(GNU screenを使用)

GNU screenでbacktick機能を使用することで、一番下に表示するcaptionかhardstatusに対して、一定間隔ごとに状態取得スクリプトの結果として、cpufreqの状態を表示することができる(下のスクリプトは、マルチコアを想定していないので注意)。
${HOME}/.screenrcの中の色指定部分「%{=b y}」は、黒背景向きなので、白背景の場合、別の色のほうが見やすい。ID番号は未使用の番号にする。「%[ID番号]`」以降のフォーマットは好みで調整。秒数も好みで。なお、状態取得スクリプトのopen関数のエラー処理はしていない。
ファイル名: ~/bin/screen_cpufreq.pl

#! /usr/bin/perl -w
use strict;
open F, "/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq";
my $FREQ = <F>;
close F;
open G, "/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor";
my $GOV = <G>;
close G;
$FREQ =~ s/000\n//;  # MHz単位
# $GOV =~ tr/a-z/A-Z/;  # 大文字にする場合
printf "%s/%s\n", $FREQ, substr $GOV, 0, 3;  # 出力フォーマットは好みで

ファイル名: ~/.screenrc

# 3つの数字はID(0の場合は「%0`」で参照)/有効な秒数/リフレッシュ間隔
backtick 0 2 2 /home/[ユーザ名]/bin/screen_cpufreq.pl

# captionを使用する場合(Xの端末エミュレータなど)
caption always "%{=b y}%0` %{=b b}%-w%{=b rw}%n %t%{-}%+w %=%{=b g}%c:%s %Y/%m/%d"
# hardstatusを使用する場合(SSHなど)
hardstatus alwayslastline "%{=b y}%0` %{=b b}%-w%{=b rw}%n %t%{-}%+w %=%{=b g}%c:%s %Y/%m/%d"


CLI環境(watchコマンドを使用)

(2007/9/10)screenを使うほうが便利だが、準備が多少面倒で、普段screenを使わないケースもあるので、watchコマンドを使う方法も載せておく。状態取得スクリプトは上のものを使用して、

$ watch -n [間隔(秒数・デフォルトは2)] ~/bin/screen_cpufreq.pl

のように実行する。--no-titleオプションを付けると、実行間隔/コマンド名/日時の表示がされず、結果(この場合はクロック周波数とgovernor)だけが表示される。止めるにはCtrl+Cを押す。

関連記事:

*1:Gentoo Linuxではlaymanで「sunrise」Overlayを追加すれば入れることも可能