AWS Lambda を計算リソースとして使う
実際の効果
AWS Lambda のセットアップ
Step 1
図 1: 初期テンプレートの選択
Step 2
図 2: 関数の設定
Step 3
図 3: 確認画面
imos-lambda のセットアップ
exec のセットアップ
# AWS の認証情報が設定されている必要があるので設定したことがなければします. $ aws configure # imos-lambda をチェックアウトします $ git clone https://github.com/imos/imos-lambda $ cd imos-lambda # us-west-2 リージョンの exec コマンドの実行コードを上書きします $ make install-exec REGION=us-west-2 # cli ディレクトリにパスを通します(通さず直接実行しても大丈夫です) $ export PATH="$(pwd)/cli:${PATH}"
使い方
# us-west-2 の exec で uname -a を実行します. $ imos-lambda --region=us-west-2 uname -a Linux ip-10-0-116-148 3.14.48-33.39.amzn1.x86_64 #1 SMP Tue Jul 14 23:43:07 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux REPORT RequestId: ee9dcb9f-61e2-11e5-871a-758370ef4d00 Duration: 17.38 ms Billed Duration: 100 ms Memory Size: 1536 MB Max Memory Used: 17 MB Elapsed time: 17 ms Price: 0.0003 JPY
gcc のセットアップ
# ap-norteast-1 リージョンの gcc コマンドの実行コードを上書きします $ make install-gcc REGION=ap-northeast-1
使い方
# --bucket でコンパイル後のオブジェクトを置く場所を指定することによりコンパイル・実行が可能です. $ time ./cli/imos-lambda --alsologtostderr --compiler=gcc \ --input=sample/hello.cc --bucket=lambda.imoz.jp I0924 02:11:50.860107 9265 imos-lambda:42] Compiling... I0924 02:11:51.788474 9265 imos-lambda:50] Successfully compiled: ephemeral/2e5b0e60-6216-11e5-8b25-81a8e743b35c I0924 02:11:51.796413 9265 imos-lambda:59] Invoking function. Hello world! REPORT RequestId: 2ee8a8ad-6216-11e5-a46c-b34664c0aa4d Duration: 166.26 ms Billed Duration: 200 ms Memory Size: 1536 MB Max Memory Used: 52 MB Elapsed time: 165 ms Price: 0.0006 JPY I0924 02:11:52.260542 9265 imos-lambda:79] Completed. real 0m1.499s user 0m0.335s sys 0m0.093s # --replicas フラグを利用することにより並列実行が可能です. # trip.cc はトリップを探索するプログラムです. $ time ./cli/imos-lambda --alsologtostderr --region=us-west-2 \ --compiler=gcc --input=sample/trip.cc \ --bucket=lambda.imoz.jp --compiler_flags='-lcrypt -O2' \ --arguments=imos --replicas=90 2>/dev/null olunfpnc imosUVXN6M twnzekyc imosOkBO9w yvmxkhci imosJ7WMaY waetzigk imosnC.OMI zwgilupk imosKI4urQ real 0m37.351s user 0m18.814s sys 0m3.613s
付録
gcc-min.tar.xz の生成方法
AWS Lambda のベンチマーク
- c4.large … 0.426 Mlps (3.5 ECU)
- AWS Lambda (単一) … 0.351 Mlps (2.88 ECU), 合計 0.351 Mlps (2.88 ECU)
- AWS Lambda (100並列時) … 0.264 Mlps (2.17 ECU), 合計 26.4 Mlps (288 ECU)
- AWS Lambda (500並列時) … 0.242 Mlps (1.99 ECU), 合計 121 Mlps (994 ECU)
参考文献
- AWS Lambdaをいろいろ暴く … JavaScript から実行するというアイディアはここからです.
- imos-lambda … このページで用いられているツールです.