macstshellのエミュレータについて

24 views
Skip to first unread message

Itou

unread,
Dec 6, 2009, 9:55:11 AM12/6/09
to Overlay Weaver (Japanese)
首藤さんこんばんは、伊藤と申します。
ALMに関する卒業研究でOverlay Weaverを使おうと考えています。

mcastのエミュレータに関して何点か質問があります。

・Overlay Visualizerについてですが、各ノードの色(青、灰、緑(?))は何を表しているものなのでしょうか?
・定期的(?)にノード間に走る黒い線は何らかの要求だと思いますが、どのようなものなのでしょうか?
・稀にoverlayに参加したノード以外のノードが現れることがあるのですが、これは何なのでしょうか?

・ルーティングをPastry、Kademliaにしてマルチキャスト配信木を構築した際、全ての子が1つの親に集まるような深さ1の木が構築されてし
まうのですが、これは上手く動いているのでしょうか?尚、ルーティングをChordにした場合は深さ2以上の木が構成されました。
・シナリオによって、マルチキャストグループに参加させた後、そのまま放っておくと、勝手に配信木の変更が繰り返されるのですが、放っておくとノードが
勝手に離脱、参加を繰り返すようになっているのでしょうか?
以下に使用したシナリオファイルを加えておきます。
class ow.tool.visualizer.Main
schedule 0 invoke
class ow.tool.mcastshell.Main
arg -m emu0 -a Chord
schedule 6000 invoke
arg -m emu0 -a Chord emu1
schedule 6000,1000,30 invoke

arg -p 10000 -m emu0 -a Chord emu1
schedule 79000 invoke
arg -p 10001 -m emu0 -a Chord emu1
schedule 79500 invoke
arg -p 10002 -m emu0 -a Chord emu1
schedule 79700 invoke
schedule 80000 control 1 join test
schedule 82000 control 2 join test
schedule 84000 control 3 join test
schedule 88000 control 4 join test
schedule 90000 control 5 join test
schedule 92000 control 6 join test
schedule 94000 control 7 join test
schedule 96000 control 8 join test
schedule 98000 control 9 join test
schedule 100000 control 10 join test
schedule 102000 control 11 join test
schedule 104000 control 12 join test
schedule 106000 control 13 join test
schedule 108000 control 14 join test
schedule 110000 control 15 join test
schedule 112000 control 16 join test
schedule 114000 control 17 join test
schedule 116000 control 18 join test
schedule 118000 control 19 join test
schedule 120000 control 20 join test
schedule 120000 control 31 join test

以上、初歩的な問題かもしれませんが、よろしくお願いします。

Kazuyuki Shudo

unread,
Dec 6, 2009, 1:49:57 PM12/6/09
to overlayw...@googlegroups.com
> Message-ID: <438186c1-2165-4557...@s21g2000prm.googlegroups.com>
> From: Itou <juku...@yahoo.co.jp>
> Date: Sun, 6 Dec 2009 06:55:11 -0800 (PST)

> 首藤さんこんばんは、伊藤と申します。
> ALMに関する卒業研究でOverlay Weaverを使おうと考えています。
>
> mcastのエミュレータに関して何点か質問があります。
>
> ・Overlay Visualizerについてですが、各ノードの色(青、灰、緑(?))は何を表しているものなのでしょうか?

普段は青です。
ルーティングのクエリを送出したノードを一時的に緑にします。
ルーティングの宛先 (target) ID を灰色の丸で表します。

> ・定期的(?)にノード間に走る黒い線は何らかの要求だと思いますが、どのようなものなのでしょうか?

ノード間でメッセージの送受信があったことを表します。

> ・稀にoverlayに参加したノード以外のノードが現れることがあるのですが、これは何なのでしょうか?

上記の、灰色の丸、だと思います。

> ・ルーティングをPastry、Kademliaにしてマルチキャスト配信木を構築した際、全ての子が1つの親に集まるような深さ1の木が構築されてし
> まうのですが、これは上手く動いているのでしょうか?尚、ルーティングをChordにした場合は深さ2以上の木が構成されました。

配信木は Scribe という方式を使ってます。
深さ 1ということは、担当ノードまでの経路長が 1だったということで、
そういうものです。
経路長が比較的長くなる Chord では、経路長が 2以上になった場合もあった、
ということかと想像します。

ノード数がある程度多くならないと、経路は長くなりません。
シナリオを拝見したところ、34ノードしか起動していないので、
そんなものだと思います。

> ・シナリオによって、マルチキャストグループに参加させた後、そのまま放っておくと、勝手に配信木の変更が繰り返されるのですが、放っておくとノードが
> 勝手に離脱、参加を繰り返すようになっているのでしょうか?

ノードの離脱や参加は、シナリオに書かないと起きません。

首藤一幸

Itou

unread,
Dec 7, 2009, 8:11:43 AM12/7/09
to Overlay Weaver (Japanese)
首藤さん、伊藤です。

返信ありがとうございました。

> > ・ルーティングをPastry、Kademliaにしてマルチキャスト配信木を構築した際、全ての子が1つの親に集まるような深さ1の木が構築されてし
> > まうのですが、これは上手く動いているのでしょうか?尚、ルーティングをChordにした場合は深さ2以上の木が構成されました。
>
> 配信木は Scribe という方式を使ってます。
> 深さ 1ということは、担当ノードまでの経路長が 1だったということで、
> そういうものです。
> 経路長が比較的長くなる Chord では、経路長が 2以上になった場合もあった、
> ということかと想像します。
>
> ノード数がある程度多くならないと、経路は長くなりません。
> シナリオを拝見したところ、34ノードしか起動していないので、
> そんなものだと思います。

ノード数が少ないということで、2000ノード、5000ノードと増やしてみましたが、やはり一つの親に集まってしまっているようです。
まだ少ないでしょうか?


> > ・シナリオによって、マルチキャストグループに参加させた後、そのまま放っておくと、勝手に配信木の変更が繰り返されるのですが、放っておくとノードが
> > 勝手に離脱、参加を繰り返すようになっているのでしょうか?
>
> ノードの離脱や参加は、シナリオに書かないと起きません。

シナリオに離脱や参加は記述していないのですが、放っておくと木の変更(あるノードが子からいなくなってしまう等)が起こるのですが、何故でしょう
か?


Kazuyuki Shudo

unread,
Dec 9, 2009, 1:19:13 AM12/9/09
to overlayw...@googlegroups.com
伊藤さん、首藤です。

> Message-ID: <dd1f97d6-6818-4922...@j9g2000prh.googlegroups.com>
> From: Itou <juku...@yahoo.co.jp>
> Date: Mon, 7 Dec 2009 05:11:43 -0800 (PST)

>> > ・ルーティングをPastry、Kademliaにしてマルチキャスト配信木を構築した際、全ての子が1つの親に集まるような深さ1の木が構築されてし
>> > まうのですが、これは上手く動いているのでしょうか?尚、ルーティングをChordにした場合は深さ2以上の木が構成されました。
>>
>> 配信木は Scribe という方式を使ってます。
>> 深さ 1ということは、担当ノードまでの経路長が 1だったということで、
>> そういうものです。
>> 経路長が比較的長くなる Chord では、経路長が 2以上になった場合もあった、
>> ということかと想像します。
>>
>> ノード数がある程度多くならないと、経路は長くなりません。
>> シナリオを拝見したところ、34ノードしか起動していないので、
>> そんなものだと思います。
>
> ノード数が少ないということで、2000ノード、5000ノードと増やしてみましたが、やはり一つの親に集まってしまっているようです。

[ノード数]

そんなはずはない、と確認しようとしたところ、いくつか気づいたことがあります。

ow.tool.mcastshell.Main (Mcast shell) を
2000, 5000 ノードも立ち上げられました?
どうやって確認しました?

DHT (shell) の方は、スレッドを作らないように改良してきたのですが、
Mcast (shell) はそういう改良をしてきておらず、
けっこうスレッドを作ります。
(ow.mcast.impl.McastImpl 中に new Thread() が何ヶ所かあります。)

手元のマシンでは、数百ノードを起動したところで、こうなりました:

An application instance threw a Throwable:
java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:597)
at ow.mcast.impl.McastImpl.init(McastImpl.java:179)
at ow.mcast.impl.McastImpl.<init>(McastImpl.java:137)

[配信木の形]

高さ 1の木が作られていることは、どうやって確認したでしょうか。

>> > ・シナリオによって、マルチキャストグループに参加させた後、そのまま放っておくと、勝手に配信木の変更が繰り返されるのですが、放っておくとノードが
>> > 勝手に離脱、参加を繰り返すようになっているのでしょうか?
>>
>> ノードの離脱や参加は、シナリオに書かないと起きません。
>
> シナリオに離脱や参加は記述していないのですが、放っておくと木の変更(あるノードが子からいなくなってしまう等)が起こるのですが、何故でしょう
> か?

配信木は、一度作ったら放っておくのではなくて、
・木の作り直し
・親子関係の expire
を行います。

ノードの出入りや、それによって起こる経路表の変化に対応するためです。
経路表が成熟し切る前に配信木を構築したために、
成熟後に作り直した木が違う形になる、ということも起こります。

それを行うスレッドを、以下のように作成しています:

ow.mcast.impl.McastImpl#init() より:

// initialize a Refresher and a NeighborExpirer
if (config.getRefreshInterval() > 0) {
this.refreshingThread = new Thread(new GroupRefresher());
this.refreshingThread.setName("Refresher");
this.refreshingThread.setDaemon(true);
this.refreshingThread.start();
}

if (config.getNeighborExpireCheckInterval() > 0) {
this.expiringThread = new Thread(new NeighborExpirer());
this.expiringThread.setName("NeighborExpirer");
this.expiringThread.setDaemon(true);
this.expiringThread.start();
}

首藤一幸

Reply all
Reply to author
Forward
0 new messages