Dolphin Express による 10Gbps ソケット通信
Dolphin Express は、標準的な低価格のサーバを用いて、強力なクラスタリングシステム が構築できる、ハードウェアとソフトウェアによる通信用アーキテクチャです。 本資料では、Dolphin Express 製品の概要と、実際にどの程度の性能が出るのか市販 PC での実験結果をご紹介します。Dolphin Express 製品体系
Dolphin Express の ハ ー ド ウ ェ ア に は 、 通 信 プ ロ ト コ ル に Advanced Switching Interconnect (ASI)を用いた DX シリーズと、Scalable Coherent Interface (SCI)を用い た D350 シリーズがあります。 いずれもホストアダプタは PCI Express™に対応しています。 D350 Dual Channel SCI D350 シリーズの使用する SCI プロトコルは、ANSI/IEEE で 標準化され、これまで PCI 用のホストアダプタとして、特に クラスタリングシステムでの採用実績があります。 ボード間のリンクスピードはシングルリンクで 664MB/s、 アプリケーション間レイテンシーは 1.4us(利用環境による) です。 DX シ リ ー ズ の 使 用 す る ASI プ ロ ト コ ル は 、 PCI Express™を機能拡張するために旧 ASI-SIG(現在 PICMG が仕様を管理)により規格化されたプロトコルです。 ボード間のリンクスピードは 1GB/s で、PCI Express™ 同様にレーン数により帯域を上げることが可能です。 DXH510 PCI Express Host Adapter
Dolphin Express ハードウェアに用意されているソフトウェアには、ソケットプログラミ ング用として SuperSockets™と低レベル API として SISCI(Software Infrastructure for SCI)が用意されています。 SuperSocket™はソケット API 以下の処理を ハードウェアに最適化しているため、極めて低 いレイテンシーとハードウェアの持つリンク 速度を十分に生かすことができます。 その結果、従来のソケット利用アプリケーシ ョンを作りかえることなく、1Gb イーサで 100MB/s 程度であった通信を容易に 600MB/s 以 上に高速化することが可能です。
組込機器などで、ソケット API を使用しない場合は、SISCI の API を用いて RMA(Remote Memory Access)によるプログラミングが可能です。 以下に DX シリーズと D350 シリーズの特長をまとめてみました。 DX シリーズ D350 シリーズ ハードウェア 通信プロトコル ASI SCI (ANSI/IEEE 1596-1992) リンクスピード 1GB/s または 2GB/s 664MB/s または 1.328GB/s トポロジ ポイント-to-ポイント スイッチによる結線 ポイント-to-ポイント リング結線 トーラス結線 ホストアダプタ PCIe x8 PCIe x8 または x4 その他 PCIe 拡張ユニットあり 300m まで延長可能 PCI,CompactPCI,PCM などのホス トアダプタあり ソフトウェア
ソケット API SuperSocket 対応 SuperSocket 対応 低レベル API SISCI 対応 SISCI 対応 OS Linux Windows(準備中) Linux WindowsXP SISCI は他 OS も対応 その他 ― SCI 用に MPICH あり
市販 PC による実験
下記スペックの市販 PC を 2 台用意し、DXH510 および D350 で 2 台間を直結し、データの 転送性能を計測してみました。 CPU インテル® Core™2 Duo E4400 (2GHz, L2 2MB, FSB 800Mhz) チップセット インテル® Q35 Express OS CentOS 5.1 x86_64 計測には次のソフトウェアを用いました。 スループット計測 netperf 2.4.4-1 レイテンシー計測 netpipe 3.6.2-1.2 計測の際に、ソケット通信においては Gb イーサとの比較を行うため、PC に実装されてい る Gb イーサをスイッチングハブにて PC 間を接続したときの netperf による計測も行いま した。 以下が、各インタフェースにおける転送レートとレイテンシーの計測値です。 Netperf を転送レートの計測に、netpipe の 1 バイト転送をレイテンシーの計測に利用しました。 1Gb イーサ DXH510 D350netperf (転送レート) 111.64 MBytes/s 619.64 Mbytes/s 572.55 Mbytes/s netpipe (レイテンシー) 61.33 us 2.18 us 3.07 us
単に転送スループットが高いだけでなく、極めて低いレイテンシーであることから、デ ータベースのようにより高速なレスポンスが要求されるアプリケーションにも有効である ことがわかります。 以下は、実際に測定を行った際のログです。 DXH510 と D350 での netperf/NPtcp コマンドの前に dis_ssocks_run の記述がありますが、 dis_ssocks_run はスクリプトになっており、アプリケーションである netperf/NPtcp が参 照するソケットのライブリ参照を SuperSockets にします。 1Gb イーサポートでの netperf
[root@pc1 bin]# netperf -H 192.168.100.212 -f M
TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.100.212 (192.168.100.212) port 0 AF_INET
Recv Send Send
Size Size Size Time Throughput bytes bytes bytes secs. MBytes /s
87380 16384 16384 10.02 111.64
DXH510 での netperf
[root@pc1 bin]# dis_ssocks_run netperf -H 192.168.100.212 -f M
TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.100.212 (192.168.100.212) port 0 AF_INET
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput bytes bytes bytes secs. MBytes /s
124928 124928 124928 10.00 619.64
D350 での netperf
[root@pc1 bin]# dis_ssocks_run netperf -H 192.168.100.212 -f M
TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.100.212 (192.168.100.212) port 0 AF_INET
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput bytes bytes bytes secs. MBytes /s
124928 124928 124928 10.00 572.55
1Gb イーサポートでの netpipe
[root@pc1 bin]# NPtcp -h 192.168.100.212
Send and receive buffers are 16384 and 87380 bytes (A bug in Linux doubles the requested buffer sizes) Now starting the main loop
0: 1 bytes 1608 times --> 0.12 Mbps in 61.33 usec 1: 2 bytes 1630 times --> 0.25 Mbps in 61.36 usec
DXH510 での netpipe
[root@pc1 bin]# dis_ssocks_run NPtcp -h 192.168.100.212 Send and receive buffers are 124928 and 124928 bytes (A bug in Linux doubles the requested buffer sizes) Now starting the main loop
0: 1 bytes 3557 times --> 3.50 Mbps in 2.18 usec 1: 2 bytes 45870 times --> 7.09 Mbps in 2.15 usec
D350 での netpipe
[root@pc1 bin]# dis_ssocks_run NPtcp -h 192.168.100.212 Send and receive buffers are 124928 and 124928 bytes (A bug in Linux doubles the requested buffer sizes) Now starting the main loop
0: 1 bytes 8602 times --> 2.48 Mbps in 3.07 usec 1: 2 bytes 32558 times --> 4.96 Mbps in 3.08 usec 株式会社スターブリッジ 技術部 お問い合わせは、弊社ホームページ(http://www.starbridge.co.jp)よりお願いいたしま す。 ©2008 Starbridge, Inc. All rights reserved. 本書に記載の会社名、製品名、ロゴなどは各社・各団体の登録商標または商標です。