今回は小ネタ。
IA64なLinuxで簡単にItanium2のPerformance Monitor機能を使う方法

$ pfmon -eL2_MISSES,L3_MISSES ls
lpgserial projects
9210 L2_MISSES
2397 L3_MISSES


-e オプションの後にモニタしたいイベント名を入れるだけ

イベント名はCPUのマニュアルを見る必要があるが
大体分かっているときは

$ pfmon -lL3_
L2_BYPASS_L3_DATA1
L2_BYPASS_L3_INST1
L2_L3ACCESS_CANCEL_INV_L3_BYP
L2_L3ACCESS_CANCEL_SPEC_L3_BYP
L3_LINES_REPLACED
L3_MISSES
L3_READS_ALL_ALL
L3_READS_ALL_HIT
L3_READS_ALL_MISS
L3_READS_DATA_READ_ALL
L3_READS_DATA_READ_HIT
L3_READS_DATA_READ_MISS
L3_READS_DINST_FETCH_ALL
L3_READS_DINST_FETCH_HIT
L3_READS_DINST_FETCH_MISS
L3_READS_INST_FETCH_ALL
L3_READS_INST_FETCH_HIT
L3_READS_INST_FETCH_MISS
L3_REFERENCES
L3_WRITES_ALL_ALL
L3_WRITES_ALL_HIT
L3_WRITES_ALL_MISS
L3_WRITES_DATA_WRITE_ALL
L3_WRITES_DATA_WRITE_HIT
L3_WRITES_DATA_WRITE_MISS
L3_WRITES_L2_WB_ALL
L3_WRITES_L2_WB_HIT
L3_WRITES_L2_WB_MISS


-l 文字列 でその文字列を含むイベントをリストアップできる。
イベントを度忘れしたときに便利


また、

$ pfmon -iL2_IFET_CANCELS_ANY
Name : L2_IFET_CANCELS_ANY
VCode : 0xa1
Code : 0xa1
PMD/PMC: [ ]
Umask : 0000
EAR : No (N/A)
BTB : No
MaxIncr: 1 (Threshold 0)
Qual : [Instruction Address Range] [OpCode Match] [Data Address Range]
Group : L2 Cache
Set : 0
Desc : Instruction Fetch Cancels by the L2 -- total instruction fetch cancels by L2


-i オプションでそのイベント説明を表示できる
ただし、元のインテルのマニュアルの説明がかなり説明不足なのでDescを読んでも意味不明になることしばしば




追記:
ここまで書いて、はからずもこの記事が
higeponさんの「プログラマの皆さんホームディレクトリで ls してみようよ」エントリに応募資格があることに気づいてしまった。
早速応募。

って、ぜんぜん面白くないlsだこと。。。orz