-
Notifications
You must be signed in to change notification settings - Fork 3.9k
kurtosis idempotency / performance #14390
Copy link
Copy link
Closed
Labels
A-kt-devnetArea: kurtosis devnetArea: kurtosis devnetM-needs-triageMeta: this issue needs to be labelledMeta: this issue needs to be labelledT-platformsTeam: PlatformsTeam: Platforms
Description
This is an umbrella issue / high-level plan to get to a better state for kurtosis devnet experience.
-
issue: contracts bundle not reproducible (PR: perf(kt-devnet): use deterministic tarballs of contract code to make fileserver runs idempotent #14365 )
- tweak tarball to be bit-reproducible
- put it in predictable location so kurtosis sees it as identical (kurtosis issue workaround)
-
issue: docker images not reproducible enough
- make sure we disable attestations for dev builds (fix(kt-devnet): make docker images idempotent #14410)
- uniquely identify images (kurtosis doesn't moving tags well) (fix(kt-devnet): use unique container tags #14411)
-
issue: docker images are still slow to (re-)build (fix: reduce context size for docker images #14409)
- make sure we dockerignore everything we can, so that nop-builds are as fast as possible (context transfer is costly)
-
issue: flip/flopping between packages (fileserver / optimism-package) in an enclave ruins idempotency
- avoid re-running fileserver when artifacts are identical (fix(kt-devnet): skip fileserver deployment when possible #14413)
- move contracts bundle into enclave artifact
- wrapper needs to create it (note: from the outside we can’t mutate an artifact, so use “contracts-$HASH”) (feat(kurtosis-devnet): use contracts artifacts #14932)
- teach optimism-package to understand “enclave://contracts-$HASH” (feat(op-deployer): optionally receive contracts from enclave artifact ethpandaops/optimism-package#203)
- add to list of mounts for op-deployer
- leverage op-deployer file locator to point to the mount
-
issue: changes in proofs still churns too much
- integrate nginx server into optimism-package to cache-proxy locator by default (well, at least proxy so the URL is predictable, but a cache would be nice to make the whole system more self-contained)
- make nginx image tunable
- make wrapper build custom nginx, embedding proofs
- reason: most of the “build” time is spent extracting the proofs locally from a docker image, only to put them in another. We can avoid the roundtrip by creating an nginx container pre-populated from the proofs build
- adjust nginx config to serve these proofs on a non-proxied URL
- tie that nginx server to the deployment of op-challenger
-
Issue: embedding the devnet descriptor breaks idempotency (fix(devnet-sdk): allow in-place redeployment #14412)
- purely a bug in the wrapper, re-generating a descriptor in-place fails
Final outcome (hopefully !):
- proper incremental builds, leveraging kurtosis known dependency graph
- docker images are bit-reproducible, so idempotent builds don’t trigger enclave churn
- proofs build is as fast as possible (in the order of seconds, not minutes), and doesn’t trigger enclave churn beyond fileserver redeployment
- only one package run in the devnet enclave, which makes kurtosis’ job tracking changes easier
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
A-kt-devnetArea: kurtosis devnetArea: kurtosis devnetM-needs-triageMeta: this issue needs to be labelledMeta: this issue needs to be labelledT-platformsTeam: PlatformsTeam: Platforms