ジョブサーバーレートの計算
ジョブサーバーは、実行サーバーで実行されているプローブであり、利用可能なメモリ、利用可能なディスク容量など、実行サーバーの一部の機能を測定します。この情報はTalend Administration Centerに送られ、そこでこのサーバーのレート値が計算されます。
サーバーには一連の機能があります。
- 空きディスク容量
- 空きメモリ容量
- スワップメモリの空き容量
- アイドルCPU使用率
- nice CPU使用率
- 合計CPU使用率
- CPU番号
機能によって優先度が異なります。したがって、これらの機能の重み付けを行い、一部の機能に高い優先度を与えることができます。この重み付けは、ユーザーがmonitoring_client.propertiesファイルに設定します。weight{i}
をi
番目の機能の重み付けと呼ぶことにします。
機能が十分に良好と見なされる範囲を選択できます。すなわち、サーバーの機能が満たすべき制限を設定するという意味です。たとえば、ディスク容量が1Goなければ、サーバーはジョブの実行に適していないとする制限です。したがって、ディスクの下限は1Go(monitoring_client.properties
ファイルで設定)となります。機能i
に対して定義した下限をMin{i}
と呼び、上限をMax{i}
と呼ぶことにします。
サーバーには各機能について実際の値が設定されています。たとえば、サーバーi
には空きディスク容量が500 MBしかありません。この値を機能の実際の値と呼ぶことにします: value{i}
。
実際の値が、すべての機能で制限によって定義された範囲内であれば、サーバーは完全である、というのが基本的な前提です。機能の一部の値が定義された範囲外である場合、サーバーはあまり良好でないことになります。
ジョブサーバーレートの計算方法
フィーチャーのオフセットを制限と実際の値の差として定義してみます。
Offset{i}= |
value{i} - Max{i}, when value{i} > Max{i} |
0, when Min{i} < value{i} < Max{i} |
|
Min{i} - value{i}, when value{i} < Min{i} |
相対オフセットはオフセットを範囲で除して算出します:
rel_offset{i} = offset{i} / [ Max{i} - Min{i} ]
正の値になります。
サーバーのレートは、そのすべての相対オフセットの加重和に-100の係数を乗じて算出します:
rate = -100 Σ weight{i} x rel_offset{i}
この段階で、レートは制約なしの負の数です。0と100の間の数字を得るために、以下の式が使用されます:
normalized rate = 100 / [ 1 - rate / scale ]
上記で、scale = 2000
です。
スケールは、不正な値に対する感受性を示す任意の数字です。正規化されたレートが100である場合は、サーバーが良好であることを意味します。正規化されたレートが100を下回る場合は、サーバーがあまり良好でないことを意味します。正規化されたレートが低くなるほど、サーバーの状態は悪いことになります。すべてのフィーチャー値が予想範囲内である場合、レートは0で、正規化されたレートは100です。
必要とされるディスク容量が1GBと2GBの間で、実際のディスク容量が500MBであれば、相対オフセットは1/2です。重みが8なら、正規化されたレートは100/ [ 1 + 400/2000 ] = 83.33
となります。
下図は、サーバーの空きディスク容量と2つの異なる重みに従ってレートがどう変化するかを示しています(その他すべてのサーバーフィーチャーが定義された範囲内であると仮定)。
サーバーレートは90秒ごとにアップデートされます。この秒数はパラメーターnotification.conf.checking.frequencyCheckJobServerState
の値を設定することで変更できます。
Talend Administration Centerは、レートを付けたサーバーを降順にリスト表示したものです。レートの高いものから低いものへ1つずつチェックし、ジョブがデプロイされていたとしてどれがベストかを判定しています。