Skip to content

ci(timing): the Python 3.15 leg's p90 passes half its 45-minute cap, and the unsplit project ordering name fires the step check #2571

Closed

Description

@JarryShaw

Problem. Run 41303273918 (73add05a3, 2026-10-25 to 2026-11-01) failed two hard checks; artifact: https://github.com/JarryShaw/PyPCAPKit/actions/runs/41303273918/artifacts/13083455648

  • H1: Python 3.15 p90 23.2 min, 52% of its 45-minute cap; Run unit tests takes 3.54x its paired legs (W3, n=227).
  • H2: Plain unittest ordering (project) step p90 12.7 min, 64% of its 20-minute step cap (W1: median 9.9 to 12.6).
  • H2 is an artifact. ci(ordering): shard the project ordering leg and cache the tier guard's workflow parse (#2254) #2258 split this cell on 2026-10-26T18:14Z, so the unsplit name holds only the 47 samples before it; the halves are separate keys (analyse keys on the API job name, nothing pools) at p90 7.7 and 5.9 min. The 2026-11-02 report spans the split as well (19 pushes, step p90 12.9) and will likely fire H2.
  • H1 is real. 3.15 runs the whole suite under coverage: modules outside the ALL tier are 56% of its test time, and the shared ones run 1.7x slower than on 3.14. It ran 2 xdist workers on 4 CPUs (-n auto counts physical cores once psutil is installed). Daily medians for 2026-10-30 to 2026-11-01 are 22.5 to 24.7 min (n=2-5), against weekly medians of 19.6 and 20.6; it finishes last on 63% of PR runs.
  • Options. H2: (a) wait for the window to clear the split, 2026-11-02T18:14Z; (b) make evaluate skip a key with no sample in the window's last day. H1: (c) -n logical on the CPython unit legs; (d) cache or trim the heaviest modules, as ci(ordering): shard the project ordering leg and cache the tier guard's workflow parse (#2254) #2258 did for the tier guard; (e) add 3.15 to JUNIT_LEGS, so the report names its modules; (f) split the leg (ruleset edit, one more runner); (g) raise the cap.
  • Recommendation. H2: (a), no code. H1: (c) and (d) in one ci PR with before and after Run unit tests minutes, plus (e); refresh the 8.1-minute and 1.8x figures in the test job's matrix comment (conventions/process, "CI Timing Review"). Keep the 45-minute cap: the maximum is 25.4 min. (f) adds a job to a queue whose p90 is 34.9 min on PRs.
Module (seconds) 3.13, report median of 5 3.15, junit-unit-3.15 of run 41283973389
tests.test_tier_guard 60.7 69.7
tests.protocols.test_frame_layer_limit_1610_unit 29.3 72.7
tests.protocols.internet.test_ext_chain_limit_rebuild_1619_unit 23.8 63.2
tests.test_support_helpers 17.7 18.9
tests.project.test_sweeps_on_latest_only_1732 - 150.4

Activity

  1. added
    ciPull requests that change CI or workflow configuration (ci: subject prefix)
    pendingAccepted and unstarted - nobody is on it and nothing blocks it
    on Nov 1, 2026
  2. moved this to Pending in PyPCAPKiton Nov 1, 2026
  3. added
    wipWork in flight - a covering PR is open or an agent is actively on it
    and removed
    pendingAccepted and unstarted - nobody is on it and nothing blocks it
    on Nov 1, 2026
  4. moved this from Pending to WIP in PyPCAPKiton Nov 1, 2026
  5. removed
    wipWork in flight - a covering PR is open or an agent is actively on it
    on Nov 1, 2026
  6. added this to the PyPCAPKit v1.6 milestone on Nov 2, 2026
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

    ciPull requests that change CI or workflow configuration (ci: subject prefix)

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions