micbench をインストールしてみた

インストール

  • 必要なパッケージをインストールする
$ sudo yum install numactl
$ sudo yum install numactl-devel
  • micbench を入手してインストールする
$ git clone git://github.com/hayamiz/micbench.git
$ cd micbench/
$ ./autogen.sh 
$ ./configure 
$ sudo make install

使ってみる

  • とりあえず実行
$ micbench mem -m 1 -t 10 -R -a 0:c0 -s 16K -v
shuffle time: 0.000022
loop end: t=10.000213
access_pattern	random
multiplicity	1
local	false
page_size	4096
size	16384
use_hugepages	false
total_ops	7601389568
total_clk	25939357289
exec_time	10.000213
ops_per_sec	7.601228e+08
clk_per_op	3.412449e+003クロック
total_exec_time	10.716373
  • L1キャッシュ、L2キャッシュ、L3キャッシュ、メモリアクセスのレイテンシを計測する
[yazekats@yazekats-linux ~]$ cat /proc/cpuinfo |grep 'model name'|head -1
model name	: Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz
[yazekats@yazekats-linux ~]$ cd /sys/devices/system/cpu/cpu0/cache
[yazekats@yazekats-linux cache]$ echo `cat index0/level` `cat index0/type` `cat index0/size`
1 Data 32K
[yazekats@yazekats-linux cache]$ echo `cat index1/level` `cat index1/type` `cat index1/size`
1 Instruction 32K
[yazekats@yazekats-linux cache]$ echo `cat index2/level` `cat index2/type` `cat index2/size`
2 Unified 256K
[yazekats@yazekats-linux cache]$ echo `cat index3/level` `cat index3/type` `cat index3/size`
3 Unified 3072K
[yazekats@yazekats-linux cache]$ micbench mem --rand --size 16K --affinity 0:c0 --timeout 10
loop end: t=10.000334
access_pattern	random
multiplicity	1
local	false
page_size	4096
size	16384
use_hugepages	false
total_ops	7698382848
total_clk	25931027932
exec_time	10.000334
ops_per_sec	7.698126e+08
clk_per_op	3.368373e+003クロック
total_exec_time	10.388622
[yazekats@yazekats-linux cache]$ micbench mem --rand --size 128K --affinity 0:c0 --timeout 10
loop end: t=10.000659
access_pattern	random
multiplicity	1
local	false
page_size	4096
size	131072
use_hugepages	false
total_ops	2115764224
total_clk	25939831721
exec_time	10.000659
ops_per_sec	2.115625e+08
clk_per_op	1.226027e+0112クロック
total_exec_time	11.275838
[yazekats@yazekats-linux cache]$ micbench mem --rand --size 2MB --affinity 0:c0 --timeout 10
loop end: t=10.002390
access_pattern	random
multiplicity	1
local	false
page_size	4096
size	2097152
use_hugepages	false
total_ops	486014976
total_clk	25945385592
exec_time	10.002390
ops_per_sec	4.858988e+07
clk_per_op	5.338392e+0153クロック
total_exec_time	10.857365
[yazekats@yazekats-linux cache]$ micbench mem --rand --size 256MB --affinity 0:c0 --timeout 10
loop end: t=10.004887
access_pattern	random
multiplicity	1
local	false
page_size	4096
size	268435456
use_hugepages	false
total_ops	113770496
total_clk	25952470523
exec_time	10.004887
ops_per_sec	1.137149e+07
clk_per_op	2.281125e+02228クロック
total_exec_time	13.071042

参考


追記(2014/12/14):

  • micbench_mem.sh
#!/bin/bash

FILE=micbench_mem.log

for i in $(seq 1 1000); do
  memsize=$((${i}*${i}))
  echo ${memsize} $(micbench mem --rand --size ${memsize}KB --affinity 0:c0 --timeout 1|perl -lane '/clk_per_op/ and print $F[1]') >> $FILE
done