投稿者「admin」のアーカイブ

Intel Xeon Phi

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

UEFIでデュアルブート(Dual Boot) と rEFInd

●環境
MB: Supermicro X9SCM-F
HDD: 500GB
OS: Windows7 SP1 64bit
OS: Ubuntsu 12.04 x86_64
OS: FedoraCore 17 x86_64

●インストール方法
UEFI: DVD
をBoot Optionの先頭にしてインストールを開始します。
ここで注意することは、UEFIモードのインストールに対応しているDVDを光学ドライブに入れると
UEFI: DVD
がBoot Optionにリストされてきます。
つまりUEFIモードに対応していないDVDはUEFIモードインストールできないということです。

最初にWindows7をインストールします。
Windows7をインストールするとEFI区画として100MB程度の区画が勝手に作られます。(通常のBIOSモードではこの区画は作られない)
次にUbuntsuをインストールする。このときに/boot/efiをこの100MB区画にマウント設定する。初期化してはダメ。
さらにFedoraCoreも同じく/boot/efiをこの区画にマウント設定する。もちろん初期化してはダメ。
ここまでくると、Boot Optionに

UEFI

ubuntu
Fedora
Windows Boot Manager
という起動メニューがリストされます。

考え方としては、EFI区画の100MB(FATでないとダメ)に、それぞれのOSの起動に必要なファイルや設定などがインストールされる。
UEFIは、この区画の設定を自分自身に読み込んでBoot Optionに追加させている。で良いと思います。

ここでもう一つ。

REFIND

rEFIndです。
これはUEFI対応のBoot Managerです。
インストールはLinuxから実行しました。インストールスクリプトが用意されています。
これも同じくEFI区画にインストールされ、Boot Optionに追加されます。OSと同じレイヤに存在しています。
Boot OptionでeEFIndを先頭にしておけば、Boot Managerが常に先に起動します。

rEFIndは、EFI区画を自動でscanして設定を追加してくれます。ただし余分な設定が入ってくる場合があるので少し調整が必要です。

でも、なかなかスタイリッシュですね。

スイッチ間のカスケードトランキング

DELL PowerConnect 2824 2台でカスケードトランキングです。
LAGでGigabit 4本を集約してみました。

■テスト環境
●サーバ 8台
CPU: Intel Xeon E3-1290
MEM: 32GB
Ethernet: Intel 82574L

OS: Centos 5.8 x86_64

Switch: DELL PowerConnect 2824

■環境設定
DELL PowerConnect 2824でport1~port4をLAGで集約してカスケード
各々のSwitchにサーバを4台を接続し4組の接続を作ります。

■テスト方法
ベンチマークは、iperfを使いました。
メモリ to メモリでデータ転送をするので、その他の要因の律速がなく純粋にネットワークスループットが計測できる。
実行方法は、サーバ側が -s でクライアント側が -c で実行します。

■事前テスト
iperfを実行して、4組の接続それぞれで 940Mbits/sec 程度が出ていることを確認。

■結果

trunk_iperf

4組のiperfの合計がおおよそ 2000Mbits/sec 程度です。

■評価
思ったほどの結果ではなかったです。
純粋に、LAG集約しなければ 940Mbits/sec 程度になるところ、4本集約で倍の帯域になっただけです。
今回の結果だけなら通信帯域増強ということよりも冗長としてのメリットのほうが大きいと思います。
次は10Gigaで計測してみたいです。

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サーバの増設(並列効果)

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

以上