PCクラスタ」カテゴリーアーカイブ

HAクラスタ・NFSサーバでSTONITH機能の動作検証 (スプリットブレイン阻止)

POWER MASTER Server S4200には、3.5インチを4台と2.5インチを1台搭載でき、LANポートを4つとIPMI2.0準拠のマネージメントコントローラ用LANポートを1つ備えています。

S008 ラックマウント キットを使うと、1UスペースにPOWER MASTER Server S4200を2台搭載出来るので、HAクラスタ・NFSサーバを構築し、障害時の動作確認を行いました。

◎ 環境

ディスク構成

  • 120GB SSD x1台 (CentOS6.5 x86_64をインストール。)
  • 4TB HDD x4台 (ソフトウェアRAID5を構築。)

ネットワーク

  • bond0 (eth0とeth1でbond0を設定。)
  • eth2,eth3 (死活確認用。eth3はDRBD同期用も兼ねる。)
  • IPMIポート (STONITH機能で利用。)

HAクラスタ用ソフトウェア

ネットワーク構成図

想定した故障は、LANポート故障により2台のサーバ間で死活確認が出来なくなった場合で、その際、STONITH機能により実行されるスタンバイサーバ再起動の確認です。

構築したクラスタは、アクティブ/スタンバイ型のHAクラスタです。各サーバのeth2ポートとeth3ポートを利用して死活確認を行っています。

片方のサーバのeth2ポートとeth3ポート、server1のeth2ポートとserver2のeth3ポートなどいくつか組み合わせパターンが考えられますが、eth2ポートとeth3ポートが同時に正常に動作しなくなると、死活確認が出来なくなります。

死活確認が出来なくなっているだけで、アクティブサーバは停止しておらず、NFSサービスが継続して動作しています。

スタンバイサーバは、アクティブサーバが停止したと判断して、アクティブサーバへの昇格しようとします。もし、昇格するとサービスが二重起動するスプリットブレインが起きてしまいます。

スプリットブレインを防ぐために、STONITH機能によりアクティブサーバがスタンバイサーバを再起動させます。

以下は、pacemakerのCRM設定(一部)です。


primitive prmHelper1-1 stonith:external/stonith-helper ¥
params priority=”1″ stonith-timeout=”80s” hostlist=”server1″ dead_check_target=”IP addresses” run_standby_wait=”yes” standby_check_command=”/usr/sbin/crm_resource -r res_IPaddr2_1 -W | grep -q `hostname`” ¥
op start interval=”0s” timeout=”60s” ¥
op monitor interval=”10s” timeout=”60s” ¥
op stop interval=”0s” timeout=”60s” ¥
meta target-role=”started”
primitive prmIpmi1-2 stonith:external/ipmi ¥
params priority=”2″ stonith-timeout=”60s” userid=”ユーザーID” passwd=”パスワード” ipaddr=”IP address” hostname=”server1″ interface=”lanplus” ¥
op start interval=”0s” timeout=”60s” on-fail=”restart” ¥
op monitor interval=”3600s” timeout=”60s” on-fail=”restart” ¥
op stop interval=”0s” timeout=”60s” on-fail=”ignore” ¥
meta target-role=”started”
primitive prmMeatware1-3 stonith:meatware ¥
params priority=”3″ stonith-timeout=”600″ hostlist=”server1″ ¥
op start interval=”0s” timeout=”60s” ¥
op monitor interval=”3600s” timeout=”60s” ¥
op stop interval=”0s” timeout=”60s” ¥
meta target-role=”started”
group grpStonith1 prmHelper1-1 prmIpmi1-2 prmMeatware1-3
location loc-grpStonith1 grpStonith1 ¥
rule $id=”loc-grpStonith1-rule” -inf: #uname eq server1

簡単に設定した内容をまとめると、

  1. どちらのサーバがアクティブサーバであるか判定。(stonith:external/stonith-helperを利用。)
  2. アクティブサーバがスタンバイサーバを再起動させる。(stonith:external/ipmiを利用。)
  3. stonith:external/ipmiによりスタンバイサーバが再起動しない場合、サーバ管理者による再起動を求める。(stonith:meatwareを利用。)

となります。

◎ 動作確認

  1. server1側で、eth2ポートとeth3ポートに取り付けられているLANケーブルを抜く。(これにより死活確認が出来なくなります。)
  2. crm_monコマンドで、server2の再起動を確認。

アクティブサーバのeth2ポートとeth3ポートからLANケーブルを抜き取っても、STONITH機能によりスタンバイサーバの再起動が確認出来ました。また、HAクラスタ・NFSサービスも継続して動作していることを確認出来ました。

なお、実際に障害が起きた場合、故障箇所の特定には、サーバの動作ログなどの確認が必要となります。

Intel Xeon Phi

xeon_phi
いよいよIntel Xeon Phiが近づいてきました。
HPC向けの位置付けはNvidia Teslaなどと同じですが、phiはx86アーキテクチャという特徴があります。
GPGPUへの移行を躊躇していたユーザさんの考え方も変わるかもしれませんね。
phiは、PCI Express 3.0 へ接続する方式です。この点はTeslaとも同様です。
このあたり参考になります。

Gluster ベンチマーク

Gluster

分散ファイルシステムが注目されています。
複数の実装がありますが、今回はGlusterを動かしてみました。
Glusterは、クラウド環境やHPC環境にも使える分散ファイルシステムです。
ローカルファイルシステムをエクスポートし、メタデータサーバが存在しないのも大きな特徴です。
今回は、かなりリッチな環境なので、参考程度にしかならないかも。。。

■テスト環境
●Glusterサーバ 3台
CPU: x5675 2個
MEM: 72GB
RAID: Areca 1280
HDD: 3TB 24台 RAID6
Infinband: Mellanox_QDR
Ethernet: Intel 82574L

OS: Centos 5.5 x86_64
Local Filesystem: XFS
DFS: Gluster 3.2.4

●Glusterクライアント 3台
CPU: x5675 2個
MEM: 72GB
HDD: 2TB 1台 OS用
Infinband: Mellanox_QDR
Ethernet: Intel 82574L

OS: Centos 5.5 x86_64
MPI: mpich2, mvapich2
Benchmark: IOR

ベンチマークは、IORを使いました。
IORは、分散ファイルシステム向けのベンチマークプログラムです。
特徴としては、MPIを使った並列プロセスからのI/O測定ができます。
測定結果は最大値で出てくるようです。(Max Write, Max Read)
IORのパラメータが妥当かどうか?の問題がありますが、ネット上にあった情報を元にして実行しました。
使ってみてわかったのですが、IORは実行側ホストのキャッシュをほとんど使わないようです。
比較は以下としました。

Gigabit ストライプ型(72GBメモリ) VS infiniband ストライプ型(72GBメモリ)
infiniband ストライプ型(2GBメモリ) VS infiniband ストライプ型(72GBメモリ)
infiniband ストライプ型(72GBメモリ) VS infiniband 分散型(72GBメモリ)
infiniband ストライプ型(2GBメモリ) VS infiniband 分散型(2GBメモリ)
infiniband ストライプ型(72GBメモリ 36プロセス) VS infiniband ストライプ型(72GBメモリ 72プロセス)
infiniband ストライプ型 3台(72GBメモリ 36プロセス実行) VS infiniband ストライプ型 2台(72GBメモリ 36プロセス実行)

■fuseについて
Glusterはfuseを使いマウントをしている。
fuseはOS標準を使うことができるが、glusterからチューニングされたfuseが入手できる。

72プロセスにすると、infinbandでもMax Writeの値がだいぶ落ちてくる。
これでfuseの差が出るかを見てみる。

●fuseは、centos標準
# mpiexec -launcher rsh -f mvapich2host -n 72 /home/work/bin/IOR -a MPIIO -b 4g -t 4m -i 1 -F -o /gluster/output
結果(Infinband)
Operation Max (MiB) Min (MiB) Mean (MiB) Std Dev Max (OPs) Min (OPs) Mean (OPs) Std Dev Mean (s)Op grep #Tasks tPN reps fPP reord reordoff reordrand seed segcnt blksiz xsize aggsize
——— ——— ——— ———- ——- ——— ——— ———- ——- ——-
write 233.77 233.77 233.77 0.00 58.44 58.44 58.44 0.001261.54440 72 24 1 1 0 1 0 0 1 0 4194304 309237645312 -1 MPIIO EXCEL
read 2829.12 2829.12 2829.12 0.00 707.28 707.28 707.28 0.00 104.24172 72 24 1 1 0 1 0 0 1 0 4194304 309237645312 -1 MPIIO EXCEL

Max Write: 233.77 MiB/sec (245.13 MB/sec)
Max Read: 2829.12 MiB/sec (2966.54 MB/sec)

●fuseは、gluster-fuse
# mpiexec -launcher rsh -f mvapich2host -n 72 /home/work/bin/IOR -a MPIIO -b 4g -t 4m -i 1 -F -o /gluster/output
peration Max (MiB) Min (MiB) Mean (MiB) Std Dev Max (OPs) Min (OPs) Mean (OPs) Std Dev Mean (s)Op grep #Tasks tPN reps fPP reord reordoff reordrand seed segcnt blksiz xsize aggsize
——— ——— ——— ———- ——- ——— ——— ———- ——- ——-
write 262.79 262.79 262.79 0.00 65.70 65.70 65.70 0.001122.22525 72 24 1 1 0 1 0 0 1 0 4194304 309237645312 -1 MPIIO EXCEL
read 2814.13 2814.13 2814.13 0.00 703.53 703.53 703.53 0.00 104.79704 72 24 1 1 0 1 0 0 1 0 4194304 309237645312 -1 MPIIO EXCEL

Max Write: 262.79 MiB/sec (275.56 MB/sec)
Max Read: 2814.13 MiB/sec (2950.82 MB/sec)

Max Writeが12%程度上がった。
fuseはOS標準のfuseよりGlusterからダウンロードしたものを使うのが良い。

■ベンチマーク
———-
Gluster ストライプ型 (ethernet gigabit)
ファイルサーバ メモリ72GB
MPIライブラリ mpich2

[work@gluster5 ~]$ mpiexec -launcher rsh -iface eth0 -f mpich2host -n 36 /home/work/bin/IOR -a MPIIO -b 4g -t 4m -i 1 -F -o /gluster/output
IOR-2.10.2: MPI Coordinated Test of Parallel I/O

Run began: Mon Dec 19 12:49:50 2011
Command line used: /home/work/bin/IOR -a MPIIO -b 4g -t 4m -i 1 -F -o /gluster/outputMachine: Linux gluster5

Summary:
api = MPIIO (version=2, subversion=2)
test filename = /gluster/output
access = file-per-process
ordering in a file = sequential offsets
ordering inter file= no tasks offsets
clients = 36 (12 per node)
repetitions = 1
xfersize = 4 MiB
blocksize = 4 GiB
aggregate filesize = 144 GiB

Operation Max (MiB) Min (MiB) Mean (MiB) Std Dev Max (OPs) Min (OPs) Mean (OPs) Std Dev Mean (s)Op grep #Tasks tPN reps fPP reord reordoff reordrand seed segcnt blksiz xsize aggsize
——— ——— ——— ———- ——- ——— ——— ———- ——- ——-
write 203.89 203.89 203.89 0.00 50.97 50.97 50.97 0.00 723.22218 36 12 1 1 0 1 0 0 1 0 4194304 154618822656 -1 MPIIO EXCEL
read 209.22 209.22 209.22 0.00 52.30 52.30 52.30 0.00 704.80554 36 12 1 1 0 1 0 0 1 0 4194304 154618822656 -1 MPIIO EXCEL

Max Write: 203.89 MiB/sec (213.79 MB/sec)
Max Read: 209.22 MiB/sec (219.38 MB/sec)

Run finished: Mon Dec 19 13:13:56 2011

———-
Gluster ストライプ型 (infiniband QDR)
ファイルサーバ メモリ72GB
MPIライブラリ mvapich2

[work@gluster5 ~]$ mpiexec -launcher rsh -f mvapich2host -n 36 /home/work/bin/IOR -a MPIIO -b 4g -t 4m -i 1 -F -o /gluster/output
IOR-2.10.2: MPI Coordinated Test of Parallel I/O

Run began: Mon Dec 19 12:18:54 2011
Command line used: /home/work/bin/IOR -a MPIIO -b 4g -t 4m -i 1 -F -o /gluster/outputMachine: Linux gluster5

Summary:
api = MPIIO (version=2, subversion=2)
test filename = /gluster/output
access = file-per-process
ordering in a file = sequential offsets
ordering inter file= no tasks offsets
clients = 36 (12 per node)
repetitions = 1
xfersize = 4 MiB
blocksize = 4 GiB
aggregate filesize = 144 GiB

Operation Max (MiB) Min (MiB) Mean (MiB) Std Dev Max (OPs) Min (OPs) Mean (OPs) Std Dev Mean (s)Op grep #Tasks tPN reps fPP reord reordoff reordrand seed segcnt blksiz xsize aggsize
——— ——— ——— ———- ——- ——— ——— ———- ——- ——-
write 2475.39 2475.39 2475.39 0.00 618.85 618.85 618.85 0.00 59.56869 36 12 1 1 0 1 0 0 1 0 4194304 154618822656 -1 MPIIO EXCEL
read 2701.51 2701.51 2701.51 0.00 675.38 675.38 675.38 0.00 54.58275 36 12 1 1 0 1 0 0 1 0 4194304 154618822656 -1 MPIIO EXCEL

Max Write: 2475.39 MiB/sec (2595.64 MB/sec)
Max Read: 2701.51 MiB/sec (2832.74 MB/sec)

Run finished: Mon Dec 19 12:20:56 2011

———-
Gluster ストライプ型 (infiniband QDR)
ファイルサーバ メモリ2GB
MPIライブラリ mvapich2

[work@gluster5 ~]$ mpiexec -launcher rsh -f mvapich2host -n 36 /home/work/bin/IOR -a MPIIO -b 4g -t 4m -i 1 -F -o /gluster/output
IOR-2.10.2: MPI Coordinated Test of Parallel I/O

Run began: Mon Dec 19 16:29:59 2011
Command line used: /home/work/bin/IOR -a MPIIO -b 4g -t 4m -i 1 -F -o /gluster/outputMachine: Linux gluster5

Summary:
api = MPIIO (version=2, subversion=2)
test filename = /gluster/output
access = file-per-process
ordering in a file = sequential offsets
ordering inter file= no tasks offsets
clients = 36 (12 per node)
repetitions = 1
xfersize = 4 MiB
blocksize = 4 GiB
aggregate filesize = 144 GiB

Operation Max (MiB) Min (MiB) Mean (MiB) Std Dev Max (OPs) Min (OPs) Mean (OPs) Std Dev Mean (s)Op grep #Tasks tPN reps fPP reord reordoff reordrand seed segcnt blksiz xsize aggsize
——— ——— ——— ———- ——- ——— ——— ———- ——- ——-
write 205.71 205.71 205.71 0.00 51.43 51.43 51.43 0.00 716.80098 36 12 1 1 0 1 0 0 1 0 4194304 154618822656 -1 MPIIO EXCEL
read 275.65 275.65 275.65 0.00 68.91 68.91 68.91 0.00 534.94492 36 12 1 1 0 1 0 0 1 0 4194304 154618822656 -1 MPIIO EXCEL

Max Write: 205.71 MiB/sec (215.71 MB/sec)
Max Read: 275.65 MiB/sec (289.04 MB/sec)

Run finished: Mon Dec 19 16:51:30 2011

———-
Gluster 分散型 (infiniband QDR)
ファイルサーバ メモリ72GB
MPIライブラリ mvapich2

[work@gluster5 ~]$ mpiexec -launcher rsh -f mvapich2host -n 36 /home/work/bin/IOR -a MPIIO -b 4g -t 4m -i 1 -F -o /gluster/output
IOR-2.10.2: MPI Coordinated Test of Parallel I/O

Run began: Mon Dec 19 15:58:29 2011
Command line used: /home/work/bin/IOR -a MPIIO -b 4g -t 4m -i 1 -F -o /gluster/outputMachine: Linux gluster5

Summary:
api = MPIIO (version=2, subversion=2)
test filename = /gluster/output
access = file-per-process
ordering in a file = sequential offsets
ordering inter file= no tasks offsets
clients = 36 (12 per node)
repetitions = 1
xfersize = 4 MiB
blocksize = 4 GiB
aggregate filesize = 144 GiB

Operation Max (MiB) Min (MiB) Mean (MiB) Std Dev Max (OPs) Min (OPs) Mean (OPs) Std Dev Mean (s)Op grep #Tasks tPN reps fPP reord reordoff reordrand seed segcnt blksiz xsize aggsize
——— ——— ——— ———- ——- ——— ——— ———- ——- ——-
write 1936.59 1936.59 1936.59 0.00 484.15 484.15 484.15 0.00 76.14225 36 12 1 1 0 1 0 0 1 0 4194304 154618822656 -1 MPIIO EXCEL
read 2008.95 2008.95 2008.95 0.00 502.24 502.24 502.24 0.00 73.39951 36 12 1 1 0 1 0 0 1 0 4194304 154618822656 -1 MPIIO EXCEL

Max Write: 1936.59 MiB/sec (2030.66 MB/sec)
Max Read: 2008.95 MiB/sec (2106.54 MB/sec)

Run finished: Mon Dec 19 16:01:05 2011

———-
Gluster 分散型 (infiniband QDR)
ファイルサーバ メモリ2GB
MPIライブラリ mvapich2

[work@gluster5 ~]$ mpiexec -launcher rsh -f mvapich2host -n 36 /home/work/bin/IOR -a MPIIO -b 4g -t 4m -i 1 -F -o /gluster/output
IOR-2.10.2: MPI Coordinated Test of Parallel I/O

Run began: Mon Dec 19 16:16:12 2011
Command line used: /home/work/bin/IOR -a MPIIO -b 4g -t 4m -i 1 -F -o /gluster/outputMachine: Linux gluster5

Summary:
api = MPIIO (version=2, subversion=2)
test filename = /gluster/output
access = file-per-process
ordering in a file = sequential offsets
ordering inter file= no tasks offsets
clients = 36 (12 per node)
repetitions = 1
xfersize = 4 MiB
blocksize = 4 GiB
aggregate filesize = 144 GiB

Operation Max (MiB) Min (MiB) Mean (MiB) Std Dev Max (OPs) Min (OPs) Mean (OPs) Std Dev Mean (s)Op grep #Tasks tPN reps fPP reord reordoff reordrand seed segcnt blksiz xsize aggsize
——— ——— ——— ———- ——- ——— ——— ———- ——- ——-
write 1102.60 1102.60 1102.60 0.00 275.65 275.65 275.65 0.00 133.73433 36 12 1 1 0 1 0 0 1 0 4194304 154618822656 -1 MPIIO EXCEL
read 447.15 447.15 447.15 0.00 111.79 111.79 111.79 0.00 329.76871 36 12 1 1 0 1 0 0 1 0 4194304 154618822656 -1 MPIIO EXCEL

Max Write: 1102.60 MiB/sec (1156.16 MB/sec)
Max Read: 447.15 MiB/sec (468.87 MB/sec)

Run finished: Mon Dec 19 16:23:57 2011

———-
Gluster ストライプ型 2台(infiniband QDR)
ファイルサーバ メモリ72GB
MPIライブラリ mvapich2

[work@gluster5 ~]$ mpiexec -launcher rsh -f mvapich2host -n 36 /home/work/bin/IOR -a MPIIO -b 4g -t 4m -i 1 -F -o /gluster/output
IOR-2.10.2: MPI Coordinated Test of Parallel I/O

Run began: Mon Dec 19 21:11:29 2011
Command line used: /home/work/bin/IOR -a MPIIO -b 4g -t 4m -i 1 -F -o /gluster/outputMachine: Linux gluster5

Summary:
api = MPIIO (version=2, subversion=2)
test filename = /gluster/output
access = file-per-process
ordering in a file = sequential offsets
ordering inter file= no tasks offsets
clients = 36 (12 per node)
repetitions = 1
xfersize = 4 MiB
blocksize = 4 GiB
aggregate filesize = 144 GiB

Operation Max (MiB) Min (MiB) Mean (MiB) Std Dev Max (OPs) Min (OPs) Mean (OPs) Std Dev Mean (s)Op grep #Tasks tPN reps fPP reord reordoff reordrand seed segcnt blksiz xsize aggsize
——— ——— ——— ———- ——- ——— ——— ———- ——- ——-
write 968.56 968.56 968.56 0.00 242.14 242.14 242.14 0.00 152.24190 36 12 1 1 0 1 0 0 1 0 4194304 154618822656 -1 MPIIO EXCEL
read 1940.63 1940.63 1940.63 0.00 485.16 485.16 485.16 0.00 75.98366 36 12 1 1 0 1 0 0 1 0 4194304 154618822656 -1 MPIIO EXCEL

Max Write: 968.56 MiB/sec (1015.61 MB/sec)
Max Read: 1940.63 MiB/sec (2034.90 MB/sec)

Run finished: Mon Dec 19 20:32:40 2011

■比較と評価
●Gigabit ストライプ型(72GBメモリ) VS infiniband ストライプ型(72GBメモリ)

・Gigabit ストライプ型(72GBメモリ)
Max Write: 203.89 MiB/sec (213.79 MB/sec)
Max Read: 209.22 MiB/sec (219.38 MB/sec)

・infiniband ストライプ型(72GBメモリ)
Max Write: 2475.39 MiB/sec (2595.64 MB/sec)
Max Read: 2701.51 MiB/sec (2832.74 MB/sec)

gigabitとinfinibandの差は言うまでもありません。
infinbandで10倍以上の向上です。
しかしgigabitでも、200MB/s以上になっているのは、Glusterサーバ側のキャッシュ効果が出ているのではないか?

●infiniband ストライプ型(2GBメモリ) VS infiniband ストライプ型(72GBメモリ)

・infiniband ストライプ型(2GBメモリ)
Max Write: 205.71 MiB/sec (215.71 MB/sec)
Max Read: 275.65 MiB/sec (289.04 MB/sec)

・infiniband ストライプ型(72GBメモリ)
Max Write: 2475.39 MiB/sec (2595.64 MB/sec)
Max Read: 2701.51 MiB/sec (2832.74 MB/sec)

infinibandでも、Glusterサーバ側のメモリが少ないと大きくスコアが落ちた。
Glusterサーバ側のキャッシュ効果はローカルファイルシステムの部分で重要な要素となっている。

●infiniband ストライプ型(72GBメモリ) VS infiniband 分散型(72GBメモリ)

・infiniband ストライプ型(72GBメモリ)
Max Write: 2475.39 MiB/sec (2595.64 MB/sec)
Max Read: 2701.51 MiB/sec (2832.74 MB/sec)

・infiniband 分散型(72GBメモリ)
Max Write: 1936.59 MiB/sec (2030.66 MB/sec)
Max Read: 2008.95 MiB/sec (2106.54 MB/sec)

ストライブ型のほうが25%~33%くらい速い。

●infiniband ストライプ型(2GBメモリ) VS infiniband 分散型(2GBメモリ)

・infiniband ストライプ型(2GBメモリ)
Max Write: 205.71 MiB/sec (215.71 MB/sec)
Max Read: 275.65 MiB/sec (289.04 MB/sec)

・infiniband 分散型(2GBメモリ)
Max Write: 1102.60 MiB/sec (1156.16 MB/sec)
Max Read: 447.15 MiB/sec (468.87 MB/sec)

Glusterサーバ側のメモリが少ないと分散型のほうが良いスコアが出た。
Max Writeが大きく向上している。

●infiniband ストライプ型(72GBメモリ 36プロセス) VS infiniband ストライプ型(72GBメモリ 72プロセス)

・infiniband ストライプ型(72GBメモリ 36プロセス)
Max Write: 2475.39 MiB/sec (2595.64 MB/sec)
Max Read: 2701.51 MiB/sec (2832.74 MB/sec)

・infiniband ストライプ型(72GBメモリ 72プロセス)
Max Write: 262.79 MiB/sec (275.56 MB/sec)
Max Read: 2814.13 MiB/sec (2950.82 MB/sec)

プロセス数 36と72では、Max Writeが下がった。並列数が多くなれば負荷が上がり影響が出ている。

●infiniband ストライプ型 3台(72GBメモリ 36プロセス実行) VS infiniband ストライプ型 2台(72GBメモリ 36プロセス実行)

・infiniband ストライプ型 3台(72GBメモリ 36プロセス実行)
Max Write: 2475.39 MiB/sec (2595.64 MB/sec)
Max Read: 2701.51 MiB/sec (2832.74 MB/sec)

・infiniband ストライプ型 2台(72GBメモリ 36プロセス実行)
Max Write: 968.56 MiB/sec (1015.61 MB/sec)
Max Read: 1940.63 MiB/sec (2034.90 MB/sec)

2台になるとMax Writeが60%劣化した。
サーバを増やすことで並列I/Oへの帯域は増やせそうだ。

■全体評価
Glusterのパフォーマンスは以下が効果的と思われる。
多くのメモリを搭載(キャッシュ効果)
Glusterサーバの増設(並列効果)

いずれにしても、目的を明確にすることが構成選択への最初の一歩ですね。

以上

Open Grid Scheduler

Oracle がGrid Engineプロジェクトを停止し、Open Grid SchedulerプロジェクトがOpen Grid Scheduler として新にリリースしています。

Open Grid Scheduler

サポートしているプラットフォ-ムは以下です。

  • AIX
  • BSDs, including FreeBSD & NetBSD, on most of the architectures supported by the operating systems
  • HP-UX on IA64 and PA-RISC
  • IRIX
  • Linux on Alpha, ARM, IBM POWER & PowerPC, IBM System z mainframe, IA64, MIPS & Loongson, SPARC, x86, and x86-64
  • Mac OS X
  • Solaris on SPARC, x86, and x86-64
  • Tru64
  • Windows

当社では、Linux x86,  x86_64 にてインストールサービスに対応しています。

GUIなツールもあります。
Grid Engine qmon GUI

Open Grid Schedulerは、SISSLライセンスで新しいファイルはBSDライセンスとなります。

NFSの書込み速度 (Ethernet 10GBase)

■テスト環境
NFSサーバおよびNFSクライアント
MB: Supermicro X8DTi
Chipset: INTEL 5520
CPU: Xeon L5530 x2
MEM: 24GB (4GB DDR3-1333 Reg x 6)

インターコネクト
10GBase: NETXEN NXB-10GCX4

OS: CentOS 5.3 x86_64

■環境設定
NFSサーバ
kernelパラメータ ramdisk_size=20971520 で起動し、20GBのramdiskにext3ファイルシステムを構築して /mnt にマウントする。
/etc/exports 設定は以下とする。
/mnt   *(rw,sync,no_root_squash)

NFSクライアント
kernelパラメータ mem=1024m で起動し、OS上のメモリ容量を1GBとする。 (クライアント側のpagecache効果を少なくするため)

■テスト方法
200MBファイルを連続50回書出しをするスクリプトを用意する。

#!/bin/sh
LOOP=50
DIR=/mnt

COUNT=0
while [ $COUNT -lt $LOOP ]
do
dd if=/dev/zero of=$DIR/$COUNT bs=32768 count=6400
let COUNT=COUNT+1
done

このスクリプトをtimeコマンドの引数として実行しreal値から速度を算出する。

■事前テスト
NFSサーバ上でramdiskの書込み速度を計測する。
計測方法は同じスクリプトを使う。
[TABLE=3]
ディスク側の律速がこの値まではないことを前提とする。

■結果
[TABLE=6]

■評価
ネットワーク性能測定ツール iperf では、MTU=1500で6.69Gbps MTU=3000で8.23Gbps MTU=6000で8.48Gbps MTU=8000(設定可能最大値)で8.42Gbps でした。
iperfでの値が高いにもかかわらず、実際の転送速度が175MB/s程度であった。
以前より10GBase EthernetはInfiniband (IPoIB)より実際のデータ転送速度で劣るといった話があったが、今回の検証でそれを裏付ける結果となりました。しかし、これだけで10GBase Ethernetがすべてにおいて劣っているわけではありません。
例えばInfinibandはEthernetではないため、スイッチを使ってEthernet環境と接続することが不可能です。アプリケーションによって10GBase EthernetとInfinibandを使い分けることが重要と思います。

今回はCX4ポートのNICを使ったが、10GBase-CX4のNICはポート単価が低く導入しやすいです。しかし、10GBaseスイッチは未だに高額な商品となっております。
いずれ導入しやすい価格になってくれることを期待したいです。