Redian新闻
>
AWS Lambda 中的 Rust:冷启动速度提升三倍、内存需求降低至 25%

AWS Lambda 中的 Rust:冷启动速度提升三倍、内存需求降低至 25%

公众号新闻

作者 | Tim Anderson
译者 | 赵晓磊
策划 | Tina

最近 AWS Re:Invent 大会的一场演讲表明,Rust 和 Severless 简直是绝配——在成本方面,Rust 的优势可能比 Python 高出好几倍。

Lambda 函数和巨大的运行时环境是一对糟糕的组合(注:这里指 JAVA 和 Python 这类编程语言,相比 Rust 对运行时环境有更高的要求)——因为比起原生代码,它不仅冷启动速度更慢,对内存的需求也会更高。但另一方面,许多开发者在使用 Java 和 Python 时会比使用 Rust 这种系统语言时的开发效率更高。

在 re:Invent 大会演讲中,来自以色列特拉维夫的云咨询公司 CloudEX 的工程师主管 Efi Merdler-Kravitz 解释道:你并不需要用 Rust 对 Python Lambda 函数进行彻底的重构。他举了一个例子:一个使用 python 编写的,列出 S3 的存储桶的 Lambda 函数。事实证明,AWS 的 Python SDK Boto3 模块十分臃肿,仅需要使用 Rust 替换掉原本依赖的 Boto3 函数,即使其它代码依然使用 Python,也能在成本和性能方面获得巨大提升。

使用 Rust 替换 Python 代码的关键是 PyO3,它提供了将 Rust 的代码嵌入到 Python 中的能力。Rust 代码中的属性(Attributes)将暴露为像是标准的 Python 接口一样的函数。

在 Merdler-Kravitz 展示的例子中,使用 Rust 替换一部分 Python 代码的结果是,冷启动速度提升了三倍,同时内存需求也大大降低。使用 1GB 内存时,Rust 和 Boto3 具有相似的性能表现,但当内存降至 256MB 时,使用 Rust 优化的版本仍然表现良好,而纯 Python 版本则无法实现同样的效果。(注:在演讲中,Merdler-Kravitz 还强调了 Rust 在 256MB 内存下的性能表现,与 Python 在 1GB 内存下的性能表现基本相同,这意味着通过 Rust 进行优化后,内存需求可以降低到之前的 1/4。)

Lambda 中使用 Rust 的成本收益:re:Invent 中的一个展示案例 

减少所需的计算资源意味着成本更低,尤其是在 serverless 平台上(注:AWS Lambda 根据请求数量,执行代码的持续时间以及你为函数分配的内存量来计费)。Merdler-Kravitz 声称:“Rust 比 Python 平均便宜 2/3 到 3/4。”

在 re:Invent 期间,AWS 宣布其 Rust SDK 现已准备好投入生产环境使用。早在去年 11 月,这家云巨头就将基于“最小容器镜像(minimal container image)”的 Amazon Linux 2023 支持添加到了 Lambda 中。它表示,该支持的一个关键应用场景是“当使用需要原生编译的语言时,例如 Go 或 Rust。”

此外,还有一个为 AWS Lambda 提供的实验性的 Rust 运行时环境,可以简化使用 Rust 开发 Lambda 函数的操作,并包含了支持 Lambda 事件、Lambda 扩展和 Lambda 运行时 API 的 crates。有一个名为 Cargo Lambda 的项目与此相关,该项目支持在本地使用 Lambda 模拟器进行开发和测试,以及在 Windows 或 macOS 上开发时,将代码编译构建为 Linux 的可执行文件,无论开发者自己的 PC 是使用的 ARM64 还是 x86-64 都可以完成相应的编译构建。使用 Rust 构建 Lambda 函数的官方文档可在 此处 查阅。

实验性代码不适用于生产环境,因此 Rust 在 Lambda 方面的应用还处于早期阶段,但看起来潜在收益或许相当可观。

(注:Merdler-Kravitz 在演讲中总共介绍了 3 种使用场景,除了本文中介绍的利用将 Rust 代码嵌入到 Python 中的方式对现有代码中性能表现较差的部分进行重构和使用 AWS Lambda 提供的 Rust runntime client 在本地从零开始创建一个 Rust 项目的两个场景外,还介绍了使用 Rust 编写 Lambda 扩展的场景,通过扩展的方式将与业务核心逻辑无关但又必要的部分,如监控指标和日志上报等功能抽离出来,与业务核心逻辑进行异步处理,实现降低响应延迟的效果。并对三种场景下,Rust 版本和原版本的成本和性能都做了详尽的对比,得出了如下结论:场景一的方案适用于已经运行的程序中存在明显性能瓶颈,全部重构又有较大的风险和成本,这时寻找到其中运行较慢的小段代码并使用 Rust 进行重构在成本和性能方面都会带来明显受益;场景二依然在实验阶段,虽然可以在性能和成本方面带来极大受益,但当前还不推荐直接用于生产环境;场景三在成本方面不会有明显收益,在热启动时可以优化响应的延迟,但在冷启动时延迟会比不使用扩展时更高。)

原文链接

Rust in AWS Lambda: a magic ingredient to reduce cost and increase performance?(https://devclass.com/2023/12/21/rust-in-aws-lambda-a-magic-ingredient-to-reduce-cost-and-increase-performance/)

声明:本文为 InfoQ 翻译,未经许可禁止转载。

今日好文推荐

谷歌新年大裁员,引硅谷裁员潮!OpenAI正式推出GPT Store,但第一批应用已被像素级抄袭;腾讯服务器深夜崩溃 | Q资讯

纯向量数据库和向量插件都有局限,那未来发展有其他方向吗?

系统 bug 致百人入狱,砸了 2.8 亿元仍上云失败!二十年了,这家大企业被日本软件坑惨了

钉钉抢做“中国版 GPT Store”

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
龙行龘(dá)龘(dá)!这些三叠字怎么念?dá àn jiē xiǎo 🥳实时文生图速度提升5-10倍,清华LCM/LCM-LoRA爆火,浏览超百万、下载超20万微软组建新团队,帮助用Rust重写核心Windows库Ruffle 2023回顾——Rust实现的开源Flash Player模拟器2024 新版 Win11 要来了!16GB 内存需求引热议Rufus 4.4发布,开源USB启动盘制作工具龙行龘(dá)龘(dá)!2024央视春晚宣布→联手 OpenAI 最强竞对展开生成式 AI 反击战:亚马逊云科技将 S3 写入速度提升 10 倍、推出全新三层技术栈微信小游戏在PC上有多猛?时长是手游3.9倍、ARPU 2倍、付费率2.4倍Python + Docker 还是 Rust + WebAssembly?这并不难选向微软“复仇”!支持OpenAI、Copilot 的Zed编辑器要干掉VS Code:Rust+少插件,速度贼快随记计算需求降为1%! 清华大学首次提出「二值化光谱重建算法」,代码全开源|NeurIPS 2023冷启动越来越难,新品牌如何才能闪亮登场?世界排名再提升三位!视觉Mamba来了:速度提升2.8倍,内存能省87%快餐式的情欲LLM生成延迟降低50%!DeepSpeed团队发布FastGen:动态SplitFuse技术,提升2.3倍有效吞吐量Hyena成下一代Transformer?StripedHyena-7B开源:最高128k输入,训练速度提升50%突发!澳洲街头不断有人流血倒下,持刀男子在澳CBD、内城区疯狂作案,3小时4人被当街捅伤!身在海外,要注意这些...6049 血壮山河 卢沟桥之变 18Linus Torvalds:Linux 内核中的 Rust、AI 和疲劳的维护者 | Linux 中国台湾“蓝白”合谈成了,开创台湾新纪元!网络规模、训练学习速度提升,清华团队在大规模光电智能计算方向取得进展《吉林省留守儿童和困境儿童关爱服务质量提升三年行动实施方案》秋招趋势 | 难度提升!今年真的拿不到OFFER了吗?!龙行龘(dá)龘(dá)!咀外文嚼汉字(293)药草; 香草;“巴吉尔”,“罗勒”深夜突发!持刀男子在墨尔本CBD、内城区疯狂作案!3小时4人被当街捅伤,1人重伤!身在海外,要注意这些...今日arXiv最热NLP大模型论文:伯克利&DeepMind联合研究,RaLMSpec让检索增强LLM速度提升2-7倍!今日Arxiv最热NLP大模型论文:清华大学让大语言模型自动并行自回归解码,速度提升高达4倍!首创pix2emb范式!NUS清华联合发布NExT-Chat:对话/检测/分割全能多模态大模型中原信托内部晋升三位高管爆火!清华提出LCM火了!让实时文字生成图像速度提升5-10倍,浏览超百万!
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。