😀
【Lambda Arm64】KinesisVideoStreamsの最新画像をLambdaで切り出したときのパフォーマンス
はじめに
- KinesisVideoStreamsの最新画像をLambdaで切り出しS3で期限付き配信する のLambdaをarm64版で作成したらパフォーマンスがどうなるかの確認記事です
- Lambdaのarm対応は2021/9/29に発表されており、東京リージョンでも利用可能です
確認したいこと
- x86_64版とarm64版のメモリ使用量
- x86_64版とarm64版のコールドスタート時のレスポンス時間
- x86_64版とarm64版のウォームスタート時のレスポンス時間
準備
Lambda Layer作成
- armプロセッサのEC2を立てます
- 無料期間中の
t4g.micro
インスタンスを利用 - AMIは
Amazon Linux 2 AMI (HVM), SSD Volume Type
- 無料期間中の
- 標準でインストールされているPythonが3.7なのでPython3.8をインストールします
- Lambdaのarm64ではPython3.8とPython3.9がサポートされておりPython3.7は対象外のため
sudo amazon-linux-extras install python3.8
sudo pip3.8 install -U pip
- ↑pipをupgradeしないと
opencv-python-headless
のインストールでエラーになりました - 一旦、ログインしなおしてpipとpythonのバージョンを念のため確認します
pip 21.3 from /usr/local/lib/python3.8/site-packages/pip (python 3.8)
mkdir -p python/lib/python3.8/site-packages
pip3.8 install -t python/lib/python3.8/site-packages opencv-python-headless
zip -r opencv-python3.8_arm64.zip python
- 前回の記事で作成したx86版のzipが53MBなのに対して、arm版は36MBほどとかなり小さくなってます(期待大)
- 作成したzipをs3にアップロードして、Lambda Layerを作成します
- 「互換性のあるランタイム」に
Python 3.8
を指定 - 「互換性のあるアーキテクチャ・オプション」に
arm64
を指定
- 「互換性のあるランタイム」に
Lambda関数の作成
- 前回の記事と全く同じコードを使います
- API Gatewayなども同様に設定していきます
結果
- あくまでこのアプリに関しての計測ですので、値や傾向については参考として捉えてください(特にx86_64はPython3.7環境なのでその影響が出ている可能性もあります)
- 前回の記事とは測定した時間や動画の内容が異なるので、x86の場合のレスポンス時間も少し異なっています
最大メモリ使用量
arm64 | x86_64 |
---|---|
151MB | 159MB |
-
opencv-python-headless
のサイズが小さいお陰か、arm64の方が約10MBくらい少ない結果になっています
コールドスタート時のレスポンス
メモリ | arm64 | x86_64 |
---|---|---|
128MB | 6.0秒 | 7.2秒 |
256MB | 3.5秒 | 4.5秒 |
512MB | 2.2秒 | 2.8秒 |
1024MB | 1.8秒 | 2.4秒 |
2048MB | 1.5秒 | 1.8秒 |
- 同一メモリ割り当ての場合、凡そ20%程度arm64の方が速くなっています
ウォームスタート時のレスポンス
メモリ | arm64 | x86_64 |
---|---|---|
128MB | 2.0秒 | 2.0秒 |
256MB | 1.0秒 | 1.0秒 |
512MB | 0.6秒 | 0.6秒 |
1024MB | 0.4秒 | 0.4秒 |
2048MB | 0.35秒 | 0.35秒 |
- 同一メモリ割り当ての場合、arm64でもx86_64でもほとんど差がありませんでした
まとめ
- 本ケースにおいては、起動後の実処理の時間についてはほとんど差がないものの、コールドスタートにかかる時間が大幅に短縮されていました
- 同一メモリ割り当ての場合は、x86に対してarm64の方が20%安い
- よって、単純にarm版に置き換えることで、20%のコスト削減とコールドスタートの20%改善を実現できそうです(AWSが公式で言っている 20%低いコストで19%優れたパフォーマンス とも乖離はなさそう)
Discussion