Vivek1106-04 commented on PR #12418:
URL: https://github.com/apache/seatunnel/pull/12418#issuecomment-5807752698

   The fixture is pushed (`afd311519`, `be57ed0ae`) and the PR description is 
rewritten to match it.
   
   **@SEZ9**
   
   1. The note is at the timed spin loop in 
`CheckpointSchedulingFixture#awaitTrigger`: why `expected` is a few 
microseconds early, that the offset is identical on every scheduler compared, 
and not to move the start later.
   2. The limit is 10% of due triggers per iteration. Skips are printed every 
iteration, pass or fail, split by cause. Running it made me split one level 
further than you asked, because the causes turned out to mean different things:
   
      ```
      # measured 100 of 101 due triggers; skipped 0 with a checkpoint already 
pending before the due time,
      #   0 that came due while another trigger was being measured, 1 where 
parking overran the due time,
      #   0 that ran before their estimated due time
      ```
   
      "Setup overran" is now three counters: came due during another sample, 
parking overshot, and ran before the estimate (which would mean the phase 
estimate is wrong).
   
   **@nzw921rx** The boundaries are the ones in my last comment: the untimed 
`@Setup(Level.Invocation)` ends at the due time, and the timed `@Benchmark` 
ends when `pendingCounter` goes from 0 to 1. For CV I went with (a): 
`save_jmh_result.py` now reads `rawDataHistogram`. Its new test failed before 
the fix. On the local sweep it now reports CV from 3.4% to 17%, plus 81% for 
`dev` at 500 pipelines, where the macOS distribution splits between two timer 
behaviours. Before the fix it reported 0% for every point.
   
   **@DanielLeens** Both reflected fields and both faked task messages have a 
comment at their read site. A missing field fails at setup with the class and 
field named, which `shouldNameTheEngineFieldWhenItNoLongerExists` covers.
   
   **Three things the runs changed, compared with what I described earlier:**
   
   - **Only a fixed subset of coordinators is measured.** Measuring every 
coordinator, a run on #12165 at 10 pipelines skipped 62 of 250 due triggers, 
all as "came due while another trigger was being measured". Phases drift as 
delays vary, so due times bunch up. Dropping the second of two 
near-simultaneous triggers biases the result towards short delays exactly under 
contention, which is the case this benchmark exists for. So probes are now 
every k-th coordinator, started at least 100 ms apart, and the rest are load. 
Probe triggers still collide with the load, and which coordinators are probes 
is fixed by index, so the samples carry no selection. After the change, that 
same run skipped 2 of 305.
   - **IMap persistence is off.** I first reused the storage benchmarks' 
member. Its write-through MapStore puts a file write on a partition thread for 
every engine IMap update, and a thread dump showed checkpoint id allocation 
blocked there for over 600 ms. The fixture keeps that member's isolated 
checkpoint storage but disables the MapStore.
   - **The interval is `pipelineNum * 20 ms`, floored at 200 ms, not a flat 10 
s.** Every point of the sweep then sees the same trigger rate and storage load. 
500 pipelines is still 10 s, and the floor keeps 1 pipeline from sending 
triggers down the 500 ms pending re-arm path.
   
   Local sweep, `dev` against #12165 at `c773cc091`, the same benchmark code on 
both, full table in the description: all four pipeline counts pass on both, 
with at most 2 skips per point, and scheduler threads at 500 pipelines are 995 
against 10. I have left the delay numbers out on purpose: on macOS every timed 
wait fires about 5 ms late, so the local distribution sits on that floor. The 
delay comparison needs the Linux runners.
   
   @nzw921rx @DanielLeens @SEZ9 ready for the final pass.
   


-- 
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]

Reply via email to