实测 AWS Lambda 不同内存配置下的 CPU 核心数
目前(2023-05-25) AWS Lambda 的内存选择区间是 128MB ~ 10240MB, 最长运行时间为 15 分钟,但没有 vCPU 个数的选择。vCPU 的数量是基于所选内存大小而有不同的,如果我们在 Lambda 中需使用多进程充分发挥 CPU 性能的话,有必要了解当前 Lambda 所在运行环境的 CPU 内核数,甚至是单核的频率。
CPU 个数可用如下 Python 内置的其中一个方法取得
安装方法
lambda_function.py 的内容为
测试响应格式为
下面是通过朴素的方式不断修改 Lambda 内存数获得的数据,内存设置从 128M 起,每次翻倍,直至 10240M,如有发现 CPU 个数变化再找到临界值,CPU 的频率全都是 2500 MHz
以上表格大概也只仅供参考,AWS 随时可能改变内存与 CPU 核心数的变化关系。
把内存选择与 vCPU 个数关系可以缩表如下:
Lambda 实际运行环境中的总内存大小也并非选择多少就多少,而是有一系列点位值,选择的内存落在哪个区间就用向上接近的那个点位上的值。
链接:
永久链接 https://yanbin.blog/get-aws-lambda-cpu-count-different-memory/, 来自 隔叶黄莺 Yanbin's Blog
[版权声明]
本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。
CPU 个数可用如下 Python 内置的其中一个方法取得
multiprocessing.cpu_count()要获得 CPU 频率或内存的话,将要用到
os.cpu_count()
psutil 组件的方法,可把 psutil 做成 Lambda 层以引用,或与 Lambda 函数代码一同打成 zip 包。安装方法
psutilpip install --target . psutilpsutil 会安装到当前目录,然后在当前目录下再创建 lambda_function.py 文件,再打包
zip -r lambda.zip *部署这个 lambda.zip 到 AWS Lambda 函数即可,指定相应的 Handler: lambda_function.lambda_handler
lambda_function.py 的内容为
1import psutil
2import os
3
4
5def lambda_handler(event, context):
6 mem_usage = psutil.virtual_memory()
7 return {
8 "memory": f"{mem_usage.total/(1024**2):.0f}M",
9 "cpu_count": os.cpu_count(),
10 "cpu_freq": f"{int(psutil.cpu_freq()[0])}MHz"
11 }测试响应格式为
1{
2 "memory": "3166M",
3 "cpu_count": 2,
4 "cpu_freq": "2500MHz"
5}下面是通过朴素的方式不断修改 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 核心数的变化关系。
把内存选择与 vCPU 个数关系可以缩表如下:
| 内存(M) | vCPU |
| 128 - 3008 | 2 |
| 3009 - 5307 | 3 |
| 5308 - 7076 | 4 |
| 7077 - 8845 | 5 |
| 8846 - 10240 | 6 |
Lambda 实际运行环境中的总内存大小也并非选择多少就多少,而是有一系列点位值,选择的内存落在哪个区间就用向上接近的那个点位上的值。
链接:
永久链接 https://yanbin.blog/get-aws-lambda-cpu-count-different-memory/, 来自 隔叶黄莺 Yanbin's Blog
[版权声明]
本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。