# HG changeset patch # User suruga # Date 1519023410 -32400 # Node ID bf55a5069bf10bbaf78d5dbe9085c4d824fef8eb # Parent ae83bdf21518a7985871901946b848e1e8d78154 fix diff -r ae83bdf21518 -r bf55a5069bf1 paper/.DS_Store Binary file paper/.DS_Store has changed diff -r ae83bdf21518 -r bf55a5069bf1 paper/final_main/.DS_Store Binary file paper/final_main/.DS_Store has changed diff -r ae83bdf21518 -r bf55a5069bf1 paper/final_main/chapter3.tex --- 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回データを書き込むよう設定する。 diff -r ae83bdf21518 -r bf55a5069bf1 paper/final_main/main.aux --- 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} diff -r ae83bdf21518 -r bf55a5069bf1 paper/final_main/main.dvi Binary file paper/final_main/main.dvi has changed diff -r ae83bdf21518 -r bf55a5069bf1 paper/final_main/main.lof --- 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@ } diff -r ae83bdf21518 -r bf55a5069bf1 paper/final_main/main.log --- 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) - [11] + [13] File: pic/LogupdateTree.pdf Graphic file (type 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). diff -r ae83bdf21518 -r bf55a5069bf1 paper/final_main/main.lol --- 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} diff -r ae83bdf21518 -r bf55a5069bf1 paper/final_main/main.pdf Binary file paper/final_main/main.pdf has changed diff -r ae83bdf21518 -r bf55a5069bf1 paper/final_main/main.toc --- 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} diff -r ae83bdf21518 -r bf55a5069bf1 paper/final_main/pic/topologymanager2.graffle Binary file paper/final_main/pic/topologymanager2.graffle has changed