Raspbian jessie でperfコマンドをビルドする
Raspbian jessie ではperfコマンドが含まれる linux-tools パッケージが正しくメンテされていないようで、カーネルのバージョンと食い違ったperf_3.16というコマンドがインストールされてしまいます。
pi@raspberrypi:~/work/kernel/linux$ sudo apt-get install linux-tools ... pi@raspberrypi:~/work/kernel/linux$ which perf /usr/bin/perf pi@raspberrypi:~/work/kernel/linux$ perf /usr/bin/perf: line 24: exec: perf_4.1: not found E: linux-tools-4.1 is not installed. pi@raspberrypi:~/work/kernel/linux$ sudo apt-get install linux-tools-4.1 Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package linux-tools-4.1 E: Couldn't find any package by regex 'linux-tools-4.1' pi@raspberrypi:~/work/kernel/linux$ ls /usr/bin/perf* /usr/bin/perf /usr/bin/perf_3.16
待っていればそのうち解決されるかもしれませんが、自力でperfコマンドをビルドしました。
以前もやったことありましたし。
perfコマンドをソースからビルドする - 組み込みの人。
まず必要なライブラリを用意します。
$ sudo apt-get install flex bison python pkg-config libaudit-dev \ binutils-dev libelf-dev python-dev libpython-dev libperl-dev \ libslang2-dev libdw-dev libiberty-dev libunwind-dev liblzma-dev
カーネルソースを取ってきます。--depth=1 をつけるとリポジトリ全部でなく最新だけになります。
$ mkdir kernel $ cd kernel/ $ git clone --depth=1 https://github.com/raspberrypi/linux
ビルド
$ cd linux/ $ cd tools/perf/ $ make 2>&1 |tee make.log
インストール
$ make install
自分のホームディレクトリにインストールされます。一度ログアウトしてから再度ログインすると、~/bin にPATHが追加されます。
perfコマンドの試し打ち。
$ which perf /home/pi/bin/perf $ perf stat pwd /home/pi/work/kernel/linux/tools/perf Performance counter stats for 'pwd': 6.080886 task-clock (msec) # 0.152 CPUs utilized 6 context-switches # 0.987 K/sec 0 cpu-migrations # 0.000 K/sec 56 page-faults # 0.009 M/sec 3,603,787 cycles # 0.593 GHzstalled-cycles-frontend stalled-cycles-backend 964,216 instructions # 0.27 insns per cycle 107,687 branches # 17.709 M/sec 27,999 branch-misses # 26.00% of all branches 0.040087712 seconds time elapsed
追記。
最初はインストールとして/usr/bin/perf_4.1 にコピーするようにかきましたが、make install のほうがよさそうなので修正しました。