andygrove commented on PR #2657:
URL: 
https://github.com/apache/datafusion-ballista/pull/2657#issuecomment-6443057416

   ## SF1000 results after stacking on #2670 (5b57a9e89)
   
   This run is on the current head, which includes #2670's review fixes:
   - A remote pipelined stream now keeps its pooled connection leased while it 
is read.
   - Restricting a broadcast reader to some partitions keeps every location.
   - A consumer that times out leaves no waiting slot in the registry.
   - The pipelined timeout and queue-capacity settings are clamped to at least 
1.
   - The writer and registry were simplified.
   
   Setup is the same as before: 2 executors x 8 vCPU, 48 GB pool, 1 TB spill 
cap, 16 partitions, local data, one iteration.
   
   All 22 queries pass in **2475s**. That is 1.01x the previous pipelined run 
(2450s) and **0.73x** blocking mode (3374s).
   
   | Query | Blocking (s) | Pipelined, 34a1151a (s) | Pipelined, 5b57a9e8 (s) | 
vs previous | vs blocking |
   |---|---:|---:|---:|---:|---:|
   | 1 | 27.2 | 26.6 | 29.1 | 1.10x | 1.07x |
   | 2 | 51.2 | 26.3 | 24.9 | 0.95x | 0.49x |
   | 3 | 137.4 | 120.3 | 119.0 | 0.99x | 0.87x |
   | 4 | 51.4 | 16.4 | 16.5 | 1.01x | 0.32x |
   | 5 | 430.0 | 284.4 | 316.9 | 1.11x | 0.74x |
   | 6 | 12.6 | 9.2 | 9.1 | 0.99x | 0.72x |
   | 7 | 374.4 | 248.4 | 288.3 | 1.16x | 0.77x |
   | 8 | 45.0 | 151.4 | 138.3 | 0.91x | 3.08x |
   | 9 | 199.6 | 246.5 | 272.8 | 1.11x | 1.37x |
   | 10 | 136.6 | 94.5 | 103.9 | 1.10x | 0.76x |
   | 11 | 55.5 | 23.5 | 24.3 | 1.03x | 0.44x |
   | 12 | 73.4 | 49.1 | 42.7 | 0.87x | 0.58x |
   | 13 | 69.9 | 41.5 | 40.1 | 0.97x | 0.57x |
   | 14 | 19.0 | 14.9 | 14.3 | 0.96x | 0.75x |
   | 15 | 43.0 | 26.1 | 25.8 | 0.99x | 0.60x |
   | 16 | 23.8 | 10.0 | 10.9 | 1.09x | 0.46x |
   | 17 | 225.9 | 157.4 | 160.2 | 1.02x | 0.71x |
   | 18 | 459.7 | 360.7 | 340.4 | 0.94x | 0.74x |
   | 19 | 26.2 | 22.1 | 22.1 | 1.00x | 0.85x |
   | 20 | 63.8 | 49.3 | 52.2 | 1.06x | 0.82x |
   | 21 | 817.1 | 423.2 | 401.2 | 0.95x | 0.49x |
   | 22 | 31.6 | 48.1 | 22.1 | 0.46x | 0.70x |
   | **Total** | **3374** | **2450** | **2475** | **1.01x** | **0.73x** |
   
   Notes:
   
   - The totals are within noise. Q5, Q7, Q9 and Q10 were 10–16% slower than 
the previous run, and Q8, Q12, Q18 and Q21 were faster. With one iteration 
each, I can't separate noise from the effect of leasing a pooled connection to 
each remote stream. Repeated runs of the join-heavy queries would settle it.
   - Q22 is back to 22s, which confirms that the 48s in the previous run was 
noise.
   - Q8 is still the one large regression against blocking mode, for the reason 
described above (the static size estimate of the filtered `part` side).
   
   One gap showed up while running this. If a client process is killed 
outright, as opposed to dropping its result stream, its pipelined job keeps 
running on the scheduler and holds its vcores until it is cancelled through 
`PATCH /api/job/{job_id}`. Cancel-on-drop only works while the client process 
is alive, and the scheduler doesn't notice a client that has gone away. 
Blocking jobs behave the same way, but a pipelined job's reservation blocks 
every other pipelined job, so it matters more here. Possible fixes are a lease 
or heartbeat from the client, or cancelling when the result fetch connections 
all close.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to