Skip to content

feat(telemetry): real-time heap and ingestion streaming telemetry and system environment collection (#29) - #31

Merged
remiceres merged 5 commits into
mainfrom
feature/backend-streaming-telemetry
Oct 30, 2026
Merged

remiceres merged 5 commits into
mainfrom
feature/backend-streaming-telemetry

Conversation

@remiceres

Copy link
Copy Markdown
Contributor

Closes #29.

Summary

Implements fine-grained real-time streaming telemetry during RDF graph loading and automatic collection of 15 system/hardware environment metrics to populate the benchmark JSON report schema expected by the frontend dashboard (spec-frontend-dashboard.md).

Technical Scope & Changes

  • IngestionTelemetrySampler: Lightweight background daemon using ScheduledExecutorService sampling heap usage (Runtime.getRuntime()) and elapsed time every 100 ms with negligible overhead (< 0.1%), interpolating batch counts upon completion.
  • SystemEnvironmentCollector: Comprehensive hardware and JVM environment collector interrogating OperatingSystemMXBean, RuntimeMXBean, GarbageCollectorMXBean, and /proc to collect CPU model, physical/logical cores, total RAM, JVM args, and active GC.
  • TelemetryPoint: Immutable record representing timestamped samples (elapsedMs, triplesLoaded, heapUsedMb).
  • BenchmarkHarness & BenchmarkReport: Integrated sampling in loadAndMeasure, added timeSeries to FileResult, populated metadata.environment and alias loadingRuns in JSON output.
  • Clean Code & SonarLint: 0 issues across all files (extracted RepetitionBuffers, eliminated literal duplication, proper thread interruption handling).
  • Unit Tests: Added IngestionTelemetrySamplerTest and SystemEnvironmentCollectorTest (100% passing).

… system environment collector (#29)

- Add IngestionTelemetrySampler with background thread heap and elapsed time sampling
- Add SystemEnvironmentCollector gathering 15 hardware and JVM environment metrics
- Add TelemetryPoint record for time series data points
- Update FileResult and BenchmarkReport to export loading timeSeries and metadata.environment
- Add unit tests for IngestionTelemetrySampler and SystemEnvironmentCollector
- Comply with SonarLint clean code standards (0 issues)
…ign schema v2 (#29)

- Enclose loadWithTimeout in try-finally in BenchmarkHarness to prevent telemetry thread leaks
- Eliminate fabricated linear interpolation in IngestionTelemetrySampler for unmeasured intermediate counts
- Sample heap without concurrent driver calls to avoid locking
- Align JSON schema metadata to v2 (version 2.0, protocol numbers/timeouts, loadingRuns)
- Support loadingRuns alongside runs in Main child report reader
- Resolve cognitive complexity and break/continue SonarLint issues in Main (0 issues)
…2 test (#29)

- Add BenchmarkProtocol record to dynamically capture real options (warmup, reps, queryTimeoutMs, loadTimeoutMs)
- Retain runs key alongside loadingRuns for backward compatibility with python-utils (workflow.py, baseline.py)
- Pass dynamic BenchmarkProtocol from Main options
- Add BenchmarkReportTest verifying complete JSON v2 schema (loadingRuns, runs, timeSeries, environment, protocol)
- Maintain 0 SonarLint issues
…mically format CSV headers (#29)

- Pass BenchmarkProtocol directly to BenchmarkHarness to drive repetitions, queryRepetitions, warmup and load/query timeouts
- Dynamically format CSV repetition headers based on actual run lengths
- Synchronize Main options and child process execution with BenchmarkProtocol
- Expand BenchmarkReportTest to verify queryRepetitions, queries, null-safety and quick mode
- Maintain 0 SonarLint issues across all modified files
@remiceres
remiceres merged commit e29fc43 into main Oct 30, 2026
4 checks passed
@remiceres
remiceres deleted the feature/backend-streaming-telemetry branch October 30, 2026 14:38
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.

[Backend & Telemetry] Real-time memory & ingestion streaming telemetry + system environment collection

1 participant