「Bonding」 (Teaming) はLinuxに標準で含まれている機能で、複数のNICを論理的に束ねて、冗長性、ロードバランス、転送性能などの機能向上を低コストで同時実現する優れた技術です。
HPCクラスタの規模が大きくなると、ファイルI/Oがボトルネックになる可能性あります。大規模なHPCクラスタではファイバーチャネルや高速ネットワーク、分散ファイルシステムなどを用いた高価なストレージ・サブシステムが使われます。ところがパーソナルなHPCクラスタでは費用的な制約からこのような高速ストレージの導入は望めません。そのため、コストパフォーマンスに優れた代案の登場が待たれていました。
最新のRAIDコントローラによるRAID10 2TB (SATA 500GB x8) 構成でのローカルディスクI/Oの実効性能は約180MB/secと十分な速度が出ています。ところが、GbE経由でのNFS性能となると約60MB/sと、ローカルディスク性能の約3割しか出ていません。GbE経由でのNFSがボトルネックになっています。
最近のサーバはGbEポートを2ポート搭載し、GbEスイッチも安価になっています。そのため、GbE Bondingを利用しても費用は嵩みません。安価にできるGbE BondingでNFSやFTP、rsyncなどの性能が向上するなら、NFSの性能ボトルネックに悩むパーソナルなHPCクラスタには朗報となります。また、10GbE Bondingの利用にも大きな手がかりとなります。
◇ 下記のテスト用ファイルサーバをNFSサーバにして、GbE x2 Bonding設定
◇ クライアントをGbEとGbE x2 Bonding設定にしてNFSで10GBのデータの書き込みを行い、速度を測定する
1. NFSサーバ: GbE x2 Bonding、NFSクライアント: GbE x1でのNFS Write性能測定で72MB/secを記録
2. NFSサーバ: GbE x2 Bonding、NFSクライアント: GbE x2 BondingでのNFS Write性能測定で134MB/secを記録
| ストレージ | ファイルシステム | NFS | NFSサーバ ネットワーク |
NFSクライアント ネットワーク |
NFS Write10GB 速度 |
| RAID0 | ext3 | NFS ver.4 | GbE x2 (Bonding) | GbE x2 (Bonding) | 134MB/sec |
| RAID0 | ext3 | NFS ver.4 | GbE x2 (Bonding) | GbE x1 | 72MB/sec |
| (参考) | ext3 | NFS ver.4 | GbE x1 | GbE x1 | 60MB/sec |
| (参考) | ext3 | NFS ver.3 | GbE x1 | GbE x1 | 50MB/sec |
◇テストに用いた環境
CPU: Dual-Core Xeon 5160 3.0GHz/4MBcache /FSB1333MHz 2CPU 4CPUコア
Memory: DDR2-667 FB-DIMM 8GB
OS: CentOS4.4
kernel: 2.6.9-42.ELsmp EM64T
Storage: SATA/500GB x5 RAID0 (500GB x10 RAID10相当)
Ethernet: Broadcomx2の環境が無いので、Broadcom+Intelの環境
(03:00.0 Ethernet controller: Intel Corporation 82572EI GbE)
(0d:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5752 GbE)
NFS: NFS version4
ファイルシステム: ext3
ローカルI/Oの性能テスト Write10GB: 312.51MB/sec
ローカルI/Oの性能テスト Read10GB: 204.39MB/sec
(スイッチングハブ: バッファロー 8port GbE Hub)
◇ 上記のテスト用ファイルサーバをFTPサーバ/NFSサーバにして、GbE x2 Bonding設定
◇ クライアント機は2台用意し、両方ともGbE x1の標準的設定
◇ 1台目のクライアントからFTPで20GBのデータ書き込みを行う
◇ 同時に2台目のクライアントからもNFSで10GBのデータの書き込みを同時に行い、速度を測定する
1. サーバ側: GbE x2 Bonding、FTPクライアント: GbE x1でのFTP 20GB put性能測定で50MB/secを記録
2. FTP put中に、もう1台のNFSクライアント: GbE x1でのNFS Write性能測定で82MB/secを記録
| NFSサーバ/FTPサーバ | クライアント | Write速度 | |||||
| ストレージ | ファイル システム |
NFS | ネットワーク | 役割 | 操作 | ネットワーク | |
| RAID0 | ext3 | NFS ver.4 | GbE x2 (Bonding) |
NFSクライアント | 10GB Write | GbE x1 | 82MB/sec |
| FTPクライアント | 20Gb Write | GbE x1 | 50MB/sec | ||||
| RAID0 | ext3 | NFS ver.4 | GbE x2 (Bonding) |
NFSクライアントのみ | 10GB Write | GbE x1 | 75MB/sec |
| FTP利用せず | - | - | - | ||||
※ FTPの速度が50MB/secだった理由は、クライアント機のローカルディスク速度が50MB/secで律速していたため。
HPCクラスタのファイルサーバではNFSとFTPやrsyncなどが同時に利用されることが多く、ネットワークへの負荷集中により性能が急落することがあります。もしBondingを用いることでネットワークの負荷分散が行われ、ファイルサーバの性能改善が実現されれば大きな価値があります。そこで、Bondingを施したサーバに対してNFSとFTPの同時アクセスでのテストを行ったところ良い結果が得られました。FTPにより20GBのファイルをputし50MB/secの速度で書き込みを行っている最中に、NFSでの10GBの書き込みを行い、82MB/secの転送速度が得られました。大きなファイルをFTPしていたり、バックアップをrsyncで行っている間のNFSの性能低下には悩みますから、この結果はシステム構築の参考になります。