实测 AWS Lambda 不同内存配置下的 CPU 核心数
source link: https://yanbin.blog/get-aws-lambda-cpu-count-different-memory/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
实测 AWS Lambda 不同内存配置下的 CPU 核心数
目前(2023-05-25) AWS Lambda 的内存选择区间是 128MB ~ 10240MB, 最长运行时间为 15 分钟,但没有 vCPU 个数的选择。vCPU 的数量是基于所选内存大小而有不同的,如果我们在 Lambda 中需使用多进程充分发挥 CPU 性能的话,有必要了解当前 Lambda 所在运行环境的 CPU 内核数,甚至是单核的频率。
CPU 个数可用如下 Python 内置的其中一个方法取得
multiprocessing.cpu_count()
os.cpu_count()
要获得 CPU 频率或内存的话,将要用到 psutil
组件的方法,可把 psutil 做成 Lambda 层以引用,或与 Lambda 函数代码一同打成 zip 包。
安装方法 psutil
pip install --target . psutil
psutil 会安装到当前目录,然后在当前目录下再创建 lambda_function.py 文件,再打包
zip -r lambda.zip *
部署这个 lambda.zip 到 AWS Lambda 函数即可,指定相应的 Handler: lambda_function.lambda_handler
lambda_function.py 的内容为
import psutil import os def lambda_handler(event, context): mem_usage = psutil.virtual_memory() return { "memory": f"{mem_usage.total/(1024**2):.0f}M", "cpu_count": os.cpu_count(), "cpu_freq": f"{int(psutil.cpu_freq()[0])}MHz" |
测试响应格式为
"memory": "3166M", "cpu_count": 2, "cpu_freq": "2500MHz" |
下面通过朴素的方式通过不断修改 Lambda 内存数获得的数据,内存设置从 128M 起,每次翻倍,直至 10240M,如有发现 CPU 个数变化再找到临界值,CPU 的频率全都是 2500 MHz
内存选择(M) | psutil 显示总内存(M) | CPU 个数 |
128 | 188 | 2 |
256 | 324 | 2 |
512 | 634 | 2 |
1024 | 1170 | 2 |
2048 | 3166 | 2 |
3008 | 3166 | 2 |
3009 | 5521 | 3 |
4096 | 5521 | 3 |
5120 | 5521 | 3 |
5307 | 5521 | 3 |
5308 | 7299 | 4 |
6144 | 7299 | 4 |
7076 | 7299 | 4 |
7077 | 9091 | 5 |
8192 | 9091 | 5 |
8845 | 9091 | 5 |
8846 | 10492 | 6 |
10240 | 10492 | 6 |
以上表格大概也只仅供参考,AWS 随时可能改变内存与 CPU 核心数的变化关系。
Lambda 实际运行环境中的总内存大小也并非选择多少就多少,而是有一系列点位值,选择的内存落在哪个区间就用向上接近的那个点位上的值。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK