Skip to content

Nested-test CI gaps after #630: x86 L2-over-restored-L1, vsock-integrity runner capacity, remaining re-enables #664

Description

@ejc3

Tracking issue for everything gated or deferred while landing #663 (the #630 zero-flake work). The goal of #663 was green nested tests on the dev box and CI; these are the items that did not make the bar for CI and why.

1. x86: nested KVM (VMX) does not survive an L1 snapshot restore

The five L2 tests (test_nested_l2_fuse, _nfs, _network_fuse, _network_nfs, _with_large_files) and test_nested_run_fcvm_inside_vm are gated to aarch64.

Evidence (run 27323861536):

  • Host-Root-x64-SnapshotDisabled: all five L2 tests pass (61-81s each) — x86 L2 nesting works on the runners.
  • Host-Root-x64-SnapshotEnabled: all five fail with the inner fcvm's L2 PUT /actions timing out after 30s. The only nested test that passed was the one that created the L1 cache (its L1 was paused/resumed in-process; VMX state intact). Every later L1 was restored from cache into a fresh firecracker — and its VMX state is gone, so the L2 can never start.
  • ARM survived this exact class only via the NV2 firecracker fork (counter offset) + the miss→restore convergence ([meta] Stabilize and re-enable ALL flaky / disabled e2e tests #630). x86 has no equivalent.

Fix directions: (a) teach the x86 path that nested-profile L1s are not snapshot-compatible (profile-level no-snapshot), or (b) x86 equivalent of the restore-coherence work. Option (a) is small and honest; a tested --no-snapshot per-arch variant of the test launches exists in the #663 history if useful.

2. test_vsock_integrity_nested exceeds CI runner capacity

Gated with #[ignore]. Passes reliably on a 64-core Graviton3 dev box (592s, 680s — full 2.5GB / 4480-transfer corruption sweep, "No corruption detected") but fails at its 840s in-test budget on the small CI runners (run 27323861536, arm64-SnapshotEnabled, both tries). One L2 chain saturates those instances (load ~2 from a single L1+L2).

Fix directions: larger runner class for the nested matrix, a reduced-transfer CI variant (e.g. 1/4 of the sweep), or keep it as a dev-box/manual gate. Related wall-clock lever: #660 (nested concurrency re-measure post-#630).

3. Still-ignored tests from the original #630 set

4. Open forensic threads

CI policy meanwhile

The nested matrix that gates PRs = the aarch64 L2 set (proven green across four consecutive full-suite rounds on dev hardware and passing on arm64 CI). x86 keeps L1-level nested coverage (test_kvm_available_in_vm).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions