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
- pulseguard/parser.py reads QNX traceprinter output and cycle frequency.
- pulseguard/analysis.py reconstructs QNX THREADY/THRUNNING/THMUTEX transitions.
- QNX tracing codelab documents tracelogger on QNX OS 8.0, traceprinter decoding, and Linux-hosted analysis.
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.
