## Name

gfperf.rb — Gfarm 性能測定を行う。

## Synopsis

`gfperf.rb` [-c, --check] `設定ファイル`

## DESCRIPTION

引数`設定ファイル`で渡されたyamlファイルを元に性能測定を実施します。

設定ファイルの例が(Gfarmインストールディレクトリ)/share/gfarm/config/gfperf-[config|simple].ymlにあります。

## OPTIONS

`-c, --check`

  `設定ファイル`にyaml文法上の誤りがあるかどうかをチェックします。

## EXAMPLES

設定ファイルの例を以下に示します。

database: {filename: "/var/www/database.db", check span: "10days",
backup: "/var/www/databse.db.bak" }
errlog: "/tmp/gfperf.err.log"
authentication: ["sharedsecret", "gsi_auth", "gsi"]
gfarm2fs_mountpoint: ["/mnt/gfarm2fs"]
metadata: [ {testdir: "gfarm:///tmp", number: "250"},
{testdir: "file:///mnt/gfarm2fs/tmp", number: "250"} ]
tree: [ {testdir: "gfarm:///tmp", width: "5", depth: "3"},
{testdir: "file:///mnt/gfarm2fs/tmp", width: "5", depth: "3"} ]
copy: [
{src: "file:///tmp", dst: "gfarm:///tmp", filesize: "1M",
bufsize: "4K", gfsd: "gfsd0.local"},
{src: "gfarm:///tmp", dst: "file:///tmp", filesize: "1M",
bufsize: "4K", gfsd: "gfsd0.local"},
{src: "file:///tmp", dst: "gfarm:///tmp", filesize: "1M",
bufsize: "4K", gfsd: "gfsd1.local"},
{src: "gfarm:///tmp", dst: "file:///tmp", filesize: "1M",
bufsize: "4K", gfsd: "gfsd1.local"},
{src: "file:///tmp", dst: "gfarm:///tmp", filesize: "1M",
bufsize: "4K", gfsd: "gfsd0.local", gfarm2fs: "/mnt/gfarm2fs"},
{src: "gfarm:///tmp", dst: "file:///tmp", filesize: "1M",
bufsize: "4K", gfsd: "gfsd0.local", gfarm2fs: "/mnt/gfarm2fs"},
{src: "file:///tmp", dst: "gfarm:///tmp", filesize: "1M",
bufsize: "4K", gfsd: "gfsd1.local", gfarm2fs: "/mnt/gfarm2fs"},
{src: "gfarm:///tmp", dst: "file:///tmp", filesize: "1M",
bufsize: "4K", gfsd: "gfsd1.local", gfarm2fs: "/mnt/gfarm2fs"}
]
read: [
{testdir: "gfarm:///tmp", filesize: "1M", bufsize: "4K",
gfsd: "gfsd0.local"},
{testdir: "gfarm:///tmp", filesize: "1M", bufsize: "4K",
gfsd: "gfsd1.local"},
{testdir: "gfarm:///tmp", random: "true", filesize: "1M",
bufsize: "4K", gfsd: "gfsd0.local"},
{testdir: "gfarm:///tmp", random: "true", filesize: "1M",
bufsize: "4K", gfsd: "gfsd1.local"},
{testdir: "gfarm:///tmp", gfarm2fs: "/mnt/gfarm2fs", filesize: "1M",
bufsize: "4K", gfsd: "gfsd0.local"},
{testdir: "gfarm:///tmp", gfarm2fs: "/mnt/gfarm2fs", filesize: "1M",
bufsize: "4K", gfsd: "gfsd1.local"},
{testdir: "gfarm:///tmp", gfarm2fs: "/mnt/gfarm2fs", random: "true",
filesize: "1M", bufsize: "4K", gfsd: "gfsd0.local"},
{testdir: "gfarm:///tmp", gfarm2fs: "/mnt/gfarm2fs", random: "true",
filesize: "1M", bufsize: "4K", gfsd: "gfsd1.local"}
]
write: [
{testdir: "gfarm:///tmp", filesize: "1M", bufsize: "4K",
gfsd: "gfsd0.local"},
{testdir: "gfarm:///tmp", filesize: "1M", bufsize: "4K",
gfsd: "gfsd1.local"},
{testdir: "gfarm:///tmp", random: "true", filesize: "1M",
bufsize: "4K", gfsd: "gfsd0.local"},
{testdir: "gfarm:///tmp", random: "true", filesize: "1M",
bufsize: "4K", gfsd: "gfsd1.local"},
{testdir: "gfarm:///tmp", overwrite: "true", filesize: "1M",
bufsize: "4K", gfsd: "gfsd0.local"},
{testdir: "gfarm:///tmp", overwrite: "true", filesize: "1M",
bufsize: "4K", gfsd: "gfsd1.local"},
{testdir: "gfarm:///tmp", overwrite: "true", random: "true",
filesize: "1M", bufsize: "4K", gfsd: "gfsd0.local"},
{testdir: "gfarm:///tmp", overwrite: "true", random: "true",
filesize: "1M", bufsize: "4K", gfsd: "gfsd1.local"},
{testdir: "gfarm:///tmp", gfarm2fs: "/mnt/gfarm2fs", filesize: "1M",
bufsize: "4K", gfsd: "gfsd0.local"},
{testdir: "gfarm:///tmp", gfarm2fs: "/mnt/gfarm2fs", filesize: "1M",
bufsize: "4K", gfsd: "gfsd1.local"},
{testdir: "gfarm:///tmp", gfarm2fs: "/mnt/gfarm2fs", random: "true",
filesize: "1M", bufsize: "4K", gfsd: "gfsd0.local"},
{testdir: "gfarm:///tmp", gfarm2fs: "/mnt/gfarm2fs", random: "true",
filesize: "1M", bufsize: "4K", gfsd: "gfsd1.local"},
{testdir: "gfarm:///tmp", gfarm2fs: "/mnt/gfarm2fs",
overwrite: "true", filesize: "1M", bufsize: "4K",
gfsd: "gfsd0.local"},
{testdir: "gfarm:///tmp", gfarm2fs: "/mnt/gfarm2fs",
overwrite: "true", filesize: "1M", bufsize: "4K",
gfsd: "gfsd1.local"},
{testdir: "gfarm:///tmp", gfarm2fs: "/mnt/gfarm2fs",
overwrite: "true", random: "true", filesize: "1M", bufsize: "4K",
gfsd: "gfsd0.local"},
{testdir: "gfarm:///tmp", gfarm2fs: "/mnt/gfarm2fs",
overwrite: "true", random: "true", filesize: "1M", bufsize: "4K",
gfsd: "gfsd1.local"}
]
replica: [
{testdir: "gfarm:///tmp", src: "gfsd0.local", dst: "gfsd1.local",
filesize: "1M"},
{testdir: "gfarm:///tmp", src: "gfsd1.local", dst: "gfsd0.local",
filesize: "1M"}
]
autoreplica: [
{testdir: "gfarm:///tmp", filesize: "1M", number: "3", replica: "1"},
{testdir: "gfarm:///tmp", gfarm2fs: "/mnt/gfarm2fs", filesize: "1M",
number: "3", replica: "1"},
{testdir: "gfarm:///tmp", filesize: "1M", number: "3", replica: "2"},
{testdir: "gfarm:///tmp", gfarm2fs: "/mnt/gfarm2fs", filesize: "1M",
number: "3", replica: "2"}
]
parallel: {
group1: [
{rhost: "gfsd0.local", type: "read", testdir: "gfarm:///tmp",
filesize: "1M", bufsize: "4K", gfsd: "gfsd0.local"},
{rhost: "gfsd0.local", type: "read", testdir: "gfarm:///tmp",
filesize: "1M", bufsize: "4K", gfsd: "gfsd1.local"}
],
group2: [
{rhost: "gfsd0.local", type: "write", testdir: "gfarm:///tmp",
filesize: "1M", bufsize: "4K", gfsd: "gfsd0.local"},
{rhost: "gfsd0.local", type: "write", testdir: "gfarm:///tmp",
filesize: "1M", bufsize: "4K", gfsd: "gfsd1.local"}
],
group3: [
{type: "replica", testdir: "gfarm:///tmp", src: "gfsd0.local",
dst: "gfsd1.local", filesize: "1M"},
{type: "replica", testdir: "gfarm:///tmp", src: "gfsd1.local",
dst: "gfsd0.local", filesize: "1M"}
]
}
parallel-autoreplica: {
group4: [
{testdir: "gfarm:///tmp1", filesize: "1M", number: "3",
replica: "2"},
{testdir: "gfarm:///tmp2", filesize: "1M", number: "3",
replica: "2"},
{testdir: "gfarm:///tmp3", filesize: "1M", number: "3",
replica: "2"},
{testdir: "gfarm:///tmp4", filesize: "1M", number: "3",
replica: "2"}
],
group5: [
{testdir: "gfarm:///tmp1", gfarm2fs: "/mnt/gfarm2fs",
filesize: "1M", number: "3", replica: "2"},
{testdir: "gfarm:///tmp2", gfarm2fs: "/mnt/gfarm2fs",
filesize: "1M", number: "3", replica: "2"}
]
}

以下に各設定項目の詳細を述べます。

database

  filename:に性能測定の結果を保持するデータベースを指定します。 backup:には自動バックアップ先を指定します。 check span:で指定された時間分の平均値及び標準偏差を計算します。

errlog

  エラーが発生したときのログファイルの出力先を指定します。 本指定の有無に拘らず上記データベースファイルにエラーメッセージは格納されます。WEBを参照せずにエラーを確認したい場合に使用します。

authentication

  性能測定を行う際の認証方式を指定します。 sharedsecret, gsi_auth, gsiを指定することができます。 ここで指定した認証方式で全てのテストを実施します。

gfarm2fs_mountpoint

  性能測定を行う際に使用するマウントポイントを指定します。 上記認証方式に従って本コマンドがgfarm2fsを呼出します。 ここで指定したマウントポイントを使用して各テストのテストディレクトリとしてください。

metadata

  gfperf-metadataを用いた測定内容を記述します。 パラメータはロングオプションで記述します。

tree

  gfperf-treeを用いた測定内容を記述します。 パラメータはロングオプションで記述します。

copy

  gfperf-copyを用いた測定内容を記述します。 パラメータはロングオプションで記述します。

read

  gfperf-readを用いた測定内容を記述します。 パラメータはロングオプションで記述します。 random:オプションは引数に何を渡してもランダム読込の性能測定になります。 シーケンシャル読込の測定を行う場合、random:を削除してください。

write

  gfperf-writeを用いた測定内容を記述します。 パラメータはロングオプションで記述します。 random:オプションは引数に何を渡してもランダム書込の性能測定になります。 シーケンシャル書込の測定を行う場合、random:を削除してください。 overwrite:オプションは引数に何を渡しても上書きの性能測定になります。 追記書込みの測定を行う場合、overwrite:を削除してください。

replica

  gfperf-replicaを用いた測定内容を記述します。 パラメータはロングオプションで記述します。

autoreplica

  gfperf-autoreplicaを用いた測定内容を記述します。 パラメータはロングオプションで記述します。

parallel

  並列テストのテストパターンを記述します。 グループ名をキーにテスト内容を配列にして記述します。 グループ名は設定ファイル内で一意でなくてはなりません。 テスト内容はrhost:でsshで呼出す実行先を指定し、type:で呼出すコマンドを指定します。 type:に指定できるのはread, write, replicaの3つです。 それぞれgfperf-parallel-read, gfperf-parallel-write, gfperf-parallel-replicaが呼出されます。

parallel-autoreplica

  自動複製の並列テストのテストパターンを記述します。 グループ名をキーにテスト内容を配列にして記述します。 グループ名は設定ファイル内で一意でなくてはなりません。 テスト内容はgfperf-parallel-autoreplicaのロングオプションを記述したものです。 gfperf-parallel-autoreplicaを記述された数分呼び出し、その平均値をとってテスト結果とします。

## SEE ALSO

gfperf-metadata(1), gfperf-tree(1), gfperf-copy(1), gfperf-read(1), gfperf-write(1), gfperf-replica(1), gfperf-autoreplica(1), gfperf-parallel-read(1), gfperf-parallel-write(1), gfperf-parallel-replica(1), gfperf-parallel-autoreplica(1),

## NOTES

sshでコマンド起動を行う場合、 事前にパスワードなしでのログインできる環境を整える必要があります。

また、OSによっては.bashrcが読み込まれないことがありますので、 gfperf.rbを実行する前に確認してください。