ストリームデータ処理基盤 uCosminexus Stream Data Platform - Application Framework システム構築・運用ガイド

[目次][索引][前へ][次へ]

2.7.1 ストリームデータ処理エンジンに関するメモリ使用量の見積もり

ここでは,ストリームデータ処理エンジンに関するメモリ使用量の見積もり方法について説明します。

ストリームデータ処理エンジンに関するメモリ使用量は,SDPサーバ用定義ファイルのSDPサーバ用JavaVMオプションファイル(jvm_options.cfg)の次の表に示すパラメーターで指定します。

表2-8 ストリームデータ処理エンジンに関するメモリ使用量を指定するパラメーター

項番 パラメーター 説明
1 SDP_INITIAL_MEM_SIZE Javaヒープの初期サイズを設定します。デフォルト値は,512メガバイトです。
2 SDP_MAX_MEM_SIZE Javaヒープの最大サイズを設定します。デフォルト値は,1,024メガバイトです。

デフォルト値ではメモリ使用量が不足する場合には,各パラメーターの値を変更してください。ストリームデータの処理には,以降で説明するストリームデータ処理エンジンに関するメモリ使用量が固定で必要となります。ガーベージコレクションの発生を低減させるため,ここで計算した値を基に,各パラメーターに余裕のある値を指定してください。

SDPサーバ用JavaVMオプションファイルのパラメーターについては,「8.4 SDPサーバ用JavaVMオプションファイル(jvm_options.cfg)」を参照してください。

ストリームデータ処理エンジンに関するメモリ使用量について,項目ごとに説明します。

<この項の構成>
(1) SDPサーバの実行に必要なメモリ使用量
(2) タプル一つ当たりに必要なメモリ使用量
(3) タプルの保持に必要なメモリ使用量
(4) ストリームキューで使用する要素数の上限値の変更に必要なメモリ使用量
(5) APIトレースのバッファーの内容の変更に必要なメモリ使用量
(6) タプルログの取得に必要なメモリ使用量
(7) クエリグループの実行に必要なメモリ使用量
(8) タイムスタンプ調整に必要なメモリ使用量

(1) SDPサーバの実行に必要なメモリ使用量

SDPサーバの実行に必要なメモリ使用量は,145メガバイトです。

(2) タプル一つ当たりに必要なメモリ使用量

タプル一つ当たりに必要なメモリ使用量は,タプル一つ当たりのサイズで決まります。タプル一つ当たりのサイズは,次に示す計算式で求められます。

タプル一つ当たりのサイズ(単位:バイト)=
   500+ユーザー定義データ領域サイズ
注※
タプル固定領域サイズ(単位:バイト)です。

計算式中の「ユーザー定義データ領域サイズ」は,ユーザーがCQLのスキーマで定義したデータ型とその数によって決まります。ユーザー定義データ領域サイズは,次に示す計算式で求められます。

ユーザー定義データ領域サイズ(単位:バイト)=
   (256×ユーザー定義データ数)+(文字列データで定義した文字列長×2)
注※
データ一つ当たりのサイズ(単位:バイト)です。

(3) タプルの保持に必要なメモリ使用量

ウィンドウ演算に使用するウィンドウのサイズが大きくなるほど,SDPサーバ内に保持するタプルも増えるため,タプルの保持に必要なメモリ使用量が増加します。ウィンドウのサイズは,タプルの数(ROWSウィンドウ),または時間(RANGEウィンドウ)で指定します。

ウィンドウ演算を使用する場合のメモリ使用量は,次の計算式で求められます。なお,RANGEウィンドウの場合は,時刻解像度を指定するかどうかで計算式が異なります。

ROWSウィンドウの場合
   メモリ使用量(単位:バイト)=
      A×ROWSウィンドウで指定したタプルの数
      +50,000
 
RANGEウィンドウの場合(時刻解像度を指定しないとき)
   メモリ使用量(単位:バイト)=
      A×RANGEウィンドウで指定した時間
      ×単位時間当たりのタプルの入力数+50,000
 
RANGEウィンドウの場合(時刻解像度を指定するとき)
   メモリ使用量(単位:バイト)=
      A×RANGEウィンドウで指定した時間
      ÷時刻解像度で指定したメッシュ間隔
      ×メッシュ間隔当たりのタプル入力数+50,000
(凡例)
A:「(2) タプル一つ当たりに必要なメモリ使用量」で示したタプル一つ当たりのサイズです。
注※
ウィンドウ固定領域サイズ(単位:バイト)です。

時刻解像度の指定は,データの入力頻度を予測することが困難な場合や,メモリ使用量を一定量に抑えたい場合に有効です。ただし,時刻解像度の指定には,前提条件や制約があるため注意してください。時刻解像度の指定については,マニュアル「uCosminexus Stream Data Platform - Application Framework アプリケーション開発ガイド」を参照してください。

(4) ストリームキューで使用する要素数の上限値の変更に必要なメモリ使用量

SDPサーバ用定義ファイルのシステムコンフィグプロパティファイル(system_config.properties)のengine.maxQueueSizeパラメーターで,ストリームキューの要素数の上限値を変更できます。要素数の上限値を変更すると,ストリームキューのメモリ使用量に影響します。要素数の上限値を変更する場合の,ストリームキュー一つ当たりのメモリ使用量は,次に示す計算式で求められます。

ストリームキュー一つ当たりのメモリ使用量(単位:バイト)=A×B
(凡例)
A:engine.maxQueueSizeパラメーターの指定値(ストリームキューの要素数の上限値)です。
B:「(2) タプル一つ当たりに必要なメモリ使用量」で示したタプル一つ当たりのサイズです。

システムコンフィグプロパティファイルのパラメーターについては,「8.6 システムコンフィグプロパティファイル(system_config.properties)」を参照してください。

(5) APIトレースのバッファーの内容の変更に必要なメモリ使用量

SDPサーバ用定義ファイルのシステムコンフィグプロパティファイル(system_config.properties)の次に示すパラメーターで,APIトレースのバッファーの内容を変更できます。

これらのパラメーターのうち,どれか一つでも値を変更すると,APIトレースのメモリ使用量に影響します。APIトレースのバッファーの内容を変更する場合の,APIトレースのメモリ使用量は,次に示す計算式で求められます。

APIトレースのメモリ使用量(単位:キロバイト)=A×B+C
(凡例)
A:trc.api.bufferSizeパラメーターの指定値(APIトレースのバッファーの最大サイズ)です。
B:trc.api.bufferCountパラメーターの指定値(APIトレースのバッファーの面数)です。
C:trc.api.ioBufferSizeパラメーターの指定値(APIトレースのI/Oバッファーの最大サイズ)です。

システムコンフィグプロパティファイルのパラメーターについては,「8.6 システムコンフィグプロパティファイル(system_config.properties)」を参照してください。

(6) タプルログの取得に必要なメモリ使用量

SDPサーバ用定義ファイルのシステムコンフィグプロパティファイル(system_config.properties)のtpl.outputTriggerパラメーターで,タプルログのファイルへの出力契機を変更できます。

tpl.outputTriggerパラメーターで,タプルログのファイルへの出力契機に「BUFFER(デフォルト値)」を指定すると,ストリーム一つ当たりのタプルログの取得に必要なメモリ使用量に影響します。

タプルログのファイルへの出力契機に「BUFFER」を指定する場合の,ストリーム一つ当たりのタプルログの取得に必要なメモリ使用量は,次に示す計算式で求められます。

ストリーム一つ当たりのタプルログの取得に必要なメモリ使用量(単位:キロバイト)=A×B
(凡例)
A:システムコンフィグプロパティファイルのtpl.bufferSizeパラメーターの指定値(タプルログのバッファーの最大サイズ)です。
B:システムコンフィグプロパティファイルのtpl.bufferCountパラメーターの指定値(タプルログのバッファーの面数)です。

システムコンフィグプロパティファイルのパラメーターについては,「8.6 システムコンフィグプロパティファイル(system_config.properties)」を参照してください。

(7) クエリグループの実行に必要なメモリ使用量

クエリグループ一つ当たりのメモリ使用量は,次に示す計算式で求められます。

クエリグループ一つ当たりのメモリ使用量(単位:メガバイト)=
   2※1×登録したクエリグループに含まれるクエリの数×128※2
注※1
クエリ一つ当たりのメモリ使用量(単位:メガバイト)です。
注※2
クエリグループの実行領域のサイズ(単位:メガバイト)です。

(8) タイムスタンプ調整に必要なメモリ使用量

タイムスタンプ調整機能を使用する場合のメモリ使用量は,次に示す計算式で求められます。

タイムスタンプ調整に必要なメモリ使用量(単位:バイト)=
   入力ストリームの数×時刻単位当たりのタプル数×時刻調整範囲×A
(凡例)
A:「(2) タプル一つ当たりに必要なメモリ使用量」で示したタプル一つ当たりのサイズです。

計算式中の「時刻単位当たりのタプル数」と「時刻調整範囲」の指定値は,SDPサーバ用定義ファイルのシステムコンフィグプロパティファイル(system_config.properties),クエリグループ用プロパティファイル,またはストリーム用プロパティファイルのstream.timestampAccuracyパラメーターの指定値によって変わります。stream.timestampAccuracyパラメーターの指定値と計算式中の値との関係を次の表に示します。

stream.timestampAccuracyパラメーターの指定値 時刻単位当たりのタプル数の指定値 時刻調整範囲の指定値
unuse 0 0
unuse以外 時刻単位当たりのタプル数 時刻調整範囲+1
注※
stream.timestampAccuracyパラメーターの指定値です。

各ファイルのパラメーターについては,「8.6 システムコンフィグプロパティファイル(system_config.properties)」,「8.7 クエリグループ用プロパティファイル」,または「8.8 ストリーム用プロパティファイル」を参照してください。