メインコンテンツへスキップ
サポート・ナレッジベース

大きなサイズのインテル® Software Guard Extensions (インテル® SGX) エンクレーブの初期化が遅い

コンテンツタイプ: メンテナンス & パフォーマンス   |   記事 ID: 000089477   |   最終改訂日: 2022/02/14

詳細

  • 数メガバイトの HeapInitSize でエンクレーブを初期化すると、1 秒未満で済みます。
  • 大きな HeapInitSize (例: 1 GB) でエンクレーブを初期化するには数秒かかります。

解決方法

原因:
エンクレーブ・山のために大量のメモリーを初期化するには時間がかかることが予想されます。エンクレーブのエンクレーブ・ページ・キャッシュ (EPC) の初期化とメモリーの追加は、通常のアプリケーションの単純なメモリー割り当てよりもはるかに複雑です。メモリーのチャンクを EPC に追加する前に、256 ビット SHA-2 セキュア・ハッシュ関数を使用して測定するなど、複数のセキュリティー・チェックを実行する必要があります。

説明した SGX のセクション 5.1、5.3、5.6、およびエンクレーブのライフサイクルにおける EADD および EEXTEND の手順インテル SGX参照してください

緩和:
プロセッサーが インテル® Software Guard Extensions (インテル® SGX) SGX2 をサポートしている場合、Enclave Configuration File で:

  • HeapMaxSize をエンクレーブが必要とする最大容量のメモリーに設定する
  • HeapInitSize を最小限に設定します。

HeapInitSize は、エンクレーブの起動時に完全に初期化する量です (つまり、 EADD ページを EEXTEND します)。最小の初期化サイズでは、より高速になり、ランタイム中にエンクレーブによって、プロトロックを介して割り当てられると、SGX2 命令を使用してメモリーの残りの部分のみが追加されます。

関連製品

本記事は、1 製品に適用します。

免責条項

このページのコンテンツは、元の英語のコンテンツを人力翻訳および機械翻訳したものが混在しています。このコンテンツはお客様の便宜と一般的な情報のみを目的として提供されており、情報の正確さと完全性を保証するものではありません。このページの英語版と翻訳の間に矛盾がある場合は、英語版に準拠します。 このページの英語版をご覧ください。