AWS Lambda 中可用的最大虚拟处理器内核数是多少?
What's the maximum number of virtual processor cores available in AWS Lambda?
我正在尝试查找 AWS Lambda 中可用的最大虚拟处理器内核数。官方文档暗示它随配置的内存量缩放:
但是,运行即使我配置了可请求的最大内存量:1536 MB,以下代码片段也让我感到 Number of cores = 2
。
package example;
import java.io.{ InputStream, OutputStream }
class Main {
def main(input: InputStream, output: OutputStream): Unit = {
val result = "Number of cores = " + Runtime.getRuntime().availableProcessors()
output.write(result.getBytes("UTF-8"))
}
}
这是怎么回事?我使用 availableProcessors()
是错误的还是错误地误解了它的结果?或者是否有一些其他配置需要获得更多内核?
根据 AWS Lambda documentation and forum,AWS 没有说明 AWS 将哪些实例类型用于此服务。 2014 年底,AWS 使用了 compute-optimize-like 实例。现在,AWS 使用 通用 类实例。
The CPU share dedicated to a function is based off of the fraction of
its allocated memory, per each of the two cores. For example, an
instance with ~ 3 GB memory available for lambda functions where each
function can have up to 1 GB memory means at most you can utilize ~
1/3 * 2 cores = 2/3 of the CPU. The details may be revisited in the
future, but that is the fractional nature of our usage model.
您只能使用与内存成正比的CPU功率。尽管低内存和高内存在同一个实例中,但它们将按比例共享 CPU 功率,即较高内存将获得更多 CPU 功率。如果你读到你的 CPU 核心总数是 2,这并不意味着你可以充分利用所有 CPU.
目前无法配置CPU。只能调整总内存。
编辑 2021 年 9 月 16 日
这个答案已经有将近 6 年历史了,不再真正相关了。查看评论,您现在可以 select 最多 6 个内核,具体取决于您 select。
原回答
你问的问题我认为是错误的(或者想将 Lambda 用于它不适合的地方)。一个 Lambda 函数只有一个或两个核心可用,但是,Lambda 的强大之处在于您可以同时 运行 数百个核心。活动 Lambda 函数数量的默认限制为 100,但这只是保护基础设施(和您的钱包)的限制。你可以要求更多。
因此您的账户可以同时拥有 100 个 Lambda 函数 运行ning,您可以将其视为 100 个核心(但事实并非如此)。如果您请求增加限制,这也可以是 1000 或 10,000 或 100,000。
打个比方:你有 100 台 1 核计算机,而不是 1 台 100 核计算机。
虽然 AWS 直到今天还没有披露有关 AWS Lambda 函数处理能力的任何细节,但他们在 announcing an increase of the maximum memory from 1536 MB to 3008 MB. Their documentation 之后披露了现在声明:
Functions larger than 1536MB are allocated multiple CPU threads, and multi-threaded or multi-process code is needed to take advantage of the additional performance.
基于此,我们可以得出结论,内存高达 1536 MB 的所有 AWS Lambda 函数都有一个可用的虚拟处理器核心,而内存更大的函数有两个可用核心。
更新:
虽然该部分文档不再可用,但来自 AWS 的 Chris Munns 最近在 2018 年 7 月 10 日的 AWS 无服务器启动日上透露,所有具有 more than 1.8GB 内存的 AWS Lambda 函数都是 运行 在多核上。显然,AWS Lambda 函数的单核和多核之间的界限从 1.5GB 移动到 1.8GB。
根据latest announcement from AWS,vCPU 的最大数量为六个。
我正在尝试查找 AWS Lambda 中可用的最大虚拟处理器内核数。官方文档暗示它随配置的内存量缩放:
但是,运行即使我配置了可请求的最大内存量:1536 MB,以下代码片段也让我感到 Number of cores = 2
。
package example;
import java.io.{ InputStream, OutputStream }
class Main {
def main(input: InputStream, output: OutputStream): Unit = {
val result = "Number of cores = " + Runtime.getRuntime().availableProcessors()
output.write(result.getBytes("UTF-8"))
}
}
这是怎么回事?我使用 availableProcessors()
是错误的还是错误地误解了它的结果?或者是否有一些其他配置需要获得更多内核?
根据 AWS Lambda documentation and forum,AWS 没有说明 AWS 将哪些实例类型用于此服务。 2014 年底,AWS 使用了 compute-optimize-like 实例。现在,AWS 使用 通用 类实例。
The CPU share dedicated to a function is based off of the fraction of its allocated memory, per each of the two cores. For example, an instance with ~ 3 GB memory available for lambda functions where each function can have up to 1 GB memory means at most you can utilize ~ 1/3 * 2 cores = 2/3 of the CPU. The details may be revisited in the future, but that is the fractional nature of our usage model.
您只能使用与内存成正比的CPU功率。尽管低内存和高内存在同一个实例中,但它们将按比例共享 CPU 功率,即较高内存将获得更多 CPU 功率。如果你读到你的 CPU 核心总数是 2,这并不意味着你可以充分利用所有 CPU.
目前无法配置CPU。只能调整总内存。
编辑 2021 年 9 月 16 日
这个答案已经有将近 6 年历史了,不再真正相关了。查看评论,您现在可以 select 最多 6 个内核,具体取决于您 select。
原回答
你问的问题我认为是错误的(或者想将 Lambda 用于它不适合的地方)。一个 Lambda 函数只有一个或两个核心可用,但是,Lambda 的强大之处在于您可以同时 运行 数百个核心。活动 Lambda 函数数量的默认限制为 100,但这只是保护基础设施(和您的钱包)的限制。你可以要求更多。
因此您的账户可以同时拥有 100 个 Lambda 函数 运行ning,您可以将其视为 100 个核心(但事实并非如此)。如果您请求增加限制,这也可以是 1000 或 10,000 或 100,000。
打个比方:你有 100 台 1 核计算机,而不是 1 台 100 核计算机。
虽然 AWS 直到今天还没有披露有关 AWS Lambda 函数处理能力的任何细节,但他们在 announcing an increase of the maximum memory from 1536 MB to 3008 MB. Their documentation 之后披露了现在声明:
Functions larger than 1536MB are allocated multiple CPU threads, and multi-threaded or multi-process code is needed to take advantage of the additional performance.
基于此,我们可以得出结论,内存高达 1536 MB 的所有 AWS Lambda 函数都有一个可用的虚拟处理器核心,而内存更大的函数有两个可用核心。
更新:
虽然该部分文档不再可用,但来自 AWS 的 Chris Munns 最近在 2018 年 7 月 10 日的 AWS 无服务器启动日上透露,所有具有 more than 1.8GB 内存的 AWS Lambda 函数都是 运行 在多核上。显然,AWS Lambda 函数的单核和多核之间的界限从 1.5GB 移动到 1.8GB。
根据latest announcement from AWS,vCPU 的最大数量为六个。