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 … このページで用いられているツールです.