comparison OpenSourceConference/index.html @ 10:eaf3f3d169fe

modify index.html
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Thu, 08 Sep 2011 17:23:58 +0900
parents 95d46a58d75e
children
comparison
equal deleted inserted replaced
9:95d46a58d75e 10:eaf3f3d169fe
219 <div class="slide"> 219 <div class="slide">
220 <h1>発表内容</h1> 220 <h1>発表内容</h1>
221 <ul> 221 <ul>
222 <li>RFB Protocol</li> 222 <li>RFB Protocol</li>
223 <li>データ転送量</li> 223 <li>データ転送量</li>
224 <li>ZRLE Encodingの問題</li>
224 <li>データ転送に用いたMulticastQueueについての説明</li> 225 <li>データ転送に用いたMulticastQueueについての説明</li>
225 <li>TreeVNCのデモ</li> 226 <!-- <li>TreeVNCのデモ</li> -->
226 <li>木構造の再構築</li> 227 <li>木構造の再構築</li>
227 <li>ZRLE Encodingの問題</li>
228 </ul> 228 </ul>
229 </div> 229 </div>
230 <!-- PAGE --> 230 <!-- PAGE -->
231 <div class="slide"> 231 <div class="slide">
232 <h1>RFB protocol</h1> 232 <h1>RFB protocol</h1>
662 if (rfb.updateRectEncoding==RfbProto.EncodingZRLEE) 662 if (rfb.updateRectEncoding==RfbProto.EncodingZRLEE)
663 zrleInStream = null; 663 zrleInStream = null;
664 if (zrleInStream == null) 664 if (zrleInStream == null)
665 zrleInStream = new ZlibInStream(); 665 zrleInStream = new ZlibInStream();
666 </pre> 666 </pre>
667 <li>JavaではZlibの辞書を取り出す機能がなかった為、このような方法をとることになった。</li> 667 <li>JavaではZlibの辞書の取り出しが実装されていなかった為、このような方法をとることになった。</li>
668 </div> 668 </div>
669 <!-- PAGE --> 669 <!-- PAGE -->
670 <div class="slide"> 670 <div class="slide">
671 671 <h1>MulticastQueue</h1>
672 672 <li>MulticastQueueの図を入れる。 </li>
673 <p style="text-align: center;">
674 <small>
675 接続されてきた時点からデータの送信が始まる。データは読み込まれるまでメモリ上に残っている。
676 </small>
677 </p>
678 </div>
679 <!-- PAGE -->
680 <div class="slide">
681 <h1>MulticastQueue</h1>
682 <li>MulticastQueueからデータを取り出し子供に送っている部分のソース</li>
683 <pre>
684 LinkedList<ByteBuffer> bufs = c.poll();
685 int inputIndex = 0;
686 ByteBuffer header = bufs.get(inputIndex);
687 if (header==null) continue;
688 writeToClient(os, bufs, inputIndex);
689 </pre>
690 <li>c.poll(inputIndex) 内部では次の処理を行っている。</li>
691 <pre>
692 latch.await();
693 return next;
694 </pre>
695 <li>次のデータが用意できるまでawait()で待つのである。</li>
696 </div>
697 <!-- PAGE -->
698 <div class="slide">
699 <h1>MulticastQueue</h1>
700 <li>データは作られるとMulticastQueueにputされる。</li>
701 <p><small>put内部ではつぎの処理が行われる。</small></p>
702 <pre>
703 Node<T> next = new Node<T>(item);
704 tail.set(next);
705 tail = next;
706 </pre>
707
708 <small>
709 <p>
710 set()内部ではlatchがcountDown()され、await()で止まっていたスレッドが動き出す。
711 </small>
673 </div> 712 </div>
674 <!-- PAGE --> 713 <!-- PAGE -->
675 <div class="slide"> 714 <div class="slide">
676 <h1>MulticastQueue</h1> 715 <h1>MulticastQueue</h1>
716 <li>MulticastQueueは次の次のデータへの参照を順序良く行うためのクラスである。</li>
717 <li></li>
718
677 <li>MulticastQueueはjava.util.CountDownLatchを用いて実装されたクラスである。 </li> 719 <li>MulticastQueueはjava.util.CountDownLatchを用いて実装されたクラスである。 </li>
678 <li>クライアントから接続されると、データ転送用のスレッド(sender)が走る。 </li> 720 <li>クライアントから接続されると、データ転送用のスレッド(sender)が走る。 </li>
679 <li>このスレッドは次に流すデータが来るまでは待機して置かなければならない。そして流すべきデータがくるとまた動き始めなければならない。</li> 721 <li>このスレッドは次に流すデータが来るまでは待機して置かなければならない。そして流すべきデータがくるとまた動き始めなければならない。</li>
680 <li>このスレッドの待機・解放を行うのがMulticastQueueとなる。 </li> 722 <li>このスレッドの待機・解放を行うのがMulticastQueueとなる。 </li>
681 <!-- 723 <!--
684 </small> 726 </small>
685 --> 727 -->
686 </div> 728 </div>
687 <!-- PAGE --> 729 <!-- PAGE -->
688 <div class="slide"> 730 <div class="slide">
689 <h1>MulticastQueue</h1>
690 <li>MulticastQueueの図を入れる。 </li>
691 <p style="text-align: center;">
692 <small>
693 接続されてきた時点からデータの送信が始まる。データは読み込まれるまでメモリ上に残っている。
694 </small>
695 </p>
696 </div>
697 <!-- PAGE -->
698 <div class="slide">
699 <h1>MulticastQueueの問題点</h1> 731 <h1>MulticastQueueの問題点</h1>
700 <li>Clientがデータを読み込まないとデータが溜まりメモリを圧迫してしまう。 </li> 732 <li>Clientがデータを読み込まないとデータが溜まりメモリを圧迫してしまう。 </li>
701 <p style="text-align: center;"> 733 <p style="text-align: center;">
702 <img src="./pix/TimeOut1.png"> 734 <img src="./pix/TimeOut1.png">
703 </p> 735 </p>
704 </div> 736 </div>
705 <!-- PAGE --> 737 <!-- PAGE -->
706 <div class="slide"> 738 <div class="slide">
707 <h1>MulticastQueueの問題点</h1> 739 <h1>MulticastQueueの問題点</h1>
708 <li style="text-align: center;">解決策</li> 740 <li>TimeOut(TO)スレッドを走らせ、一定の時間データを読み込まなければ代わりにこのTOが読み込むようにする。</li>
709 <p style="text-align: center;"> 741 <p style="text-align: center;">
710 <img src="./pix/TimeOut2.png"> 742 <img src="./pix/TimeOut2.png"><br>
711 </p> 743 解決策
712 <small> 744 </p>
713 <li>TimeOut(TO)スレッドを走らせ、一定の時間データを読み込まなければ代わりにこのTOが読み込むようにする。</li> 745 </div>
714 </small> 746 <!-- PAGE -->
715 </div> 747 <div class="slide">
716 <!-- PAGE --> 748 <h1>テスト環境の構築</h1>
717 <div class="slide">
718 <h1>TreeVNCのデモ</h1>
719 <li>では実際に動かしてみる。</li>
720 <li></li>
721 </div>
722 <!-- PAGE -->
723 <div class="slide">
724 <h1>TreeVNCの利点と欠点</h1>
725 <ul>
726 <li>ケーブル1本への負荷が減る。一極集中型よりスループットを維持できる。</li>
727 <li>無線を使われると遅くなる。</li>
728 </ul>
729 </div>
730 <!-- PAGE -->
731 <div class="slide">
732 <h1>テスト環境について</h1>
733 <li>CUI版のVNCクライアントを作成</li> 749 <li>CUI版のVNCクライアントを作成</li>
734 <li>48台あるクラスタでCUI版のクライアントをはしらせてVNCをかけさせる。</li> 750 <li>48台あるクラスタでCUI版のクライアントをはしらせてVNCをかけさせる。</li>
735 <li>最初の1台目と50台めをGUI版のクライアントで接続を行い見比べてみる。 </li> 751 <li>最初の1台目と48台めをGUI版のクライアントで接続を行い見比べてみる。 </li>
736 </div> 752 </div>
737 <!-- PAGE --> 753 <!-- PAGE -->
738 <div class="slide"> 754 <div class="slide">
739 <h1></h1> 755 <h1>TreeVNCの発端</h1>
740 <li></li> 756 <li>大学のB3でうける授業の1つ、programming4で作り始めたことがきっかけ。</li>
741 <li></li> 757 <li>programming4は作りたいものを提案して作る授業。 </li>
742 </div> 758 <li>授業が終わっても改良を加えていた。</li>
743 <!-- PAGE --> 759 <li>B4になりこの場で発表してみることになった。</li>
760 </div>
761 <!-- PAGE -->
762 <!--
744 <div class="slide"> 763 <div class="slide">
745 <h1>既存のプログラムとの比較</h1> 764 <h1>既存のプログラムとの比較</h1>
746 <li>VNC Reflector</li> 765 <li>VNC Reflector</li>
747 <ul> 766 <ul>
748 <li>tightVNCの作者が作成したプログラム</li> 767 <li>tightVNCの作者が作成したプログラム</li>
749 <li>VNC Reflecotrにクライアントが接続することでVNCを行うことができる</li> 768 <li>VNC Reflecotrにクライアントが接続することでVNCを行うことができる</li>
750 </ul> 769 </ul>
751 </div> 770 </div>
752 <!-- PAGE --> 771 -->
753 <div class="slide">
754 <h1></h1>
755 <li></li>
756 </div>
757 <!-- PAGE --> 772 <!-- PAGE -->
758 </div> 773 </div>
759 </body> 774 </body>
760 </html> 775 </html>