読者です 読者をやめる 読者になる 読者になる

bonnie++を使ったベンチマーク結果の見方

目的のディレクトリに移動して、コマンドを実行。

# cd /mnt/fs01
# bonnie++ -u 0:0
  • bonie++ の結果の見方

http://www.textuality.com/bonnie/intro.html の一部を勝手に翻訳。

1. Sequential Output
1.1 Per-Character
ファイルは putc() を使って書かれる。書き込みループはたいていのI-cacheに収まるくらい十分に小さい。CPUのオーバーヘッドはstdioのコードとOSのファイル アロケーション 程度。

1.2 Block
The file is created using write(2). The CPU overhead should be just the OS file space allocation.
ファイルは、write(2) を使って作成される。CPUのオーバーヘッドはOSのファイル アローションのみ。


1.3 Rewrite
ファイルのチャンク(現在は16384バイト)は、read(2) で読み込まれ、内容が変更され、write(2) を使って書き込まれる。lseek(2) が使われる。ファイルスペースのアロケーションは発生しないので、I/O は、局所化される。このテストでは、ファイルキャッシュとデータ転送速度の効率がテストされることになる。


2. Sequential Input

2.1 Per-Character
ファイルは getc() が使って読み込まれる。(1.1の繰り返しになるが)読み込みループは十分に小さい。これは、stdio とシーケンシャルなインプット のテストということになる。


2.2 Block
ファイルは、read(2) を使って読み込まれる。このテストは、純粋にシーケンシャルなインプットのパフォーマンスのテストなる。


3. Random Seeks
このテストは、SeekProcCount を並列に複数(現在は4プロセス)走らせ、合計4000回の lseek() を実行する。実行する場所は、BSD系のOSでは、random() 、 SystemV系なら、drand48() が使われる。いずれにせよ、読み込みブロックは、read(2) で読み込まれる。 そのうち、10%は、内容が変更され、write(2) を使って上書きされる。