# HG changeset patch # User "Yuta AKAMINE " # Date 1238199430 -32400 # Node ID 6d68a483686476eaf9c68790b36aea5780bd35d8 # Parent 960f0848eb446fdf653a8e8c36a2267ae906301c texのwarning除去と、ディレクトリの整理 diff -r 960f0848eb44 -r 6d68a4836864 B-3-2-035713.pdf Binary file B-3-2-035713.pdf has changed diff -r 960f0848eb44 -r 6d68a4836864 finaleuc.tex --- a/finaleuc.tex Sat Mar 14 13:32:31 2009 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -\documentclass[twocolumn,twoside,9.5pt]{jarticle} -\usepackage[dvips]{graphicx} - -\usepackage{fancyhdr} -\pagestyle{fancy} -\lhead{\parpic{\includegraphics[height=1zw,clip,keepaspectratio]{pic/emblem-bitmap.eps}}ΰؼ 󹩳ز ´ȸȯɽ} -\rhead{} -\cfoot{} - -\setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}} -\setlength{\headheight}{0mm} -\setlength{\headsep}{5mm} -\setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}} -\setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}} -\setlength{\textwidth}{181mm} -\setlength{\textheight}{261mm} -\setlength{\footskip}{0mm} -\pagestyle{empty} - -\begin{document} -\title{̾} -\author{ֹ ̾ {}{} Ƴ : Ƴ̾} -\date{} -\maketitle -\thispagestyle{fancy} - -\section{section1} - -\section{section2} - -\section{section3} - - -\section{section4} - -\thispagestyle{fancy} -\begin{thebibliography}{9} - -\bibitem{1} - -\end{thebibliography} -\end{document} \ No newline at end of file diff -r 960f0848eb44 -r 6d68a4836864 finalsjis.tex --- a/finalsjis.tex Sat Mar 14 13:32:31 2009 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -\documentclass[twocolumn,twoside,9.5pt]{jarticle} -\usepackage[dvips]{graphicx} -\usepackage{picins} - -\usepackage{fancyhdr} -\pagestyle{fancy} -\lhead{\parpic{\includegraphics[height=1zw,clip,keepaspectratio]{pic/emblem-bitmap.eps}}w HwHw ƌ\} -\rhead{} -\cfoot{} - -\setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}} -\setlength{\headheight}{0mm} -\setlength{\headsep}{5mm} -\setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}} -\setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}} -\setlength{\textwidth}{181mm} -\setlength{\textheight}{261mm} -\setlength{\footskip}{0mm} -\pagestyle{empty} - -\begin{document} -\title{薼} -\author{wДԍ {}{} w : w} -\date{} -\maketitle -\thispagestyle{fancy} - -\section{section1} - -\section{section2} - -\section{section3} - - -\section{section4} - -\thispagestyle{fancy} -\begin{thebibliography}{9} - -\bibitem{1} - -\end{thebibliography} -\end{document} \ No newline at end of file diff -r 960f0848eb44 -r 6d68a4836864 finalutf8.tex --- a/finalutf8.tex Sat Mar 14 13:32:31 2009 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -\documentclass[twocolumn,twoside,9.5pt]{jarticle} -\usepackage[dvips]{graphicx} - -\usepackage{fancyhdr} -\pagestyle{fancy} -\lhead{\parpic{\includegraphics[height=1zw,clip,keepaspectratio]{pic/emblem-bitmap.eps}}琉球大学主催 工学部情報工学科 卒業研究発表会} -\rhead{} -\cfoot{} - -\setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}} -\setlength{\headheight}{0mm} -\setlength{\headsep}{5mm} -\setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}} -\setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}} -\setlength{\textwidth}{181mm} -\setlength{\textheight}{261mm} -\setlength{\footskip}{0mm} -\pagestyle{empty} - -\begin{document} -\title{題名} -\author{学籍番号 氏名 {}{} 指導教員 : 指導教員名} -\date{} -\maketitle -\thispagestyle{fancy} - -\section{section1} - -\section{section2} - -\section{section3} - - -\section{section4} - -\thispagestyle{fancy} -\begin{thebibliography}{9} - -\bibitem{1} - -\end{thebibliography} -\end{document} \ No newline at end of file diff -r 960f0848eb44 -r 6d68a4836864 img/emblem-bitmap.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/img/emblem-bitmap.eps Sat Mar 28 09:17:10 2009 +0900 @@ -0,0 +1,376 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: (ImageMagick) +%%Title: (emblem.eps) +%%CreationDate: (Sat Dec 16 23:16:28 2000) +%%BoundingBox: 226 313 398.455 493 +%%DocumentData: Clean7Bit +%%LanguageLevel: 1 +%%Pages: 0 +%%EndComments + +%%BeginDefaults +%%PageOrientation: Portrait +%%EndDefaults + +%%BeginProlog +% +% Display a color image. The image is displayed in color on +% Postscript viewers or printers that support color, otherwise +% it is displayed as grayscale. +% +/buffer 512 string def +/byte 1 string def +/color_packet 3 string def +/pixels 768 string def + +/DirectClassPacket +{ + % + % Get a DirectClass packet. + % + % Parameters: + % red. + % green. + % blue. + % length: number of pixels minus one of this color (optional). + % + currentfile color_packet readhexstring pop pop + compression 0 gt + { + /number_pixels 3 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add 3 mul def + } ifelse + 0 3 number_pixels 1 sub + { + pixels exch color_packet putinterval + } for + pixels 0 number_pixels getinterval +} bind def + +/DirectClassImage +{ + % + % Display a DirectClass image. + % + systemdict /colorimage known + { + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { DirectClassPacket } false 3 colorimage + } + { + % + % No colorimage operator; convert to grayscale. + % + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { GrayDirectClassPacket } image + } ifelse +} bind def + +/GrayDirectClassPacket +{ + % + % Get a DirectClass packet; convert to grayscale. + % + % Parameters: + % red + % green + % blue + % length: number of pixels minus one of this color (optional). + % + currentfile color_packet readhexstring pop pop + color_packet 0 get 0.299 mul + color_packet 1 get 0.587 mul add + color_packet 2 get 0.114 mul add + cvi + /gray_packet exch def + compression 0 gt + { + /number_pixels 1 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add def + } ifelse + 0 1 number_pixels 1 sub + { + pixels exch gray_packet put + } for + pixels 0 number_pixels getinterval +} bind def + +/GrayPseudoClassPacket +{ + % + % Get a PseudoClass packet; convert to grayscale. + % + % Parameters: + % index: index into the colormap. + % length: number of pixels minus one of this color (optional). + % + currentfile byte readhexstring pop 0 get + /offset exch 3 mul def + /color_packet colormap offset 3 getinterval def + color_packet 0 get 0.299 mul + color_packet 1 get 0.587 mul add + color_packet 2 get 0.114 mul add + cvi + /gray_packet exch def + compression 0 gt + { + /number_pixels 1 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add def + } ifelse + 0 1 number_pixels 1 sub + { + pixels exch gray_packet put + } for + pixels 0 number_pixels getinterval +} bind def + +/PseudoClassPacket +{ + % + % Get a PseudoClass packet. + % + % Parameters: + % index: index into the colormap. + % length: number of pixels minus one of this color (optional). + % + currentfile byte readhexstring pop 0 get + /offset exch 3 mul def + /color_packet colormap offset 3 getinterval def + compression 0 gt + { + /number_pixels 3 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add 3 mul def + } ifelse + 0 3 number_pixels 1 sub + { + pixels exch color_packet putinterval + } for + pixels 0 number_pixels getinterval +} bind def + +/PseudoClassImage +{ + % + % Display a PseudoClass image. + % + % Parameters: + % class: 0-PseudoClass or 1-Grayscale. + % + currentfile buffer readline pop + token pop /class exch def pop + class 0 gt + { + currentfile buffer readline pop + token pop /depth exch def pop + /grays columns 8 add depth sub depth mul 8 idiv string def + columns rows depth + [ + columns 0 0 + rows neg 0 rows + ] + { currentfile grays readhexstring pop } image + } + { + % + % Parameters: + % colors: number of colors in the colormap. + % colormap: red, green, blue color packets. + % + currentfile buffer readline pop + token pop /colors exch def pop + /colors colors 3 mul def + /colormap colors string def + currentfile colormap readhexstring pop pop + systemdict /colorimage known + { + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { PseudoClassPacket } false 3 colorimage + } + { + % + % No colorimage operator; convert to grayscale. + % + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { GrayPseudoClassPacket } image + } ifelse + } ifelse +} bind def + +/DisplayImage +{ + % + % Display a DirectClass or PseudoClass image. + % + % Parameters: + % x & y translation. + % x & y scale. + % label pointsize. + % image label. + % image columns & rows. + % class: 0-DirectClass or 1-PseudoClass. + % compression: 0-RunlengthEncodedCompression or 1-NoCompression. + % hex color packets. + % + gsave + currentfile buffer readline pop + token pop /x exch def + token pop /y exch def pop + x y translate + currentfile buffer readline pop + token pop /x exch def + token pop /y exch def pop + currentfile buffer readline pop + token pop /pointsize exch def pop + /Helvetica findfont pointsize scalefont setfont + x y scale + currentfile buffer readline pop + token pop /columns exch def + token pop /rows exch def pop + currentfile buffer readline pop + token pop /class exch def pop + currentfile buffer readline pop + token pop /compression exch def pop + class 0 gt { PseudoClassImage } { DirectClassImage } ifelse + grestore +} bind def +%%EndProlog +%%Page: 1 1 +%%PageBoundingBox: 226 313 399 494 +userdict begin +%%BeginData: +DisplayImage +226 313 +173.455 181.091 +12.000000 +159 166 +1 +1 +1 +1 +fffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffff +fffffffefffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffff +fffffffffffffffefffffffffffffffffffffffffffffffffffffffeffffffffffffffff +fffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffeffffffff +fffffffffe0000fffffffffffffffffeffffffffffffffffc0000007fffffffffffffffe +fffffffffffffff8000000003ffffffffffffffeffffffffffffffe00002000007ffffff +fffffffeffffffffffffff008133000000fff8fffffffffefffffffffffffc04efbba440 +003ff0fffffffffeffffffffffffe017fffff661000ff0fffffffffeffffffffffff813f +f803ffe7fffff0fffffffffeffffffffffff03f8000007fffffff0fffffffffeffffffff +fffc3f813ffe003ffffff0fffffffffeffffffffffc1c1ffffffff8700000000000ffffe +ffffffffff078ffffffffff300000000000ffffeffffffffff078ffffffffff300000000 +000ffffefffffffffe3e3ffbdee67fff00000000000ffffefffffffffc787ff99eee6fff +07f83fe1000ffffefffffffff8e3ff319dce4cff0ff83fe3ff8ffffefffffffff38ffb93 +9dcc4cef0ff83fe3ff8ffffeffffffffc63ffb919dcc4ccf0ff83fe3ff8ffffeffffffff +9cffbb119dcc48cf0ff83fe3ff8ffffeffffffff73ffb1111988488f0ff83fe3ff8ffffe +fffffffee7fbb1111988c19f0ff83fe3ff8ffffefffffffb9ff19100198800070ff83fe3 +ff8ffffefffffff73e719000110000070ff83fe3ff8ffffeffffffecff38880011000007 +0ff83fe3ff8ffffeffffffecff388800110000070ff83fe3ff8ffffefffffff9fb38800e +110000070ff83fe3ff8ffffefffffff3f318001f81000d870ff83fe3ff8ffffeffffffef +fb98007fc0003fe70ff83fe3ff8ffffeffffffffd98c01ffe0003fff0ffc7fe3ff8ffffe +ffffffdf898403f1e000fffffffffffffffffffeffffffbecc800fe0e001f27fffffffff +fffffffeffffff7cc4801fc1f007f27ffffffffffffffffefffffcf200007e0fffffa267 +803f3fc7c03ffffefffffdf00000f81f3fffa267001e1f83800ffffefffffbe00019f07b +77fda267001e0603000ffffeffffffe000ffe1e937d9a267001e0003800ffffeffffff80 +7fff83e926d98027003f000f800ffffeffffff01ffff8fe9269880070fffc01fff8ffffe +fffffc0fffef1ec8228800070fffc01fff8ffffefffffc1ffe1e3ee8028800070fff0007 +ff0ffffefffff41fc03c746000880007001e0003800ffffefffff01f8038726000080007 +001e0603000ffffefffff01f8070f200000003c7001e0403000ffffeffffa01f0fe3b007 +80003fff001f0007800f7ffeffff801e03c7b00fc0007fff0fff800fff0f7ffeffff803e +018e900fe000ffff0fffc03fff0f3ffeffff803c071e001ff803ffff0fff800fff0f3ffe +ffff00fc0e32007ffe1fffff003e0007c00f3ffeffff03fc027a007fffffffff001e0403 +800f1ffeffff0ff8047801ffffffffff001e1f03000f1ffeffff1ff81cd803ffffffffff +001e1fc7000f0ffefffc7ff80dc807ffffffffff803fffff801e0ffefff8fff01bc01fff +fffffffffffffffffffe0ffefff9fff033007ffffffffffffffffffffffe0ffefffffff0 +6707ffffffffffff00000000000f0ffeffffffe06f0fffffffffffff00000000000f07fe +ffffffe1cd1fffffffffffff00000000000f07feffffffe0dc3fffffffffffff00000000 +000f07feffffffe09c3fffffffffffff0fffffffff0f07feffffffe1b83fffffffffffff +0f1e0007870f03feffffffe3383fffffffffffff0f1c0003870f03feffffffe3783fffff +ffffffff0f1c0003870f03feffffffe6683fffffffffffff0f1c0003870f03feffffffe6 +e03ffffffffffffe0f1c3fe3870f03feffffffe6e03fffffffffffff0f1c0003870f81fe +ffffffed80fffffffffffffe0f1e0003870f01feffffffed80fffffffffffffe0f1e0003 +870f01fefff9ffedc1fffffffffffffe0f1fe0ff870f01feffe1ffeb83fffffffffffffe +0f1fe0ff870f01feffc1ffff07fffffffffffffe0f000000070f81feff81ffff0fffffff +fffffffe0f000000070f01feff01fffe3fffffffffffffff1f000000079e01fefe01fffe +7fffffffffffffffff00000007bf81fefe01fffcffffffffffffffffffffe0ffffff00fe +fe01ffffffffffffffffffffffffe0fffffe00fefe01ffffffffffffffffffffffffe0ff +fff830fefe01fffffffffffffffffffffff870fc1e3f80fefe01ffffffffffffffffffff +fff879ee0e1f00fefe01fffffffffffffffffffffff87fe7863c00fefe01ffffffffffff +fffffffffff03fc3c63800fefe01fffffffffffffffffffffff01fc3e638f0fefe01ffff +fffffffffffffffffff80661fe3fc0fefe01fffffffffffffffffffffffc0038fe3f00fe +fe01fffffffffffffffffffffffe000c7e3c01fefe01fffffffffffffffffffffff3000c +3e3001fefe01ffffffffffffffffffffffe182061c31e1fefe01ffffffffffffffffffff +ffc041031c3f81fefe00ffffffffffffffffffffffc000438c3801fefe00ffffffffffff +ffffffffff801061cc2001feff00ffffffffffffffffffffff800830f86001feff00ffff +ffffffffffffffffff800830f86001feff00ffffffffffffffffffffff800418f87f03fe +ff00ffffffffffffffffffffff00061c787c03feff80ffffffffffffffffffffff00030c +386003feff80ffffffffffffffffffffff000186306003feff80ffffffffffffffffffff +ff002186307f87feff807ffffffffffffffffffffe0000c3307c07feffc07fffffffffff +fffffffffe0000e3e04007feffc07ffffffffffffffffffffc001873e0fc0ffeffe03fff +fffffffffffffffff8000c39c1e00ffeffe03ffffffffffffffffffff0000c39c1800ffe +ffe01ffffffffffffffffffff0000e1dc1f80ffefff01fffffffffffffffffffe000471d +83fe0ffefff00fffffffffffffffffffc000471f83e00ffefff00fffffffffffffffffff +c000630f07001ffefff806ffffffffffffffffff8000238f07f81ffefff8067fffffffff +ffffffff0004238e07f83ffefffc033fffffffffffffffff000421c60e003ffefffc031f +fffffffffffffffe008611c40f007ffefffe019ffffffffffffffffc004211ec1fc07ffe +fffe00c7fffffffffffffff8004311fc1e007ffeffff00c3fffffffffffffff8006318fc +3800fffeffff0061fffffffffffffff0006318f87f81fffeffff00207fffffffffffffe0 +00219cf87fc1fffeffff80201fffffffffffffe002319c70e003fffeffff80100fffffff +ffffffe001319ce1e003fffeffffc01f87fffffffffffe600131cfc1fe07fffeffffe01f +03fffffffffff8201119cf83ff87fffefffff00e03ffffffffffe0201118cf83000ffffe +fffff807f1ffffffffff80321118ef03e01ffffefffff803e07ffffffffc0033111cfe06 +781ffffefffffc01c03ffe0fffe00033191cfc0c003ffffefffffe00fc0ff800fe000013 +189cf81f807ffffeffffff007c01e00000000013189ef03fe07ffffeffffff8039800400 +00000011189ee070007ffffeffffff801e00040000000011088fe0fc00fffffeffffffc0 +0e78080000000019088fc1fe01fffffeffffffe007f118000010103988cf03c101fffffe +fffffff003c73088001011398cde07f007fffffefffffff001de71884211313b8cfc0e7c +0ffffffeffffffec007e61084231333b8cf01e000ffffffefffffff3000fc711c623333b +9f8073e03ffffffefffffff98003ce31c673333b9f00f0007ffffffefffffffe6001de71 +8e63333bfe01fc00fffffffeffffffff30007c738ee7233bf803e201fffffffeffffffff +88001ef79ee6663fe00f7003fffffffeffffffffc40007ff1ce6677f001f1807fffffffe +fffffffff30000ff3dce7ffc00f9c00ffffffffefffffffff8c0001ffdffffe000f8403f +fffffffefffffffff8c0001ffdffffe000f8403ffffffffefffffffffc300003ffffff00 +03fc007ffffffffefffffffffe0c00001fff80000f8700fffffffffeffffffffff81c000 +00000001fe300ffffffffffeffffffffffe0f80000000007e3001ffffffffffeffffffff +fff87f800000003f70003ffffffffffefffffffffffe27f0000003fe1800fffffffffffe +ffffffffffff833ff003fff10003fffffffffffeffffffffffffe10fffffff38000fffff +fffffffefffffffffffff801bffb2300007ffffffffffffeffffffffffffff0011313080 +01fffffffffffffeffffffffffffffc00118004007fffffffffffffefffffffffffffff0 +000800007ffffffffffffffeffffffffffffffffc0000003fffffffffffffffeffffffff +fffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffe +fffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffff +fffffffefffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffff +fffffffffffffffe +%%EndData +end +%%PageTrailer +%%Trailer +%%BoundingBox: 226 313 398.455 493 +%%EOF diff -r 960f0848eb44 -r 6d68a4836864 pic/emblem-bitmap.eps --- a/pic/emblem-bitmap.eps Sat Mar 14 13:32:31 2009 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,376 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: (ImageMagick) -%%Title: (emblem.eps) -%%CreationDate: (Sat Dec 16 23:16:28 2000) -%%BoundingBox: 226 313 398.455 493 -%%DocumentData: Clean7Bit -%%LanguageLevel: 1 -%%Pages: 0 -%%EndComments - -%%BeginDefaults -%%PageOrientation: Portrait -%%EndDefaults - -%%BeginProlog -% -% Display a color image. The image is displayed in color on -% Postscript viewers or printers that support color, otherwise -% it is displayed as grayscale. -% -/buffer 512 string def -/byte 1 string def -/color_packet 3 string def -/pixels 768 string def - -/DirectClassPacket -{ - % - % Get a DirectClass packet. - % - % Parameters: - % red. - % green. - % blue. - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - compression 0 gt - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/DirectClassImage -{ - % - % Display a DirectClass image. - % - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { DirectClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayDirectClassPacket } image - } ifelse -} bind def - -/GrayDirectClassPacket -{ - % - % Get a DirectClass packet; convert to grayscale. - % - % Parameters: - % red - % green - % blue - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 gt - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/GrayPseudoClassPacket -{ - % - % Get a PseudoClass packet; convert to grayscale. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 gt - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassPacket -{ - % - % Get a PseudoClass packet. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - compression 0 gt - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassImage -{ - % - % Display a PseudoClass image. - % - % Parameters: - % class: 0-PseudoClass or 1-Grayscale. - % - currentfile buffer readline pop - token pop /class exch def pop - class 0 gt - { - currentfile buffer readline pop - token pop /depth exch def pop - /grays columns 8 add depth sub depth mul 8 idiv string def - columns rows depth - [ - columns 0 0 - rows neg 0 rows - ] - { currentfile grays readhexstring pop } image - } - { - % - % Parameters: - % colors: number of colors in the colormap. - % colormap: red, green, blue color packets. - % - currentfile buffer readline pop - token pop /colors exch def pop - /colors colors 3 mul def - /colormap colors string def - currentfile colormap readhexstring pop pop - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { PseudoClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayPseudoClassPacket } image - } ifelse - } ifelse -} bind def - -/DisplayImage -{ - % - % Display a DirectClass or PseudoClass image. - % - % Parameters: - % x & y translation. - % x & y scale. - % label pointsize. - % image label. - % image columns & rows. - % class: 0-DirectClass or 1-PseudoClass. - % compression: 0-RunlengthEncodedCompression or 1-NoCompression. - % hex color packets. - % - gsave - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - x y translate - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - currentfile buffer readline pop - token pop /pointsize exch def pop - /Helvetica findfont pointsize scalefont setfont - x y scale - currentfile buffer readline pop - token pop /columns exch def - token pop /rows exch def pop - currentfile buffer readline pop - token pop /class exch def pop - currentfile buffer readline pop - token pop /compression exch def pop - class 0 gt { PseudoClassImage } { DirectClassImage } ifelse - grestore -} bind def -%%EndProlog -%%Page: 1 1 -%%PageBoundingBox: 226 313 399 494 -userdict begin -%%BeginData: -DisplayImage -226 313 -173.455 181.091 -12.000000 -159 166 -1 -1 -1 -1 -fffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffff -fffffffefffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffff -fffffffffffffffefffffffffffffffffffffffffffffffffffffffeffffffffffffffff -fffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffeffffffff -fffffffffe0000fffffffffffffffffeffffffffffffffffc0000007fffffffffffffffe -fffffffffffffff8000000003ffffffffffffffeffffffffffffffe00002000007ffffff -fffffffeffffffffffffff008133000000fff8fffffffffefffffffffffffc04efbba440 -003ff0fffffffffeffffffffffffe017fffff661000ff0fffffffffeffffffffffff813f -f803ffe7fffff0fffffffffeffffffffffff03f8000007fffffff0fffffffffeffffffff -fffc3f813ffe003ffffff0fffffffffeffffffffffc1c1ffffffff8700000000000ffffe -ffffffffff078ffffffffff300000000000ffffeffffffffff078ffffffffff300000000 -000ffffefffffffffe3e3ffbdee67fff00000000000ffffefffffffffc787ff99eee6fff -07f83fe1000ffffefffffffff8e3ff319dce4cff0ff83fe3ff8ffffefffffffff38ffb93 -9dcc4cef0ff83fe3ff8ffffeffffffffc63ffb919dcc4ccf0ff83fe3ff8ffffeffffffff -9cffbb119dcc48cf0ff83fe3ff8ffffeffffffff73ffb1111988488f0ff83fe3ff8ffffe -fffffffee7fbb1111988c19f0ff83fe3ff8ffffefffffffb9ff19100198800070ff83fe3 -ff8ffffefffffff73e719000110000070ff83fe3ff8ffffeffffffecff38880011000007 -0ff83fe3ff8ffffeffffffecff388800110000070ff83fe3ff8ffffefffffff9fb38800e -110000070ff83fe3ff8ffffefffffff3f318001f81000d870ff83fe3ff8ffffeffffffef -fb98007fc0003fe70ff83fe3ff8ffffeffffffffd98c01ffe0003fff0ffc7fe3ff8ffffe -ffffffdf898403f1e000fffffffffffffffffffeffffffbecc800fe0e001f27fffffffff -fffffffeffffff7cc4801fc1f007f27ffffffffffffffffefffffcf200007e0fffffa267 -803f3fc7c03ffffefffffdf00000f81f3fffa267001e1f83800ffffefffffbe00019f07b -77fda267001e0603000ffffeffffffe000ffe1e937d9a267001e0003800ffffeffffff80 -7fff83e926d98027003f000f800ffffeffffff01ffff8fe9269880070fffc01fff8ffffe -fffffc0fffef1ec8228800070fffc01fff8ffffefffffc1ffe1e3ee8028800070fff0007 -ff0ffffefffff41fc03c746000880007001e0003800ffffefffff01f8038726000080007 -001e0603000ffffefffff01f8070f200000003c7001e0403000ffffeffffa01f0fe3b007 -80003fff001f0007800f7ffeffff801e03c7b00fc0007fff0fff800fff0f7ffeffff803e -018e900fe000ffff0fffc03fff0f3ffeffff803c071e001ff803ffff0fff800fff0f3ffe -ffff00fc0e32007ffe1fffff003e0007c00f3ffeffff03fc027a007fffffffff001e0403 -800f1ffeffff0ff8047801ffffffffff001e1f03000f1ffeffff1ff81cd803ffffffffff -001e1fc7000f0ffefffc7ff80dc807ffffffffff803fffff801e0ffefff8fff01bc01fff -fffffffffffffffffffe0ffefff9fff033007ffffffffffffffffffffffe0ffefffffff0 -6707ffffffffffff00000000000f0ffeffffffe06f0fffffffffffff00000000000f07fe -ffffffe1cd1fffffffffffff00000000000f07feffffffe0dc3fffffffffffff00000000 -000f07feffffffe09c3fffffffffffff0fffffffff0f07feffffffe1b83fffffffffffff -0f1e0007870f03feffffffe3383fffffffffffff0f1c0003870f03feffffffe3783fffff -ffffffff0f1c0003870f03feffffffe6683fffffffffffff0f1c0003870f03feffffffe6 -e03ffffffffffffe0f1c3fe3870f03feffffffe6e03fffffffffffff0f1c0003870f81fe -ffffffed80fffffffffffffe0f1e0003870f01feffffffed80fffffffffffffe0f1e0003 -870f01fefff9ffedc1fffffffffffffe0f1fe0ff870f01feffe1ffeb83fffffffffffffe -0f1fe0ff870f01feffc1ffff07fffffffffffffe0f000000070f81feff81ffff0fffffff -fffffffe0f000000070f01feff01fffe3fffffffffffffff1f000000079e01fefe01fffe -7fffffffffffffffff00000007bf81fefe01fffcffffffffffffffffffffe0ffffff00fe -fe01ffffffffffffffffffffffffe0fffffe00fefe01ffffffffffffffffffffffffe0ff -fff830fefe01fffffffffffffffffffffff870fc1e3f80fefe01ffffffffffffffffffff -fff879ee0e1f00fefe01fffffffffffffffffffffff87fe7863c00fefe01ffffffffffff -fffffffffff03fc3c63800fefe01fffffffffffffffffffffff01fc3e638f0fefe01ffff -fffffffffffffffffff80661fe3fc0fefe01fffffffffffffffffffffffc0038fe3f00fe -fe01fffffffffffffffffffffffe000c7e3c01fefe01fffffffffffffffffffffff3000c -3e3001fefe01ffffffffffffffffffffffe182061c31e1fefe01ffffffffffffffffffff -ffc041031c3f81fefe00ffffffffffffffffffffffc000438c3801fefe00ffffffffffff -ffffffffff801061cc2001feff00ffffffffffffffffffffff800830f86001feff00ffff -ffffffffffffffffff800830f86001feff00ffffffffffffffffffffff800418f87f03fe -ff00ffffffffffffffffffffff00061c787c03feff80ffffffffffffffffffffff00030c -386003feff80ffffffffffffffffffffff000186306003feff80ffffffffffffffffffff -ff002186307f87feff807ffffffffffffffffffffe0000c3307c07feffc07fffffffffff -fffffffffe0000e3e04007feffc07ffffffffffffffffffffc001873e0fc0ffeffe03fff -fffffffffffffffff8000c39c1e00ffeffe03ffffffffffffffffffff0000c39c1800ffe -ffe01ffffffffffffffffffff0000e1dc1f80ffefff01fffffffffffffffffffe000471d -83fe0ffefff00fffffffffffffffffffc000471f83e00ffefff00fffffffffffffffffff -c000630f07001ffefff806ffffffffffffffffff8000238f07f81ffefff8067fffffffff -ffffffff0004238e07f83ffefffc033fffffffffffffffff000421c60e003ffefffc031f -fffffffffffffffe008611c40f007ffefffe019ffffffffffffffffc004211ec1fc07ffe -fffe00c7fffffffffffffff8004311fc1e007ffeffff00c3fffffffffffffff8006318fc -3800fffeffff0061fffffffffffffff0006318f87f81fffeffff00207fffffffffffffe0 -00219cf87fc1fffeffff80201fffffffffffffe002319c70e003fffeffff80100fffffff -ffffffe001319ce1e003fffeffffc01f87fffffffffffe600131cfc1fe07fffeffffe01f -03fffffffffff8201119cf83ff87fffefffff00e03ffffffffffe0201118cf83000ffffe -fffff807f1ffffffffff80321118ef03e01ffffefffff803e07ffffffffc0033111cfe06 -781ffffefffffc01c03ffe0fffe00033191cfc0c003ffffefffffe00fc0ff800fe000013 -189cf81f807ffffeffffff007c01e00000000013189ef03fe07ffffeffffff8039800400 -00000011189ee070007ffffeffffff801e00040000000011088fe0fc00fffffeffffffc0 -0e78080000000019088fc1fe01fffffeffffffe007f118000010103988cf03c101fffffe -fffffff003c73088001011398cde07f007fffffefffffff001de71884211313b8cfc0e7c -0ffffffeffffffec007e61084231333b8cf01e000ffffffefffffff3000fc711c623333b -9f8073e03ffffffefffffff98003ce31c673333b9f00f0007ffffffefffffffe6001de71 -8e63333bfe01fc00fffffffeffffffff30007c738ee7233bf803e201fffffffeffffffff -88001ef79ee6663fe00f7003fffffffeffffffffc40007ff1ce6677f001f1807fffffffe -fffffffff30000ff3dce7ffc00f9c00ffffffffefffffffff8c0001ffdffffe000f8403f -fffffffefffffffff8c0001ffdffffe000f8403ffffffffefffffffffc300003ffffff00 -03fc007ffffffffefffffffffe0c00001fff80000f8700fffffffffeffffffffff81c000 -00000001fe300ffffffffffeffffffffffe0f80000000007e3001ffffffffffeffffffff -fff87f800000003f70003ffffffffffefffffffffffe27f0000003fe1800fffffffffffe -ffffffffffff833ff003fff10003fffffffffffeffffffffffffe10fffffff38000fffff -fffffffefffffffffffff801bffb2300007ffffffffffffeffffffffffffff0011313080 -01fffffffffffffeffffffffffffffc00118004007fffffffffffffefffffffffffffff0 -000800007ffffffffffffffeffffffffffffffffc0000003fffffffffffffffeffffffff -fffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffe -fffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffff -fffffffefffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffff -fffffffffffffffe -%%EndData -end -%%PageTrailer -%%Trailer -%%BoundingBox: 226 313 398.455 493 -%%EOF diff -r 960f0848eb44 -r 6d68a4836864 yokou.aux --- a/yokou.aux Sat Mar 14 13:32:31 2009 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -\relax -\citation{aa} -\citation{bb} -\@writefile{toc}{\contentsline {section}{\numberline {1}スケーラビリティをデバッグする}{1}} -\@writefile{toc}{\contentsline {section}{\numberline {2}Federated Linda}{1}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Federated Linda Protocol}{1}} -\@writefile{toc}{\contentsline {section}{\numberline {3}Protocol Engine}{1}} -\@writefile{toc}{\contentsline {section}{\numberline {4}Meta Protocol Engine}{1}} -\bibcite{aa}{1} -\bibcite{bb}{2} -\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Meta Protocol Engine}}{2}} -\newlabel{mpe}{{1}{2}} -\@writefile{toc}{\contentsline {section}{\numberline {5}測定}{2}} -\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces 3台間の通信}}{2}} -\newlabel{ringthree}{{2}{2}} -\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces 接続を含む一周の時間}}{2}} -\newlabel{metaring}{{3}{2}} -\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces 千周の平均周回時間}}{2}} -\newlabel{metaring1000}{{4}{2}} -\@writefile{toc}{\contentsline {section}{\numberline {6}まとめと課題}{2}} diff -r 960f0848eb44 -r 6d68a4836864 yokou.dvi Binary file yokou.dvi has changed diff -r 960f0848eb44 -r 6d68a4836864 yokou.pdf Binary file yokou.pdf has changed diff -r 960f0848eb44 -r 6d68a4836864 yokou.tex --- a/yokou.tex Sat Mar 14 13:32:31 2009 +0900 +++ b/yokou.tex Sat Mar 28 09:17:10 2009 +0900 @@ -1,202 +1,204 @@ -\documentclass[twocolumn,twoside,9.5pt]{jarticle} -\usepackage[dvips]{graphicx} -\usepackage{fancyhdr,picins} -\pagestyle{fancy} -\lhead{\parpic{\includegraphics[height=1zw,clip,keepaspectratio]{pic/emblem-bitmap.eps}}琉球大学主催 工学部情報工学科 卒業研究発表会} -\rhead{} -\cfoot{} - -\setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}} -\setlength{\headheight}{0mm} -\setlength{\headsep}{5mm} -\setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}} -\setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}} -\setlength{\textwidth}{181mm} -\setlength{\textheight}{261mm} -\setlength{\footskip}{0mm} -\pagestyle{empty} - -\begin{document} -\title{分散プログラムにおけるデバッグツールの設計と実装} -\author{035713J 小野雅俊 {}{} 指導教員 : 河野真治} -\date{} -\maketitle -\thispagestyle{fancy} - -\section{スケーラビリティをデバッグする} -分散アプリケーションが多数開発されている近年、 -ノードやネットワークの動的な変化、故障、性能の多様性を考慮した -フレームワークが必要である。 -分散環境ではスケーラビリティを確保すること重要である。ここでの -スケーラビリティとはノードの規模の増大にも関わらず、 -アプリケーションの性能を維持できることを指す。 -分散アルゴリズムの作成には、論理的なプログラムの正しさだけでなく、 -スケーラビリティのデバッグを可能にする必要がある。 -つまり、デバッガ自体をスケーラブルに作る必要がある。 -そのため、分散 -フレームワークとして本研究室が提案しているFederated Lindaに、 -スケーラビリティなデバッグを行う為のメタな通信を行うプロトコルエンジン -を設計し実装した。 - -分散プログラムの -デバッグを行う際には通信は必須であるが、その通信によって -本来の通信に影響を及ぼす恐れがある。 -ここでは、スケーラビリティには若干問題があるが、 -本来の通信に影響を与えないように、一つのトークンをリング上に -流す方法を提案\cite{aa,bb}している。本論文ではPCクラスタ上で実際の通信を行ない、100台程度の -分散プログラムでの評価を行なった。 - -\section{Federated Linda} -Federated Lindaとは、複数のタプル空間を相互に -結ぶプロトコルエンジンによって -接続する分散プログラミングモデルである。 -Lindaと同じAPIを持つが、 -Lindaが一つのタプル空間を共有するのに対し、 -Federated Lindaは複数のタプル空間を個別に持つ。 -クライアントのアクセス数に対応して、 -タプルスペースの数を増やし処理を分散させる事により、スケーラビリティを保つ。 - -\subsection{Federated Linda Protocol} -Federated Lindaは以下の様にして通信を行う。 - -\begin{itemize} -\item public PSXLinda open(String \_host,int \_port) - -Linda Serverに対し、接続を行う。引数はホスト名とポート番号をとる。返り値はタプルスペースの番号となる。 - -\item public PSXReply in(int id) - -タプルスペース番号より引数で指定したidのタプルの受け取りを要求する。 -受け取りは、返値のPSXReplyをチェックすることにより非同期に行なう。 -in では待ち合わせは行なわれない。Call back 形式でタプルを受け取る -ことも出来る。 - -\item public PSXReply out(int id, ByteBuffer data) - -引数で指定したidでByteBuffer内のデータを送信する。 - -\item public int sync(long mtimeout) - -接続しているLinda Serverとタプルの送受信のポーリングを行う。 - -\end{itemize} - - -\section{Protocol Engine} -Protocol Engineとはタプルスペースを介してデータをやり取りするEngineである。 -二つのサーバー間でやり取りを行う場合、以下のようなプログラムとなる。 -\begin{verbatim} -FederatedLinda fdl; -PSXLinda getpsx; -PSXLinda sendpsx; -PSXReply in; -ByteBuffer data = ByteBuffer.allocate(10); - -//通信を初期化する -fdl = FederatedLinda.init(); -//データを取ってくるホストと受け渡すホストとの接続開始 -getpsx = fdl.open("cs100",10000); -sendpsx = fdl.open("cs101",10001); -//取ってくるホストからinを指定してデータを取得 -in = getpsx.in(10) -data = in.getData(); -//受け渡すホストに対しデータとidを指定して同期 -sendpsx.out(10,data); -fdl.sync(); -\end{verbatim} - -\section{Meta Protocol Engine} -デバッグ用の通信はLinda Server内部に直接アクセス出来なければ -ならない。これをLinda Server内のMeta Protocol Engine に -よって実現する(図\ref{mpe})。 -\begin{figure}[htbp] -\begin{center} -\includegraphics[scale=0.3]{img/3.eps} -\caption{Meta Protocol Engine} -\label{mpe} -\end{center} -\end{figure} - -Meta Engine は、 -通常のFederatedLindaと同様のin/out APIを持つ。 -Meta Engine では、\verb+sync()+が、属するLinda Server -自体のポーリングを行なう。\verb+sync()+の間は、 -通信は行なわれず タプル空間は変化しない。 -Meta Engine は安全にタプル空間にアクセス出来る。 -Meta Engine のプログラムは、 -Linda Serverのメインループで指定することが出来、 -Server 毎に独自の動作をさせることが可能である。 - -\section{測定} -本稿では -分散通信に影響を最低限にするために、Ringで性能を評価する。 -3台のLinda Server間でMeta Engineがデータをやり取りする場合 -のUMLシーケンス図は -図\ref{ringthree}のようになる。 -\begin{figure}[htbp] -\begin{center} -\includegraphics[scale=0.2]{img/meta_ring_three.eps} -\caption{3台間の通信} -\label{ringthree} -\end{center} -\end{figure} - -Ring では通信パケットは一つのみであり、デバッグ対象への -影響が小さい。 -しかし、スナップショットや一時停止などの -デバッグ操作をするためには、全ノードを周回する必要がある。 -%これはo(n)であり、十分にスケーラビリティがあるとは言えない。 -%しかし、もっとも影響が少ない方法なので、どの程度まで使える -%かを測定することには意味がある。 - -ここでは、通信パケットの大きさを変えて、 -3〜100までの台数でデータが1周(図\ref{metaring})する時間、 -および1000周(図\ref{metaring1000})した時に掛かった時間を測定する。 -前者では接続の手間を含む通信時間、後者では通信のみの時間を -計ることが出来る。 - -実験は、 -琉球大学 -情報工学科のクラスタ上(Core Duo 2GHz,メモリ1GB)で、 -クラスタジョブ管理システム -Torqueを用いて行なった。 -ネットワークはAlaxalA Gigabit Ethernet Switchで構成されている。 -クラスタ自体は180台あるが、 -安定して動作する100台までを使用して測定を行なった。 - -\begin{figure}[htbp] -\begin{center} -\includegraphics[scale=0.3]{img/metaring1.eps} -\caption{接続を含む一周の時間} -\label{metaring} -\end{center} -\end{figure} -\begin{figure}[htbp] -\begin{center} -\includegraphics[scale=0.3]{img/metaring1.eps} -\caption{千周の平均周回時間} -\label{metaring1000} -\end{center} -\end{figure} - -X軸が台数、Y軸がミリ秒、ラインの色が通信するデータサイズを表す。 -両図から見てわかる通り、データの量にはあまり依存する事はなくほぼ同じラインを形作っている。 -データを1周のみした場合は1サイクルあたり約14000ms、一台あたり約140ms掛かっている計算になり、 -それに対し1000周した際に掛かった時間は、1サイクルおよそ60ms、一台につき約0.6msとなっている。 -これより、一度、接続してしまえば、 -Meta Engine での通信は実際に100台程度のデバッグに使用するのに十分な性能を -持っていることが確認出来た。 - -\section{まとめと課題} -本稿ではデバッグを行う為に通常通信とは他に、Metaで通信するMeta Protocol Engineを実装し評価した。 -今回は、スナップショットなどの実際のデバッグ機能を実装することは出来なかった。 -通信の実験においても、 -同クラスタ上で別のRing通信や他のMetaLinda通信等があった場合の干渉の程度 -などを測定する必要があると考えられる。 - -\thispagestyle{fancy} -\begin{thebibliography}{9} -\bibitem {aa}上里献一, 河野真治 SuciライブラリのスナップショットAPIを利用した並列デバッグツールの設計 -\bibitem {bb}渕田 良彦, 河野 真治 分散プログラミングモデルFederated Lindaと分散デバッグ -\end{thebibliography} -\end{document} +\documentclass[twocolumn,twoside,9.5pt]{jarticle} +\usepackage[dvips]{graphicx} +\usepackage{fancyhdr,picins} +\pagestyle{fancy} +\lhead{\parpic{\includegraphics[height=1zw,clip,keepaspectratio]{img/emblem-bitmap.eps}}琉球大学主催 工学部情報工学科 卒業研究発表会} +\rhead{} +\cfoot{} + +\setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}} +\setlength{\headheight}{0mm} +\setlength{\headsep}{5mm} +\setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}} +\setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}} +\setlength{\textwidth}{181mm} +\setlength{\textheight}{261mm} +\setlength{\footskip}{0mm} +\pagestyle{empty} + +%%% \figref の定義 +\newcommand\figref[1]{図 \ref{fig:#1}} + +\begin{document} +\title{分散プログラムにおけるデバッグツールの設計と実装} +\author{035713J 小野雅俊 {}{} 指導教員 : 河野真治} +\date{} +\maketitle +\thispagestyle{fancy} + +\section{スケーラビリティをデバッグする} +分散アプリケーションが多数開発されている近年、 +ノードやネットワークの動的な変化、故障、性能の多様性を考慮した +フレームワークが必要である。 +分散環境ではスケーラビリティを確保すること重要である。ここでの +スケーラビリティとはノードの規模の増大にも関わらず、 +アプリケーションの性能を維持できることを指す。 +分散アルゴリズムの作成には、論理的なプログラムの正しさだけでなく、 +スケーラビリティのデバッグを可能にする必要がある。 +つまり、デバッガ自体をスケーラブルに作る必要がある。 +そのため、分散 +フレームワークとして本研究室が提案しているFederated Lindaに、 +スケーラビリティなデバッグを行う為のメタな通信を行うプロトコルエンジン +を設計し実装した。 + +分散プログラムの +デバッグを行う際には通信は必須であるが、その通信によって +本来の通信に影響を及ぼす恐れがある。 +ここでは、スケーラビリティには若干問題があるが、 +本来の通信に影響を与えないように、一つのトークンをリング上に +流す方法を提案\cite{aa,bb}している。本論文ではPCクラスタ上で実際の通信を行ない、100台程度の +分散プログラムでの評価を行なった。 + +\section{Federated Linda} +Federated Lindaとは、複数のタプル空間を相互に +結ぶプロトコルエンジンによって +接続する分散プログラミングモデルである。 +Lindaと同じAPIを持つが、 +Lindaが一つのタプル空間を共有するのに対し、 +Federated Lindaは複数のタプル空間を個別に持つ。 +クライアントのアクセス数に対応して、 +タプルスペースの数を増やし処理を分散させる事により、スケーラビリティを保つ。 + +\subsection{Federated Linda Protocol} +Federated Lindaは以下の様にして通信を行う。 + +\begin{itemize} +\item public PSXLinda open(String \_host,int \_port) + +Linda Serverに対し、接続を行う。引数はホスト名とポート番号をとる。返り値はタプルスペースの番号となる。 + +\item public PSXReply in(int id) + +タプルスペース番号より引数で指定したidのタプルの受け取りを要求する。 +受け取りは、返値のPSXReplyをチェックすることにより非同期に行なう。 +in では待ち合わせは行なわれない。Call back 形式でタプルを受け取る +ことも出来る。 + +\item public PSXReply out(int id, ByteBuffer data) + +引数で指定したidでByteBuffer内のデータを送信する。 + +\item public int sync(long mtimeout) + +接続しているLinda Serverとタプルの送受信のポーリングを行う。 + +\end{itemize} + + +\section{Protocol Engine} +Protocol Engineとはタプルスペースを介してデータをやり取りするEngineである。 +二つのサーバー間でやり取りを行う場合、以下のようなプログラムとなる。 +\begin{verbatim} +FederatedLinda fdl; +PSXLinda getpsx; +PSXLinda sendpsx; +PSXReply in; +ByteBuffer data = ByteBuffer.allocate(10); + +//通信を初期化する +fdl = FederatedLinda.init(); +//データを取ってくるホストと受け渡すホストとの接続開始 +getpsx = fdl.open("cs100",10000); +sendpsx = fdl.open("cs101",10001); +//取ってくるホストからinを指定してデータを取得 +in = getpsx.in(10) +data = in.getData(); +//受け渡すホストに対しデータとidを指定して同期 +sendpsx.out(10,data); +fdl.sync(); +\end{verbatim} + +\section{Meta Protocol Engine} +デバッグ用の通信はLinda Server内部に直接アクセス出来なければ +ならない。これをLinda Server内のMeta Protocol Engine に +よって実現する(\figref{mpe})。 +\begin{figure}[htbp] +\begin{center} +\includegraphics[scale=0.3]{img/3.eps} +\caption{Meta Protocol Engine} +\label{mpe} +\end{center} +\end{figure} + +Meta Engine は、 +通常のFederatedLindaと同様のin/out APIを持つ。 +Meta Engine では、\verb+sync()+が、属するLinda Server +自体のポーリングを行なう。\verb+sync()+の間は、 +通信は行なわれず タプル空間は変化しない。 +Meta Engine は安全にタプル空間にアクセス出来る。 +Meta Engine のプログラムは、 +Linda Serverのメインループで指定することが出来、 +Server 毎に独自の動作をさせることが可能である。 + +\section{測定} +本稿では +分散通信に影響を最低限にするために、Ringで性能を評価する。 +3台のLinda Server間でMeta Engineがデータをやり取りする場合 +のUMLシーケンス図は\figref{ringthree}のようになる。 +\begin{figure}[htbp] +\begin{center} +\includegraphics[scale=0.2]{img/meta_ring_three.eps} +\caption{3台間の通信} +\label{ringthree} +\end{center} +\end{figure} + +Ring では通信パケットは一つのみであり、デバッグ対象への +影響が小さい。 +しかし、スナップショットや一時停止などの +デバッグ操作をするためには、全ノードを周回する必要がある。 +%これはo(n)であり、十分にスケーラビリティがあるとは言えない。 +%しかし、もっとも影響が少ない方法なので、どの程度まで使える +%かを測定することには意味がある。 + +ここでは、通信パケットの大きさを変えて、 +3〜100までの台数でデータが1周(\figref{metaring})する時間、 +および1000周(\figref{metaring1000})した時に掛かった時間を測定する。 +前者では接続の手間を含む通信時間、後者では通信のみの時間を +計ることが出来る。 + +実験は、 +琉球大学 +情報工学科のクラスタ上(Core Duo 2GHz,メモリ1GB)で、 +クラスタジョブ管理システム +Torqueを用いて行なった。 +ネットワークはAlaxalA Gigabit Ethernet Switchで構成されている。 +クラスタ自体は180台あるが、 +安定して動作する100台までを使用して測定を行なった。 + +\begin{figure}[htbp] +\begin{center} +\includegraphics[scale=0.3]{img/metaring1.eps} +\caption{接続を含む一周の時間} +\label{metaring} +\end{center} +\end{figure} +\begin{figure}[htbp] +\begin{center} +\includegraphics[scale=0.3]{img/metaring1.eps} +\caption{千周の平均周回時間} +\label{metaring1000} +\end{center} +\end{figure} + +X軸が台数、Y軸がミリ秒、ラインの色が通信するデータサイズを表す。 +両図から見てわかる通り、データの量にはあまり依存する事はなくほぼ同じラインを形作っている。 +データを1周のみした場合は1サイクルあたり約14000ms、一台あたり約140ms掛かっている計算になり、 +それに対し1000周した際に掛かった時間は、1サイクルおよそ60ms、一台につき約0.6msとなっている。 +これより、一度、接続してしまえば、 +Meta Engine での通信は実際に100台程度のデバッグに使用するのに十分な性能を +持っていることが確認出来た。 + +\section{まとめと課題} +本稿ではデバッグを行う為に通常通信とは他に、Metaで通信するMeta Protocol Engineを実装し評価した。 +今回は、スナップショットなどの実際のデバッグ機能を実装することは出来なかった。 +通信の実験においても、 +同クラスタ上で別のRing通信や他のMetaLinda通信等があった場合の干渉の程度 +などを測定する必要があると考えられる。 + +\thispagestyle{fancy} +\begin{thebibliography}{9} +\bibitem {aa}上里献一, 河野真治 SuciライブラリのスナップショットAPIを利用した並列デバッグツールの設計 +\bibitem {bb}渕田 良彦, 河野 真治 分散プログラミングモデルFederated Lindaと分散デバッグ +\end{thebibliography} +\end{document}