# HG changeset patch # User Daichi TOMA # Date 1392111680 -32400 # Node ID 7403d5ee2c9277e2e17a350d3a3afab5079314ee # Parent 3193a35f7874847525b8d7e92b217057c9687d82 describe the benchmark diff -r 3193a35f7874 -r 7403d5ee2c92 paper/appendix1.tex --- a/paper/appendix1.tex Tue Feb 11 14:14:33 2014 +0900 +++ b/paper/appendix1.tex Tue Feb 11 18:41:20 2014 +0900 @@ -18,15 +18,15 @@ アプリケーションやOSカーネルが完全にハードウェアを使用できるようにするためにいくつか調整を行う必要がある. 最初の問題は, ファイル記述子の欠如である. デフォルトはプロセスあたり, 1,024 files で非常に貧弱な結果しか得られない. -ファイル記述子の現在のリミットは以下のコマンドで取得できる. +ファイル記述子の現在のリミットはソースコード\ref{ulimit} のコマンド取得できる. -\begin{lstlisting}[caption=ファイル記述子のリミットの取得] +\begin{lstlisting}[label=ulimit, caption=ファイル記述子のリミットの取得] $ ulimit -aH \end{lstlisting} -リミットを変更するには, 以下のコマンドを実行する. +リミットを変更するには, ソースコード\ref{ulimit2} のコマンドを実行する. -\begin{lstlisting}[caption=ファイル記述子のリミットの設定] +\begin{lstlisting}[label=ulimit2, caption=ファイル記述子のリミットの設定] $ sudo sh -c ulimit -HSn 200000 \end{lstlisting} diff -r 3193a35f7874 -r 7403d5ee2c92 paper/benchmark/bbs/bbs.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/benchmark/bbs/bbs.eps Tue Feb 11 18:41:20 2014 +0900 @@ -0,0 +1,667 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: bbs.eps +%%Creator: gnuplot 4.6 patchlevel 3 +%%CreationDate: Tue Feb 11 15:41:06 2014 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 410 302 +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color false def +/Blacktext false def +/Solid false def +/Dashlength 1 def +/Landscape false def +/Level1 false def +/Rounded false def +/ClipToBoundingBox false def +/SuppressPDFMark false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +/BackgroundColor {-1.000 -1.000 -1.000} def +% +/vshift -46 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 410 50 lineto 410 302 lineto 50 302 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 4.6 (September 2012) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse + clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +Level1 SuppressPDFMark or +{} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (bbs.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.6 patchlevel 3) + /Author (amothic) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Tue Feb 11 15:41:06 2014) + /DOCINFO pdfmark +end +} ifelse +end +%%EndProlog +%%Page: 1 1 +gnudict begin +gsave +doclip +50 50 translate +0.050 0.050 scale +0 setgray +newpath +(Helvetica) findfont 140 scalefont setfont +BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {BackgroundColor C 1.000 0 0 7200.00 5040.00 BoxColFill} if +1.000 UL +LTb +938 448 M +63 0 V +5946 0 R +-63 0 V +854 448 M +( 20000) Rshow +1.000 UL +LTb +938 1185 M +63 0 V +5946 0 R +-63 0 V +-6030 0 R +( 40000) Rshow +1.000 UL +LTb +938 1922 M +63 0 V +5946 0 R +-63 0 V +-6030 0 R +( 60000) Rshow +1.000 UL +LTb +938 2660 M +63 0 V +5946 0 R +-63 0 V +-6030 0 R +( 80000) Rshow +1.000 UL +LTb +938 3397 M +63 0 V +5946 0 R +-63 0 V +-6030 0 R +( 100000) Rshow +1.000 UL +LTb +938 4134 M +63 0 V +5946 0 R +-63 0 V +-6030 0 R +( 120000) Rshow +1.000 UL +LTb +938 4871 M +63 0 V +5946 0 R +-63 0 V +-6030 0 R +( 140000) Rshow +1.000 UL +LTb +938 448 M +0 63 V +0 4360 R +0 -63 V +938 308 M +( 1) Cshow +1.000 UL +LTb +1796 448 M +0 63 V +0 4360 R +0 -63 V +0 -4500 R +( 2) Cshow +1.000 UL +LTb +2655 448 M +0 63 V +0 4360 R +0 -63 V +0 -4500 R +( 3) Cshow +1.000 UL +LTb +3513 448 M +0 63 V +0 4360 R +0 -63 V +0 -4500 R +( 4) Cshow +1.000 UL +LTb +4372 448 M +0 63 V +0 4360 R +0 -63 V +0 -4500 R +( 5) Cshow +1.000 UL +LTb +5230 448 M +0 63 V +0 4360 R +0 -63 V +0 -4500 R +( 6) Cshow +1.000 UL +LTb +6089 448 M +0 63 V +0 4360 R +0 -63 V +0 -4500 R +( 7) Cshow +1.000 UL +LTb +6947 448 M +0 63 V +0 4360 R +0 -63 V +0 -4500 R +( 8) Cshow +1.000 UL +LTb +1.000 UL +LTb +938 4871 N +938 448 L +6009 0 V +0 4423 V +-6009 0 V +Z stroke +LCb setrgbcolor +112 2659 M +currentpoint gsave translate -270 rotate 0 0 M +(req/s) Cshow +grestore +LTb +LCb setrgbcolor +3942 98 M +(number of cpus) Cshow +LTb +1.000 UP +1.000 UL +LTb +% Begin plot #1 +1.000 UP +1.000 UL +LT0 +1.00 0.00 0.00 C LCb setrgbcolor +6296 4738 M +(read) Rshow +LT0 +1.00 0.00 0.00 C 6380 4738 M +399 0 V +938 545 M +858 754 V +859 937 V +858 886 V +859 752 V +858 234 V +859 469 V +858 293 V +938 545 Pls +1796 1299 Pls +2655 2236 Pls +3513 3122 Pls +4372 3874 Pls +5230 4108 Pls +6089 4577 Pls +6947 4870 Pls +6579 4738 Pls +% End plot #1 +% Begin plot #2 +1.000 UP +1.000 UL +LT1 +0.00 0.00 1.00 C LCb setrgbcolor +6296 4598 M +(write) Rshow +LT1 +0.00 0.00 1.00 C 6380 4598 M +399 0 V +938 763 M +858 930 V +859 548 V +858 1107 V +859 87 V +858 -75 V +859 25 V +858 462 V +938 763 Crs +1796 1693 Crs +2655 2241 Crs +3513 3348 Crs +4372 3435 Crs +5230 3360 Crs +6089 3385 Crs +6947 3847 Crs +6579 4598 Crs +% End plot #2 +1.000 UL +LTb +938 4871 N +938 448 L +6009 0 V +0 4423 V +-6009 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica diff -r 3193a35f7874 -r 7403d5ee2c92 paper/benchmark/bbs/bbs.plt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/benchmark/bbs/bbs.plt Tue Feb 11 18:41:20 2014 +0900 @@ -0,0 +1,8 @@ +set terminal postscript eps +set output "bbs.eps" + +set xrange [1:8] +set xlabel "number of cpus" +set ylabel "req/s" + +plot "read.dat" using 1:2 with linespoints linewidth 1 linecolor rgbcolor "red" title "read", "write.dat" using 1:2 with linespoints linewidth 1 linecolor rgbcolor "blue" title "write" diff -r 3193a35f7874 -r 7403d5ee2c92 paper/benchmark/bbs/read.dat --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/benchmark/bbs/read.dat Tue Feb 11 18:41:20 2014 +0900 @@ -0,0 +1,8 @@ +1 22624 +2 43083 +3 68518 +4 92548 +5 112937 +6 119310 +7 132037 +8 139965 diff -r 3193a35f7874 -r 7403d5ee2c92 paper/benchmark/bbs/write.dat --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/benchmark/bbs/write.dat Tue Feb 11 18:41:20 2014 +0900 @@ -0,0 +1,8 @@ +1 28552 +2 53765 +3 68636 +4 98691 +5 101029 +6 99009 +7 99678 +8 112212 diff -r 3193a35f7874 -r 7403d5ee2c92 paper/benchmark/read7.8/read.eps --- a/paper/benchmark/read7.8/read.eps Tue Feb 11 14:14:33 2014 +0900 +++ b/paper/benchmark/read7.8/read.eps Tue Feb 11 18:41:20 2014 +0900 @@ -1,7 +1,7 @@ %!PS-Adobe-2.0 EPSF-2.0 %%Title: read.eps %%Creator: gnuplot 4.6 patchlevel 3 -%%CreationDate: Mon Feb 10 08:45:20 2014 +%%CreationDate: Tue Feb 11 14:47:59 2014 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments @@ -433,7 +433,7 @@ /Author (amothic) % /Producer (gnuplot) % /Keywords () - /CreationDate (Mon Feb 10 08:45:20 2014) + /CreationDate (Tue Feb 11 14:47:59 2014) /DOCINFO pdfmark end } ifelse @@ -553,6 +553,7 @@ 1.000 UL LTb % Begin plot #1 +1.000 UP 2.000 UL LT0 1.00 0.00 0.00 C LCb setrgbcolor @@ -585,9 +586,35 @@ 276 57 V 276 42 V 276 -355 V +602 625 Pls +878 798 Pls +1154 966 Pls +1430 1143 Pls +1705 1313 Pls +1981 1492 Pls +2257 1481 Pls +2533 1494 Pls +2809 1538 Pls +3085 1640 Pls +3361 1658 Pls +3637 1717 Pls +3912 1847 Pls +4188 2014 Pls +4464 2111 Pls +4740 2300 Pls +5016 2304 Pls +5292 2316 Pls +5568 2074 Pls +5844 2095 Pls +6119 2017 Pls +6395 2074 Pls +6671 2116 Pls +6947 1761 Pls +6579 4738 Pls % End plot #1 % Begin plot #2 -stroke +1.000 UP +2.000 UL LT1 0.00 0.00 0.50 C LCb setrgbcolor 6296 4598 M @@ -619,9 +646,34 @@ 276 -16 V 276 170 V 6947 533 L +602 625 Crs +878 765 Crs +1154 963 Crs +1430 1119 Crs +1705 1303 Crs +1981 1455 Crs +2257 1637 Crs +2533 1674 Crs +2809 1911 Crs +3085 2023 Crs +3361 2146 Crs +3637 2283 Crs +3912 2014 Crs +4188 2210 Crs +4464 2353 Crs +4740 2304 Crs +5016 2392 Crs +5292 2396 Crs +5568 2421 Crs +5844 2417 Crs +6119 2523 Crs +6395 2507 Crs +6671 2677 Crs +6947 533 Crs +6579 4598 Crs % End plot #2 % Begin plot #3 -stroke +2.000 UL LT2 0.00 0.00 0.00 C LCb setrgbcolor 6296 4458 M diff -r 3193a35f7874 -r 7403d5ee2c92 paper/benchmark/read7.8/read.plt --- a/paper/benchmark/read7.8/read.plt Tue Feb 11 14:14:33 2014 +0900 +++ b/paper/benchmark/read7.8/read.plt Tue Feb 11 18:41:20 2014 +0900 @@ -5,4 +5,4 @@ set xlabel "number of cpus" set ylabel "speedup" -plot "read.dat" using 1:2 with lines linewidth 2 linecolor rgbcolor "red" title "read", "read_with_qa.dat" using 1:2 with lines linewidth 2 linecolor rgbcolor "navy" title "read with affinity", "linear.dat" using 1:2 with lines linewidth 2 linecolor rgbcolor "black" title "linear" +plot "read.dat" using 1:2 with linespoint linewidth 2 linecolor rgbcolor "red" title "read", "read_with_qa.dat" using 1:2 with linespoint linewidth 2 linecolor rgbcolor "navy" title "read with affinity", "linear.dat" using 1:2 with lines linewidth 2 linecolor rgbcolor "black" title "linear" diff -r 3193a35f7874 -r 7403d5ee2c92 paper/benchmark/warp/offline.dat --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/benchmark/warp/offline.dat Tue Feb 11 18:41:20 2014 +0900 @@ -0,0 +1,8 @@ +1 44504 +2 95760 +3 140276 +4 179791 +5 191709 +6 241240 +7 225289 +8 264231 diff -r 3193a35f7874 -r 7403d5ee2c92 paper/benchmark/warp/online.dat --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/benchmark/warp/online.dat Tue Feb 11 18:41:20 2014 +0900 @@ -0,0 +1,8 @@ +1 44008 +2 57396 +3 58682 +4 60593 +5 53138 +6 57159 +7 59032 +8 59697 diff -r 3193a35f7874 -r 7403d5ee2c92 paper/benchmark/warp/warp.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/benchmark/warp/warp.eps Tue Feb 11 18:41:20 2014 +0900 @@ -0,0 +1,667 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: warp.eps +%%Creator: gnuplot 4.6 patchlevel 3 +%%CreationDate: Tue Feb 11 14:46:00 2014 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 410 302 +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color false def +/Blacktext false def +/Solid false def +/Dashlength 1 def +/Landscape false def +/Level1 false def +/Rounded false def +/ClipToBoundingBox false def +/SuppressPDFMark false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +/BackgroundColor {-1.000 -1.000 -1.000} def +% +/vshift -46 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 410 50 lineto 410 302 lineto 50 302 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 4.6 (September 2012) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse + clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +Level1 SuppressPDFMark or +{} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (warp.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.6 patchlevel 3) + /Author (amothic) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Tue Feb 11 14:46:00 2014) + /DOCINFO pdfmark +end +} ifelse +end +%%EndProlog +%%Page: 1 1 +gnudict begin +gsave +doclip +50 50 translate +0.050 0.050 scale +0 setgray +newpath +(Helvetica) findfont 140 scalefont setfont +BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {BackgroundColor C 1.000 0 0 7200.00 5040.00 BoxColFill} if +1.000 UL +LTb +938 448 M +63 0 V +5946 0 R +-63 0 V +854 448 M +( 0) Rshow +1.000 UL +LTb +938 1185 M +63 0 V +5946 0 R +-63 0 V +-6030 0 R +( 50000) Rshow +1.000 UL +LTb +938 1922 M +63 0 V +5946 0 R +-63 0 V +-6030 0 R +( 100000) Rshow +1.000 UL +LTb +938 2660 M +63 0 V +5946 0 R +-63 0 V +-6030 0 R +( 150000) Rshow +1.000 UL +LTb +938 3397 M +63 0 V +5946 0 R +-63 0 V +-6030 0 R +( 200000) Rshow +1.000 UL +LTb +938 4134 M +63 0 V +5946 0 R +-63 0 V +-6030 0 R +( 250000) Rshow +1.000 UL +LTb +938 4871 M +63 0 V +5946 0 R +-63 0 V +-6030 0 R +( 300000) Rshow +1.000 UL +LTb +938 448 M +0 63 V +0 4360 R +0 -63 V +938 308 M +( 1) Cshow +1.000 UL +LTb +1796 448 M +0 63 V +0 4360 R +0 -63 V +0 -4500 R +( 2) Cshow +1.000 UL +LTb +2655 448 M +0 63 V +0 4360 R +0 -63 V +0 -4500 R +( 3) Cshow +1.000 UL +LTb +3513 448 M +0 63 V +0 4360 R +0 -63 V +0 -4500 R +( 4) Cshow +1.000 UL +LTb +4372 448 M +0 63 V +0 4360 R +0 -63 V +0 -4500 R +( 5) Cshow +1.000 UL +LTb +5230 448 M +0 63 V +0 4360 R +0 -63 V +0 -4500 R +( 6) Cshow +1.000 UL +LTb +6089 448 M +0 63 V +0 4360 R +0 -63 V +0 -4500 R +( 7) Cshow +1.000 UL +LTb +6947 448 M +0 63 V +0 4360 R +0 -63 V +0 -4500 R +( 8) Cshow +1.000 UL +LTb +1.000 UL +LTb +938 4871 N +938 448 L +6009 0 V +0 4423 V +-6009 0 V +Z stroke +LCb setrgbcolor +112 2659 M +currentpoint gsave translate -270 rotate 0 0 M +(req/s) Cshow +grestore +LTb +LCb setrgbcolor +3942 98 M +(number of cpus) Cshow +LTb +1.000 UP +1.000 UL +LTb +% Begin plot #1 +1.000 UP +1.000 UL +LT0 +1.00 0.00 0.00 C LCb setrgbcolor +6296 4738 M +(online) Rshow +LT0 +1.00 0.00 0.00 C 6380 4738 M +399 0 V +938 1097 M +858 197 V +859 19 V +858 28 V +859 -110 V +858 60 V +859 27 V +858 10 V +938 1097 Pls +1796 1294 Pls +2655 1313 Pls +3513 1341 Pls +4372 1231 Pls +5230 1291 Pls +6089 1318 Pls +6947 1328 Pls +6579 4738 Pls +% End plot #1 +% Begin plot #2 +1.000 UP +1.000 UL +LT1 +0.00 0.00 1.00 C LCb setrgbcolor +6296 4598 M +(offline) Rshow +LT1 +0.00 0.00 1.00 C 6380 4598 M +399 0 V +938 1104 M +858 756 V +859 656 V +858 583 V +859 175 V +858 731 V +859 -235 V +858 574 V +938 1104 Crs +1796 1860 Crs +2655 2516 Crs +3513 3099 Crs +4372 3274 Crs +5230 4005 Crs +6089 3770 Crs +6947 4344 Crs +6579 4598 Crs +% End plot #2 +1.000 UL +LTb +938 4871 N +938 448 L +6009 0 V +0 4423 V +-6009 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica diff -r 3193a35f7874 -r 7403d5ee2c92 paper/benchmark/warp/warp.plt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/benchmark/warp/warp.plt Tue Feb 11 18:41:20 2014 +0900 @@ -0,0 +1,8 @@ +set terminal postscript eps +set output "warp.eps" + +set xrange [1:8] +set xlabel "number of cpus" +set ylabel "req/s" + +plot "online.dat" using 1:2 with linespoints linewidth 1 linecolor rgbcolor "red" title "online", "offline.dat" using 1:2 with linespoints linewidth 1 linecolor rgbcolor "blue" title "offline" diff -r 3193a35f7874 -r 7403d5ee2c92 paper/benchmark/write7.8/write.eps --- a/paper/benchmark/write7.8/write.eps Tue Feb 11 14:14:33 2014 +0900 +++ b/paper/benchmark/write7.8/write.eps Tue Feb 11 18:41:20 2014 +0900 @@ -1,7 +1,7 @@ %!PS-Adobe-2.0 EPSF-2.0 %%Title: write.eps %%Creator: gnuplot 4.6 patchlevel 3 -%%CreationDate: Mon Feb 10 08:46:09 2014 +%%CreationDate: Tue Feb 11 14:49:11 2014 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments @@ -433,7 +433,7 @@ /Author (amothic) % /Producer (gnuplot) % /Keywords () - /CreationDate (Mon Feb 10 08:46:09 2014) + /CreationDate (Tue Feb 11 14:49:11 2014) /DOCINFO pdfmark end } ifelse @@ -553,6 +553,7 @@ 1.000 UL LTb % Begin plot #1 +1.000 UP 2.000 UL LT0 1.00 0.00 0.00 C LCb setrgbcolor @@ -585,9 +586,35 @@ 276 9 V 276 -27 V 276 -51 V +602 625 Pls +878 765 Pls +1154 866 Pls +1430 935 Pls +1705 989 Pls +1981 1018 Pls +2257 977 Pls +2533 975 Pls +2809 977 Pls +3085 982 Pls +3361 977 Pls +3637 1011 Pls +3912 1000 Pls +4188 1016 Pls +4464 1034 Pls +4740 1037 Pls +5016 1011 Pls +5292 1019 Pls +5568 1051 Pls +5844 1021 Pls +6119 1002 Pls +6395 1011 Pls +6671 984 Pls +6947 933 Pls +6579 4738 Pls % End plot #1 % Begin plot #2 -stroke +1.000 UP +2.000 UL LT1 0.00 0.00 0.50 C LCb setrgbcolor 6296 4598 M @@ -619,9 +646,34 @@ 276 2 V 276 -28 V 6947 570 L +602 625 Crs +878 733 Crs +1154 839 Crs +1430 935 Crs +1705 1009 Crs +1981 1081 Crs +2257 1122 Crs +2533 1149 Crs +2809 1108 Crs +3085 1073 Crs +3361 1122 Crs +3637 1124 Crs +3912 1122 Crs +4188 1147 Crs +4464 1117 Crs +4740 1117 Crs +5016 1140 Crs +5292 1076 Crs +5568 1076 Crs +5844 1081 Crs +6119 1067 Crs +6395 1069 Crs +6671 1041 Crs +6947 570 Crs +6579 4598 Crs % End plot #2 % Begin plot #3 -stroke +2.000 UL LT2 0.00 0.00 0.00 C LCb setrgbcolor 6296 4458 M diff -r 3193a35f7874 -r 7403d5ee2c92 paper/benchmark/write7.8/write.plt --- a/paper/benchmark/write7.8/write.plt Tue Feb 11 14:14:33 2014 +0900 +++ b/paper/benchmark/write7.8/write.plt Tue Feb 11 18:41:20 2014 +0900 @@ -5,4 +5,4 @@ set xlabel "number of cpus" set ylabel "speedup" -plot "write.dat" using 1:2 with lines linewidth 2 linecolor rgbcolor "red" title "write", "write_with_qa.dat" using 1:2 with lines linewidth 2 linecolor rgbcolor "navy" title "write with affinity", "linear.dat" using 1:2 with lines linewidth 2 linecolor rgbcolor "black" title "linear" +plot "write.dat" using 1:2 with linespoint linewidth 2 linecolor rgbcolor "red" title "write", "write_with_qa.dat" using 1:2 with linespoint linewidth 2 linecolor rgbcolor "navy" title "write with affinity", "linear.dat" using 1:2 with lines linewidth 2 linecolor rgbcolor "black" title "linear" diff -r 3193a35f7874 -r 7403d5ee2c92 paper/chapter4.tex --- a/paper/chapter4.tex Tue Feb 11 14:14:33 2014 +0900 +++ b/paper/chapter4.tex Tue Feb 11 18:41:20 2014 +0900 @@ -1,6 +1,7 @@ \chapter{性能評価}\label{ch:bench} -本章では, 非破壊的木構造データベース Jungle がマルチコアプロセッサで性能向上を果たせるのか確認する. -また, 実用的なWebサービスが提供できるのか確認するために Web 掲示板サービスを開発し, Java との比較を行う. + 本章では, 非破壊的木構造データベース Jungle がマルチコアプロセッサで性能向上を果たせるのか確認する. +また, 実用的なWebサービスが提供できるのか確認するために Web 掲示板サービスを開発し, 読み込みと書き込みの性能測定を行う. +最後に開発した Web 掲示板サービスを利用して, Java との比較を行う. \section{計測環境} マルチコアプロセッサでの性能を確認するためコア数の多いサーバを用いる. @@ -8,8 +9,8 @@ ブレードサーバの仕様を表\ref{tab:server_spec}に示す. 論理コアは, Intel のハイパースレッディング機能のことである. -ハイパースレッディングは, 1つのプロセッサをあたかも2つのプロセッサであるかのように扱う技術であり, -同時に演算器などを利用することはできないため性能が2倍になるわけではないが, 概ね20 \%程度クロックあたりの性能が向上すると言われている. +ハイパースレッディングは, 1 つのプロセッサをあたかも 2 つのプロセッサであるかのように扱う技術であり, +同時に演算器などを利用することはできないため性能が 2 倍になるわけではないが, 概ね20 \%程度クロックあたりの性能が向上すると言われている. \begin{table}[!htbp] \begin{center} @@ -26,15 +27,11 @@ \label{tab:server_spec} \end{table} -非破壊的木構造データベース Jungle の並列読み込みと並列書き込みの性能の計測には1台, -Web 掲示板 サービスを用いた Java との性能比較には2台のブレードサーバを利用する. -2 台使用するのは, サーバと負荷をかけるクライアントを別々に実行するためである. - \subsubsection{Haskell および Java のバージョン} Haskell のコンパイラには The Glasgow Haskell Compiler(GHC)を使用する. GHC は, Haskell で最も広く使われているコンパイラである\cite{ghc}. -ソフトウェア・トランザクショナル・メモリをサポートするなど, 並列プログラミングのためのHaskellの拡張が行われている. -GHC は, 並列実行時のIOマネージャーが改良されているため, Release candidate versionである7.8を用いる\cite{iomanager}. +ソフトウェア・トランザクショナル・メモリをサポートするなど, 並列プログラミングのためにHaskellの拡張が行われている. +GHC の安定版は 7.6.3 だが, 並列実行時のIOマネージャーが改良されているため, リリース候補版である7.8を用いる\cite{iomanager}. Haskell および Java のバージョンを表\ref{tab:compiler}に示す. @@ -58,10 +55,8 @@ \subsubsection{計測方法} ブレードサーバ上で, Jungle で作成した木構造を並列に読み込んで性能計測を行う. -まず, Jungle を利用して木構造を作成する. 並列に実行する際に, 読み込みに負荷がかかるように木構造はある程度の大きさとする. -今回は木の深さが 8, ノードの数が約 80 万の大きさの木構造を使用する. - +今回は木の深さが 8, ノードの数が約 80 万の大きさの木構造を使用する. 木構造を読み込み, ノードの数を数えるタスクを 1,000 個作成し並列実行する. 非破壊的木構造は, 木構造に変更を加えても他の読み込みのタスクに影響を与えない. そのことを確認するために, 木構造は各タスクに渡す前に無作為にノードを追加する. @@ -78,6 +73,7 @@ OSスレッドをCPUコアに固定するには, 実行時に-qaオプションを付けてプログラムを起動する. OSの親和性機能を使った場合, 2 スレッドで 1.80 倍, 12 スレッドで 10.37 倍の性能向上が見られ, 12スレッド時の性能向上率が大幅に伸びている. 並列に読み込む場合, スレッドを同じプロセッサ上で実行させると性能が向上することがわかる. + しかし, 24 スレッドで実行する場合, 実行時間が大幅に伸びている. スレッドがCPUに固定されるため, 性能計測以外のプログラムがうまくスケジューリングされないためだと考えられる. @@ -104,7 +100,8 @@ 親和性機能を使った場合は, 12スレッドまではほぼ線形に性能が向上する. ハイパースレッディング機能を用いた13 スレッド以上では性能向上率が落ちる. -非破壊的木構造データベース Jungle は読み込みにおいてスケールするデータベースであることが分かる. +親和性機能を使った場合, 6スレッド以降で性能差が出る理由として, 6 コアCPUを 2 個積んでいることが考えられる. +スレッドがCPUをまたいでスケジューリングされなくなるため, 親和性機能を使うことで性能が向上するのだと考えられる. \begin{figure}[!htbp] \begin{center} @@ -114,11 +111,15 @@ \label{fig:benchmark_read} \end{figure} +非破壊的木構造データベース Jungle は 12 スレッドで 10.37 倍の性能向上が得ることができる. +読み込みにおいて, スケールするデータベースであると言える. + + \section{書き込みの性能計測} 非破壊的木構造データベース Jungle を用いて, マルチコアプロセッサ上で並列に書き込みを行い, 線形に性能向上ができるか調査する. \subsubsection{計測方法} -ブレードサーバ上で, Jungle に木構造を並列に書き込んで性能計測を行う. +ブレードサーバ上で, Jungle に並列に書き込みを行い性能計測を行う. 木の深さが 6, ノードの数が約 1 万の大きさの木構造を作成しJungle に登録するタスクを 1,000 個作成し, 並列に実行する. 書き込んだ木構造はノードの数が整合しているかどうか確認する. その後正確に書き込まれてるタスクの数を出力する. Haskell は遅延評価のため, 出力などを挟むことで評価が行われるようにしなければならない. @@ -153,9 +154,6 @@ Jungle へ木の登録する際に他のスレッドから登録があった場合, ソフトウェア・トランザクショナル・メモリが処理をやり直すため, 並列度が下がっていると考えられる. 速度向上が親和性機能を使った8スレッド実行時の 3.96 倍で頭打ちになっている. -非破壊的木構造データベース Jungle は, 書き込みは並列化率が低くなってしまう. -読み込みが高速なため, 書き込みより読み込みが多用されるシステムに向いているといえる. - \begin{figure}[!htbp] \begin{center} \includegraphics[width=100mm]{./images/write.pdf} @@ -164,15 +162,18 @@ \label{fig:benchmark_write} \end{figure} +非破壊的木構造データベース Jungle の書き込みは, 読み込みと比べて並列化率が低い. +読み込みが高速なため, 書き込みより読み込みが多用されるシステムに向いていると言える. + \clearpage \section{Web サービスに組み込んでの性能評価} 並列データベース Jungle が実用的なWeb サービスを提供できるのか調査する. -Web掲示板サービスに組み込んで, 性能測定を行った. +Web掲示板サービス開発し, 性能測定ツール weighttp \cite{weighttp} を用いて性能測定を行った. \subsection{Web 掲示板サービスの実装} 木構造データベース Jungle と Haskell の HTTP サーバ Warp\cite{warp} を用いて Web 掲示板サービスを開発する. Warp を用いたWeb サービスの構築法については付録に記載する. -Warp は, ハイパースレッディングの効果がなくハイパースレッディング利用時に遅くなるため, 12 スレッドまでの計測とする. +Warp は, ハイパースレッディングの効果がなくハイパースレッディング利用時に遅くなるため, ハイパースレッディングは利用しない. Warp は並列に実行可能であり, 並列に実行している Warp に対して, Jungle を繋げるだけで Jungle を並列に動かすことができる. 掲示板におけるデータベースへの書き込みは, 板の作成と, 板への書き込みがある. @@ -194,160 +195,124 @@ \label{tab:bbs_func} \end{table} +Warp は並列 HTTP サーバであるが, 計測環境ではネットワークがボトルネックとなってしまう. +ネットワークのボトルネックがどれぐらいあるのか調査するために, アクセスした際に "hello, world" という文字列を返すだけのプログラムを作成し測定する. +ネットワークを介さずに性能測定する場合, 性能測定ツール weighttp に 3 スレッド利用するため, Warp で利用するのは 8 スレッドまでとする. +weighttpの設定は, リクエストの総数 100 万, 同時に接続するコネクションの数 1,000, 実行時のスレッド数 3, HTTP Keep-Alivesを有効とする. +結果を表\ref{tab:warp}に示す. + +\begin{table}[!htbp] +\begin{center} +\begin{tabular}{|c||r|r|} \hline + CPU数 & ネットワーク介す & ネットワークを介さない \\ \hline + 1 & 44,008 req/s & 44,504 req/s \\\hline + 2 & 57,396 req/s & 95,760 req/s \\\hline + 4 & 60,593 req/s & 179,791 req/s \\\hline + 6 & 57,159 req/s & 241,240 req/s \\\hline + 8 & 59,697 req/s & 264,231 req/s \\\hline +\end{tabular} +\end{center} +\caption{Warp の 性能測定結果} +\label{tab:warp} +\end{table} + +1 秒間あたりどれだけのリクエストを捌けるかという指標で比較を行う. +大きければ大きいほど性能が良い. +ネットワークを介する場合と介さない場合で, 8 コア時に4.4倍の性能差がある. + +ネットワークを介さない場合は, 線形にスケールしている(図\ref{fig:warp_benchmark}). +ネットワークを介した場合, およそ 60,000 req/s 程度で頭打ちとなってしまっている. + \begin{figure}[!htbp] \begin{center} - \includegraphics[width=90mm]{./images/request.pdf} + \includegraphics[width=100mm]{./images/warp.pdf} \end{center} - \caption{Warp を用いたWeb掲示板サービス} + \caption{Warp の 性能測定結果} + \label{fig:warp_benchmark} +\end{figure} + +Web掲示板サービスの性能測定には, 並列環境でどのようにスケールするか計測したいため, ネットワークを介さずに実験を行う. +実験環境を図\ref{fig:request}に示す. + +\begin{figure}[!htbp] + \begin{center} + \includegraphics[scale=0.6]{./images/request.pdf} + \end{center} + \caption{実験環境} \label{fig:request} \end{figure} -\subsection{読み込み} +\subsection{読み込みと書き込み} \subsubsection{計測方法} -掲示板に対して読み込みを行い, 負荷をかける. -掲示板を立ち上げるサーバと, 性能測定ツール weighttp\cite{weighttp} を用いて負荷をかけるサーバの 2 台ブレードサーバを用いて測定を行った. - -weighttpの設定は, リクエストの総数 100 万, 同時に接続するコネクションの数 2,000, 実行時のスレッド数 10, HTTP Keep-Alivesを有効とする. +掲示板に対して読み込みと書き込みを行い, 負荷をかける. +weighttpの設定は, リクエストの総数 100 万, 同時に接続するコネクションの数 1,000, 実行時のスレッド数 3, HTTP Keep-Alivesを有効とする. \subsubsection{計測結果} -掲示板の読み込みの計測結果を表\ref{tab:bbs_read}に示す. - -並列で実行した場合, 実行時間が短くなっているが性能向上率が低いことが分かる. -シングルスレッドで実行した場合と比較して, 12 スレッドで 2.14 倍の性能向上が見られる. -これは HTTP サーバ Warp がボトルネックとなってしまっているためだと考えられる. - -Warp のボトルネックがどれぐらいあるのか調査するために, アクセスした際に "hello, world" という文字列を返すだけのプログラムを作成し測定する. -結果を表\ref{tab:warp}に示す. -1 スレッドで実行した場合は, Jungle と組み合わせた掲示板より速い. -しかし, スレッド数が増えていくと掲示板の読み込みとあまり結果が変わらなくなってしまう. -Warp は現状あまり並列化効果がでていない. +掲示板の読み込みと書き込みの計測結果を表\ref{tab:bbs_read}および図\ref{fig:bbs}に示す. +少ないスレッド数の場合に, 読み込みより書き込みのスループットが高いのは, 読み込みにあるデータベースの内容をHTML形式に変換する作業がないためだと考えられる. -\begin{table}[!htbp] -\begin{center} -\begin{tabular}{|c||r|} \hline -CPU数 & 実行時間 \\ \hline -1 & 60.72 s\\ \hline -2 & 37.74 s\\ \hline -4 & 28.97 s\\ \hline -8 & 27.73 s\\ \hline -12 & 28.33 s\\ \hline -\end{tabular} -\end{center} -\caption{掲示板を利用した読み込みの計測結果} -\label{tab:bbs_read} -\end{table} +性能向上率を読み込みと書き込みで比較する. +読み込みは, シングルスレッドで実行した場合と比較して, 8 スレッドで 6.18 倍の性能向上が見られる. +書き込みは, シングルスレッドで実行した場合と比較して, 8 スレッドで 3.93 倍の性能向上が見られる. +この結果は, 並列データベース Jungle が書き込みに比べて読み込みが高速であると示した Jungle 単体での実験結果と一致する. + \begin{table}[!htbp] \begin{center} -\begin{tabular}{|c||r|} \hline -CPU数 & 実行時間 \\ \hline -1 & 49.28 s\\ \hline -2 & 35.45 s\\ \hline -4 & 25.70 s\\ \hline -8 & 27.90 s\\ \hline -12 & 29.23 s\\ \hline +\begin{tabular}{|c||r|r|} \hline + CPU数 & 読み込み & 書き込み \\ \hline + 1 & 22,624 req/s & 28,552 req/s \\ \hline + 2 & 43,083 req/s & 53,765 req/s \\ \hline + 4 & 92,548 req/s & 98,691 req/s \\ \hline + 6 & 119,310 req/s & 99,009 req/s \\ \hline + 8 & 139,965 req/s & 112,212 req/s \\ \hline \end{tabular} \end{center} -\caption{Warpの計測結果} -\label{tab:warp} +\caption{掲示板を利用した読み込みと書き込みの計測結果} +\label{tab:bbs_read} \end{table} -Web サービスを用いて実験する場合, データベースだけがボトルネックとなるように負荷をかけるのは難しい. -ただ単にデータを大きくするだけでは, 文字列をHTMLに変換するコストが大きくなってしまうためである. - -\subsection{書き込み} -\subsubsection{計測方法} -掲示板に対して書き込みを行い, 負荷をかける. -掲示板を立ち上げるサーバと, weighttpを用いて負荷をかけるサーバの 2 台ブレードサーバを用いて測定を行った. - -weighttpでは, GET しかできないためURLのクエリ文字列でデータを書き込めるようにWeb掲示板サービスを変更した. -weighttp起動時のオプションは, 読み込みと同じである. -\subsubsection{計測結果} - -掲示板の書き込みの計測結果を表\ref{tab:bbs_write}に示す. -並列で実行した場合, 実行時間が短くなっているが性能向上率が低いことが分かる. -シングルスレッドで実行した場合と比較して, 12 スレッドで 1.65 倍の性能向上が見られる. -読み込みに比べて, 書き込みのほうが全体的に遅くなっている. - -\begin{table}[!htbp] -\begin{center} -\begin{tabular}{|c||r|} \hline -CPU数 & 実行時間 \\ \hline -1 & 54.16 s\\ \hline -2 & 36.71 s\\ \hline -4 & 31.74 s\\ \hline -8 & 31.58 s\\ \hline -10 & 32.64 s\\ \hline -12 & 32.68 s\\ \hline -\end{tabular} -\end{center} -\caption{掲示板を利用した書き込みの計測結果} -\label{tab:bbs_write} -\end{table} +\begin{figure}[!htbp] + \begin{center} + \includegraphics[width=100mm]{./images/bbs.pdf} + \end{center} + \caption{掲示板を利用した読み込みと書き込みの計測結果} + \label{fig:bbs} +\end{figure} \subsection{Javaを用いた非破壊的木構造データベースとの比較} -非破壊的木構造データベースは, Haskell 版と Java 版の2つ存在する. +非破壊的木構造データベースは, Haskell 版と Java 版が存在する. Web 掲示板サービスを両方の言語で実装し, 比較を行う. Haskell ではフロントエンドとして Warp を利用したが, Java では Jetty を利用する. Jetty のバージョンは 6.1.26 を用いる. -Haskell 版と Java 版の Web 掲示板サービスをブレードサーバ上で実行し, -weightttpで負荷をかけ100万リクエストを処理するのにかかる時間を計測する. +Haskell 版と Java 版の Web 掲示板サービスをブレードサーバ上で実行する. +実際の利用を想定して計測を行うため, ブレードサーバをもう1台用意し, ネットワークを介して weightttpで負荷をかける. +10 スレッドから, 1 スレッドあたり 100 並列にリクエストを投げ, 合計100万リクエストを処理するのにかかる時間を計測する. Haskell と Java の測定結果を表\ref{tab:compare}に示す. \begin{table}[!htbp] \begin{center} \begin{tabular}{|c||r|r|} \hline 測定 & Haskell & Java \\ \hline \hline - 読み込み & 28.33 s & 53.13 s \\ \hline - 書き込み & 32.68 s & 76.4 s \\ \hline + 読み込み & 16.31 s & 53.13 s \\ \hline + 書き込み & 20.17 s & 76.4 s \\ \hline \end{tabular} \end{center} \caption{HaskellとJavaの比較} \label{tab:compare} \end{table} -Haskell 版は, Java 版と比較して読み込みで 1.87 倍, 書き込みで 2.3 倍の性能差が出ている. - -書き込みが読み込みより性能差が出ている理由として遅延評価が考えられる. -Haskell では書き込みを行う際, 完全に評価せず thunk として積み上げていく. -thunkとは, 未評価の式を追跡するのに使われるものである. -遅延評価は, グラフ簡約があるため先行評価より簡約ステップ数が増えることはない. -また, 不要な計算が省かれるので簡約ステップ数が少なくなることもある. -しかし, 計算の所用領域が増えてしまうのが難点で, -ハードウェアが効率的に利用できるメモリの範囲内に収まらなければ即時評価より実行時間が遅くなってしまうことがあるので注意が必要である. -本実験では, 潤沢にメモリを割り当てているためそういった問題は起きない. - -\subsection{書き込みごとに読み込みを行った場合} -書き込みごとに毎回読み込みを挟むことで, 遅延評価ではなく即時評価させる. -計測結果を表\ref{tab:write_read}に示す. +Haskell 版は, Java 版と比較して読み込みで 3.25 倍, 書き込みで 3.78 倍の性能差が出ている. +Haskell は 実用的な Web サービスが開発できる. -\begin{table}[!htbp] -\begin{center} -\begin{tabular}{|c||r|} \hline -CPU数 & 実行時間 \\ \hline -1 & 141.40 s\\ \hline -2 & 70.87 s\\ \hline -4 & 54.32 s\\ \hline -8 & 55.13 s\\ \hline -12 & 58.60 s\\ \hline -\end{tabular} -\end{center} -\caption{書き込みを行うたびに読み込みを挟んだ場合の計測結果} -\label{tab:write_read} -\end{table} +\subsubsection{Haskell の生産性} +Haskell 版 Jungle が公開している関数の数は 18 で, コード行数は284行である. +Java を用いた Jungle の実装は, 3390行で, Haskell の実装は 1/12 程度のサイズとなっている. -結果が明らかに遅くなっている. -12 スレッドで実行した際, Java との書き込みの性能差は, 1.30 倍である. -シングルスレッドで実行した場合と比較した場合, 12 スレッドで 2.40 倍の性能向上が見られる. +コード行数が短くなった要因としては, Haskellが独自の再帰的データ構造の定義を言語としてサポートしていることや, +関数が参照透過性を持つため再利用が行いやすい上に, 関数を結合することが可能ということが考えられる. -\section{Haskell の生産性} -Java を用いた Jungle の実装と比較して, コード行数が約 3000 行から約 300 行へと短くなった. - -Haskell では, 独自のデータ型を作成することができる. -再帰的なデータ構造の定義も容易である. -また, Haskellは参照透過性を持つため, コードの再利用が行い易く, 関数同士の結合も簡単である. - -同じ機能を実装する場合でも, Java と比較してコード行数が短くなり生産性が向上する. +同じ機能を実装する場合でも, Haskell は Java と比較してコード行数が短くなり生産性が向上する. diff -r 3193a35f7874 -r 7403d5ee2c92 paper/images/bbs.pdf Binary file paper/images/bbs.pdf has changed diff -r 3193a35f7874 -r 7403d5ee2c92 paper/images/bbs.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/images/bbs.xbb Tue Feb 11 18:41:20 2014 +0900 @@ -0,0 +1,8 @@ +%%Title: ./bbs.pdf +%%Creator: extractbb 20130405 +%%BoundingBox: 0 0 360 252 +%%HiResBoundingBox: 0.000000 0.000000 360.000000 252.000000 +%%PDFVersion: 1.4 +%%Pages: 1 +%%CreationDate: Tue Feb 11 15:42:04 2014 + diff -r 3193a35f7874 -r 7403d5ee2c92 paper/images/read.pdf Binary file paper/images/read.pdf has changed diff -r 3193a35f7874 -r 7403d5ee2c92 paper/images/read.xbb --- a/paper/images/read.xbb Tue Feb 11 14:14:33 2014 +0900 +++ b/paper/images/read.xbb Tue Feb 11 18:41:20 2014 +0900 @@ -4,5 +4,5 @@ %%HiResBoundingBox: 0.000000 0.000000 360.000000 252.000000 %%PDFVersion: 1.4 %%Pages: 1 -%%CreationDate: Mon Feb 10 08:47:17 2014 +%%CreationDate: Tue Feb 11 14:49:50 2014 diff -r 3193a35f7874 -r 7403d5ee2c92 paper/images/request.graffle --- a/paper/images/request.graffle Tue Feb 11 14:14:33 2014 +0900 +++ b/paper/images/request.graffle Tue Feb 11 18:41:20 2014 +0900 @@ -53,15 +53,22 @@ Bounds - {{199, 283.5}, {53, 34}} + {{350, 194}, {93, 17}} Class ShapedGraphic FitText YES Flow Resize + FontInfo + + Font + Helvetica + Size + 12 + ID - 18 + 45 Shape Rectangle Style @@ -92,8 +99,7 @@ {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc -\f0\fs28 \cf0 HTTP\ -Request} +\f0\fs28 \cf0 HTTP Request} VerticalPad 0 @@ -104,11 +110,14 @@ Class LineGraphic ID - 17 + 44 Points - {148, 317.5} - {333.00000019542364, 317.5} + {381, 138} + {450, 138} + {450, 236} + {310, 236} + {310, 236} Style @@ -118,8 +127,6 @@ FilledArrow Legacy - LineType - 1 TailArrow 0 Width @@ -129,11 +136,11 @@ Bounds - {{23, 165}, {125, 278}} + {{249, 101}, {130, 74}} Class ShapedGraphic ID - 14 + 43 Shape Rectangle Style @@ -143,24 +150,449 @@ Draws NO - stroke + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs28 \cf0 weighttp} + + + + Bounds + {{127, 437}, {100, 22}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 42 + Shape + FlattenedRectangle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Core} + VerticalPad + 2 + + TextRelativeArea + {{0.10000000000000001, 0}, {0.80000000000000004, 1}} + + + Bounds + {{127, 406}, {100, 22}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 41 + Shape + FlattenedRectangle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Core} + VerticalPad + 2 + + TextRelativeArea + {{0.10000000000000001, 0}, {0.80000000000000004, 1}} + + + Bounds + {{127, 375}, {100, 22}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 40 + Shape + FlattenedRectangle + Style + + shadow - Pattern - 4 + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Core} + VerticalPad + 2 + + TextRelativeArea + {{0.10000000000000001, 0}, {0.80000000000000004, 1}} + + + Bounds + {{127, 344}, {100, 22}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 39 + Shape + FlattenedRectangle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Core} + VerticalPad + 2 + + TextRelativeArea + {{0.10000000000000001, 0}, {0.80000000000000004, 1}} + + + Bounds + {{127, 313}, {100, 22}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 38 + Shape + FlattenedRectangle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Core} + VerticalPad + 2 + + TextRelativeArea + {{0.10000000000000001, 0}, {0.80000000000000004, 1}} + + + Bounds + {{127, 282}, {100, 22}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 37 + Shape + FlattenedRectangle + Style + + shadow + + Draws + NO Text Text {\rtf1\ansi\ansicpg1252\cocoartf1265 -\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Core} + VerticalPad + 2 + + TextRelativeArea + {{0.10000000000000001, 0}, {0.80000000000000004, 1}} + + + Bounds + {{127, 251}, {100, 22}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 36 + Shape + FlattenedRectangle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Core} + VerticalPad + 2 + + TextRelativeArea + {{0.10000000000000001, 0}, {0.80000000000000004, 1}} + + + Bounds + {{127, 220}, {100, 22}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 35 + Shape + FlattenedRectangle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Core} + VerticalPad + 2 + + TextRelativeArea + {{0.10000000000000001, 0}, {0.80000000000000004, 1}} + + + Bounds + {{127, 189}, {100, 22}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 34 + Shape + FlattenedRectangle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc -\f0\fs36 \cf0 Blade Server} +\f0\fs24 \cf0 Core} + VerticalPad + 2 + + TextRelativeArea + {{0.10000000000000001, 0}, {0.80000000000000004, 1}} + + + Bounds + {{127, 158}, {100, 22}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 32 + Shape + FlattenedRectangle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Core} + VerticalPad + 2 - TextPlacement - 0 + TextRelativeArea + {{0.10000000000000001, 0}, {0.80000000000000004, 1}} + + + Bounds + {{127, 127}, {100, 22}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 27 + Shape + FlattenedRectangle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Core} + VerticalPad + 2 + + TextRelativeArea + {{0.10000000000000001, 0}, {0.80000000000000004, 1}} + + + Bounds + {{127, 96}, {100, 22}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 24 + Shape + FlattenedRectangle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Core} + VerticalPad + 2 + + TextRelativeArea + {{0.10000000000000001, 0}, {0.80000000000000004, 1}} Class @@ -169,8 +601,8 @@ 12 Points - {454, 317.5} - {380, 317.5} + {384, 308.5} + {310, 308.5} Style @@ -191,7 +623,7 @@ Bounds - {{330, 212}, {50, 212}} + {{254.5, 189}, {50, 239}} Class ShapedGraphic ID @@ -219,7 +651,7 @@ Bounds - {{454, 291}, {79, 54}} + {{384, 282}, {79, 54}} Class ShapedGraphic ID @@ -256,7 +688,7 @@ Bounds - {{303, 165}, {246, 278}} + {{118, 61}, {364, 407}} Class ShapedGraphic ID @@ -339,7 +771,7 @@ MasterSheets ModificationDate - 2014-02-03 20:55:51 +0000 + 2014-02-11 06:08:02 +0000 Modifier Daichi TOMA NotesVisible diff -r 3193a35f7874 -r 7403d5ee2c92 paper/images/request.pdf Binary file paper/images/request.pdf has changed diff -r 3193a35f7874 -r 7403d5ee2c92 paper/images/request.xbb --- a/paper/images/request.xbb Tue Feb 11 14:14:33 2014 +0900 +++ b/paper/images/request.xbb Tue Feb 11 18:41:20 2014 +0900 @@ -1,8 +1,8 @@ %%Title: ./request.pdf %%Creator: extractbb 20130405 -%%BoundingBox: 0 0 530 282 -%%HiResBoundingBox: 0.000000 0.000000 530.000000 282.000000 +%%BoundingBox: 0 0 368 411 +%%HiResBoundingBox: 0.000000 0.000000 368.000000 411.000000 %%PDFVersion: 1.3 %%Pages: 1 -%%CreationDate: Tue Feb 4 05:58:20 2014 +%%CreationDate: Tue Feb 11 15:08:57 2014 diff -r 3193a35f7874 -r 7403d5ee2c92 paper/images/warp.pdf Binary file paper/images/warp.pdf has changed diff -r 3193a35f7874 -r 7403d5ee2c92 paper/images/warp.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/images/warp.xbb Tue Feb 11 18:41:20 2014 +0900 @@ -0,0 +1,8 @@ +%%Title: ./warp.pdf +%%Creator: extractbb 20130405 +%%BoundingBox: 0 0 360 252 +%%HiResBoundingBox: 0.000000 0.000000 360.000000 252.000000 +%%PDFVersion: 1.4 +%%Pages: 1 +%%CreationDate: Tue Feb 11 14:49:50 2014 + diff -r 3193a35f7874 -r 7403d5ee2c92 paper/images/write.pdf Binary file paper/images/write.pdf has changed diff -r 3193a35f7874 -r 7403d5ee2c92 paper/images/write.xbb --- a/paper/images/write.xbb Tue Feb 11 14:14:33 2014 +0900 +++ b/paper/images/write.xbb Tue Feb 11 18:41:20 2014 +0900 @@ -4,5 +4,5 @@ %%HiResBoundingBox: 0.000000 0.000000 360.000000 252.000000 %%PDFVersion: 1.4 %%Pages: 1 -%%CreationDate: Mon Feb 10 08:47:14 2014 +%%CreationDate: Tue Feb 11 14:49:50 2014 diff -r 3193a35f7874 -r 7403d5ee2c92 paper/master_paper.pdf Binary file paper/master_paper.pdf has changed