• 検索結果がありません。

ジョブのクラスター化に関する検討

ドキュメント内 及びその応用に関する研究 (ページ 107-111)

ᵡᵿᵱᵮᵟ ᵣᶌᶅᶇᶌᶃ

6.5 ジョブのクラスター化に関する検討

6.

dŚƌĞĂĚϭ dŚƌĞĂĚϮ

dŚƌĞĂĚE

͙ ͘͘

00000000 00000000 00000000

00000000 00000000 00000000 00000000

0000000000 0000000000 0000000000

00000000 00000000 00000000

000000000 000000000 000000000

000000 000

LJĐůĞ ĞŐŝŶ LJĐůĞŶĚ

͙ ͙͘͘

͗džĞĐƵƚŝŶŐŐĞŶƚ:Žď

0000000000000000000000000000 0000000000000000000000000000

0000000000000000000000000000 ͗tĂŝƚŝŶŐƚŽ&ĞƚĐŚ

00000000000000000000000000000 00000000000000000000000000000

00000000000000000000000000000 ͗&ĞƚĐŚŝŶŐŐĞŶƚ:ŽďĨƌŽŵŐĞŶƚDĂŶĂŐĞƌ

ŐĞŶƚ:Žď

00000000000000000000000000000 00000000000000000000000000000

00000000000000000000000000000 ͗tĂŝƚŝŶŐKƚŚĞƌdŚƌĞĂĚƐ

ŐĞŶƚDĂŶĂŐĞƌ

0000000000 0000000000 0000000000 00000000 00000000 00000000

00000000 00000000 00000000

00000000 00000000 000000 000000

00000000000000000000 00000000000000000000 00000000000000000000 0000000000000 0000000000000 0000000000000

図 6.6: ソートを利用したジョブ分配の例

ジョブをクラスター化して処理するためには,クラスターの適切な大きさを検討す る必要がある.クラスターの大きさが過大であれば,負荷の推定誤差が大きかった場 合に待ちが発生する問題は解消せず,過少であればジョブを1つずつ処理するのと変 わらなくなる.

本方法においては,クラスターの大きさを制御するため,初期レシオIと減少レシ オRというパラメーターを用意した.初期レシオはクラスターの初期サイズを決める ものであり,減少レシオはクラスターのサイズが減少する割合を決めるものである.

ここで,エージェントのジョブの総処理量を正規化したものをWとした場合,Wは 初期値I,公比Rの等比数列の和として表現できるため,IとRW の関係は下記の ように表すことができる.

W =

n

k=1

IRk1 (6.1)

= I(1−Rn

1−R ) (6.2)

ここで,処理を分担するためのスレッドの数をN と置く.正規化されたジョブの総 処理量Wは各スレッドが処理する計算量の合計と考えることもできるため,スレッド 数Nと置き換えることができる.

この場合,0< R < 1かつn → ∞としたとき,NRIの関係は以下のように記

6.5 ジョブのクラスター化に関する検討

dŚƌĞĂĚϭ dŚƌĞĂĚϮ

dŚƌĞĂĚE

͙͘͘

00000000 00000000 00000000

0000000000 0000000000 0000000000

00000000 00000000 00000000

000000 000

LJĐůĞ ĞŐŝŶ LJĐůĞŶĚ

͙ ͙͘͘

͗džĞĐƵƚŝŶŐŐĞŶƚ:Žď

0000000000000000000000000000 0000000000000000000000000000

0000000000000000000000000000 ͗tĂŝƚŝŶŐƚŽ&ĞƚĐŚ

00000000000000000000000000000 00000000000000000000000000000

00000000000000000000000000000 ͗&ĞƚĐŚŝŶŐŐĞŶƚ:ŽďĨƌŽŵŐĞŶƚDĂŶĂŐĞƌ

ŐĞŶƚ:Žď ůƵƐƚĞƌ

00000000000000000000000000000 00000000000000000000000000000

00000000000000000000000000000 ͗tĂŝƚŝŶŐKƚŚĞƌdŚƌĞĂĚƐ

ŐĞŶƚDĂŶĂŐĞƌ

00000000 00000000 00000000

00000000 00000000 00000000

000000000000 000000000000 000000000000

000000 000000 000000

00000000 00000000 00000000

図 6.7: クラスター化したジョブ分配の例 述できる.

N = I 1

1−R (6.3)

R = N−I

N (6.4)

このとき,RはNIによって求められるため,スレッド数Nが決まっている場合,

自由に設定できるパラメーターは初期レシオIとなる.この初期レシオをどの程度の 大きさに設定すべきかはMASのエージェント構成及びジョブの負荷変動に依存するた め,事前に設定することは困難であり,適切な初期レシオはシミュレーションの実行 中にも変動すると考えられる.

そこで,本方法では初期レシオIの値をシミュレーション実行中に調整する仕組み を導入した.

初期レシオの決定方法を図6.8に示す.

初期レシオIに比べて小さな値を取る変動値dif f を用意し,シミュレーションの実 行ステップごとに初期レシオIに対して変動値dif f の減少と増加を交互に実施する.

次のステップを実施する場合には,過去10回分について,減少から増加させた場合と 増加から減少させた場合について,どちらがシミュレーション時間が短かったかを調 査し,多数決によって初期レシオIの値を変動させる.

6.

ϭ Ϯ ϯ

ϵ ϭϬ

LJĐůĞƚŝŵĞ

^ŝŵƵůĂƚŝŽŶĐLJĐůĞ dĞŵƉŽƌĂů/ͲƌĂƚŝŽ Ǧ†‹ˆˆ

൅†‹ˆˆ

Ǧ†‹ˆˆ

Ǧ†‹ˆˆ

൅†‹ˆˆ

͙

ĞƚƚĞƌ;ďŝŐŐĞƌǁŝŶƐͿ tŽƌƐĞ;ďŝŐŐĞƌǁŝŶƐͿ ĞƚƚĞƌ;ďŝŐŐĞƌǁŝŶƐͿ ĞƚƚĞƌ;ƐŵĂůůĞƌǁŝŶƐͿ

͙

図 6.8: 初期レシオの決定方法

上記のアルゴリズムによって,その時点でのエージェントの状況に応じた初期レシ オIを維持することを試みた.

6.5.1 テストプログラムによる実験

本方法の効果に関する初期評価を実施するため,テストプログラムを作成し,実験 を行った.実験に利用した計算機の性能等を表6.1に示す.

表 6.1: 実験に利用した計算機 CPU Intel Corei7 4771 3.5 GHz

Memory DDR3 32GB

OS Ubuntu 14.04

Java VM Java7 OpenJDK 7u75

このテストプログラムのために,単純な計算を繰り返すエージェントを用意した.各 エージェントのジョブは乱数を用いた円周率の計算であり,(0,0)から(1,1)の範囲に 乱数によって点を置き,それが1/4円弧に含まれるかどうかによって近似的に円周率 を求めるものである.本テストプログラムは,その試行回数によってエージェントご との負荷の違いを表現する.エージェントの数は1000エージェントとし,負荷は指数 分布によって設定した.エージェントの負荷の分布を図6.9に示す.

6.5 ジョブのクラスター化に関する検討

Ϭ ϮϬ ϰϬ ϲϬ ϴϬ ϭϬϬ ϭϮϬ ϭϰϬ ϭϲϬ ϭϴϬ ϮϬϬ

ϭϬ ϬϬ ϯϬ ϬϬ

ϱϬ ϬϬ ϳϬ ϬϬ

ϵϬ ϬϬ ϭϭ ϬϬ Ϭ

ϭϯ ϬϬ Ϭ

ϭϱ ϬϬ Ϭ

ϭϳ ϬϬ Ϭ

ϭϵ ϬϬ Ϭ

Ϯϭ ϬϬ Ϭ

Ϯϯ ϬϬ Ϭ

Ϯϱ ϬϬ Ϭ

Ϯϳ ϬϬ Ϭ

Ϯϵ ϬϬ Ϭ

ϯϭ ϬϬ Ϭ

E Ƶŵ

͘Ž Ĩ

ドキュメント内 及びその応用に関する研究 (ページ 107-111)