devloperdevesh / devloperdevesh/FaultPlane

perf(storage): add checkpoint serialization benchmark

Open
#7 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Go
Stars
2
Forks
1
Avg merge
14m
Merged PRs (30d)
57

Description

Problem

FaultPlane stores workflow checkpoints that contain execution state and recovery information.

As the system evolves toward distributed recovery scenarios, we need better visibility into checkpoint serialization performance, memory usage, and payload efficiency.

Currently, there are no benchmarks comparing different serialization approaches.


Proposed Solution

Add a checkpoint serialization benchmark suite.

The implementation should:

  • Create benchmark tests for checkpoint serialization.
  • Measure serialization and deserialization performance.
  • Track memory allocations during serialization.
  • Compare different serialization formats where applicable.
  • Document benchmark results.

Suggested benchmark areas:

  • Serialization latency
  • Deserialization latency
  • Payload size
  • Memory allocations
  • CPU usage

Alternatives

Alternative approaches considered:

  • Adding serialization optimization without benchmarks.

    • Makes performance improvements difficult to validate.
  • Using external benchmarking tools only.

    • Provides less integration with the existing Go test ecosystem.

Go benchmark tooling provides a simple and reproducible performance workflow.


Use Case

Reliable checkpoint serialization is important for:

  • Future distributed recovery
  • State synchronization
  • Storage optimization
  • Large workflow execution scenarios

Benchmark data will help guide future storage architecture decisions.


Additional Notes

Requirements:

  • Keep benchmark code isolated from production runtime logic.
  • Use Go benchmark testing conventions.
  • Document results clearly.
  • Existing storage interfaces should remain unchanged.

Related areas:

  • internal/storage/
  • internal/control/checkpoint.go
  • memory_test.go

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading internal/storage/, internal/control/checkpoint.go, and memory_test.go to understand checkpoint data and existing test conventions. Add isolated Go benchmarks covering serialization, deserialization, payload size, and memory allocations, comparing formats where applicable. Done when results are documented and existing storage interfaces remain unchanged.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
backend, performance
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.