Skip to content

P2: pipeline executor #75

Description

@tamnd

Spec: perf/03. Needs the P1 types.

Fixes R3 and R7. ensure_flat forces the driving side row-at-a-time (exec.rs:1164,2494-2496). Only [Source,Scan]-headed first stages parallelize, which gets us ~1.8x on 8 cores (exec.rs:3865). Sinks are serial, and each worker reopens the file with cold caches.

  • zu-exec crate: pipeline DAG, push-based PhysOperator (execute/finish per vector)
  • morsel scheduler v2, group-aligned morsels (131072 rows), work stealing
  • parallel sinks: partitioned join build / agg partial / topn / sort
  • one shared Arc across workers, no per-worker reopen
  • skew split when a worker sits > 4ms in a morsel while others idle
  • LIMIT early stop through the pipeline
  • keep old exec.rs around as the differential oracle until parity, then delete it

done when:

  • B4 two-hop SF1 <= 0.4ms (today 1.6-2.8ms)
  • >= 6x scaling at 8 cores, all pipelines parallel
  • alloc counter still 0 (P8)

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

    milestoneMilestone tracking issueperfPerformance and resource budgetsqueryParser, planner, executor

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions