Inspiration

Real-time software runs in vehicles, industrial systems, and medical technology, yet investigating thread scheduling delays can mean manually reading thousands of kernel events. We built PulseGuard RT to make QNX scheduling evidence easier to understand without sending sensitive traces to a cloud service.

What it does

PulseGuard RT is an open-source, zero-dependency host tool for QNX SDP 8.0 developers. It converts the textual output of QNX traceprinter into an interactive offline report. It pairs THREADY and THRUNNING events by process/thread ID, measures observed dispatch latency in microseconds, reports p50/p95/p99 and outliers, and identifies THMUTEX-to-THREADY intervals as possible contention signals. Engineers can change a screening threshold, inspect CPU scheduling lanes, filter threads, see exact source-line references, export JSON, and compare p95 results across runs in CI.

How we built it

Python 3.10+ standard library powers the parser, state-transition analyzer, and CLI. Self-contained HTML/CSS/JavaScript renders the dashboard without external dependencies. The parser understands QNX-specific traceprinter fields including TRACE_CYCLES_PER_SEC and kernel THREAD event types. Nine automated tests cover time conversion, scheduling event matching, incomplete traces, CLI workflows, and report generation. GitHub Actions runs tests on multiple Python versions.

Challenges

A dispatch delay is not proof of an application deadline miss, and a mutex wait alone does not prove priority inversion. We deliberately avoid these unsupported claims, exclude incomplete observations, and display capture warnings. The provided demo trace is synthetic and clearly labeled; no actual QNX target capture is claimed.

Accomplishments

  • Working Linux/macOS/Windows host analyzer with no runtime Python dependencies
  • Offline interactive dashboard, JSON export, and configurable thresholds
  • QNX thread-dispatch and mutex-wait diagnostics grounded in documented traceprinter syntax
  • Automated p95 regression comparison and reproducible tests
  • Guided codelab for QNX 8.0 target or QEMU tracing

What we learned

Reliable tooling needs to communicate both what data shows and what it cannot establish. Source-line provenance, incomplete-state handling, and explicit limitations make performance diagnostics more trustworthy.

What's next

Validate against traceprinter exports from a live QNX OS 8.0 target, expand message-passing and priority correlation, and support larger streaming traces.

QNX 8.0 integration evidence

Reproduce the demo: Clone the repository, run python3 -m pulseguard demo --output-dir demo-output, and open demo-output/report.html. Tests: python3 -m unittest discover -s tests -v.

This is a host-based QNX 8.0 developer tool, not a safety-certified application. Synthetic examples are not measurements from real hardware.

Built With

Share this project:

Updates

Submission history