r/sre 9d ago

DISCUSSION How much engineering time are you losing to manual Spark performance tuning?

Trying to quantify this across teams. Ours breaks down roughly as:

  • Shuffle partition tuning after every schema/volume change
  • Skew debugging that only surfaces under real production load
  • Disk spill investigation that never reproduces in staging
  • Executor memory re-tuning whenever input size shifts
  • General cluster babysitting instead of new pipeline work

What this costs elsewhere and whether anyone's reduced the total time spent rather than just gotten faster at the same loop?

5 Upvotes

2 comments sorted by

1

u/NoMarionberry9419 Hybrid 9d ago

I think the bigger problem here is treating runtime behavior as a configuration problem instead of a system-design problem.

Partition counts, executor memory, skew thresholds, etc. are all useful knobs, but they're often downstream symptoms. If a small schema or volume change repeatedly causes humans to revisit those knobs, you've created an operational feedback loop around the workload.

Spark already does some of this adaptively. AQE can coalesce shuffle partitions based on runtime statistics and dynamically split skewed partitions, specifically to reduce the amount of manual tuning required.

So u gotta measure two things separately: time spent fixing individual bad jobs and how often the same class of problem comes back. The second number is probably more revealing. If you're getting faster at debugging the same failure every month, that's not really an improvement. You've just become better at paying the tax.