一句话:通过追踪工作集页面并做快照式恢复,大幅缩短 SGX 机密无服务器的冷启动时间并降低 enclave 内存占用。
无服务器计算对数据安全的需求推动了 Intel SGX 等可信执行环境(TEE)的引入,但 SGX 在无服务器场景中面临冷启动延迟高、Enclave Page Cache(EPC)消耗过大的问题。本文分析了 SGX 在无服务器工作负载下的关键挑战,提出 WorksetEnclave 这一优化方法。它采用基于快照(snapshot)的策略,通过在执行过程中追踪实际使用的工作集页面,减小 enclave 内存足迹,并在安全检查点与恢复时显著加速 enclave 的恢复过程,从而同时优化启动时间与 enclave 内存使用。作者分别在两种 LibOS(Gramine 与 Occlum)上实现了独立原型并进行评估。实验表明,WorksetEnclave 将冷启动时间加速 1.9–54 倍,并将 enclave 内存消耗降低 13.37%–94.87%,证明其能显著提升机密无服务器的性能。
Serverless computing has become a popular cloud computing paradigm. However, the increasing demand for data security in serverless applications necessitates the use of Trusted Execution Environments (TEEs) such as Intel Software Guard Extensions (SGX). Despite the promise of SGX for secure computation, its adoption in serverless environments is hindered by high startup latencies and excessive Enclave Page Cache (EPC) consumption, particularly during cold starts. This paper identifies the key challenges of SGX in serverless workloads and proposes WorksetEnclave, an efficient optimization method designed to address these issues. WorksetEnclave leverages a snapshot-based approach to optimize both startup time and enclave memory usage. By tracking workset pages used during execution, WorksetEnclave minimizes enclave memory footprints and significantly accelerates enclave restore time during secure checkpointing and recovery. We have implemented two separate prototypes, each based on a different LibOS: Gramine and Occlum. Our evaluation shows that WorksetEnclave accelerates cold start times by 1.9--54× and reduces enclave memory consumption by 13.37--94.87%. Our findings demonstrate that WorksetEnclave significantly improves the performance of confidential serverless.
@inproceedings{YanZWQYZJ26,
title = {WorksetEnclave: Towards Optimizing Cold Starts in Confidential Serverless with Workset-Based Enclave Restore},
author = {Xiaolong Yan and Qihang Zhou and Zisen Wan and Feifan Qian and Wentao Yao and Weijuan Zhang and Xiaoqi Jia},
booktitle = {ASPLOS},
year = {2026},
doi = {10.1145/3779212.3790249}
}