Oracle Complex Event Processing のパフォーマンス Oracle ホワイト ペーパー 2008 年 11 月 更 新
Oracle Complex Event Processing のパフォーマンス はじめに... 3 Oracle Complex Event Processing のアーキテクチャ... 3 Oracle Complex Event Processing のリアルタイム カーネル... 6 Oracle JRockit Real Time... 6 ベンチマーク アプリケーション... 7 ベンチマーク 構 成 とベンチマーク 方 法... 9 負 荷 の 挿 入... 9 Oracle Complex Event Processing の 構 成... 9 ハードウェアとソフトウェア スタック... 9 ベンチマーク 方 法... 10 ベンチマーク 結 果... 11 結 論... 16 Oracle Complex Event Processing のパフォーマンス 2
Oracle Complex Event Processing のパフォーマンス はじめに Oracle Complex Event Processing は イベント 駆 動 型 アプリケーションをサポート するよう 設 計 された Java ベース(Java 2 Platform, Enterprise Edition を 除 く)の 軽 量 アプリケーション サーバーです イベント 駆 動 型 アプリケーションは 金 融 サー ビスなどの 市 場 で 使 用 されており 短 く 安 定 した( 確 定 的 な) 待 機 時 間 や 入 力 データの 超 高 速 ストリーミング 処 理 が 必 要 な 点 を 特 徴 としています そのため トランザクション ワークロードで 最 高 のスループットを 得 ることが 重 視 される 従 来 のアプリケーション サーバーとはパフォーマンス 上 の 課 題 がまったく 異 な ります このホワイト ペーパーのベンチマーク 調 査 では 資 本 市 場 の 金 融 フロントオフィ ス アプリケーションにおける 典 型 的 なユースケースを 取 り 上 げ 超 高 速 データ 転 送 時 において 短 い 待 機 時 間 を 実 現 する Oracle Complex Event Processing を 実 証 し ます 市 場 データの 複 数 の 受 信 ストリームを 監 視 する 信 号 生 成 シナリオを 実 装 し たベンチマーク アプリケーションを 使 用 して 一 部 のアクションをトリガーす る 特 定 条 件 の 発 生 を 監 視 します このベンチマーク 調 査 で Oracle Complex Event Processing は 最 大 100 万 イベント / 秒 の 挿 入 速 度 に 対 応 しつつ 短 い 平 均 待 機 時 間 と 最 大 待 機 時 間 を 維 持 することに 成 功 しています この 挿 入 速 度 でのサーバーにおける 完 全 処 理 パスの 平 均 待 機 時 間 は 67.3 マイクロ 秒 であり イベントの 99.4%が 200 マイクロ 秒 未 満 で 処 理 され 99.99%が 5 ミリ 秒 未 満 で 処 理 されています そのほか このホワイト ペーパーでは こうしたパフォーマンス 水 準 を 実 現 す る 製 品 機 能 に 加 え ベンチマークとその 結 果 の 詳 細 について 説 明 します Oracle Complex Event Processing のアーキテクチャ Oracle Complex Event Processing は CEP や EPL に 加 え EPL で 記 述 され た 問 合 せを POJO/Spring プログラミ ング モデルに 書 き 込 まれたカスタム Java コードと 緊 密 に 統 合 する 総 合 プ ラットフォームを 提 供 します こうし た 豊 富 な 開 発 プラットフォームによ り パフォーマンスが 損 なわれること はありません Oracle Complex Event Processing は イベント 処 理 向 け 製 品 の 中 でも 独 自 のアプ ローチを 採 用 しており 複 合 イベント 処 理 (CEP)エンジンやイベント 処 理 言 語 (EPL)に 加 え EPL で 記 述 された 問 合 せを POJO/Spring プログラミング モデル に 書 き 込 まれたカスタム Java コードと 緊 密 に 統 合 する 総 合 プラットフォームを 提 供 します Oracle Complex Event Processing は コンテナ サービスを 提 供 し ア プリケーションの 配 置 と 管 理 を 可 能 にする 真 のアプリケーション サーバーです このソリューションにおける 重 要 な 設 計 目 的 は こうした 豊 富 な 開 発 プラット フォームによりパフォーマンスが 損 なわれないようにすることです Oracle Complex Event Processing のパフォーマンス 3
Oracle Complex Event Processing の アーキテクチャは ランタイム CEP プロセッサ 開 発 環 境 の 3 つの 主 要 レ イヤーで 構 成 されています Oracle Complex Event Processing のアーキテクチャは ランタイム CEP プロセッ サ 開 発 環 境 の 3 つの 主 要 レイヤーで 構 成 されています 図 1 は プラットフォー ム アーキテクチャの 概 略 を 示 しています 最 下 位 には Java 仮 想 マシン(JVM) と Java コア クラスからなる Java ランタイムが 配 置 されています この 上 に Oracle Complex Event Processing が 配 置 されています Oracle Complex Event Processing は 標 準 の Java Platform, Standard Edition 5 API 仕 様 を 使 用 して 実 装 され Oracle JRockit と Oracle JRockit Real Time で 認 定 されています 最 小 の 待 機 時 間 と 最 高 の 確 定 性 は Oracle JRockit をベースとし 確 定 的 ガベージ コレクションの 拡 張 機 能 を 備 えた Oracle JRockit Real Time の 実 行 環 境 を 使 用 した 場 合 に 得 ること ができます 図 1:Oracle Complex Event Processing のプラットフォーム アーキテクチャ 概 略 Oracle Complex Event Processing は Open Services Gateway Initiative のフ レームワークをベースとした 軽 量 の モジュール アーキテクチャを 使 用 し て 実 装 される Java コンテナです Oracle Complex Event Processing は Open Services Gateway Initiative のフレームワー クをベースとした 軽 量 のモジュール アーキテクチャを 使 用 して 実 装 される Java コンテナです コンテナ サービスとして ロギング セキュリティ 管 理 など のサービスに 加 え よりイベント 駆 動 型 アプリケーションに 特 化 したストリーム 管 理 や CEP エンジンなどのサービスが 提 供 されます さらに Oracle Complex Event Processing のコアにはリアルタイム カーネルが 採 用 されており 短 い 待 機 時 間 と 確 定 性 を 実 現 するスレッド スケジューリングと 同 期 をサポートしていま す Spring ベースの 依 存 性 注 入 により POJO や EPL 問 合 せの 組 合 せからなるア プリケーションをサーバーへ 動 的 に 配 置 して さまざまなサービスにアクセスで きます 全 体 のアーキテクチャを 完 成 させているのは イベントの 待 機 時 間 を 正 確 に 監 視 する 統 合 監 視 フレームワークと Eclipse 統 合 開 発 環 境 (IDE)に 基 づい た 開 発 環 境 です Oracle Complex Event Processing のパフォーマンス 4
イベント 処 理 パスにストリーム コン ポーネントは 必 須 ではありませんが 同 時 実 行 性 に 限 界 があるアプリケー ションの 同 時 実 行 性 を 向 上 する 場 合 には 有 効 です 図 2 は Oracle Complex Event Processing アプリケーションの 通 常 のデータ フロー を 示 しています インバウンド( 左 ) 側 は 1 つまたは 複 数 のイベント ソース からのイベント データ ストリームを 示 します 受 信 データは 受 信 後 アンマ シャル 化 されて アダプタ モジュール 内 のイベントの 内 部 表 現 に 変 換 されま す イベントの 内 部 表 現 とは アプリケーションによって 定 義 された Java オブジェ クトや Java マップを 意 味 します アダプタによりイベント オブジェクトが 作 成 されると アダプタで"リスナー"として 登 録 されているすべての 下 流 コンポーネ ントにイベント オブジェクトが 送 信 されます 図 2 では リスナー コンポー ネントはストリーム コンポーネントと 呼 ばれます これはつまり 上 流 と 下 流 のコンポーネントの 相 互 の 非 同 期 操 作 を 可 能 にする 関 連 スレッド プールをもっ たキューのことです イベント 処 理 パスにストリーム コンポーネントは 必 須 で はありませんが 単 独 接 続 によるデータ フィードなど 同 時 実 行 性 に 限 界 があ るアプリケーションを 向 上 する 場 合 に 大 いに 役 立 ちます 図 2 のデータ フローのうち もう 1 つのコンポーネントはプロセッサ コンポー ネントです プロセッサは CEP エンジンのインスタンスを 表 し EPL で 記 述 され た 問 合 せをホストします この 問 合 せは イベント ストリームのフィルタリン グ 集 計 パターン 照 合 結 合 をサポートしています 設 定 された EPL 問 合 せの 出 力 は 任 意 の 下 流 リスナーに 送 信 されます この 例 では POJO がプロセッサ 出 力 をリスニングするよう 設 定 されています POJO は 問 合 せにより 出 力 されたイ ベントを 追 加 処 理 し アクションのトリガーや 標 準 または 独 自 のメッセージン グ プロトコルを 介 して 外 部 システムへの 出 力 データの 送 信 をおこないます 図 2:Oracle Complex Event Processing アプリケーションの 通 常 のデータ フロー 相 互 接 続 されたアダプタ ストリーム プロセッサ POJO コンポーネントを 総 称 して "イベント 処 理 ネットワーク(EPN)"と 呼 びます 図 2 の 例 は 一 般 的 なトポ ロジを 示 していますが 任 意 の 数 のコンポーネントを 任 意 の 順 序 で 相 互 接 続 して 任 意 の EPN グラフを 作 成 できます Oracle Complex Event Processing のパフォーマンス 5
Oracle Complex Event Processing のリアルタイム カーネル 一 般 的 なイベント 駆 動 型 アプリケーションの 厳 しい 待 機 時 間 の 要 件 を 満 たすには スレッド スケジューリング 同 期 および 入 出 力 (I/O)に 特 化 したサポートが 必 要 です Oracle Complex Event Processing のカーネルで 採 用 されている 方 法 は 次 の 短 い 待 機 時 間 の 処 理 をサポートしています レイテンシ クリティカル パスのブロッキングとコンテキスト 切 替 え を 最 小 限 に 抑 えるスレッド スケジューリング イベントは 可 能 な 限 り コンテキストの 切 替 えなしで 同 一 スレッド 上 の 完 全 実 行 パスを 経 由 し て 実 行 されます これは 短 い 待 機 時 間 の 処 理 に 最 適 なアプローチで 順 次 処 理 が 必 要 なアプリケーションでイベントを 順 次 処 理 できます ただ し スレッド 間 でイベントを 受 け 渡 す 方 が 適 切 な 場 合 もあります たと えば 単 一 の 受 信 ネットワーク 接 続 からのデータを 複 数 のスレッドで 同 時 処 理 する 場 合 です カーネルの 柔 軟 なスレッド プールと 受 渡 しメカ ニズムにより 総 待 機 時 間 への 影 響 を 最 小 限 に 抑 えて 処 理 パスの 任 意 の 場 所 に 同 時 実 行 性 を 導 入 できます 同 期 戦 略 により 待 機 時 間 発 生 のおもな 原 因 となるロック 競 合 を 最 小 限 に 抑 えます オブジェクトの 再 利 用 メモリ 効 率 の 高 いデータ 構 造 の 使 用 CEP エン ジンの 保 存 時 間 枠 の 最 適 管 理 などの 綿 密 なメモリ 管 理 により 短 い 待 機 時 間 の 処 理 をサポートします メモリの 最 適 化 により 割 当 て 率 とヒー プ 断 片 化 の 両 方 が 削 減 され ガベージ コレクタの 休 止 時 間 を 最 小 限 に 抑 えることができるため 待 機 時 間 を 短 くすることが 可 能 です プラガブルなアダプタ フレームワークを 使 用 して 各 種 ネットワーク プロトコル 用 の 高 性 能 アダプタを 作 成 できます また さまざまなマル チスレッディングと I/O ハンドラ ディスパッチ ポリシーをサポートし ています Oracle JRockit Real Time( 次 項 で 説 明 )を 使 用 して 最 小 の 待 機 時 間 と 最 高 の 確 定 性 を 実 現 できます Oracle JRockit Real Time Oracle Complex Event Processing は Oracle JRockit Real Time の 標 準 バー ジョンで 認 定 されていますが 最 小 の 待 機 時 間 と 最 高 の 確 定 性 は Oracle JRockit Real Time ソリューションで 実 行 した 場 合 に 得 ることができます Oracle JRockit Real Time は 短 い 待 機 時 間 と 確 定 的 ガベージ コレクショ ンの 拡 張 機 能 を 備 えた Oracle JRockit JVM で 構 成 されています Oracle Complex Event Processing は Oracle JRockit Real Time の 標 準 バージョンで 認 定 されていますが 最 小 の 待 機 時 間 と 最 高 の 確 定 性 は Oracle JRockit Real Time ソ リューションで 実 行 した 場 合 に 得 ることができます Oracle JRockit Real Time は 短 い 待 機 時 間 と 確 定 的 ガベージ コレクションを 実 現 する 拡 張 機 能 を 備 えた Oracle JRockit JVM から 構 成 されています 通 常 のガベージ コレクションのアル ゴリズムでは コレクション 実 行 時 にアプリケーションの 全 スレッドが 停 止 しま す そのため 環 境 によっては ガベージ コレクションの 休 止 時 間 が 非 常 に 長 く( 数 秒 以 上 に)なり 待 機 時 間 発 生 のおもな 原 因 となる 場 合 があります Oracle JRockit Real Time の 確 定 的 ガベージ コレクタは ガベージ コレクションの 休 止 時 間 を 短 縮 し 予 測 可 能 性 を 高 めるためのさまざまなアプローチを 展 開 します 確 定 的 ガベージ コレクタは アプリケーションの 実 行 中 にガベージ コレクショ ンの 大 部 分 を 処 理 し 重 要 な 段 階 でのみ 短 時 間 休 止 します さらに Oracle JRockit Real Time コレクタが 各 休 止 時 間 を 監 視 して ガベージ コレクションの 所 要 時 間 がユーザーの 指 定 した 目 標 休 止 時 間 を 超 過 しないようにします たとえば ユー ザーの 指 定 した 目 標 休 止 時 間 が 10 ミリ 秒 の 場 合 確 定 的 ガベージ コレクタは 各 Oracle Complex Event Processing のパフォーマンス 6
ガベージ コレクションの 休 止 時 間 を 10 ミリ 秒 以 内 に 制 限 し 従 来 のガベージ コレクションのアルゴリズムよりも 高 い 予 測 可 能 性 を 提 供 します 確 定 的 ガベージ コレクション 機 能 に 加 え Oracle JRockit Real Time ソ リューションには Oracle JRockit JVM のランタイム アナライザ ツー ルと 統 合 されたレイテンシ アナライ ザ ツールが 搭 載 されています 確 定 的 ガベージ コレクション 機 能 に 加 え Oracle JRockit Real Time ソリューショ ンには Oracle JRockit JVM のランタイム アナライザ ツールと 統 合 されたレイ テンシ アナライザ ツールが 搭 載 されています レイテンシ アナライザ ツー ルは Java アプリケーションの 待 機 時 間 の 原 因 を 特 定 して 分 析 する 独 自 のパ フォーマンス 分 析 ツールです アプリケーション 実 行 中 に 中 央 処 理 装 置 (CPU) 時 間 がどこで 消 費 されているかのみを 重 視 する 一 般 的 なプロファイリング ツー ルとは 異 なり レイテンシ アナライザ ツールでは アプリケーションのブロッ キングや 待 機 の 各 種 スレッドがいつ どこで どのくらいの 時 間 発 生 しているか について 詳 細 情 報 が 提 供 されます レイテンシ アナライザ ツールでは スレッ ド 待 機 の 原 因 とその 期 間 を 特 定 し その 原 因 がガベージ コレクション I/O 同 期 によるものであるか またはアプリケーションの 明 示 的 要 求 に 基 づくスリープ や 待 機 によるものであるかを 判 断 できます 待 機 時 間 の 原 因 を 特 定 して 分 析 する 機 能 は 待 機 時 間 に 配 慮 が 必 要 なアプリケーションのチューニングに 不 可 欠 なも のです そのため レイテンシ アナライザ ツールは このホワイト ペーパー で 取 り 上 げるベンチマークのチューニングで 幅 広 く 利 用 されています ベンチマーク アプリケーション このベンチマーク 調 査 で 使 用 されるアプリケーションは 市 場 データの 複 数 の 受 信 ストリームを 監 視 する 信 号 生 成 シナリオを 実 行 し 一 部 のアクションをトリ ガーする 特 定 条 件 の 発 生 を 監 視 します これは フロントオフィスの 取 引 環 境 で はごく 一 般 的 なシナリオです 図 3 は ベンチマーク テストの 全 体 構 造 を 示 し ています 図 3:このベンチマーク 調 査 では シミュレーション データが 生 成 され TCP/IP 接 続 で イベント プロセッサに 送 信 されます イベント プロセッサは データを 監 視 して 2 つの 特 定 条 件 を 検 索 します Oracle Complex Event Processing のパフォーマンス 7
受 信 データは 負 荷 生 成 ツールを 使 用 して 生 成 されます 負 荷 生 成 ツールは 株 式 市 場 のシミュレーション データを 作 成 し 設 定 した 計 測 速 度 で 1 つまたは 複 数 の TCP 接 続 を 介 してサーバーに 送 信 します 送 信 データの 形 式 は 負 荷 生 成 ツールとアダプタの 実 装 に 固 有 の 形 式 で コンパクトに 設 計 されます イベ ント プロセッサ 内 では アダプタがソケットから 受 信 データを 読 み 取 り ア ンマーシャル 化 を 実 行 し 各 株 式 ティッカーにイベント インスタンス( 特 定 の 規 則 に 則 った Java オブジェクト)を 作 成 して イベントをイベント プロセッ サに 転 送 します このベンチマーク 調 査 では イベン ト プロセッサが 200 個 の 株 式 記 号 (ティッカー シンボル)の 各 受 信 デー タを 監 視 するよう 設 定 されています 各 株 式 記 号 について 2 つの 価 格 関 連 条 件 を 満 たしているかどうか 監 視 さ れます イベント プロセッサは 200 個 の 株 式 記 号 (ティッカー シンボル)の 各 受 信 データを 監 視 するよう 設 定 されています 各 株 式 記 号 について 次 の 2 つの 条 件 を 満 たしているかどうかが 監 視 されます 株 価 が 直 前 価 格 から 2% 以 上 上 昇 または 下 落 している 株 価 が 下 落 することなく 3 日 以 上 連 続 で 上 昇 している 株 式 記 号 WSC について この 2 つのルールの 実 装 に 使 用 される EPL 構 文 は 以 下 のとおりです SELECT symbol, lastprice, perc(lastprice), clienttimestamp, timestamp FROM (select * from StockTick where symbol='wsc') RETAIN 2 EVENTS HAVING PERC(lastPrice) > 2.0 OR PERC(lastPrice) < -2.0 SELECT symbol, lastprice, trend(lastprice), clienttimestamp, timestamp FROM (select * from StockTick where symbol='wsc') RETAIN 3 EVENTS HAVING TREND(lastPrice) > 2 この 2 つの 問 合 せの 複 製 が 監 視 対 象 の 200 個 の 記 号 に 対 して 作 成 されるため 最 終 的 には 合 計 400 個 の 問 合 せが 作 成 されます イベント プロセッサはこの 400 個 の 問 合 せを 各 受 信 イベントに 対 して 実 行 する 必 要 があります 受 信 イベントが 2 つのルールのいずれかに 一 致 すると SELECT 句 で 指 定 されたフィールドをもつ 出 力 イベントが 生 成 され 下 流 のリスナーに 送 信 されます この 例 では 下 流 の リスナーは Java POJO となります Java POJO は 受 信 した 出 力 イベントに 基 づい て ベンチマーク アプリケーションの 統 計 情 報 と 待 機 時 間 データを 集 計 します ベンチマーク アプリケーションの 待 機 時 間 データは アダプタと POJO の 取 得 したタイムスタンプに 基 づいて 計 算 されます アダプタは ソケットからのデー タ 読 取 り 後 アンマーシャル 化 前 に 初 回 タイムスタンプを 取 得 します 初 回 タイ ムスタンプは アダプタの 作 成 する 各 イベントに 挿 入 され イベント プロセッ サ 経 由 で 渡 されて 一 致 規 則 により 生 成 される 出 力 イベントに 挿 入 されます POJO が 出 力 イベントを 受 信 すると 最 終 タイムスタンプを 取 得 して アダプタの 作 成 したタイムスタンプを 差 し 引 くことによりイベント 処 理 の 待 機 時 間 を 計 算 し ます この 処 理 の 待 機 時 間 を 集 計 して ベンチマーク アプリケーションの 実 行 時 間 における 待 機 時 間 の 合 計 を 算 出 します Oracle Complex Event Processing のパフォーマンス 8
ベンチマーク 構 成 とベンチマーク 方 法 負 荷 の 挿 入 負 荷 生 成 ツールを 使 用 して CEP プロセッサ サーバーに 開 く 接 続 数 と 各 接 続 のデータ 送 信 速 度 を 特 定 できます ここでは 全 接 続 の 総 送 信 速 度 を" 総 挿 入 速 度 "と 呼 ぶことにします このベンチマークでは 負 荷 生 成 ツールが 各 イベントに 送 信 するデータは 株 式 記 号 シミュレーション 価 格 タイムスタンプから 構 成 さ れています 送 信 データの 平 均 サイズは 1 イベントあたり 20 バイト(TCP/IP ヘッ ダーを 除 く)です 株 式 記 号 は 1,470 個 の 異 なる 株 式 記 号 のリストを 繰 り 返 し 使 用 して 作 成 されます 負 荷 生 成 ツールが 複 数 の 接 続 を 開 くように 設 定 されると 株 式 記 号 リストは 接 続 ごとに 均 等 にパーティション 化 されます 価 格 データが 幾 何 学 的 ブラウン 運 動 アルゴリズムに 基 づいて 動 的 に 生 成 され 株 式 記 号 が 送 信 さ れるたびに 価 格 が 更 新 されます Oracle Complex Event Processing の 構 成 CEP プロセッサ サーバーのイベント 処 理 ネットワーク 構 成 は 前 項 で 説 明 した ように 1 つのアダプタ インスタンス 1 つのプロセッサ インスタンス 1 つ の POJO から 構 成 されています アダプタは 1 接 続 あたり 1 スレッドのブロッキング モデルを 使 用 して 受 信 デー タの 読 取 りとサーバー 内 のイベントの 配 信 を 実 行 するよう 設 定 されています こ のアダプタは 合 計 400 個 の 問 合 せ( 記 号 ごとに 2 つのルールをもつ 200 種 類 の 記 号 )で 構 成 されているプロセッサに 挿 入 された 全 入 力 イベントを 送 信 します 設 定 された 各 問 合 せは 各 入 力 イベントに 対 して 実 行 され 条 件 に 一 致 するたび に 出 力 イベントが 下 流 の POJO に 送 信 されます ハードウェアとソフトウェア スタック ハードウェアは 1 台 の CEP プロセッサ サーバーと 1 台 の 負 荷 生 成 マシンで 構 成 され ギガビット イーサネット ネットワークにより 接 続 されています サー バーと 負 荷 生 成 マシンのハードウェア 構 成 およびソフトウェア スタックは 同 一 です ベンチマーク 調 査 のコンポーネントの 技 術 仕 様 は 表 1 のとおりです Oracle Complex Event Processing のパフォーマンス 9
コンポーネント ハードウェア プラットフォーム 技 術 仕 様 クアッドコア Intel Xeon7300 プロセッサ 搭 載 サーバー 4 つのクアッドコア Intel X7350 プロセッサ (2.93GHz 合 計 16 コア) 1 プロセッサあたり 8MB の L2 キャッシュ(4 コア 共 有 ) 32GB の RAM オペレーティング システム Red Hat Enterprise Linux 5.0(32 ビット 版 カーネル 2.6.18-8) JVM Oracle JRockit Real Time 2.0 1GB のヒープ サイズ 確 定 的 ガベージ コレクション 対 応 Oracle Complex Event Processing サーバー Oracle Complex Event Processing 2.0 (パッチ ID:XQWK をサポート) 表 1:ベンチマーク 調 査 の 各 コンポーネントの 技 術 仕 様 ベンチマーク 方 法 ベンチマーク データの 収 集 方 法 は 次 のとおりです 負 荷 生 成 ツールを 使 用 してサーバーに 10 の 接 続 を 開 き データを 1 接 続 につき 10 万 イベント/ 秒 で 送 信 して 15 分 間 の 初 期 ウォームアップを 実 行 します 初 期 ウォームアップが 完 了 したら 負 荷 生 成 ツールを 使 用 し 1~10 の 接 続 数 で データをそれぞれの 接 続 につき 10 万 イベント/ 秒 で 送 信 する 処 理 を 10 回 実 行 します( 最 大 挿 入 速 度 は 100 万 イベント/ 秒 です) 各 実 行 時 間 は 10 分 間 です 接 続 数 を 10 に 固 定 し 1 接 続 あたりの 挿 入 速 度 を 1 万 イベントから 10 万 イベントまで 増 加 させ さらに 10 回 実 行 します( 最 大 挿 入 速 度 は 100 万 イベント/ 秒 です) 各 実 行 時 間 は 10 分 間 です 全 実 行 での 挿 入 速 度 出 力 イベント 速 度 平 均 待 機 時 間 絶 対 最 大 待 機 時 間 待 機 時 間 の 分 布 が 収 集 されます Oracle Complex Event Processing のパフォーマンス 10
ベンチマーク 結 果 表 2 と 図 4 および 図 5 は 1~10 の 接 続 数 で 1 接 続 あたりの 挿 入 速 度 を 10 万 イ ベント/ 秒 にした 場 合 の 測 定 結 果 を 示 しています 表 2:1~10 の 接 続 数 で 1 接 続 あたりの 挿 入 速 度 を 10 万 イベント/ 秒 にした 場 合 図 4:1~10 の 接 続 数 (10 万 イベント/ 秒 ~100 万 イベント/ 秒 )での 平 均 待 機 時 間 Oracle Complex Event Processing のパフォーマンス 11
図 5:1~10 の 接 続 数 (10 万 イベント/ 秒 ~100 万 イベント/ 秒 )での 最 大 待 機 時 間 先 ほど 説 明 したように 待 機 時 間 の 値 は 条 件 に 一 致 した 場 合 に POJO に 転 送 さ れるイベントに 対 してのみ 収 集 されます 待 機 時 間 の 値 は アダプタの 初 回 タイ ムスタンプ(アンマーシャル 化 が 実 行 され 内 部 イベント オブジェクトが 作 成 される 前 )から POJO のイベント 受 信 時 のタイムスタンプまでの 待 機 時 間 を 表 し ます 表 3 を 見 ると 負 荷 増 加 時 の 出 力 イベント 速 度 は 一 定 で 挿 入 速 度 の 3.9%となっ ています 平 均 待 機 時 間 と 最 大 待 機 時 間 は 接 続 数 と 総 挿 入 速 度 が 増 加 するにつ れ 徐 々に 増 加 しています 20 万 イベント/ 秒 から 70 万 イベント/ 秒 への 負 荷 増 加 時 における 99.99 パーセンタイルの 待 機 時 間 はほぼ 一 定 (2.1 ミリ 秒 ~2.6 ミリ 秒 ) で そのあと 挿 入 速 度 が 100 万 イベント/ 秒 に 近 づくにつれ 若 干 増 加 しています 100 万 イベント/ 秒 のベンチマークでの 最 大 負 荷 時 には 99.99 パーセンタイルの 待 機 時 間 と 平 均 待 機 時 間 は 依 然 としてきわめて 低 く しかも 絶 対 最 大 待 機 時 間 につ いては 負 荷 が 増 加 するにつれ 若 干 ではあるものの 減 少 しています 表 3 と 図 6 および 図 7 は 接 続 数 を 10 に 固 定 して 挿 入 速 度 を 増 加 した 場 合 の 測 定 結 果 を 示 しています Oracle Complex Event Processing のパフォーマンス 12
表 3: 接 続 数 10 で 挿 入 速 度 を 10 万 イベント/ 秒 ~100 万 イベント/ 秒 まで 増 加 した 場 合 図 6: 接 続 数 10 で 挿 入 速 度 を 10 万 イベント/ 秒 ~100 万 イベント/ 秒 まで 増 加 した 場 合 の 平 均 待 機 時 間 図 7: 接 続 数 10 で 挿 入 速 度 を 10 万 イベント/ 秒 ~100 万 イベント/ 秒 まで 増 加 した 場 合 の 最 大 待 機 時 間 Oracle Complex Event Processing のパフォーマンス 13
接 続 数 を 固 定 して 負 荷 が 増 加 した 場 合 の 待 機 時 間 の 測 定 結 果 は 接 続 数 を 増 加 し て 負 荷 が 増 加 した 場 合 の 測 定 結 果 と 酷 似 しています こうした 結 果 の 類 似 性 は 特 定 の 入 力 負 荷 をかけた 場 合 システムのパフォーマンスはデータ 挿 入 時 に 使 用 する 接 続 数 とはほぼ 無 関 係 であることを 示 しています 40 万 ~70 万 イベント/ 秒 の 範 囲 の 最 大 待 機 時 間 の 曲 線 に 差 異 が 見 られるのは この 範 囲 では 接 続 数 を 減 らすことで 特 定 負 荷 での 最 大 待 機 時 間 が 減 少 することを 示 しています 図 8 と 図 9 のヒストグラムは 挿 入 速 度 100 万 イベント/ 秒 での 待 機 時 間 の 分 布 を 示 しています 最 初 のヒストグラムでは Y 軸 に 均 等 目 盛 を 使 用 しており 200 マイクロ 秒 超 のイベント 数 を 1 つの 棒 グラフ(かろうじて 見 える 程 度 )にまとめ てあります もう 1 つのヒストグラムでは Y 軸 に 対 数 目 盛 を 使 用 して 同 じデー タを 表 示 し 200 マイクロ 秒 超 の 待 機 時 間 範 囲 の 詳 細 を 表 示 しています この 2 つのヒストグラムにより 待 機 時 間 範 囲 の 最 小 値 に 向 かって 分 布 の 歪 度 が 大 きく なり 100 万 イベント/ 秒 の 挿 入 速 度 では 待 機 時 間 の 値 の 86.3%が 100 マイクロ 秒 未 満 99.4%が 200 マイクロ 秒 未 満 となっていることがわかります 図 8:200 マイクロ 秒 超 の 範 囲 に 均 等 目 盛 を 使 用 した 挿 入 速 度 100 万 イベント/ 秒 での 出 力 待 機 時 間 の 値 の 分 布 Oracle Complex Event Processing のパフォーマンス 14
図 9: 対 数 目 盛 を 使 用 した 100 万 イベント/ 秒 で 10 分 間 実 行 した 場 合 の 出 力 待 機 時 間 の 値 図 10 は 100 万 イベント/ 秒 でベンチマーク アプリケーションを 実 行 した 場 合 の ガベージ コレクションの 休 止 時 間 を 示 しています ここでは 合 計 477 のガベー ジ コレクションが 10 分 以 上 にわたって 実 行 されました ガベージ コレクショ ンの 実 行 中 の 最 大 休 止 時 間 は 17 ミリ 秒 であり 休 止 時 間 の 97%が 15 ミリ 秒 以 下 におさまっています Oracle JRockit Real Time の 機 能 を 使 用 して このように 短 く 予 測 可 能 なガベージ コレクションの 休 止 時 間 を 維 持 できることが アプリケー ションの 最 大 待 機 時 間 の 値 を 抑 制 するおもな 要 因 となっています 図 10: 挿 入 速 度 100 万 イベント/ 秒 で 10 分 以 上 実 行 した 場 合 のガベージ コレクションの 休 止 時 間 Oracle Complex Event Processing のパフォーマンス 15
結 論 このホワイト ペーパーでは Oracle Complex Event Processing の 全 体 のアーキテ クチャと イベント 駆 動 型 アプリケーションで 高 パフォーマンスを 実 現 するため の 以 下 の 機 能 と 設 計 特 性 について 説 明 しました ロギング セキュリティ 管 理 などのサービスに 加 え よりイベント 駆 動 型 アプリケーションに 特 化 したストリーム 管 理 や CEP エンジンなどを 含 めたコンテナ サービス Oracle Complex Event Processing のカーネルによる スレッド スケジュー リング 同 期 I/O に 特 化 したサポート 短 い 待 機 時 間 と 確 定 的 ガベージ コレクションのための 拡 張 機 能 を 備 え た Oracle JRockit JVM から 構 成 される Oracle JRockit Real Time Java アプリケーションの 待 機 時 間 の 原 因 を 特 定 して 分 析 する Oracle JRockit のランタイム アナライザ ツールと 統 合 されたレイテンシ ア ナライザ ツール イベントの 待 機 時 間 を 正 確 に 監 視 する 統 合 監 視 フレームワークと Eclipse 統 合 開 発 環 境 (IDE)に 基 づいた 開 発 環 境 ベンチマーク 調 査 の 結 果 Oracle Complex Event Processing により 超 高 負 荷 時 でも 短 く 予 測 可 能 な 待 機 時 間 を 得 られることが 明 らかになりま した Oracle Complex Event Processing のパフォーマンス 特 性 は ごく 一 般 的 なイベント 処 理 のユースケースを 使 用 して 調 査 しました その 結 果 Oracle Complex Event Processing により 超 高 負 荷 時 でも 短 く 予 測 可 能 な 待 機 時 間 を 得 られることが 明 ら かになりました Oracle Complex Event Processing のパフォーマンス 16
Oracle Complex Event Processing のパフォーマンス 2008 年 11 月 更 新 Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A. 海 外 からのお 問 い 合 わせ 窓 口 : 電 話 :+1.650.506.7000 ファクシミリ:+1.650.506.7200 www.oracle.com Copyright 2008, Oracle and/or its affiliates. All rights reserved. 本 文 書 は 情 報 提 供 のみを 目 的 として 提 供 されており ここに 記 載 され る 内 容 は 予 告 なく 変 更 されることがあります 本 文 書 は その 内 容 に 誤 りがないことを 保 証 するものではなく また 口 頭 による 明 示 的 保 証 や 法 律 による 黙 示 的 保 証 を 含 め 商 品 性 ないし 特 定 目 的 適 合 性 に 関 する 黙 示 的 保 証 および 条 件 などのいかなる 保 証 お よび 条 件 も 提 供 するものではありません オラクルは 本 文 書 に 関 する いかなる 法 的 責 任 も 明 確 に 否 認 し 本 文 書 によって 直 接 的 または 間 接 的 に 確 立 される 契 約 義 務 はないものとします 本 文 書 はオラクル 社 の 書 面 による 許 可 を 前 もって 得 ることなく いかなる 目 的 のためにも 電 子 または 印 刷 を 含 むいかなる 形 式 や 手 段 によっても 再 作 成 または 送 信 することはできません Oracle は 米 国 Oracle Corporation およびその 子 会 社 関 連 会 社 の 登 録 商 標 です そのほかの 名 称 はそれぞれの 会 社 の 商 標 です