Skip to content

docs: CPU optimization analysis with real-hardware measurements - #14

Closed
facontidavide wants to merge 2 commits into
mainfrom
claude/server-bridge-cpu-optimization-2810qp
Closed

facontidavide wants to merge 2 commits into
mainfrom
claude/server-bridge-cpu-optimization-2810qp

Conversation

@facontidavide

Copy link
Copy Markdown
Contributor

Summary

  • docs/CPU_OPTIMIZATION.md: CPU analysis of the bridge. The original pass was done without ROS2; this adds §2.0 (perf/pidstat on real bags) and §2.9 (outcome of the fix pass in the companion perf/cpu-fixes PR), and corrects two conclusions: on heavy frames zstd dominates (60–65%), not copies; and the executor wait-set rebuild is confirmed as the dominant cost with many small topics.
  • New finding: IXWebSocket re-deflating zstd frames for clients that offer permessage-deflate.
  • Records what was deliberately skipped, with the measurement that justifies it, and what is still open.
  • docs/MESSAGE_TRANSFORMS.md: proposed opt-in transform architecture (unchanged proposal).
  • docs/perf/: standalone micro-benchmarks with reference results from two machines.

Docs and standalone benchmark sources only; nothing is added to the build.

🤖 Generated with Claude Code

claude and others added 2 commits September 19, 2026 10:14
…arks

Analysis-only working notes for a profiling pass on a ROS2 machine. No
production code is touched.

docs/CPU_OPTIMIZATION.md
  Findings across the backend-agnostic core plus a ROS2-specific deep dive.
  Every claim is tagged [measured], [derived] or [inferred]; the entire ROS2
  section is [inferred], since the analysis environment had no ROS2 install.
  Includes a prioritized change list and a perf/pidstat recipe to confirm or
  falsify the ranking before any code is written.

docs/MESSAGE_TRANSFORMS.md
  Proposed opt-in, configurable MessageTransform abstraction for payload
  compression. Anchored on the protocol constraint that a payload encoding is
  advertised per subscription and cannot vary per message. Places the stage
  between the subscription manager and MessageBuffer so the rate gate,
  size-class split, serializer and backpressure policy are all unaffected.

docs/perf/
  Four standalone micro-benchmarks reproducing the [measured] numbers, with
  recorded reference results. Not wired into the build; they replicate code
  shapes rather than linking the real targets, so they need no ROS2 or DDS.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BpdKENjm9t2LddEohoD2Ut
…come

Replaces the [inferred] ROS2 analysis with perf/pidstat measurements on
real bags: wait-set rebuild dominates the many-small-messages regime, zstd
(not copies) dominates heavy frames, and IXWebSocket was re-deflating zstd
frames. Records the before/after of branch perf/cpu-fixes and which items
were skipped as measured-negligible.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants