-
+
- 配列を分割してSortする +
- Sortされた配列をさらに分割する +
- 分割された配列の下半分と上半分に対してSortする +
|
+
|
+
while(ture){
- Command cmd = linkedBlockingQueue.take()
+ Command cmd = linkedBlockingQueue.take();
Command result = runCommand(cmd);
nextLinkedBlockingQueue.put(result);
}
@@ -228,31 +247,13 @@
- 実験概要
+ 実験1の概要と結果
- 今回行った改善による効果を調べるために3つの実験を行った。
- 実験はSEDAの効果が出るようにメニコアのマシンで行った
- SEDAの有無
Data Segmentを取得するCode Segmentが10000回実行されるまでの時間を測定
- - flipとputの比較
- 既存のAPIのputと新しく追加したAPIであるflipを使用して10000回、Data Segmentを追加されるまでの時間を測定
- - Bitonic Sortによる比較
- 今回行った改善でBitonic Sortがどの程度速度が改善されたか測定する。
- 要素は100万個、10個に分割して実験した
-
-
-
-
-
-
- 実験結果
-
-
- 実験結果は100回行った平均
-
SEDA あり なし
@@ -261,8 +262,20 @@
実行時間(ms) 27.72 7.53
+ SEDAが無いほうが約4倍程度早い
+
+
+
+
+
+ 実験2の概要と結果
+
+
+ - flipとputの比較
+ 既存のAPIのputと新しいAPIであるflipを使用して、
+ Data Segmentが10000回追加されるまでの時間を測定
API flip put
@@ -271,8 +284,20 @@
実行時間(ms) 61.12 65.24
+ flipを使用するほうが7%改善された
+
+
+
+
+
+ 実験3の概要と結果
+
+
+ - Bitonic Sortによる比較
+ 今回行った改善でBitonic Sortがどの程度速度が改善されたか測定する。
+ 要素は100万個、10個に分割して実験した
改善前 改善後
@@ -281,19 +306,32 @@
実行時間(ms) 199.38 184.64
- Bitonic Sortの例題では約10%程度改善された
+ Bitonic sortの例題でも約10%程、改善された
- まとめ
+ 実験の考察考察
+
+
+
+ - SEDAの有無で4倍速度に差が出ている。これが示すのはSEDAの実装に問題がある。
+ - レスポンスを要求するものに対してはSEDA無し、そうでないものに対してはSEDAで処理させる
+
+ - flipにおいても十分効果があった。ただし、ユーザーにflipの判断をさせるのではなく、Alice側で自動的に判断するのが望ましい
+
+
+
+
+
+
+ 将来の課題
- 今回行った改善により、最大4倍程度速度を期待することが出来る
- - Aliceに要求される速度は、少なくともシングルスレッドで書かれたプログラムと同じ程度
- 分散環境下ではFederated Lindaと同じ速度を目標としている
- 今回の実験からSEDAに問題があることが明らかになったのでRemoteにおいてもSEDAの使用を選択できるようにする
- また、Aliceが抱える問題は速度だけではない