<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1.2//EN"
  "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">


<refentry id="gfperf.rb.1">

<refentryinfo><date>19 May 2012</date></refentryinfo>

<refmeta>
<refentrytitle>gfperf.rb</refentrytitle>
<manvolnum>1</manvolnum>
<refmiscinfo>Gfarm</refmiscinfo>
</refmeta>
<refnamediv id="name">
<refname>gfperf.rb</refname>
<refpurpose>Gfarm 性能測定を行う。</refpurpose>
</refnamediv>

<refsynopsisdiv id="synopsis">
<cmdsynopsis sepchar=" ">
  <command moreinfo="none">gfperf.rb</command>
    <arg choice="opt" rep="norepeat">-c, --check</arg>
    <arg choice="plain" rep="norepeat"><replaceable>設定ファイル</replaceable></arg>
</cmdsynopsis>
</refsynopsisdiv>

<!-- body begins here -->

<refsect1 id="description"><title>DESCRIPTION</title>
<para>
引数<parameter moreinfo="none">設定ファイル</parameter>で渡されたyamlファイルを元に性能測定を実施します。
</para>
<para>
設定ファイルの例が(Gfarmインストールディレクトリ)/share/gfarm/config/gfperf-[config|simple].ymlにあります。
</para>
</refsect1>

<refsect1 id="options"><title>OPTIONS</title>
<variablelist>

<varlistentry>
<term><option>-c, --check</option></term>
<listitem>
<para>
<parameter moreinfo="none">設定ファイル</parameter>にyaml文法上の誤りがあるかどうかをチェックします。
</para>
</listitem>
</varlistentry>

</variablelist>
</refsect1>

<refsect1 id="examples"><title>EXAMPLES</title>
<para>
設定ファイルの例を以下に示します。
</para>
<literallayout format="linespecific" class="normal">
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"}
       ]    
}
</literallayout>
<para>
以下に各設定項目の詳細を述べます。
</para>
<variablelist>
  <varlistentry>
    <term>database</term>
    <listitem>
      <para>
	filename:に性能測定の結果を保持するデータベースを指定します。
	backup:には自動バックアップ先を指定します。
	check span:で指定された時間分の平均値及び標準偏差を計算します。
      </para>
    </listitem>
  </varlistentry>

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

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

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

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

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

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

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

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

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

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

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

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

</variablelist>
</refsect1>


<refsect1 id="see-also"><title>SEE ALSO</title>
<para>
  <citerefentry>
  <refentrytitle>gfperf-metadata</refentrytitle><manvolnum>1</manvolnum>
  </citerefentry>,
  <citerefentry>
  <refentrytitle>gfperf-tree</refentrytitle><manvolnum>1</manvolnum>
  </citerefentry>,
  <citerefentry>
  <refentrytitle>gfperf-copy</refentrytitle><manvolnum>1</manvolnum>
  </citerefentry>,
  <citerefentry>
  <refentrytitle>gfperf-read</refentrytitle><manvolnum>1</manvolnum>
  </citerefentry>,
  <citerefentry>
  <refentrytitle>gfperf-write</refentrytitle><manvolnum>1</manvolnum>
  </citerefentry>,
  <citerefentry>
  <refentrytitle>gfperf-replica</refentrytitle><manvolnum>1</manvolnum>
  </citerefentry>,
  <citerefentry>
  <refentrytitle>gfperf-autoreplica</refentrytitle><manvolnum>1</manvolnum>
  </citerefentry>,
  <citerefentry>
  <refentrytitle>gfperf-parallel-read</refentrytitle><manvolnum>1</manvolnum>
  </citerefentry>,
  <citerefentry>
  <refentrytitle>gfperf-parallel-write</refentrytitle><manvolnum>1</manvolnum>
  </citerefentry>,
  <citerefentry>
  <refentrytitle>gfperf-parallel-replica</refentrytitle><manvolnum>1</manvolnum>
  </citerefentry>,
  <citerefentry>
  <refentrytitle>gfperf-parallel-autoreplica</refentrytitle><manvolnum>1</manvolnum>
  </citerefentry>,
</para>
</refsect1>

<refsect1 id="notes"><title>NOTES</title>
<para>
sshでコマンド起動を行う場合、
事前にパスワードなしでのログインできる環境を整える必要があります。
</para>
<para>
また、OSによっては.bashrcが読み込まれないことがありますので、
gfperf.rbを実行する前に確認してください。
</para>
</refsect1>

</refentry>
