changeset 24:bf55a5069bf1

fix
author suruga
date Mon, 19 Feb 2018 15:56:50 +0900
parents ae83bdf21518
children df67999ffb29
files paper/.DS_Store paper/final_main/.DS_Store paper/final_main/chapter3.tex paper/final_main/main.aux paper/final_main/main.dvi paper/final_main/main.lof paper/final_main/main.log paper/final_main/main.lol paper/final_main/main.pdf paper/final_main/main.toc paper/final_main/pic/topologymanager2.graffle
diffstat 11 files changed, 133 insertions(+), 51 deletions(-) [+]
line wrap: on
line diff
Binary file paper/.DS_Store has changed
Binary file paper/final_main/.DS_Store has changed
--- a/paper/final_main/chapter3.tex	Mon Feb 19 14:19:44 2018 +0900
+++ b/paper/final_main/chapter3.tex	Mon Feb 19 15:56:50 2018 +0900
@@ -37,8 +37,7 @@
 \section{実験概要}
 Jungleの分散性能を測定するにあたり、複数台のJungleを通信させ、JungleからJungleに対する書き込みにかかる時間を計測する。複数台のJungleを分散させる為に、学内共用の仮想マシンを32台使用した。分散したJungle同士の通信部分には、当研究室で開発している分散フレームワークAliceの機能であるTopologyManagerを使用する。TopologyManagerの起動には、仮想マシン32台のうちの1台を使用する。
 学科の仮想マシン31台上でそれぞれ1台ずつJungleを立ち上げ、ツリー型のトポロジーを構成する。そのうち16台のJungleに対して100回ずつデータを書き込む。子ノードのJungleは、他のJungleで書き込まれたデータを自身に書かれたデータとmergeしていく。全ての子ノードのJungleでmergeされたデータは、最終的に親ノードのJungleのデータへmergeされていく。
-本実験では、複数の子ノードにJungleに書き込まれたデータが最終的にルートノードのJungleのデータへmergeされ、書き込まれた時間を計測し、平均を取る。31台中16台のJungleから書き込まれたデータがルートノードのJungleへ書き込まれる、一回あたりの時間を計測する実験である。(図\ref{fig:gaiyou} )
-
+本実験では、複数の子ノードにJungleに書き込まれたデータが最終的にルートノードのJungleのデータへmergeされ、書き込まれた時間を計測し、平均を取る。図\ref{fig:gaiyou} は本実験を図で表したものであり、31 台中 16 台の Jungle から書き込まれた データがルートノードの Jungle へ書き込まれる、一回あたりの時間を計測する。
   \begin{figure}[htbp]
     \begin{center}
         \includegraphics[width=100mm]{./pic/gaiyou.pdf}
@@ -100,7 +99,7 @@
 
 今回作成した、ジョブに投入するためのシェルスクリプトを以下(ソースコード\ref{src:LogupdateTest.pl})に示す。
 
-\begin{lstlisting}[frame=lrbt,label=LogupdateTest.pl,caption=本実験で投入するジョブスクリプト,numbers=left]
+\begin{lstlisting}[frame=lrbt,label=src:LogupdateTest.pl,caption=本実験で投入するジョブスクリプト,numbers=left]
 #!/bin/sh
 #PBS -q jungle
 #PBS -N LogUpdateTest
@@ -119,7 +118,88 @@
 本研究では、分散環境上でのJungleの性能を確認する為、VM32台分のサーバーノードを用意し、それぞれで1台ずつJungle起動することで、分散させる。
 %Jungleを起動したサーバーノード間の通信部分を、当研究室で開発している並列分散フレームワークAlice[1]にて再現する。
 
-Aliceには、ネットワークのトポロジーを構成するTopologyManager[2]という機能が備わっている。サーバーノードはTopologyManagerに、誰に接続を行えばよいかを尋ねる。TopologyManagerは尋ねてきたサーバーノードに順番に、接続先のサーバーノードのIPアドレス、ポート番号、接続名を送り、受け取ったサーバーノードはそれらに従って接続する。
+Aliceには、ネットワークのトポロジーを構成するTopologyManager[2]という機能が備わっている。TopologyManagerは以下のソースコード\ref{src:topologymanager}のように起動する。
+\begin{lstlisting}[frame=lrbt,label=src:topologymanager,caption=TopologyManagerの起動方法,numbers=left]
+% java -cp ../../build/libs/logupdateTest-1.1.jar alice.topology.manager.TopologyManager -conf ../../scripts/tree.dot -p 10000
+\end{lstlisting}
+-p オプションはトポロジーマネージャーが開くポートの番号、-conf オプションには  トポロジーファイルであるtree.dotのパスを渡している。トポロジーファイルとは、どのようにトポロジーノードをつなげるかを記述したファイルである。AliceのTopologyManagerを使用する際は、どのようなトポロジーを形成したいかを決め、あらかじめトポロジーファイルを作成する必要がある。今回、31台のサーバーノードでツリートポロジーを形成するdotファイルを以下のソースコード\ref{src:treedot}のように記述した。
+\begin{lstlisting}[frame=lrbt,label=src:treedot,caption=作成したトポロジーファイル,numbers=left]
+digraph test {
+	node0 -> node1 [label="child1"]
+	node0 -> node2 [label="child2"]
+	node1 -> node0 [label="parent"]
+	node1 -> node3 [label="child1"]
+	node1 -> node4 [label="child2"]
+	node2 -> node0 [label="parent"]
+	node2 -> node5 [label="child1"]
+	node2 -> node6 [label="child2"]
+	node3 -> node1 [label="parent"]
+	node3 -> node7 [label="child1"]
+	node3 -> node8 [label="child2"]
+	node4 -> node1 [label="parent"]
+	node4 -> node9 [label="child1"]
+	node4 -> node10 [label="child2"]
+	node5 -> node2 [label="parent"]
+	node5 -> node11 [label="child1"]
+	node5 -> node12 [label="child2"]
+	node6 -> node2 [label="parent"]
+	node6 -> node13 [label="child1"]
+	node6 -> node14 [label="child2"]
+	node7 -> node3 [label="parent"]
+	node8 -> node3 [label="parent"]
+	node9 -> node4 [label="parent"]
+	node10 -> node4 [label="parent"]
+	node11 -> node5 [label="parent"]
+	node12 -> node5 [label="parent"]
+	node13 -> node6 [label="parent"]
+	node14 -> node6 [label="parent"]
+}
+\end{lstlisting}
+また、31台のサーバーノードで形成するトポロジーファイルを自動で生成するプログラムを作成した。以下のソースコード\ref{src:treedot.rb}に示す。
+\begin{lstlisting}[frame=lrbt,label=src:treedot.rb,caption=本実験で使用するトポロジーファイルを生成するプログラム,numbers=left]
+def create_nodes(node_num)
+  (0..node_num - 1).map { |i|
+    i = "node" + i.to_s
+  }
+end
+
+def print_dot(connections)
+  puts "digraph test {"
+  connections.each { |connection|
+    print "\t"
+    print connection[0]
+    print " -> "
+    print connection[1]
+    print ' [label="' + connection[2] + '"]'
+    puts
+  }
+  puts "}"
+end
+
+node_num = ARGV[0].to_i
+nodes = create_nodes(node_num)
+connections = Array.new
+nodes.each_with_index { |node, i|
+  parent = (i - 1) / 2;
+  child1 = 2 * i + 1;
+  child2 = 2 * i + 2;
+  if parent >= 0 then
+    connections << [nodes[i], nodes[parent], "parent"]
+  end
+  if child1 < node_num then
+    connections << [nodes[i], nodes[child1], "child1"]
+  end
+  if child2 < node_num then
+    connections << [nodes[i], nodes[child2], "child2"]
+  end
+}
+print_dot(connections)
+\end{lstlisting}
+%ここにrubyの説明を入れてもいい
+ TopologyManagerは、参加表明をしたサーバーノード(以下TopologyNode)を、トポロジーファイルの内容に従ってトポロジーを構成する。
+ TopologyManagerへの参加表明は、TopologyNode起動時に、TopologyManagerのIPアドレスとポート番号を指定すれば良い。
+ 
+TopologyNodeはTopologyManagerに、誰に接続を行えばよいかを尋ねる。TopologyManagerは尋ねてきたTopologyNodeに順番に、接続先のTopologyNodeのIPアドレス、ポート番号、接続名を送り、受け取ったTopologyNodeはそれらに従って接続する。
 この時、TopologyManager自身はVM0を用いて立ち上げる。
 よって、TopologyManagerはJungleをのせたVM1からVM32、計VM31台分のサーバーノードを、木構造を形成するように采配する(図\ref{fig:topologymanager} )。
 
@@ -164,7 +244,7 @@
 -p オプションはTopologyManagerが開くポートの番号、-confオプションには dot ファイルのパスを渡している。ポート番号はAliceのより記述された並列分散プログラムの起動時に渡す必要がある。
 dot ファイルには、トポロジーをどのように構成するかが書かれている。dotファイルを読み込んだAliceのTopologyManagerに対して、サーバーノードは誰に接続を行えばよいかを尋ねる。TopologyManagerは尋ねてきたサーバーノードに対してノード番号を割り振り、dotファイルに記述している通りにサーバーノードが接続を行うように指示をだす。
 -showTime オプションは、今回Aliceに実装した機能である。--showTime オプションをつけることで、出力される結果に、子ノードのJungleからの書き込みがrootノードのJungleへ到達し、書き込みが終了したときの時間が表示されるようになる。
-4行目では、Jungleを起動している。
+4行目では、Jungleを起動している。このとき、-host でTopologyManagerのIPアドレスを渡し、-portでTopologyManagerのポート番号をしている。TopologyManagerのIPアドレスとポート番号を渡すことで、TopologyManagerへ参加表明をしている。
 10行目では、4行目と同様jungleを起動しているが、今回実装した-writeオプションと-countオプションをつけている。
 -writeオプションは、Jungleにデータを書き込む機能をつけることができる。
 -countオプションは、何回データを書き込むかを指定することができる。隣に引数をつけることで、回数を設定できる。本実験では、16台のJungleで、100回データを書き込むよう設定する。
--- a/paper/final_main/main.aux	Mon Feb 19 14:19:44 2018 +0900
+++ b/paper/final_main/main.aux	Mon Feb 19 15:56:50 2018 +0900
@@ -33,26 +33,32 @@
 \@writefile{toc}{\contentsline {section}{\numberline {3.4}TORQUE Resource Manager}{9}}
 \@writefile{lof}{\contentsline {figure}{\numberline {3.2}{\ignorespaces TORQUEの構成}}{10}}
 \newlabel{fig:torque}{{3.2}{10}}
-\newlabel{LogupdateTest.pl}{{3.1}{10}}
+\newlabel{src:LogupdateTest.pl}{{3.1}{10}}
 \@writefile{lol}{\contentsline {lstlisting}{\numberline {3.1}本実験で投入するジョブスクリプト}{10}}
 \@writefile{toc}{\contentsline {section}{\numberline {3.5}分散フレームワーク Alice による分散環境の構築}{11}}
-\@writefile{lof}{\contentsline {figure}{\numberline {3.3}{\ignorespaces AliceによるJungleの木構造トポロジーの形成}}{11}}
-\newlabel{fig:topologymanager}{{3.3}{11}}
-\@writefile{lof}{\contentsline {figure}{\numberline {3.4}{\ignorespaces トポロジーの形成}}{12}}
-\newlabel{fig:LogupdateTree}{{3.4}{12}}
-\@writefile{toc}{\contentsline {section}{\numberline {3.6}測定用プログラムの実装}{13}}
-\newlabel{Logupdate}{{3.2}{13}}
-\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.2}測定用プログラムの起動部分}{13}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {第4章}性能評価}{15}}
+\newlabel{src:topologymanager}{{3.2}{11}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.2}TopologyManagerの起動方法}{11}}
+\newlabel{src:treedot}{{3.3}{11}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.3}作成したトポロジーファイル}{11}}
+\newlabel{src:treedot.rb}{{3.4}{12}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.4}本実験で使用するトポロジーファイルを生成するプログラム}{12}}
+\@writefile{lof}{\contentsline {figure}{\numberline {3.3}{\ignorespaces AliceによるJungleの木構造トポロジーの形成}}{14}}
+\newlabel{fig:topologymanager}{{3.3}{14}}
+\@writefile{lof}{\contentsline {figure}{\numberline {3.4}{\ignorespaces トポロジーの形成}}{15}}
+\newlabel{fig:LogupdateTree}{{3.4}{15}}
+\@writefile{toc}{\contentsline {section}{\numberline {3.6}測定用プログラムの実装}{16}}
+\newlabel{Logupdate}{{3.5}{16}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.5}測定用プログラムの起動部分}{16}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {第4章}性能評価}{18}}
 \@writefile{lof}{\addvspace {10\p@ }}
 \@writefile{lot}{\addvspace {10\p@ }}
-\@writefile{toc}{\contentsline {section}{\numberline {4.1}java版jungleの分散性能の評価}{15}}
-\@writefile{toc}{\contentsline {section}{\numberline {4.2}性能測定方法の評価}{15}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {第5章}結論}{16}}
+\@writefile{toc}{\contentsline {section}{\numberline {4.1}java版jungleの分散性能の評価}{18}}
+\@writefile{toc}{\contentsline {section}{\numberline {4.2}性能測定方法の評価}{18}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {第5章}結論}{19}}
 \@writefile{lof}{\addvspace {10\p@ }}
 \@writefile{lot}{\addvspace {10\p@ }}
-\@writefile{toc}{\contentsline {section}{\numberline {5.1}まとめ}{16}}
-\@writefile{toc}{\contentsline {section}{\numberline {5.2}今後の課題}{16}}
+\@writefile{toc}{\contentsline {section}{\numberline {5.1}まとめ}{19}}
+\@writefile{toc}{\contentsline {section}{\numberline {5.2}今後の課題}{19}}
 \bibcite{1}{1}
 \bibcite{2}{2}
 \bibcite{3}{3}
Binary file paper/final_main/main.dvi has changed
--- a/paper/final_main/main.lof	Mon Feb 19 14:19:44 2018 +0900
+++ b/paper/final_main/main.lof	Mon Feb 19 15:56:50 2018 +0900
@@ -6,7 +6,7 @@
 \addvspace {10\p@ }
 \contentsline {figure}{\numberline {3.1}{\ignorespaces 複数のjungleに書き込まれたデータがrootのjungleへ到達する時間を計測する}}{8}
 \contentsline {figure}{\numberline {3.2}{\ignorespaces TORQUEの構成}}{10}
-\contentsline {figure}{\numberline {3.3}{\ignorespaces AliceによるJungleの木構造トポロジーの形成}}{11}
-\contentsline {figure}{\numberline {3.4}{\ignorespaces トポロジーの形成}}{12}
+\contentsline {figure}{\numberline {3.3}{\ignorespaces AliceによるJungleの木構造トポロジーの形成}}{14}
+\contentsline {figure}{\numberline {3.4}{\ignorespaces トポロジーの形成}}{15}
 \addvspace {10\p@ }
 \addvspace {10\p@ }
--- a/paper/final_main/main.log	Mon Feb 19 14:19:44 2018 +0900
+++ b/paper/final_main/main.log	Mon Feb 19 15:56:50 2018 +0900
@@ -1,4 +1,4 @@
-This is e-pTeX, Version 3.14159265-p3.7.1-161114-2.6 (utf8.euc) (TeX Live 2017) (preloaded format=platex 2018.2.19)  19 FEB 2018 14:19
+This is e-pTeX, Version 3.14159265-p3.7.1-161114-2.6 (utf8.euc) (TeX Live 2017) (preloaded format=platex 2018.2.19)  19 FEB 2018 15:55
 entering extended mode
  restricted \write18 enabled.
  %&-line parsing enabled.
@@ -624,44 +624,37 @@
  [8]
 File: ./pic/torque.pdf Graphic file (type pdf)
 <./pic/torque.pdf>
-
-
-LaTeX Warning: Reference `src:LogupdateTest.pl' on page 9 undefined on input li
-ne 101.
-
-[9] [10]
+ [9] [10] [11] [12]
 File: pic/topologymanager3.pdf Graphic file (type pdf)
 <pic/topologymanager3.pdf>
- [11]
+ [13]
 File: pic/LogupdateTree.pdf Graphic file (type pdf)
 <pic/LogupdateTree.pdf>
- [12] (./plsource.txt)) [13] (./chapter4.tex [14]
+ [14] [15] (./plsource.txt)) [16]
+(./chapter4.tex [17]
 第 4 章
-[15
+[18
 
 ]) (./chapter5.tex
 第 5 章
-) (./bibliography.tex [16
+) (./bibliography.tex [19
 
-]) (./thanks.tex [17
+]) (./thanks.tex [20
 
-]) [18
+]) [21
 
 ] (./main.aux)
 
-LaTeX Warning: There were undefined references.
-
-
 LaTeX Warning: There were multiply-defined labels.
 
  ) 
 Here is how much of TeX's memory you used:
- 4043 strings out of 493640
- 49134 string characters out of 6148698
- 191716 words of memory out of 5000000
- 7556 multiletter control sequences out of 15000+600000
+ 4045 strings out of 493640
+ 49166 string characters out of 6148698
+ 237749 words of memory out of 5000000
+ 7558 multiletter control sequences out of 15000+600000
  16433 words of font info for 66 fonts, out of 8000000 for 9000
  929 hyphenation exceptions out of 8191
- 27i,9n,32p,795b,1686s stack positions out of 5000i,500n,10000p,200000b,80000s
+ 27i,9n,32p,795b,1701s stack positions out of 5000i,500n,10000p,200000b,80000s
 
-Output written on main.dvi (22 pages, 58096 bytes).
+Output written on main.dvi (25 pages, 71476 bytes).
--- a/paper/final_main/main.lol	Mon Feb 19 14:19:44 2018 +0900
+++ b/paper/final_main/main.lol	Mon Feb 19 15:56:50 2018 +0900
@@ -1,2 +1,5 @@
 \contentsline {lstlisting}{\numberline {3.1}本実験で投入するジョブスクリプト}{10}
-\contentsline {lstlisting}{\numberline {3.2}測定用プログラムの起動部分}{13}
+\contentsline {lstlisting}{\numberline {3.2}TopologyManagerの起動方法}{11}
+\contentsline {lstlisting}{\numberline {3.3}作成したトポロジーファイル}{11}
+\contentsline {lstlisting}{\numberline {3.4}本実験で使用するトポロジーファイルを生成するプログラム}{12}
+\contentsline {lstlisting}{\numberline {3.5}測定用プログラムの起動部分}{16}
Binary file paper/final_main/main.pdf has changed
--- a/paper/final_main/main.toc	Mon Feb 19 14:19:44 2018 +0900
+++ b/paper/final_main/main.toc	Mon Feb 19 15:56:50 2018 +0900
@@ -10,10 +10,10 @@
 \contentsline {section}{\numberline {3.3}実験環境}{9}
 \contentsline {section}{\numberline {3.4}TORQUE Resource Manager}{9}
 \contentsline {section}{\numberline {3.5}分散フレームワーク Alice による分散環境の構築}{11}
-\contentsline {section}{\numberline {3.6}測定用プログラムの実装}{13}
-\contentsline {chapter}{\numberline {第4章}性能評価}{15}
-\contentsline {section}{\numberline {4.1}java版jungleの分散性能の評価}{15}
-\contentsline {section}{\numberline {4.2}性能測定方法の評価}{15}
-\contentsline {chapter}{\numberline {第5章}結論}{16}
-\contentsline {section}{\numberline {5.1}まとめ}{16}
-\contentsline {section}{\numberline {5.2}今後の課題}{16}
+\contentsline {section}{\numberline {3.6}測定用プログラムの実装}{16}
+\contentsline {chapter}{\numberline {第4章}性能評価}{18}
+\contentsline {section}{\numberline {4.1}java版jungleの分散性能の評価}{18}
+\contentsline {section}{\numberline {4.2}性能測定方法の評価}{18}
+\contentsline {chapter}{\numberline {第5章}結論}{19}
+\contentsline {section}{\numberline {5.1}まとめ}{19}
+\contentsline {section}{\numberline {5.2}今後の課題}{19}
Binary file paper/final_main/pic/topologymanager2.graffle has changed