Commit f98cb47
fix: standardize dax benchmark resources to 8 vCPU / 16 GiB (#196)
* fix: standardize dax benchmark resources to 8 vCPU / 16 GiB
Each provider gets 8 vCPUs and 16 GiB RAM for fair comparison:
- E2B: cpuCount=8, memoryMB=16384
- Modal: cpu=4 (4 physical = 8 vCPUs), memoryMiB=16384
- Tensorlake: cpus=8, memoryMb=16384
- isorun: vcpus=8, memMiB=16384
- runloop: customCpuCores=8, customMemoryGb=16
- daytona: resources.cpu=8, resources.memory=16 (GiB)
- upstash: size=large (8 cores, 16 GB)
- vercel: resources.vcpus=8 (no memory control)
- blaxel: memory=16384 (CPU derived: 16384/2048=8 cores)
Providers without CPU/memory control (archil, cloudflare, northflank,
beam, declaw, hopx, codesandbox) use their defaults.
* fix: remove E2B from resource options - CPU/mem set at template build time
E2B's Sandbox.create() accepts SandboxOpts which does not include
cpuCount/memoryMB. Those are template build options only.
* fix: standardize dax resource specs for all providers to 8 vCPU / 16 GiB
- Fix runloop: nest resource params in launch_parameters with snake_case
- Add beam: cpu=8, memory=16384 MiB
- Add codesandbox: vmTier=VMTier.Small (8 CPU / 16 GiB)
- Add northflank: deploymentPlan resolved via API at runtime
- Add E2B template build prereq (base-8cpu-16gb with 8 vCPU / 16 GiB)
- Add Northflank plan discovery prereq script
* feat: local benchmark script with apt/dnf and arch detection
- Add scripts/provider-benchmark.sh: vendored from upstream with dnf
support (RHEL/Fedora) alongside apt-get (Debian/Ubuntu) and aarch64
architecture detection for Node.js and Bun downloads
- Update dax.ts to load script from local filesystem instead of curl,
eliminating curl dependency for providers that don't ship it
* rename: provider-benchmark.sh to dax-benchmark.sh
* feat: add namespace provider to dax benchmark (16 vCPU / 32 GiB)
* dax: standardize declaw resources via node-large template (#197)
Adds declaw to DAX_RESOURCE_OPTIONS so it targets the same 8 vCPU / 16 GiB profile as the other providers in the map. The node-large template provisions 8 vCPU / 16 GiB RAM with an 8 GiB disk overlay.
Co-authored-by: shivam-declaw <272314190+shivam-declaw@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix: bun zip path, northflank API fallback, daytona snapshot, namespace node image
- Fix BUN_INTERNAL_PATH: remove .zip extension from zip-internal path
(was bun-linux-x64-baseline.zip/bun, should be bun-linux-x64-baseline/bun)
- Northflank: robust API response parsing, graceful fallback to nf-compute-50,
sanitize plan ID before writing to GITHUB_ENV
- Daytona: remove from DAX_RESOURCE_OPTIONS (resources not supported with
snapshot-based sandbox creation)
- Namespace: add sandboxOptions image node:22 (dax benchmark requires node)
* fix: northflank smallest plan selection + E2B command timeout workaround
- Northflank: pick smallest suitable plan instead of closest to reduce
chance of exceeding project resource allowance
- E2B: workaround for 60s command timeout by setting
defaultProcessConnectionTimeout=0 via getInstance() while waiting
for upstream wrapper fix to forward timeoutMs
* fix: daytona use image-based creation to enable resource configuration
Add image: 'node:22' to daytona sandboxOptions to switch from
snapshot-based to image-based creation, which allows specifying
resources. Re-add daytona to DAX_RESOURCE_OPTIONS with 8 vCPU / 16 GiB.
* remove: drop cloud-run from dax benchmark (code interpreter model, not full sandbox)
* add: re-add cloud-run to dax benchmark matrix
* fix: bump @computesdk/* to latest versions with timeout forwarding
Update all @computesdk/* packages to versions from changeset PR #652:
- @computesdk/e2b@1.7.52: forwards RunCommandOptions.timeout to E2B commands
- @computesdk/hopx@0.2.27: forwards RunCommandOptions.timeout to hopx commands
- @computesdk/runloop@1.3.54: properly merges launch_parameters
- computesdk@4.1.4: typed SandboxResourceOptions
Remove E2B defaultProcessConnectionTimeout workaround (no longer needed
since @computesdk/e2b now forwards timeout natively). Pass timeout to
sandbox.runCommand() so the native timeout forwarding kicks in for E2B
and hopx.
* fix: correctly size upstash and superserve boxes
Upstash: remove ephemeral: true from sandboxOptions. The ComputeSDK
wrapper's ephemeral path doesn't forward 'size' to EphemeralBox.create(),
so size: 'large' was silently dropped and the box ran on 'small'. Using
a regular Box ensures the resource sizing is applied.
Superserve: add vcpu: 8, memoryMib: 16384 to DAX_RESOURCE_OPTIONS.
Previously had no resource sizing at all - relied on template defaults
which may be undersized. The superserve SDK accepts these as overrides
on sandbox creation.
* fix: use namespace builtin:base image instead of node:22
Omit explicit image from namespace sandboxOptions so the provider
defaults to its builtin:base image, as intended by the namespace team.
* fix: increase E2B sandbox lifespan to 10 minutes
E2B default sandbox lifespan is 5 minutes (300s). The benchmark can
take longer on cold starts or under resource contention, causing the
sandbox to be killed mid-execution. Pass timeout: 600_000 (10 min)
to Sandbox.create() via the timeoutMs option.
* fix: use templateId instead of template for E2B sandbox creation
The E2B ComputeSDK provider destructures 'templateId' from sandbox
options, not 'template'. Passing 'template' caused it to be treated as
an unknown passthrough option, and the sandbox was created from E2B's
default template instead of our custom base-8cpu-16gb template.
---------
Co-authored-by: Shivam Nayak <shivam@declaw.ai>
Co-authored-by: shivam-declaw <272314190+shivam-declaw@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent 86a8666 commit f98cb47
8 files changed
Lines changed: 1033 additions & 176 deletions
File tree
- .github/workflows
- scripts
- src/sandbox
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
| 60 | + | |
60 | 61 | | |
61 | 62 | | |
62 | 63 | | |
| |||
76 | 77 | | |
77 | 78 | | |
78 | 79 | | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
79 | 90 | | |
80 | 91 | | |
81 | 92 | | |
| |||
103 | 114 | | |
104 | 115 | | |
105 | 116 | | |
| 117 | + | |
106 | 118 | | |
107 | 119 | | |
108 | 120 | | |
| |||
0 commit comments