|
|
スループット(単位:Byte) | CPU使用率 | |
1台 | 20M(VNCでの最大速度) | 55% |
48台 | 4M(1台あたり) | 100% |
通常のVNC | TreeVNC |
通常のVNC | TreeVNC |
通常のVNC | TreeVNC | |
通信量 | N*データ量 (クライアントの数に比例) | (M+1) * データ量 |
クライアントの数をN、木構造の子供の数をMとする
|
|
|
requestHostName();
プロキシに対してホストのアドレスを要求する関数。 |
|
transferParentAddress();
クライアントに接続先を教える関数。 実際にクライアントにおくっているデータは parentAddress parentNum treeNum leaderFlag の4つである。 リーダーは子供の中で一番若い番号の人がなる。 リーダーフラグは木の再構成の際に使用する。 |
|
connectAndAuthenticate();
プロキシから受け取ったデータをもとに接続を開始する関数。 |
|
新しいクライアントが来るたびに今まで説明した3つの関数を呼び出す。 |
|
|
|
|
|
ここで接続先がクライアント1になっているがこれはプロキシ側で
親の番号 = (自分の番号 - 1) / 親に対する子どもの数 を計算してどの親に接続させれば良いかを決めてクライアントに報告している。 このように番号で木を管理している。 |
|
クライアント1が落ちた時の再接続の処理についての説明。 |
|
lostHost();
木を構成する際にリーダを決めたが、そのリーダだけが呼び出す関数。 プロキシに対し落ちた親(クライアント1)の情報を報告する。 |
|
reportLastNode();
ラストノードに対し落ちたクライアントの代わりをするように命令を出す。 |
|
connectAndAuthenticate();
プロキシから受け取ったデータをもとに接続を開始する関数。 この時クライアント6がクライアント1に変わる。 |
|
transferParentAddress();
落ちた親の子供たちに対し新しい親のアドレスを報告する関数。 |
|
connectAndAuthenticate();
プロキシから受け取ったデータをもとに接続を開始する関数。 |
赤枠 で囲まれている矩形のデータだけが送られてくる。
次のデータがなければwaitする | データがputされ次第読み込みを再開する |
MulticastQueueは、java.util.CountDownnLatchにより実装されている。
|
|
|
バイト数 | 型 |
説明 |
4 | U32 | length |
length | U8 array | ZlibData |
1920*1080の描画にかかったデータ量
|
矩形の大きさと描画に必要なデータ量(単位:Byte)
矩形の大きさ \ エンコード | RAW | ZRLE |
724 * 449 | 1.3M | 0.8M |
1920 * 64 | 0.5M | 0.15M |
1920 * 1080 | 8.2M | 3.4M |
RAW、ZRLE、ZRLEEエンコードのデータ量の比較