AWS Lambdaは1秒間にいくつまで数えられるか-メモリ毎の性能調査

AWS Lambdaは1秒間にいくつまで数えられるか調べてみました。

前提として、メモリと処理性能と料金は比例しています。

メモリを倍にすれば、CPUの処理性能と料金は倍になるということです。

本記事では、上記の前提が本当なの?を、AWS Lambdaは1秒間にいくつまで数えられるか確認するプログラムを作成して、メモリ量を変更してLambda実行して検証していきます。

まずは、前提としている「メモリと処理性能と料金は比例しています」についてどこからきているか記載していきます。

スポンサーリンク

前提知識

まずは、前提知識です。以下の点についてみていきます。

  • 料金に関する前提知識
  • 設定・性能に関する前提知識

料金に関する前提知識

メモリ (MB)1 ミリ秒あたりの料金
1280.0000000021USD
5120.0000000083USD
1,0240.0000000167USD
料金 - AWS Lambda |AWS
AWS Lambda では、使用した分の料金が発生します。料金は、関数に対するリクエストの数とコードの実行時間に応じて請求されます。
料金に関する前提知識

メモリと料金は比例している
→メモリを倍にすれば、1 ミリ秒あたりの料金も倍になる。

 

設定・性能に関する前提知識

シンプルな Lambda 関数の場合にのみ 128 MB を選択するのがベストプラクティスです。

メモリの量によって、関数で使用できる仮想 CPU の量も決まります。メモリを追加すると、それに比例して CPU の量が増え、それによって使用可能な計算能力も増加します。

メモリと計算能力は AWS Lambda のコストにどのように影響しますか?
メモリと計算能力が AWS Lambda のコストにどのように影響するかを把握したいと考えています。
設定・性能に関する前提知識

シンプルな Lambda 関数の場合はメモリを128 MBに設定することがベストプラクティス
メモリの量に応じて、CPUの計算能力も増える

では検証していきます。

検証条件

まずは検証条件から記載していきます。

CPU

CPUアーキテクチャは「x86_64」で検証しました。

言語と検証用プログラム

次に言語と検証用プログラムについてです。

言語

言語は「Python 3.11」を使用しました。

検証用プログラム

検証用に使用したプログラムは以下のものとなります。

import os

def lambda_handler(event, context):
    os.system('cat /proc/cpuinfo')   # CPUの確認
    cnt = 0
    while True:   # タイムアウトするまで、ひたすらカウントアップ
        if cnt % 1000 == 0:
            print(cnt)
        cnt += 1

タイムアウト設定

タイムアウトは1秒に設定

検証結果

検証結果は以下の通りです。

  • CPUは全ての結果において「Intel(R) Xeon(R) Processor @ 2.50GHz」が使用されている
  • 多少ばらつきはあるが、メモリを増やすと、処理できる件数(CPU性能)もアップする
    • メモリを倍にすれば、処理速度も上がるので、料金が倍になることはなさそう
      • プログラム自体の作りによっても結果は変わってくると思うので断言できず…
メモリカウントアップできた数CPU128MBをベースとして、メモリは何倍か128MBをベースとして、何倍処理できたか
128MB638000Intel(R) Xeon(R) Processor @ 2.50GHz
512MB2625000Intel(R) Xeon(R) Processor @ 2.50GHz4.00倍4.15倍
1GB4192000Intel(R) Xeon(R) Processor @ 2.50GHz7.81倍6.57倍
1.5GB5738000Intel(R) Xeon(R) Processor @ 2.50GHz11.71倍8.99倍
2GB7612000Intel(R) Xeon(R) Processor @ 2.50GHz15.63倍11.93倍
2.5GB10157000Intel(R) Xeon(R) Processor @ 2.50GHz19.53倍15.92倍

まとめ

「メモリと処理性能と料金は比例しています」が本当?を調べました。

結果は、本当でした。

まとめ

多少ばらつきはあるが、メモリを増やすと、処理できる件数(CPU性能)もアップする(メモリを倍にすれば、処理速度も上がるので、料金が倍になることはなさそう)
→プログラム自体の作りによっても結果は変わってくると思うので断言できず…

CPUはメモリ量に関係なく「Intel(R) Xeon(R) Processor @ 2.50GHz」が使用されている