インストール
- 必要なパッケージをインストールする
$ 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+00 ★3クロック 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+00 ★3クロック 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+01 ★12クロック 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+01 ★53クロック 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+02 ★228クロック 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