Skip to content

io_uring: export SEND_ZC exposure counters so the race tier and the bench A/B can prove the branch ran #591

Description

@FumingPower3925

Both celeris#585 (SEND_ZC fabric A/B) and celeris#587 (race tier on the ZC send-state) are blocked on the same missing witness: nothing in the engine says whether a SEND_ZC was submitted, whether its NOTIF arrived, or whether the inline-egress guard blocked on zcNotifPending. Without it a clean result cannot be told apart from 'the branch never ran'.

Add, under -tags=validation (the validation counter package, next to IouringSQECorruptions): IouringSendZCSubmits, IouringSendZCSubmitsDetached (keyed on cs.h1State.Detached), IouringSendZCNotifs, IouringInlineGuardBlockedZC, IouringZCCompletionWithPendingWrite; and in EngineMetrics (always on, one atomic add per event, never per request): ZCSendsSubmitted, ZCNotifs, InlineBytes, RingBytes. Publish them through the refapp's /debug/vars (probatorium debugvars) so the property loop can declare an I-ENG-IOURING-ZC predicate only when the branch was exercised. Also add -tags=validation to probatorium's raceCompileGoBinary so the race tier's refapps carry them. Extend send_zc_gate_test.go with the counter.

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

    area/testTesting infrastructureengine/iouringio_uring engine specificsenhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions