初始化具有大堆放大小的 英特尔® Software Guard Extensions (英特尔® SGX) 围圈速度很慢
内容类型: 维护与性能 | 文章 ID: 000089477 | 上次审核日期: 2022 年 02 月 14 日
原因:
预计对于围圈堆的大量内存初始化需要很长时间。对于飞地,将内存初始化并添加到围圈的围圈页面高速缓存 (EPC) 中比在常规应用中简单的内存分配要复杂得多。在向 EPC 添加一个内存区块之前,它必须进行多个安全检查,包括使用 256 位 SHA-2 安全哈希功能进行测量。
请参阅 SGX 说明中的第 5.1、5.3、5.6 节,以及 英特尔 SGX 围圈生命周期中的 EADD 和 EEXTEND 说明。
缓解:
如果处理器在围圈配置文件中支持 英特尔® Software Guard Extensions (英特尔® SGX) SGX2:
HeapInitSize 是围圈启动时完全初始化(即 EADD 页面,然后是 EEXTEND 它)的量,这需要时间。初始化程度极小,速度更快,其余的内存仅在通过 malloc 分配时,在运行期间被围圈利用 SGX2 指令进行添加。