comparison Slides/jssst.html @ 20:fabd690fbaf0

add slides
author Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
date Thu, 12 Sep 2013 02:11:52 +0900
parents
children 896dc855b808
comparison
equal deleted inserted replaced
19:3111c8d0080c 20:fabd690fbaf0
1 <!DOCTYPE html>
2
3 <!--
4 Google HTML5 slide template
5
6 Authors: Luke Mahé (code)
7 Marcin Wichary (code and design)
8
9 Dominic Mazzoni (browser compatibility)
10 Charles Chen (ChromeVox support)
11
12 URL: http://code.google.com/p/html5slides/
13 -->
14
15 <html>
16 <head>
17 <title>
18 Haskellによる非破壊的木構造を用いたCMSの実装
19 </title>
20
21 <meta charset='utf-8'>
22 <script
23 src='http://web.amothic.com/html5slides/slides.js'></script>
24 </head>
25
26 <style>
27 /* Your individual styles here, or just use inline styles if that’s
28 what you want. */
29
30
31 </style>
32
33 <body style='display: none'>
34
35 <section class='slides layout-regular template-concurrency'>
36
37 <!-- Your slides (<article>s) go here. Delete or comment out the
38 slides below. -->
39
40 <article>
41 <h1>
42 Haskellによる非破壊的木構造を用いたCMSの実装
43 </h1>
44 <p>
45 Daichi TOMA
46 <br>
47 Sep 13, 2013
48 </p>
49 </article>
50
51 <article>
52 <h3>
53 はじめに
54 </h3>
55 <p>
56 本研究室では非破壊的木構造データベース Jungle の開発を行っている。
57 非破壊的木構造は、通常の木構造と違い、木構造自体を破壊せずに編集を行うことが可能である。
58 </p>
59 <p>
60 Jungle には、既に Java による実装があるが、本研究ではHaskellによる再実装を行った。
61 その結果、Java 版と同程度の性能を得ることができた。また、Java 版の実装と比較し、開発期間及びコード行数の短縮ができた。
62 </p>
63 </article>
64
65 <article>
66 <h3>
67 非破壊的木構造データベース Jungle
68 </h3>
69 <p>
70 非破壊的木構造を取り扱うデータベースである。
71 既に Java による実装が存在する。
72 </p>
73
74 <p>
75 特徴を以下に示す。
76 <ul>
77 <li>複数の非破壊的木構造を扱える
78 <li>編集者は、提供されるAPIを利用して編集を行う
79 </ul>
80 </p>
81 </article>
82
83 <article>
84 <h3>
85 破壊的木構造
86 </h3>
87 <ul>
88 <li>木構造で保持するデータを直接書き換える
89 <li>編集および参照する際にロックを行う必要がある
90 </ul>
91 <p>
92 ロックを行わなければ、参照中に他の編集者が編集してしまうと、整合性がなくなってしまう。
93 </p>
94 図を入れる。見やすいように線とか太くする。
95 </article>
96
97 <article>
98 <h3>
99 非破壊的木構造
100 </h3>
101 <ul>
102 <li>元の木構造を書き換えることなく、編集を行う
103 <li>ルートノードの更新以外にロックは必要ない
104 </ul>
105 <p>
106 参照中に他の編集者が編集してしまっても、整合性がなくなることはない。
107 </p>
108 図を入れる。見やすいように線とか太くする。
109 </article>
110
111 <article>
112 <h3>
113 非破壊的木構造の特徴
114 </h3>
115 <p>
116 非破壊的木構造は、破壊的木構造と異なり以下の利点がある。
117 </p>
118 <ul>
119 <li>一度作成された木構造は破壊されることがない
120 <li>破壊されることがないため、自由にコピーを行っても構わない
121 <li>自由にコピーを行なっても構わないのでロックを必要としない
122 </ul>
123 <p>
124 ロックを必要とせず、自由にコピーを行えるため、スケーラブルなシステムに有用である。
125 </p>
126 </article>
127
128 <article>
129 <h3>
130 Haskell
131 </h3>
132 <p>
133 Haskell は、純粋関数型プログラミング言語である。
134 変数への代入は一度のみで、書き換えることはできない。
135 </p>
136 <p>
137 非破壊的木構造は変数への代入が発生しないことから、関数型言語と相性が良いと考えられる。
138 そのため、Haskell を用いて再実装を行った。
139 </p>
140 </article>
141 <!--
142 Jungleの実装について
143 STMとか
144 実装にかかった時間、コード行数
145 -->
146
147 <article>
148 <h3>
149 性能評価
150 </h3>
151 <p>
152 非破壊的木構造データベース Jungle を用いて簡易掲示板システムを作成し、既存の Java 版との性能比較を行った。
153 </p>
154 <p>
155 Haskell 版 Jungle の HTTP サーバには、Haskell によって書かれた Warp を用いた。
156 </p>
157 <p>
158 Java 版 Jungle の HTTP サーバには、Jetty を用いた。
159 </p>
160 </article>
161
162 <article>
163 <h3>
164 実験方法
165 </h3>
166 <ul>
167 <li>複数のクラスタを利用して、サーバに対して並列にアクセスを5000回行い、それぞれクラスタの実行平均時間をとる
168 <li>クラスタの台数を増やすことにより負荷を上昇させる
169 <li>測定するのは書き込みと読み込みであり、 掲示板のメッセージの取得と掲示板のメッセージの編集を行う
170 </ul>
171 </article>
172
173 <article>
174 <h3>
175 実験環境
176 </h3>
177 xeon使ったよーとか
178 </article>
179
180 <article>
181 <h3>
182 実験結果
183 </h3>
184 ほぼ同じぐらい
185 </article>
186
187 <article>
188 <h3>
189 並列実行
190 </h3>
191 <ul>
192 <li>Haskell 版 Jungle では、並列実行に問題を抱えている
193 <li>複数のスレッドが立ち上がり、並列実行していることは確認したが、シングルコアで実行した場合と比較して実行結果が遅くなる
194 </ul>
195 </article>
196
197 <article>
198 <h3>
199 並列実行
200 </h3>
201 <img src="images/para.png", width="400px">
202 <ul>
203 <li>本研究とは別に、簡単な例題を並列で動かした場合でも期待する実行速度の向上は得られなかった。並列処理で速度向上を達成することは今後の課題である
204 </ul>
205 </article>
206
207 <article>
208 <h3>
209 遅延評価
210 </h3>
211 <ul>
212 <li>Haskell は遅延評価を行うが、書き込みの際に問題が生じる
213 <li>何かしらの結果を表示するまで、簡約可能な式の状態で積まれたままとなる
214 <li>その際メモリを消費し、効率のよい領域に入りきらないサイズになると非常に実行結果が遅くなる
215 </ul>
216 <img src="images/delay_memory.png", width="400px">
217 </article>
218
219 <article class="smaller">
220 <h3>
221 遅延評価
222 </h3>
223 <img src="images/delay.png", width="400px">
224 <ul>
225 <li>評価を行ったあとに実行時間がどのように変わるかを示すために、実験方法を変更した。クラスタ台数を変更する際に10台増やすごとに一度読み込みを挟むようにした。書き込みを繰り返すと実行時間が悪化し、読み込み後、急激に実行時間が下がる。
226 <li>読み込みの際には、数万回以上の書き込みを処理するため数秒から数十秒かかる
227 <li>書き込みは、インクリメントしている値を書き込んでいるが順序などは正しく処理できている
228 <li>この問題を解決するために、全て遅延評価するのではなく、適切な箇所で即時評価を行うことで領域効率を改善する必要がある
229 </ul>
230 </article>
231
232 <article>
233 <h3>
234 まとめ
235 </h3>
236 <ul>
237 <li>Haskell による非破壊的木構造を用いた CMS の実装を行った。
238 <li>木構造データベース Jungle と、HTTP サーバ Warp を用いて、簡易掲示板システムを開発し、既存の Java の実装と同程度の性能を達成できた
239 <li>Java の実装と比較して開発期間およびコード行数は非常に短くなった。
240 </ul>
241 </article>
242
243 <article>
244 <h3>
245 今後の課題
246 </h3>
247 <ul>
248 <li>マルチスレッドで実行した際の実行速度の向上
249 <li>書き込みの際に、遅延評価のためにメモリを多く使用する問題がある。いくつかの式を即時評価するように変更し、領域効率の改善を計る。
250 <li>木構造を永続化する仕組みの実装
251 <li>分散環境でJungleを効率よく利用するために、木構造をマージする仕組みを実装
252 </ul>
253 </article>
254 </body>
255 </html>