Code initialization -- the step of loading code, executing static code, filling caches, and forming re-used connections -- tends to dominate cold-start time in serverless compute systems such as AWS Lambda. Post-initialization memory snapshots, cloned and restored on start, have emerged as a viable solution to this problem, with incremental snapshot and fast restore support in VMMs like Firecracker. Saving memory introduces the challenge of managing high-value memory contents, such as cryptographic secrets. Cloning introduces the challenge of restoring the uniqueness of the VMs, to allow them to do unique things like generate UUIDs, secrets, and nonces. This paper examines solutions to these problems in the every microsecond counts context of serverless cold-start, and discusses the state-of-the-art of available solutions. We present two new interfaces aimed at solving this problem -- MADV\_WIPEONSUSPEND and SysGenId -- and compare them to alternative solutions.
翻译:代码初始化 -- -- 装入代码、执行静态代码、填充缓存和形成再使用连接的步骤 -- -- 往往在AWS Lambda等没有服务器的计算系统中主宰冷启动时间。 初始化后的记忆抓图、 克隆和在启动时恢复, 已成为解决这一问题的可行办法, 在Firecracker等VMMs中逐渐快速快速地快速恢复支持。 保存记忆引入了管理高价值内存内容的挑战, 如加密机密。 克隆引入了恢复 VMs的独特性的挑战, 以便让它们能够做一些独特的事情, 如生成 UID、 秘密和非 UID 。 本文审视了在服务器无冷启动的每秒范围内解决这些问题的解决方案, 并讨论了可用解决方案的最新状态。 我们介绍了两个旨在解决这一问题的新界面 -- -- MADV ⁇ WIPEONSPEND 和 SISGenID -- -- 并将它们与替代解决方案进行比较。