Repository navigation
Commit 4eec006
committed
tp: have the executor end every step's run when its stream ends
**Why**
A step let go of what it held only if it remembered to clear itself,
and almost none did. GraphTree, the interval operators and the tree
transforms kept everything they built until the next run. One
`OperatorState` mixed per-call scratch, rows held for the whole input
and the step's status, so nothing said what a step may keep or for how
long.
**Changes**
- `operator.h` states the rules every step keeps to. Each field of a
state declares its lifetime: `Held<T>` or `RunValue<T>` for the run,
`CallScratch<T>` for one call, and anything else is set when the
state is made.
- `Held<T>` and `RunValue<T>` register with their state. The pipeline
ends their run as soon as the step's stream ends, and again before a
source is restarted. `Reset()` and `ResetEachRun` are gone.
- States are made once and reused, because the same pipeline is often
rerun for small queries. Ending a run keeps up to 64 KiB of each
container's storage and releases anything larger.
- The pipeline merges its states' registries by segment, so ending a
run is one pass with no call per state.
- A batch a step outputs never points into its state, so a run can end
while its batches are still read. `GroupedSort` copies its group
numbers into a buffer instead of lending them.
- Each state's fields are grouped by what they do.
**Results**
`INCLUDE` of `heap_graph_dominator_tree` on
`test/data/heap_graph_object_for_benchmarks.pftrace`, release build:
| | Peak RSS | Buffers |
|---|---:|---:|
| #8331 | 305 MB | 57 MB |
| This PR | 270 MB | 53 MB |
Every heap graph table is byte-identical. Rerunning a one-row pipeline
costs about 2-3 ns more per step that holds state. Large runs are
unchanged.
**Testing**
- New `StateTest.AStepsRunEndsWithItsStream`.
- The affected unit test suites pass.1 parent a4314bd commit 4eec006
64 files changed
Lines changed: 934 additions & 450 deletions
File tree
- src/trace_processor/core
- exec
- util
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2688 | 2688 | | |
2689 | 2689 | | |
2690 | 2690 | | |
| 2691 | + | |
2691 | 2692 | | |
2692 | 2693 | | |
2693 | 2694 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
78 | 78 | | |
79 | 79 | | |
80 | 80 | | |
| 81 | + | |
81 | 82 | | |
82 | 83 | | |
83 | 84 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
| 28 | + | |
28 | 29 | | |
29 | 30 | | |
30 | 31 | | |
| |||
90 | 91 | | |
91 | 92 | | |
92 | 93 | | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
93 | 99 | | |
94 | 100 | | |
95 | 101 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
| 27 | + | |
27 | 28 | | |
28 | 29 | | |
29 | 30 | | |
| |||
71 | 72 | | |
72 | 73 | | |
73 | 74 | | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
74 | 81 | | |
75 | 82 | | |
76 | 83 | | |
| |||
96 | 103 | | |
97 | 104 | | |
98 | 105 | | |
| 106 | + | |
| 107 | + | |
99 | 108 | | |
100 | 109 | | |
101 | 110 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
175 | 175 | | |
176 | 176 | | |
177 | 177 | | |
178 | | - | |
179 | | - | |
180 | | - | |
181 | | - | |
182 | 178 | | |
183 | 179 | | |
184 | 180 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
| 32 | + | |
32 | 33 | | |
33 | 34 | | |
34 | 35 | | |
| |||
61 | 62 | | |
62 | 63 | | |
63 | 64 | | |
64 | | - | |
| 65 | + | |
65 | 66 | | |
66 | | - | |
67 | 67 | | |
68 | 68 | | |
69 | | - | |
| 69 | + | |
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
| 47 | + | |
| 48 | + | |
47 | 49 | | |
48 | 50 | | |
49 | 51 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
63 | | - | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | 63 | | |
69 | 64 | | |
70 | 65 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| 25 | + | |
25 | 26 | | |
26 | 27 | | |
27 | 28 | | |
| |||
31 | 32 | | |
32 | 33 | | |
33 | 34 | | |
34 | | - | |
| 35 | + | |
35 | 36 | | |
36 | | - | |
37 | 37 | | |
38 | | - | |
39 | | - | |
40 | 38 | | |
41 | 39 | | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
42 | 44 | | |
43 | 45 | | |
44 | 46 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
73 | | - | |
| 73 | + | |
74 | 74 | | |
75 | 75 | | |
76 | 76 | | |
| |||
0 commit comments