ateom doesn't hear anything until all of atelet's prep is done, so sentry startup is serialized after the image pull (cold start) or the checkpoint download (restore).
- Restore: download and bundle prep run concurrently, but g.Wait() gates the
RestoreWorkload RPC on both.
- Cold start:
prepareOCIBundles completes before RunWorkload is sent
Nothing about the sandbox itself depends on the actor image or the checkpoint. The sandbox could be booting while those are still downloading.
Proposal
Split sandbox creation out of RunWorkload / RestoreWorkload into its own RPC that atelet can send as soon as the sandbox-level config is ready, then have the existing RPC start the containers.
It helps cold start and DATA-scope restore. Does not help FULL / DATA_ON_GOLDEN restore, where the sentry comes from the memory image.
ateom doesn't hear anything until all of atelet's prep is done, so sentry startup is serialized after the image pull (cold start) or the checkpoint download (restore).
RestoreWorkloadRPC on both.prepareOCIBundlescompletes beforeRunWorkloadis sentNothing about the sandbox itself depends on the actor image or the checkpoint. The sandbox could be booting while those are still downloading.
Proposal
Split sandbox creation out of
RunWorkload/RestoreWorkloadinto its own RPC that atelet can send as soon as the sandbox-level config is ready, then have the existing RPC start the containers.It helps cold start and DATA-scope restore. Does not help FULL / DATA_ON_GOLDEN restore, where the sentry comes from the memory image.