next up previous contents
Next: 4.9 応用: 簡単な探索問題 Up: 4.8 ゴール分散の指定方法 Previous: ランダム割り付け

暇なノードへの動的割り付け

この方式は, 暇なノードが誰であるかを OS なり処理系なりに尋ねて, ゴール を投げようとした時に一番暇だと思われるノードに割り付ける方式である. ただし, 残念ながらこのような機能はないので, 本格的に動的割り付けを行なうのは今後の研究成果に期待しよう.

しかし, 処理系の機能を使わなくても似た機能を実現することはできる. まず, 単純なカウンタゴールgifを用意する. また, あるノードには全ノードのカウンタ値を管理する マネージャゴールを用意し, これに最高優先度を与える. 次に, 全てのノードにカウンタゴールを 投げ, それにシステムの最低優先度を与える. 即ち, 各ノードは他に 何も実行するゴールがなくなった時にこのカウンタゴールを実行する. カウンタゴールは, 一定時間おきに自分のカウンタ値をマネージャに通知する. もし, ノードが忙しければ小さなカウント値がマネージャには通知される. 或いは, 忙し過ぎて通知が遅れるかも知れない. また, ノードが暇であれば 大きなカウント値が通知される. マネージャゴールには最高優先度が与えられているので, 各ノードから カウント値が通知されれば直ちにそれを集める事ができる. このマネージャに対して問い合わせすれば, カウント値を元にして, どのノードが暇であるかが大体わかる.

このようにして暇そうなノードを見つけることは可能であるが, 一般的に本当に暇なノードを見つけるのは難しい. 例えば, 処理系に尋ねた瞬間には本当に暇であっても, そのノードにゴールを投げて それが到着した時には実は大変忙しいかも知れない. このような動的な 負荷分散の方式は並列計算機一般の現在の研究課題であり, 興味のある人は 是非トライしてみる価値があるだろう.



next up previous contents
Next: 4.9 応用: 簡単な探索問題 Up: 4.8 ゴール分散の指定方法 Previous: ランダム割り付け



KLIC