docs(bf-53q6): note that feature was already complete
Some checks are pending
CI / test (18.x) (push) Waiting to run
CI / test (20.x) (push) Waiting to run
CI / test (22.x) (push) Waiting to run

This commit is contained in:
jedarden 2026-06-07 10:29:30 -04:00
parent 408506837c
commit 3e6d348690

View file

@ -1,53 +1,55 @@
# Task bf-53q6: System cgroup memory panel for web dashboard
# System Cgroup Memory Panel - Already Complete
## Status: Feature Already Complete
## Status
This task requested adding a system cgroup memory panel to the FABRIC web dashboard with:
- Current cgroup memory usage vs MemoryHigh (progress bar with color coding)
- 5-minute sparkline of memory.current sampled every 10s
- oom_kill counter from memory.events
- Swap usage if enabled
The system cgroup memory panel feature was already fully implemented in prior commits.
## Implementation Summary
The feature was already fully implemented in the codebase:
### Backend (Completed)
- **API Endpoints** (src/web/server.ts, lines 1619-1664):
- `GET /api/system/memory` - Current memory status with formatted values
- `GET /api/system/memory/history` - 5-minute history (30 samples @ 10s intervals)
- `GET /api/system/memory/summary` - Human-readable summary
- `GET /api/alerts/oom` - OOM risk assessment
### Backend (src/systemCgroupMonitor.ts)
- `getSystemMemoryStatus()` - Reads cgroup memory stats from /sys/fs/cgroup/user.slice/user-1001.slice/
- `getMemoryHistory()` - Returns 5-minute history (30 samples @ 10s intervals)
- `startMemorySampler()` - Background sampler (started in server.ts at line 1745)
- OOM kill parsing from memory.events
- Swap usage reading from memory.swap.current
- **Cgroup Monitor** (src/systemCgroupMonitor.ts):
- Reads from `/sys/fs/cgroup/user.slice/user-1001.slice/memory.*`
- Tracks memory.current, memory.high, memory.max, memory.swap.current
- Parses oom_kill counter from memory.events
- Maintains 30-sample history for sparkline visualization
- Background sampler running at 10s intervals
### API Endpoints (src/web/server.ts)
- `GET /api/system/memory` - Returns current memory status with formatted values
- `GET /api/system/memory/history` - Returns memory history for sparkline
- `GET /api/alerts/oom` - Returns OOM risk alert
### Frontend (Completed)
- **SystemMemoryPanel.tsx** (703 lines):
- Full-featured panel with real-time memory visualization
- 5-minute sparkline with color-coded bars (green/yellow/red)
- Progress bar showing cgroup usage vs limit with dynamic coloring
- OOM kill counter display
- Swap usage section with progress bar
- System memory, FABRIC process RSS sections
- OOM risk levels legend
### Frontend Components
1. **SystemMemoryIndicator.tsx** (compact indicator in fleet header)
- Progress bar (green <70%, yellow 70-90%, red >90%)
- 5-minute sparkline (30 samples)
- OOM kill counter (💀 icon)
- Swap indicator (🔁 icon)
- **SystemMemoryIndicator.tsx** (259 lines):
- Compact indicator for fleet header
- Progress bar with color coding
- Mini sparkline (30 samples)
- OOM kill counter badge
- Swap indicator icon
2. **SystemMemoryPanel.tsx** (full detail panel)
- All above features plus:
- Detailed memory sections (Cgroup, System, Swap, FABRIC Process)
- OOM risk legend
- Auto-refresh every 5 seconds
- **Integration** (App.tsx):
- Indicator in fleet-header (line 928)
- Panel toggle button in header (lines 871-878)
- Full panel rendered when active (lines 1122-1127)
### Integration (src/web/frontend/src/App.tsx)
- Line 24: Import SystemMemoryIndicator
- Line 28: Import SystemMemoryPanel
- Line 928: Indicator in fleet header
- Lines 1122-1127: Full panel with visibility toggle
- Lines 872-878: Toggle button in header
### Requirements Met
✅ Current cgroup memory usage vs MemoryHigh (progress bar: green <70%, yellow 70-90%, red >90%)
✅ 5-minute sparkline of memory.current sampled every 10s
✅ oom_kill counter from memory.events
✅ Swap usage if enabled
✅ Backend GET /api/system/memory endpoint
✅ React component alongside fleet summary bar
## Verification
- All 2511 tests pass
- Memory sampler runs at 10s intervals (configured in server.ts)
- UI components properly integrated in the dashboard
No additional work required.
## Related Commits
- 83baf06 feat(bf-53q6): integrate SystemMemoryPanel into FABRIC web dashboard
- 81b57e6 refactor(bf-53q6): add SystemMemoryIndicator to fleet header and clean up cgroup monitor