-
Improvement
-
Resolution: Done
-
Major
-
-
Pipeline - October, Pipeline - December
As a pipeline user, I WANNA GO FAST.
Pipelines are highly IO-bound, and unfortunately are triggering multiple writes to a FlowNode (record of step execution) while it is being configured with the initial actions. As-is, every action we attach triggers a persistence cycle and we attach several usually.
We should defer persisting the FlowNode until the initial set-up is done and the step begins executing meaningful work.
Work items:
- Provide FlowNodeStorage with ability to track FlowNodes that haven't been written to disk yet
- Provide FlowNodeStorage with APIs to force a node to be flushed-to-disk
- Provide FlowNodeStorage API to flush everything to disk (for restarts, etc)
- Provide a way to enable auto-persistence of a FlowNode once we have attached initial actions
This will reduce IO use, reduce CPU use in persistence, and reduce memory garbage generated that has to be garbage-collected. An early prototype version of this showed a 50% increase in build throughput (33% reduction in runtime) in one general case under a properly-constructed benchmark.
- blocks
-
JENKINS-47173 Offer a high-performance storage engine for pipeline at some cost to resumability
-
- Closed
-
[JENKINS-47172] Provide more granular control of pipeline flownode persistence
Epic Link | New: JENKINS-47170 [ 185575 ] |
Status | Original: Open [ 1 ] | New: In Progress [ 3 ] |
Summary | Original: Pipeline Saves FlowNodes Multiple Times Redundantly | New: Provide more granular control of pipeline persistence |
Summary | Original: Provide more granular control of pipeline persistence | New: Provide more granular control of pipeline flownode persistence |
Link |
New:
This issue blocks |
Sprint | New: Pipeline - October [ 406 ] |
Description |
Original:
As a pipeline user, I WANNA GO FAST. :) Pipelines are highly IO-bound, and unfortunately are triggering multiple writes to a FlowNode (record of step execution) while it is being configured with the initial actions. As-is, every action we attach triggers a persistence cycle and we attach several usually. We should defer persisting the FlowNode until the initial set-up is done and the step begins executing meaningful work. Work items: * Provide FlowNodeStorage with ability to track FlowNodes that haven't been written to disk yet * Provide FlowNodeStorage with APIs to force a node to be flushed-to-disk * Provide FlowNodeStorage API to flush everything to disk (for restarts, etc) * Provide a way to enable auto-persistence of a FlowNode once we have attached initial actions * Provide a way for Steps to mark that they are going to attach their own actions before running work, so we can wait on that to persist them. Useful for steps that add labels, etc. This will reduce IO use, reduce CPU use in persistence, and reduce memory garbage generated that has to be garbage-collected. An early prototype version of this showed a 50% increase in build throughput (33% reduction in runtime) in one general case under a properly-constructed benchmark. |
New:
As a pipeline user, I WANNA GO FAST. :) Pipelines are highly IO-bound, and unfortunately are triggering multiple writes to a FlowNode (record of step execution) while it is being configured with the initial actions. As-is, every action we attach triggers a persistence cycle and we attach several usually. We should defer persisting the FlowNode until the initial set-up is done and the step begins executing meaningful work. Work items: * Provide FlowNodeStorage with ability to track FlowNodes that haven't been written to disk yet * Provide FlowNodeStorage with APIs to force a node to be flushed-to-disk * Provide FlowNodeStorage API to flush everything to disk (for restarts, etc) * Provide a way to enable auto-persistence of a FlowNode once we have attached initial actions This will reduce IO use, reduce CPU use in persistence, and reduce memory garbage generated that has to be garbage-collected. An early prototype version of this showed a 50% increase in build throughput (33% reduction in runtime) in one general case under a properly-constructed benchmark. |
Sprint | Original: Pipeline - October [ 406 ] | New: Pipeline - October, Pipeline - December [ 406, 446 ] |
Resolution | New: Fixed [ 1 ] | |
Status | Original: In Progress [ 3 ] | New: Closed [ 6 ] |
Resolution | Original: Fixed [ 1 ] | |
Status | Original: Closed [ 6 ] | New: Reopened [ 4 ] |