Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

分散メモリ環境におけるシェルスクリプトの高速化手法の提案

3,183 views

Published on

Published in: Technology
  • Sex in your area is here: ♥♥♥ http://bit.ly/2Qu6Caa ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Follow the link, new dating source: ♥♥♥ http://bit.ly/2Qu6Caa ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

分散メモリ環境におけるシェルスクリプトの高速化手法の提案

  1. 1. 分散メモリ環境におけるシェルスクリプトの高速化手法の提案Kan Keisuke ( @9renpoto) 1
  2. 2. 背景 共有メモリ型並列処理 メモリ• 作業を高速化したい コア1 コア2 コア3 コア4• 大規模な処理を行いたい 例:マルチコアプロセッサ並列処理環境1.共有メモリ型 分散メモリ型2.分散メモリ型 メモリ メモリ メモリ メモリ並列処理の難点• 複数のプロセッサに仕事を割振る必要がある  ⇒通信処理が必要 ネットワーク(LANなど) 例:PCクラスタ 2
  3. 3. シェルスクリプトシェル(Shell)は,コマンドを解釈しプログラムの起動や制御などを行うプログラムである• UNIXユーザであれば気軽に利用• C言語などと比べ,命令1つの処理時間が長い• 大量のデータ処理に扱うことが多い • 企業では売上データや受注データなどの処理に利用多くの処理時間がかかるプログラムが記述されやすい 3
  4. 4. 関連研究 シェルスクリプトを自動的に並列化する手法 が提案されている[1] • マルチコア・SMTプロセッサ上を対象(共有メモリ型) • 1.4倍~1.8倍のスピードアップ • シェルスクリプトの自動並列化に成功 問題点 • 繰り返し文の並列化は行っていない • 共有メモリ環境での並列化が対象 • マルチコア(4~8コア)での並列化では限界がある[1]杉田秀,深山辰徳,蛭田智則,當仲寛哲,山名早人.“マルチコア・SMTプロセッサ上における 4シェルスクリプト高速化手法”.情報処理学会研究報告,2007-ARC-172,pp.73-78,(2007)
  5. 5. 動機・目的問題点• 繰り返し文の並列化は行っていない• 共有メモリ環境での並列化が対象 • マルチコア(4~8コア)での並列化では限界がある目的•分散メモリ環境を対象として並列化を行う.•逐次プログラムに対して少し変更を加えるだけで 並列実行可能なスクリプトを生成する(半自動並列化) 5
  6. 6. 全体像記述系 実行系逐次スクリプト 生成 task.sh高速処理したい リモートPC上で タスクキューシェルスクリプト 実行されるタスク生成 タスク実行スクリプト実行系へtask.shをエンキュー実行系の実行 6
  7. 7. 実行系 タスク リモートPC上で実行されるPCリスト コマンド群(task.sh)Host1 タスクキュー 記述系で生成Host2Host3 PCリストHost4・ 並列計算に参加するPCの タスク 情報(PCクラスタ) 実行系 マスタ・ワーカ法により 動的負荷分散 7
  8. 8. 実行系~マスタ・ワーカ法~ マスタ マスタ 1.タスクキューに格納されているタスクを   仕事をしていないワーカに対して割り当てる 2.処理結果を受け取る ワーカ 1.マスタより受け取ったタスクを処理 2.処理が終わると結果をマスタへ返す ワーカ2種類のプロセッサ集合に分けて処理を行うタスクの大きさにバラつきがあっても効率よく処理できる 8
  9. 9. 記述系逐次シェルスクリプトに対して特殊コメントを入力1.#!/bin/sh ユーザが行う作業2.count=1 1.PCリストを作成 2.特殊コメントの入力3.while []; do • 並列実行したい箇所を指定4.    #bodystart 2.ツールの起動5.    Command1 3.実行スクリプトを起動6.    Command27.    #bodyend8.    count=`expr count+ 1`9.done 並列処理 9
  10. 10. 記述系~特殊コメント~繰り返し文の内部に2箇所特殊コメントを入力1.#!/bin/sh2.count=13.while []; do 開始を示す特殊コメント4.    #bodystart5.    Command1 終了を示す特殊コメント6.    Command27.    #bodyend8.    count=`expr count+ 1`9.done 10
  11. 11. 記述系~task.sh~特殊コメント内部をtask.shへ書き出す1.#!/bin/sh task.sh2.count=1 1.#!/bin/sh3.while []; do 2.4.    #bodystart 3.Command15.    Command16.    Command2 4.Command27.    #bodyend task.sh8.    count=`expr count+ 1`9.done リモートPC上で実行される 独立なタスクとして扱われる 11
  12. 12. 変数情報 マスタ 1. A = 0 マスタで変数が宣言される 2. B = 0 例:A=0 , B=0 ワーカ分散メモリ環境⇒複数のPCを利用し並列処理• 変数情報が異なる• リモートPC上へ必要な変数情報を伝える必要がある 12
  13. 13. 変数情報 マスタ 1. A = 0 マスタで変数が宣言される 2. B = 0 例:A=0 , B=0 リモートPCへ処理を割振る ワーカ分散メモリ環境⇒複数のPCを利用し並列処理• 変数情報が異なる• リモートPC上へ必要な変数情報を伝える必要がある 13
  14. 14. 変数情報 マスタ 1. A = 0 マスタで変数が宣言される 2. B = 0 例:A=0 , B=0 リモートPCへ処理を割振る マスタで宣言された変数情報が ワーカ ワーカ側では不明分散メモリ環境⇒複数のPCを利用し並列処理• 変数情報が異なる• リモートPC上へ必要な変数情報を伝える必要がある 14
  15. 15. 記述系~変数情報~特殊コメント直前までの変数情報をtask.shへ伝播1. task.sh2. 環境変数情報を取得 task.shへ伝播 1.#!/bin/sh3. 2.変数情報4.    #bodystart 3.Command15.    Command16.    Command2 4.Command27.    #bodyend task.sh8.    count=`expr count+ 1`9.done 特殊コメント直前までの 変数情報をtask.shへ伝播 15
  16. 16. 記述系~実行スクリプト~特殊コメントで指示された部分を変換する1.#!/bin/sh2.count=13.while []; do 開始を示す特殊コメント4.    #bodystart5.    Command1 終了を示す特殊コメント6.    Command27.    #bodyend8.    count=`expr count+ 1`9.done 16
  17. 17. 記述系~実行スクリプト~特殊コメントで指示された部分を変換する1.#!/bin/sh2.count=13.while []; do 動的にタスクキューへ格納される4.•    実行系へtask.shをエンキュー•7.     count=`expr count + 1`8.done9.実行系の実行 並列処理を行う 17
  18. 18. 記述系~実行スクリプト~特殊コメントで指示された部分を変換する1.#!/bin/sh 繰り返し文が何回実行されても2.count=1 タスクを格納できる3.while []; do 動的にタスクキューへ格納される4.•    実行系へtask.shをエンキュー•7.    count=`expr count + 1`8.done 繰り返し文の終了と同時に並列処理を行う9.実行系の実行 ⇒実行結果に同期を取る 並列処理を行う 18
  19. 19. 実験• 実験目的 ダミープログラム提案手法による速度向上を調べる 1.#!/bin/shタスク粒度による性能の調査 2.while read line ;do 3. #bodystart• 実験環境 4. sleep $linePCクラスタ:PC15台(シングルコア) 5. #bodyend 6.done < random.txt• 実験に利用したプログラムsleepコマンドを利用したダミープログラム 19
  20. 20. 結果横軸に0秒からの乱数の範囲の上限(秒)、縦軸に速度向上率(倍) 14.00 12.00 10.00 8.00 ワーカ14台 6.00 ワーカ8台 4.00 倍 率 上 向 度 速 ワーカ2台 ) ( 2.00 0.00 1 3 5 7 9 11 13 15 0秒からの乱数の範囲(秒) 20
  21. 21. 結果横軸に0秒からの乱数の範囲の上限(秒)、縦軸に速度向上率(倍) 理想値の89.4%の速度向上 14.00 12.00 10.00 8.00 ワーカ14台 6.00 理想値の98.6%の速度向上 ワーカ8台 4.00 倍 率 上 向 度 速 ワーカ2台 ) ( 2.00 0.00 1 3 5 7 9 11 13 15 0秒からの乱数の範囲(秒) 理想値=ワーカ台数倍の速度向上 21
  22. 22. 結果横軸に0秒からの乱数の範囲の上限(秒)、縦軸に速度向上率(倍) 14.00 12.00 10.00 48.6%~82.0%の速度向上 8.00 ワーカ14台 6.00 ワーカ8台 4.00 倍 率 上 向 度 速 ワーカ2台 ) ( 2.00 0.00 1 3 5 7 9 11 13 15 0秒からの乱数の範囲(秒) 22
  23. 23. まとめ分散メモリ環境におけるシェルスクリプト の半自動並列化を行った 特殊コメントで並列箇所を指定するだけで 並列化を行うことが可能となった ワーカ14台のときおよそ7倍から12倍の速度 向上率が得られた以上の結果より,本研究は有用であると言える 23

×