プロビジョニングされた同時実行性を使用した初期レイテンシの削減

OCI Functionsでファンクションを呼び出すときに初期遅延を最小限に抑えるためにプロビジョニングされた同時実行性を使用する方法をご覧ください。

ファンクションが初めて起動されると(コールド・スタートと呼ばれる)、OCI Functionsは、必要な実行インフラストラクチャを使用してファンクション呼出しをプロビジョニングします。実行インフラストラクチャには、ファンクションを正常に起動するために必要なコンピュート・リソースとネットワーク・リソースが含まれます。初期プロビジョニング(つまり、最初の起動に対するレスポンス)には、可変時間(場合によっては数秒以上)かかることがあります。初期ファンクション呼出しの実行インフラストラクチャは、同じファンクションの後続の呼出しで使用するために、一定期間(アイドル時間と呼ばれます)保持されます。後続のファンクション呼出しで既存のインフラストラクチャ(ホット・スタートと呼ばれる)を使用できる場合、通常はファンクション呼出しに対するレスポンス時間が1秒未満になります。

ファンクション呼出しに対する一貫性のある1秒未満のレスポンスが必要であることが一般的です。初期プロビジョニングに関連する待機時間を最小限に抑え、ホット・スタートを確実にするために、ファンクションのプロビジョニングされた同時実行性を有効にできます。プロビジョニングされた同時実行性は、OCI Functionsが、少なくとも一定の最小数の同時ファンクション呼出しの実行インフラストラクチャを常に使用できる機能です。プロビジョニングされた並行性は、プロビジョニングされた並行性ユニット(PCU)で測定されます。使用可能なPCUの合計数は、ファンクションのサイズ、テナンシ制限、およびテナンシ内の他の機能に対してプロビジョニングされた同時実行性が有効になっているかどうかによって異なります。

プロビジョニングされた同時実行性を使用するには、機能に必要なPCUの数を指定します。通常は、想定される同時ファンクション呼出しの数と同様の数のPCUを指定します。関数に指定する使用可能なメモリーによって、その関数に指定できる最小のPCU数と、次のようにPCUの数を増やすことができる増分が決まります。

メモリー PCUの最小数: 次の増分でPCUを増やします。
128 MB 40 40 80
256 MB 20 20 60
512 MB 10 10 50
1024 MBの 10 10 40
2048 MBの 10 10 30

このように、PCU値は常に10の倍数である必要があります。使用可能なメモリーが256Mバイトの場合、PCUの値は20の倍数である必要があります。使用可能なメモリーが128Mバイトの場合、PCUの値は40の倍数である必要があります。

ファンクションのPCUは様々な方法で指定できます。

  • Dockerレジストリにすでにプッシュされている既存のDockerイメージに基づいて新しいファンクションを作成する場合は、コンソールを使用します(既存のDockerイメージからのファンクションの作成を参照)。
  • Oracle Cloud Infrastructure CLIを使用して、ファンクションを作成または更新し、オプションの--provisioned-concurrencyオプションを次の形式で指定します。
    --provisioned-concurrency "{\"strategy\": \"<CONSTANT|NONE>\", \"count\": <value>}"

    ここでは:

    • \"strategy\": \"<CONSTANT|NONE>\"は、プロビジョニングされた同時実行性を使用するかどうか(その場合は CONSTANTを指定)、またはプロビジョニングされた同時実行性を使用しないかどうか(その場合はNONEを指定)を示します。
    • \"count\": <value>は、\"strategy\": \"CONSTANT\"の場合の同時ファンクション呼出しの最小数を示します。

    例:

    oci fn function create --application-id ocid1.fnapp.oc1.phx.aaaaaaaaaf______r3ca --display-name helloworld-func --image phx.ocir.io/ansh81vru1zp/helloworld/helloworld-func:0.0.1 --memory-in-mbs 128 --provisioned-concurrency "{\"strategy\": \"CONSTANT\", \"count\": 40}"
    oci fn function update --function-id ocid1.fnfunc.oc1.phx.aaaa____uxoa --provisioned-concurrency "{\"strategy\": \"CONSTANT\", \"count\": 40}"

    --provisioned-concurrencyパラメータは、使用しているプラットフォームに応じて有効なJSON形式である必要があります(CLIの入力および出力の管理を参照)。パラメータは、コマンド行、ファイル、またはコマンド行文字列およびファイルとして文字列として指定できます。

  • APIを使用します(CreateFunctionおよびUpdateFunctionを参照してください)。