2012年04月17日

ベンチマーク測定に Debian/Ubuntu の lmbench/3.0-a9-1 を使用する場合の注意点

最初の報告から1ヶ月経ったけどまだ何の反応も無いので、犠牲者をこれ以上増やさないようにするために、先に周知します。

lmbench パッケージには、プログラム実行に要する遅延時間を測定する lat_proc というプログラムが入っていますが、 Debian/Ubuntu の lmbench-3.0-a9 をパッケージでインストールした場合には正しい結果が得られません。

これは、存在しない /var/tmp/lmbench/hello というプログラムを lat_proc が実行しようとするため、 execve() が失敗してしまうことが原因です。(失敗してもエラーメッセージ1つ出さないという作りはどうかと思いますが。(汗))

TOMOYO で解析すると、 sh -c を実行しているのに hello プログラムのためのドメインが作成されていないことが確認できます。

   43:  0     /usr/lib/lmbench/bin/i686-pc-linux-gnu/lmbench
   44:  0         /bin/cp
   45:  0         /bin/date
   46:  0         /bin/hostname
   47:  0         /bin/mkdir
   48:  0         /bin/mount
   49:  0         /bin/netstat
   50:  0         /bin/rm
   51:  0         /bin/sleep
   52:  0         /bin/sync
   53:  0         /bin/tar
   54:  0         /bin/uname
   55:  0         /sbin/ifconfig
   56:  0         /usr/bin/awk
   57:  0         /usr/bin/expr
   58:  0         /usr/bin/touch
   59:  0         /usr/bin/uptime
   60:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/bw_file_rd
   61:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/bw_mem
   62:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/bw_mmap_rd
   63:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/bw_pipe
   64:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/bw_tcp
   65:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/bw_unix
   66:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_connect
   67:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_ctx
   68:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_fs
   69:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_http
   70:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_mmap
   71:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_pagefault
   72:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_pipe
   73:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_proc
   74:  0             /bin/sh
                          *** ↑ hello プログラムのドメインが存在しない ***
   75:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_rpc
   76:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_select
   77:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_sig
   78:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_syscall
   79:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_tcp
   80:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_udp
   81:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_unix
   82:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lmdd
   83:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lmhttp
   84:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/msleep
   85:  0         /usr/lib/lmbench/scripts/os

lmbench-3.0-a9.tgz から作成すると正しい結果が得られていることが判ります。

  182:  0     /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lmbench
  183:  0         /bin/cp
  184:  0         /bin/date
  185:  0         /bin/hostname
  186:  0         /bin/mkdir
  187:  0         /bin/mount
  188:  0         /bin/netstat
  189:  0         /bin/rm
  190:  0         /bin/sleep
  191:  0         /bin/sync
  192:  0         /bin/tar
  193:  0         /bin/uname
  194:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/bw_file_rd
  195:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/bw_mem
  196:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/bw_mmap_rd
  197:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/bw_pipe
  198:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/bw_tcp
  199:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/bw_unix
  200:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_connect
  201:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_ctx
  202:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_fs
  203:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_http
  204:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_mmap
  205:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_pagefault
  206:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_pipe
  207:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_proc
  208:  0             /bin/sh
  209:  0                 /tmp/hello
                          *** ↑ hello プログラムのドメインが作られている ***
  210:  0             /tmp/hello
  211:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_rpc
  212:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_select
  213:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_sig
  214:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_syscall
  215:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_tcp
  216:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_udp
  217:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_unix
  218:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lmdd
  219:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lmhttp
  220:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/msleep
  221:  0         /sbin/ifconfig
  222:  0         /usr/bin/awk
  223:  0         /usr/bin/expr
  224:  0         /usr/bin/touch
  225:  0         /usr/bin/uptime

ということで、 lmbench/3.0-a9-1 を使う場合、事前に hello プログラムを /var/tmp/lmbench/hello にコピーするか、あるいは、 lmbench-3.0-a9.tgz からコンパイルしたものを使用するようにしてください。(これ以外にも不具合があるかもしれないので、修正が完了するまでは lmbench-3.0-a9.tgz からコンパイルする方がおススメです。)

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=666072

posted by 熊猫さくら at 20:29| Comment(0) | TrackBack(0) | Linux
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/55347907
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック