Skip to content

[Campaign] ProcessSystem and ProcessModel performance roadmap #2939

Description

@EvenSol

Purpose

Persistent profiling, benchmark, acceptance, and progress ledger for end-to-end ProcessSystem and multi-area ProcessModel performance. This campaign changes code only for a unique, measured process-layer bottleneck with a meaningful representative-workload benefit.

Current master at roadmap creation: c1cde6a1c47f.

Owned scope

  • ProcessSystem execution preparation, strategy selection, graph/level orchestration, dirty-state traversal, nested modules, and repeated-run overhead;
  • ProcessModel area scheduling, boundary-stream convergence, plan validation, recycle coordination, and diagnostics;
  • process-layer allocation, cloning, serialization, result construction, and disabled logging/telemetry overhead;
  • end-to-end attribution of flash, thermodynamic initialization, and physical-property work performed by process equipment;
  • representative cold, repeated-unchanged, and nearby-state process execution.

Coordination and exclusions

Coordinate rather than duplicate:

  • TP/stability/multiphase solver internals: #2937;
  • column/tray solver internals: #2936;
  • transient execution contracts and reservoir-to-market dynamics: #2911;
  • TwoFluidPipe and conservative pipeline solvers: #2907, #2935, and focused candidate #2850;
  • initialization-level call-site audits: #2698;
  • optimizer algorithms and capacity/sensitivity semantics belong to Production Optimization.

This lane may measure those components inside a complete process, but it must hand an internal solver bottleneck to its owning roadmap unless the fix is strictly process-layer orchestration.

Frozen benchmark matrix

Every candidate must use current unmodified master and retain a minimal deterministic reproducer. Cover the applicable subset of:

  1. Serial state-changing process: rich-gas SRK/classic feed through at least eight sequential heaters/coolers/separation/compression operations.
  2. Wide independent process: multiple independent SRK trains exercising automatic optimized dispatch.
  3. Multi-area process: at least four ProcessSystem areas with shared boundary streams, two or more outer convergence iterations, and both sparse and dense boundary diagnostics.
  4. Recycle process: a deterministic recycle tear with recorded iteration count, convergence residual, mass closure, and repeat behavior.
  5. Associating control: SRK-CPA gas/water or glycol-bearing process so a cubic-only improvement cannot hide CPA regressions.
  6. Orchestration control: stable lightweight units where process-layer CPU/allocation remains observable separately from EOS work.

For each relevant workload exercise:

  • cold first execution;
  • repeated unchanged execution;
  • nearby temperature, pressure, flow, or specification changes;
  • deterministic repeat after convergence;
  • direct concrete execution entry points when dispatcher behavior changes.

Measurement contract

  • fixed JVM and heap; report JVM/OS/GC;
  • warmed deterministic inputs with multiple alternating baseline/candidate fresh-JVM pairs;
  • median and paired-win count; retain raw fork results;
  • main-thread and relevant worker allocation where measurable;
  • JFR/async-profiler or explicit work counters for dominant execution paths;
  • count process iterations, equipment runs, flash calls, thermodynamic init levels, physical-property initialization, plan validations, clone/serialization events, and submitted tasks when applicable;
  • report full-process wall time even when a kernel is faster;
  • no wall-clock assertion in ordinary CI.

Engineering acceptance gates

A production optimization requires all applicable evidence:

  • at least 5% median end-to-end gain on a representative state-changing ProcessSystem or ProcessModel workload, with a majority of paired wins; or at least 15% allocation reduction plus a measured operational GC/throughput benefit;
  • no material regression in thermodynamics-dominated, CPA, genuinely parallel, or nearby-state controls;
  • unchanged public API and serialized compatibility unless separately approved;
  • deterministic repeated results and calculation-ID behavior;
  • unchanged phase topology, convergence/fallback status, iteration acceptance, and diagnostics;
  • total/component mass and energy balances at least as tight as baseline;
  • thread safety, clone independence, and no static/shared mutable cache;
  • focused regression plus proportionate broader process tests;
  • documentation-impact assessment and repository publication gates.

A kernel-only improvement without representative end-to-end benefit is evidence, not authorization for a PR.

Verified merged ledger

#2687 — avoid duplicate run preparation

Merged as 1e35232218b6. Warm optimized-process medians improved 23.7–35.0%, and a four-area lightweight ProcessModel improved 25.6%; thermodynamics-dominated sequential execution showed no reliable change. Nearby-point results were bit-identical.

#2902 — skip redundant nested active-state scan

Merged process-layer scan removal. A 500-stable-unit workload improved 4.54% (6/7 pairs); one-area ProcessModel improvement was noise-level, so no broad model claim was made.

#2904 — avoid dataflow scheduler for serial flowsheets

Merged as 152e9b76badd. A state-changing serial rich-gas chain improved 6.63% (6/7 pairs) with identical checksum, zero mass residual, phase count, and outlet pressure; genuinely parallel and multi-area controls were noise-level.

#2924 — reuse area plan in convergence diagnostics

Merged as 66a866f1e2e8. Direct diagnostics improved 32.5–85.7%; the full 10-area/900-boundary-stream ProcessModel improved 27.9% with identical convergence work and checksum. The thermodynamic control was noise-level.

#2929 — reduce convergence-diagnostic allocation

Merged as 31d0d9009c37. Repeated 900/4,500-stream diagnostics reduced allocation by 13.8–15.8% and runtime by 1.1–14.3%, preserving exact cardinality and checksum.

Coordinated flash evidence

#2930 merged as c1cde6a1c47f and is ledgered in TP-flash roadmap #2937. Its accepted raw-coefficient cache improved the beta-objective kernel 25.6–40.0% while preserving bit-identical derivatives; complete-flash improvement was only 0.47%, so no robust end-to-end claim was made.

#2963 — restore evidence-qualified equipment initialization

Merged as f604a089d2a8 after #2953 changed Compressor, Pump, and Recycle initialization without clearing the roadmap's representative-benefit gate. Exact-source A/B showed the four-stage Pump ProcessSystem 2.48% slower (2/7 wins), the three-stage SRK compressor train 1.05% slower by absolute medians, and only a kernel-level Recycle gain without convergence evidence. #2963 restored the qualified calls and added focused normal/low-flow Pump and Recycle guards. Its exact head bcca19e20368 passed PaperLab, pre-commit, an empty final Spotless patch, CodeQL, Javadocs, the Linux/Windows Java matrix, and all four slow-test shards; no reviews or unresolved threads remained. Public API, serialization, calculation identity, balances, phase behavior, and numerical results were unchanged.

Active increment

No Process Performance implementation PR is active.

Next dependency-ready investigation

Profile current master across the frozen matrix and attribute complete-run work before editing. The first ranked question is whether a process execution performs duplicate equipment runs, flashes, thermodynamic initialization, or initProperties() for the same accepted calculation state during:

  • unchanged repeated execution;
  • one nearby feed/specification change;
  • one multi-area convergence iteration;
  • one recycle convergence iteration.

Instrument counts locally to the benchmark or use JFR; do not add public telemetry merely to profile. Cross-reference every high-level initialization candidate with #2698 and every flash-internal candidate with #2937.

Stop without a PR if the dominant work is required physics, already owned elsewhere, or no unique process-layer change clears the end-to-end acceptance gate. Record the call/work distribution and next ranked hypothesis here.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions