mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-04-22 22:46:36 +00:00
91 lines
3.3 KiB
Markdown
91 lines
3.3 KiB
Markdown
# Resource Limit Tests
|
|
|
|
### NFT-RES-LIM-01: Memory Usage Under 8GB
|
|
|
|
**Summary**: Validate system memory usage stays below 8GB shared memory (CPU + GPU) during sustained operation.
|
|
**Traces to**: AC-08 (memory < 8GB), RESTRICT-09 (8GB shared LPDDR5)
|
|
|
|
**Preconditions**:
|
|
- System running on Jetson Orin Nano Super (8GB shared memory)
|
|
- Full pipeline active: cuVSLAM + satellite matching + ESKF + GPS_INPUT + FastAPI
|
|
|
|
**Monitoring**:
|
|
- Total system memory (RSS + GPU allocated) via `tegrastats` or `/sys/devices/platform/host1x/*/memory`
|
|
- Poll every 5s via GET /health (memory_mb field)
|
|
|
|
**Duration**: 30 minutes
|
|
**Pass criteria**: Peak memory < 8192MB; no memory leak (growth < 50MB over 30 minutes after first 2 minutes warm-up)
|
|
|
|
---
|
|
|
|
### NFT-RES-LIM-02: GPU Thermal Envelope
|
|
|
|
**Summary**: Validate SoC junction temperature stays below 80°C under sustained processing load.
|
|
**Traces to**: AC-08 (thermal), RESTRICT-10 (25W TDP, thermal throttling at 80°C)
|
|
|
|
**Preconditions**:
|
|
- System running on Jetson Orin Nano Super with active cooling
|
|
- Full pipeline active
|
|
|
|
**Monitoring**:
|
|
- SoC junction temperature via `tegrastats` or `/sys/devices/virtual/thermal/thermal_zone*/temp`
|
|
- Poll every 10s via GET /health (gpu_temp_c field)
|
|
|
|
**Duration**: 30 minutes
|
|
**Pass criteria**: SoC junction temperature < 80°C throughout; no thermal throttling events
|
|
|
|
---
|
|
|
|
### NFT-RES-LIM-03: Satellite Tile Storage
|
|
|
|
**Summary**: Validate pre-loaded satellite tile storage stays within calculated budget for a test mission area.
|
|
**Traces to**: AC-19 (satellite imagery pre-loaded), RESTRICT-08 (onboard storage limited)
|
|
|
|
**Preconditions**:
|
|
- Satellite tiles pre-processed for the test flight area (48.249-48.276°N, 37.340-37.386°E)
|
|
- Zoom 18 primary + zoom 19 for ±500m along flight path
|
|
|
|
**Monitoring**:
|
|
- Total tile storage size on disk
|
|
- RAM usage for preloaded tiles (±2km buffer)
|
|
|
|
**Duration**: Static check
|
|
**Pass criteria**: Total tile storage ≤ 1000MB on disk; RAM usage for preloaded tiles ≤ 200MB
|
|
|
|
---
|
|
|
|
### NFT-RES-LIM-04: Long Flight Simulation (3000 Frames)
|
|
|
|
**Summary**: Validate the system handles a maximum-length flight of 3000 frames without resource exhaustion.
|
|
**Traces to**: RESTRICT-04 (up to 3000 photos per flight)
|
|
|
|
**Preconditions**:
|
|
- System running on Jetson (or Docker with CPU-mode for functional test)
|
|
- Camera-replay looping flight-sequence-60 to generate 3000 frames (50 loops)
|
|
|
|
**Monitoring**:
|
|
- Memory usage every 60s
|
|
- GPS_INPUT rate every 60s
|
|
- Position accuracy sampled every 100 frames
|
|
|
|
**Duration**: ~71 minutes (3000 frames at 0.7fps)
|
|
**Pass criteria**: Memory stays < 8GB; GPS_INPUT rate stays 5-10Hz; no crash or hang over full 3000-frame sequence
|
|
|
|
---
|
|
|
|
### NFT-RES-LIM-05: CUDA Stream Isolation
|
|
|
|
**Summary**: Validate that Stream B (satellite matching) does not block Stream A (cuVSLAM) under concurrent load.
|
|
**Traces to**: AC-07 (< 400ms per frame), solution CUDA stream pipelining
|
|
|
|
**Preconditions**:
|
|
- System running on Jetson Orin Nano Super
|
|
- Satellite matching triggered on a keyframe while VO is processing the next frame
|
|
|
|
**Monitoring**:
|
|
- VO frame-to-frame timing during satellite matching
|
|
- Satellite matching does not extend VO latency
|
|
|
|
**Duration**: 30s (capture ~5 satellite matching events concurrent with VO)
|
|
**Pass criteria**: VO per-frame time ≤ 20ms even when satellite matching is running concurrently; no frame drops
|