当前位置:  开发笔记 > 运维 > 正文

AWS Lambda中可用的最大虚拟处理器核心数是多少?

如何解决《AWSLambda中可用的最大虚拟处理器核心数是多少?》经验,为你挑选了3个好方法。

我正在尝试查找AWS Lambda中可用的最大虚拟处理器核心数.官方文档暗示它随着配置的内存量而扩展:

在AWS Lambda资源模型中,您可以为功能选择所需的内存量,并分配比例CPU功率和其他资源.例如,选择256MB内存为Lambda函数分配的CPU功率大约是请求128MB内存的两倍,CPU功率是选择512MB内存的一半.

但是,Number of cores = 2即使我配置了可请求的最大内存量,运行以下代码段也会得到我:1536 MB.

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()错误或错误解释了其结果?或者是否有其他配置需要获得更多内核?



1> Edward Samue..:

根据AWS Lambda 文档和论坛,AWS未说明AWS用于此服务的实例类型.在2014年底,AWS使用了类似计算优化的实例.现在,AWS使用类似通用的实例.

专用于函数的CPU份额基于每个核心分配的内存部分.例如,一个具有~3 GB内存的实例可用于lambda函数,其中每个函数最多可以有1 GB内存,这意味着最多可以使用~1/3*2内核= 2/3的CPU.细节可能会在未来重新审视,但这是我们使用模型的分数性质.

您只能使用与内存成比例的CPU功率.虽然,较低和较高的内存是在同一个实例中,它们将共享比例CPU功率,这是更高的内存将获得更多的CPU功率.如果您读取的总CPU核心数为2,则并不意味着您可以充分利用所有CPU.

目前,没有办法配置CPU.只有你可以调整的总内存.



2> Luc Hendriks..:

你问的是我认为的错误问题(或者想要将Lambda用于不适合的东西).一个Lambda函数只有一个或两个核心可用,但Lambda的功能是你可以同时运行数百个核心.活动Lambda函数的默认限制为100,但这只是保护基础结构(和您的钱包)的限制.你可以要求更多.

因此,您的帐户可以同时运行100个Lambda函数,您可以将其视为100个核心(但事实并非如此).如果您要求增加限额,也可以是1000或10,000或100,000.

打个比方:你有100台1核计算机,而不是1台100芯计算机.


对于某些用例,这可能是一个完全有效的问题–例如,使用并行处理来处理S3存储桶中的文件;)

3> Dunedan..:

虽然AWS直到今天没有透露有关AWS Lambda功能处理能力的任何细节,但他们现在宣布将最大内存从1536 MB增加到3008 MB.他们的文件现在说明:

大于1536MB的函数被分配多个CPU线程,并且需要多线程或多进程代码来利用额外的性能.

基于此,我们可以得出结论,所有AWS Lambda功能高达1536 MB的内存都有一个可用的虚拟处理器内核,而具有更多内存的功能有两个可用的内核.

更新:

虽然文档的这一部分不再可用,但AWS最近在2018-07-10的AWS无服务器启动日的Chris Munns透露,所有具有1.8GB 以上内存的AWS Lambda功能都在多个内核上运行.显然,AWS Lambda功能的单核和多核之间的界限从1.5GB增加到1.8GB.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有