オラクルが提供する「Engineered Systems」のラインアップの1つとして、高性能なハードウェアにOracle WebLogic ServerやOracle Coherence、Oracle Tuxedoといったソフトウェアを組み込んだミドルウェア・マシンが「Oracle Exalogic Elastic Cloud」だ。前編に続き、今回はこのOracle ExalogicがWebLogic Serverの実行基盤としていかに最適化され、アプリケーション実行環境として、また仮想環境として高い性能を発揮するのかを説明する。(川添貴生)
Oracle Exalogicの特徴の1つは、40Gbpsの帯域幅を誇るInfiniBandだが、これが採用された背景を、日本オラクルの鏑木崇之氏(Fusion Middleware事業統括本部ソリューション本部 Cloud Application Foundationソリューション部セールスコンサルタント)は次のように説明する。
「現状のハードウェアは、CPUの高速化が進む一方で、ネットワークやHDDのパフォーマンスは伸び悩んでいるのが実情だ。このように速度差が生じていることで、ネットワークおよびHDDがボトルネックとなり、高速なCPUの処理能力を使い切れない状態になっている。また、フロントのWebサーバやデータベースとのデータ通信、クラスタ間通信など、ネットワークI/Oが多発するミドルウェア・レイヤではボトルネックとなり、パフォーマンスなどに大きな影響を及ぼす。
Oracle Exalogicは、この課題を3つのアプローチで解決している。まず1つは広帯域を持つInfiniBandの採用、2つ目はRDMA(Remote Direct Memory Access)やSDP(Sockets Direct Protocol)によるネットワーク・レイヤでの効率的なデータ転送、そして3つ目がソフトウェア・レイヤでの個別の最適化機能による効率的なデータ転送だ」
「従来のI/O処理でTCP/IPを利用した場合、トランスポート層やネットワーク層はカーネルを通じて処理されることになる。ただ、TCP/IPの処理は負荷が大きいことに加えて、カーネルとアプリケーションのそれぞれのバッファでコピーが行われるため、その際のコンテキスト・スイッチが発生するなど、さまざまなオーバーヘッドが生じる。RDMAなどの技術を利用することで、このオーバーヘッドを解消しようというのがExabusのコンセプトだ」
実際、Exabusを利用することにより、スループットを従来の4倍に高め、レイテンシは6分の1程度に抑えられるという。ネットワークを介してそれぞれに役割が異なる複数のコンポーネント間のデータ転送が多発するミドルウェア・レイヤでは、このパフォーマンス向上がもたらすメリットは極めて大きいだろう。
Oracle CoherenceとOracle TuxedoでもExabusが使われており、Oracle Coherenceではノード間通信の高速化、Oracle Tuxedoではドメイン間の通信に加えてドメイン内のノード間通信、そしてクライアントやデータベース、WebLogic Serverとの通信などにExabusを利用できる。WebLogic ServerもExabusに対応しているのに加えて、ソフトウェアの機能改善も図られている。以降、それらのExalogic 最適化機能を説明していく。
それでは、SDPが内部的に利用しているRDMAによる処理の流れを簡単に見ていこう。
通常、ネットワークを介してデータを転送する際には、まずCPUの1次キャッシュにデータをコピーし、TCP/IPの処理を行うためにメイン・メモリ上のOSのバッファにコピーを行う。そして、最終的にはアプリケーションにデータを渡す必要があるため、再度CPUを介してアプリケーション・バッファにデータをコピーするという流れになる。
RDMAを利用した場合、順序制御や再送制御、流量制御など、TCP/IPに実装されている多くの処理がInfiniBand HCA(Host Cahnnel Adapter)で行われ、ネイティブのInfiniBandを利用して、OS層を介することなくアプリケーション・バッファに直接書き込まれる。これによってOS層を経由することなく、処理を高速化できるというわけだ。
SDPのZero-Copyというモードでは、このようなRDMA の仕組みを利用している。これにより、ソケット・ベースの通信でRDMAを内部的に利用することが可能となっている。
Oracle Exalogicに組み込まれているソフトウェアのうち、Oracle CoherenceやOracle TuxedoではRDMAもしくはSDPを、WebLogic Server ではSDPを利用できる。これらはすべて設定ベースで利用可能だ。SDPを使うことにより、CPUリソース利用の効率化や高パフォーマンスを実現している
このほかにも、Oracle Exalogicならではのチューニングが施されている。その1つがワークマネージャの最適化機能だ。WebLogic Serverには、スレッド数を自動的に制御するワークマネージャという仕組みが備わっており、例えばリクエストが増えた際には自動的にスレッド数を1つ増やすといった制御を行う。Oracle Exalogicでは、この機能に改良が加わり、ハードウェアのスレッド数に合わせて32スレッドずつ増やすことが可能になった。これは、ECサイトでのセール開催時など、突発的に負荷が高まり、スレッドを1つずつ生成したのでは間に合わないようなケースで有効だろう。
さらに、InfiniBandの広帯域を有効に利用するため、Java New I/Oに盛り込まれた「Scatter/Gather I/O」によるMTUサイズの最適化も図られている。これは、InfiniBand経由でデータを転送する際、WebLogic Serverのデフォルトのチャンク・サイズである4KBごとに送受信するのではなく、チャンクを一括送受信することによってInfiniBandの帯域幅を有効に利用するという仕組みである。これにより転送レートの効率化を図ることができる。
そのほか、WebLogicクラスタ間通信でも最適化が施されている。Java New I/OのNon-blocking I/Oによる効率的なクラスタ間データ通信だ。ブロック処理を削減したコンカレント処理が可能になり、マクサーは1スレッドに対して複数の処理を割り当てることができる。これによって、より高速で効率的なクラスタ間通信を可能にしている。
これらのExalogic 最適化機能は、すべて管理コンソールでチェックボックスにチェックを入れるだけで��用できる。また、EECSのライセンスでは、HTTPセッション・レプリケーション時のオブジェクト・デシリアライズのコストを削減する「遅延デシリアライゼーション機能」や、レプリケーション時の高速化を図る「レプリケーション一方向RMI機能」などの機能も使い、より効率的な通信が行える。
このように、ハードウェアの性能を最大限に生かすさまざまな改良が施されている点を見れば、Oracle Exalogicが単なるアプライアンスではなく、ハードウェアとソフトウェアを高いレベルで融合したEngineered Systemsという次世代のシステムであることに納得していただけるだろう。
ここで注目していただきたいのは、仮想環境としてOracle Exalogicを運用する場合でも、パフォーマンスの低下が最小限に抑えられている点だ。これは、InfiniBandやSDPを仮想マシンから利用できることと、仮想マシンからのI/O 関連処理にSR-IOV(Single Root I/O Virtualization)というI/Oモデルを採用し、Hypervisor層のI/O処理を排除していることによる。これらはすべてデフォルトの状態で仮想マシンから利用可能だ。
特定アプリケーションでの比較ではあるが、ベアメタル環境のExalogicと仮想環境のExalogicのパフォーマンス比は98.7%、つまり性能低下は物理環境の1.3%に過ぎない。また、従来の仮想化ソフトウェアと比べて、Exalogicの仮想環境は4.6倍近いパフォーマンスを実現するという検証結果も出ている。
ここまで見てきたように、Oracle Exalogicは高性能なハードウェアと、それを効率的に利用するためのソフトウェアを最適なかたちで組み合わせることにより、極めて完成度の高いミドルウェア専用Engineered Systemに仕上がっている。ハードウェアも含め、現状のアプリケーション実行環境が抱える性能やコスト効率、管理効率などの課題を解決したいと考えている企業にとって、Oracle Exalogicは理想的なシステム基盤だとオラクルは自負している。
InfiniBandを利用した効率的なデータ転送
前編で説明したように、ハードウェアとソフトウェアを融合し、それぞれを最適化したかたちで実現したシステムがEngineered Systemsの基本コンセプトである。Oracle Exalogicは、このコンセプトに基づいて開発されたアプリケーション実行環境だ。Oracle Exalogicの特徴の1つは、40Gbpsの帯域幅を誇るInfiniBandだが、これが採用された背景を、日本オラクルの鏑木崇之氏(Fusion Middleware事業統括本部ソリューション本部 Cloud Application Foundationソリューション部セールスコンサルタント)は次のように説明する。
日本オラクル Fusion Middleware事業統括本部ソリューション本部 Cloud Application Foundationソリューション部セールスコンサルタントの鏑木崇之
Oracle Exalogicは、この課題を3つのアプローチで解決している。まず1つは広帯域を持つInfiniBandの採用、2つ目はRDMA(Remote Direct Memory Access)やSDP(Sockets Direct Protocol)によるネットワーク・レイヤでの効率的なデータ転送、そして3つ目がソフトウェア・レイヤでの個別の最適化機能による効率的なデータ転送だ」
OSによるTCP/IP処理の問題を解決するRDMAとSDP
前回も触れたように、Oracle ExalogicにはRDMAやSDP、そしてJava New I/Oといった技術を有効に利用するために「Exabus」と呼ばれる仕組みが組み込まれている。鏑木氏は、このExabusのコンセプトを次のように語る。「従来のI/O処理でTCP/IPを利用した場合、トランスポート層やネットワーク層はカーネルを通じて処理されることになる。ただ、TCP/IPの処理は負荷が大きいことに加えて、カーネルとアプリケーションのそれぞれのバッファでコピーが行われるため、その際のコンテキスト・スイッチが発生するなど、さまざまなオーバーヘッドが生じる。RDMAなどの技術を利用することで、このオーバーヘッドを解消しようというのがExabusのコンセプトだ」
実際、Exabusを利用することにより、スループットを従来の4倍に高め、レイテンシは6分の1程度に抑えられるという。ネットワークを介してそれぞれに役割が異なる複数のコンポーネント間のデータ転送が多発するミドルウェア・レイヤでは、このパフォーマンス向上がもたらすメリットは極めて大きいだろう。
Oracle CoherenceとOracle TuxedoでもExabusが使われており、Oracle Coherenceではノード間通信の高速化、Oracle Tuxedoではドメイン間の通信に加えてドメイン内のノード間通信、そしてクライアントやデータベース、WebLogic Serverとの通信などにExabusを利用できる。WebLogic ServerもExabusに対応しているのに加えて、ソフトウェアの機能改善も図られている。以降、それらのExalogic 最適化機能を説明していく。
既存アプリケーションでも、設定を変えるだけで高速通信を利用可能
WebLogic ServerにおけるExalogic 最適化の1つ目は、SDPの利用である。SDPは、WebLogic Server とTraffic Director(Exalogic Elastic Cloud Software[EECS]のライセンスで利用可能なソフトウェア・ロードバランサ)間、WebLogic Server間、WebLogic Server とデータベース間の各レイヤで利用できる。それでは、SDPが内部的に利用しているRDMAによる処理の流れを簡単に見ていこう。
通常、ネットワークを介してデータを転送する際には、まずCPUの1次キャッシュにデータをコピーし、TCP/IPの処理を行うためにメイン・メモリ上のOSのバッファにコピーを行う。そして、最終的にはアプリケーションにデータを渡す必要があるため、再度CPUを介してアプリケーション・バッファにデータをコピーするという流れになる。
RDMAを利用した場合、順序制御や再送制御、流量制御など、TCP/IPに実装されている多くの処理がInfiniBand HCA(Host Cahnnel Adapter)で行われ、ネイティブのInfiniBandを利用して、OS層を介することなくアプリケーション・バッファに直接書き込まれる。これによってOS層を経由することなく、処理を高速化できるというわけだ。
SDPのZero-Copyというモードでは、このようなRDMA の仕組みを利用している。これにより、ソケット・ベースの通信でRDMAを内部的に利用することが可能となっている。
Oracle Exalogicに組み込まれているソフトウェアのうち、Oracle CoherenceやOracle TuxedoではRDMAもしくはSDPを、WebLogic Server ではSDPを利用できる。これらはすべて設定ベースで利用可能だ。SDPを使うことにより、CPUリソース利用の効率化や高パフォーマンスを実現している
このほかにも、Oracle Exalogicならではのチューニングが施されている。その1つがワークマネージャの最適化機能だ。WebLogic Serverには、スレッド数を自動的に制御するワークマネージャという仕組みが備わっており、例えばリクエストが増えた際には自動的にスレッド数を1つ増やすといった制御を行う。Oracle Exalogicでは、この機能に改良が加わり、ハードウェアのスレッド数に合わせて32スレッドずつ増やすことが可能になった。これは、ECサイトでのセール開催時など、突発的に負荷が高まり、スレッドを1つずつ生成したのでは間に合わないようなケースで有効だろう。
さらに、InfiniBandの広帯域を有効に利用するため、Java New I/Oに盛り込まれた「Scatter/Gather I/O」によるMTUサイズの最適化も図られている。これは、InfiniBand経由でデータを転送する際、WebLogic Serverのデフォルトのチャンク・サイズである4KBごとに送受信するのではなく、チャンクを一括送受信することによってInfiniBandの帯域幅を有効に利用するという仕組みである。これにより転送レートの効率化を図ることができる。
そのほか、WebLogicクラスタ間通信でも最適化が施されている。Java New I/OのNon-blocking I/Oによる効率的なクラスタ間データ通信だ。ブロック処理を削減したコンカレント処理が可能になり、マクサーは1スレッドに対して複数の処理を割り当てることができる。これによって、より高速で効率的なクラスタ間通信を可能にしている。
これらのExalogic 最適化機能は、すべて管理コンソールでチェックボックスにチェックを入れるだけで��用できる。また、EECSのライセンスでは、HTTPセッション・レプリケーション時のオブジェクト・デシリアライズのコストを削減する「遅延デシリアライゼーション機能」や、レプリケーション時の高速化を図る「レプリケーション一方向RMI機能」などの機能も使い、より効率的な通信が行える。
このように、ハードウェアの性能を最大限に生かすさまざまな改良が施されている点を見れば、Oracle Exalogicが単なるアプライアンスではなく、ハードウェアとソフトウェアを高いレベルで融合したEngineered Systemsという次世代のシステムであることに納得していただけるだろう。
大規模な仮想環境におけるパフォーマンスの劣化も最小限に抑える
Oracle Exalogicには、クラウド環境として利用するための仕組みも用意されている。具体的には、「Exalogic Control」と呼ばれる管理ソフトウェアを利用して仮想的なデータセンターを構築し、IaaS環境を提供するためのプラットフォームとして利用したり、あるいはアプリケーションごとに仮想サーバや仮想ネットワーク、ストレージ領域を割り当てたりして運用することが可能となっている。ここで注目していただきたいのは、仮想環境としてOracle Exalogicを運用する場合でも、パフォーマンスの低下が最小限に抑えられている点だ。これは、InfiniBandやSDPを仮想マシンから利用できることと、仮想マシンからのI/O 関連処理にSR-IOV(Single Root I/O Virtualization)というI/Oモデルを採用し、Hypervisor層のI/O処理を排除していることによる。これらはすべてデフォルトの状態で仮想マシンから利用可能だ。
特定アプリケーションでの比較ではあるが、ベアメタル環境のExalogicと仮想環境のExalogicのパフォーマンス比は98.7%、つまり性能低下は物理環境の1.3%に過ぎない。また、従来の仮想化ソフトウェアと比べて、Exalogicの仮想環境は4.6倍近いパフォーマンスを実現するという検証結果も出ている。
ここまで見てきたように、Oracle Exalogicは高性能なハードウェアと、それを効率的に利用するためのソフトウェアを最適なかたちで組み合わせることにより、極めて完成度の高いミドルウェア専用Engineered Systemに仕上がっている。ハードウェアも含め、現状のアプリケーション実行環境が抱える性能やコスト効率、管理効率などの課題を解決したいと考えている企業にとって、Oracle Exalogicは理想的なシステム基盤だとオラクルは自負している。