跳转至主要内容
支持知识库

初始化具有大堆放大小的 英特尔® Software Guard Extensions (英特尔® SGX) 围圈速度很慢

内容类型: 维护与性能   |   文章 ID: 000089477   |   上次审核日期: 2022 年 02 月 14 日

说明

  • HeapInitSize 初始化几个兆字节的围圈只需要不到一秒钟的时间。
  • 例如,使用大型 HeapInitSize 对围圈进行初始化需要几秒钟。

解决方法

原因:
预计对于围圈堆的大量内存初始化需要很长时间。对于飞地,将内存初始化并添加到围圈的围圈页面高速缓存 (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 指令进行添加。

相关产品

本文适用于 1 产品。

免责声明

本页面上的内容是原始英文内容的人工翻译与计算机翻译的组合。我们提供此内容是为了您的便利并且仅供参考,未必完整或准确。如果本页面的英文版与翻译版之间存在任何冲突,应以英文版为准。 查看此页面的英语版本。