blob: 232fbe5e79e0e3b4713c9255269022805e85a1ff (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
# Open-IOV Tools Documentation
## Overview
This directory contains documentation for userspace tools built on top of the
Open-IOV vGPU-IO stack. The RM-API tooling reuses behaviour and interfaces
from the driver components we studied by reverse engineering and decompilation
(tracked docs describe components and behaviour).
## Tools
### Debugging & Observability (Implemented)
| Tool | Location | Description |
|------|----------|-------------|
| `guest_init_monitor.py` | `tools/` | Correlates host dmesg with guest serial output |
| `failure_analyzer.py` | `tools/` | Classifies guest init failures with recommendations |
| `benchmark_infrastructure.sh` | `tools/` | VM vs bare metal benchmark runner |
| `guest_test_agent.py` | `tools/guest_agent/` | Guest-side test agent (vsock/TCP) |
| `debug_guest_init.sh` | `scripts/` | One-command debug launch (QEMU + GDB + monitor) |
| `windows_guest_automation.sh` | `scripts/` | Windows guest automation via WinRM |
### RM API Tooling (Planned)
| Tool | Documentation | Description |
|------|---------------|-------------|
| `rmtool` | [rmtool.md](rmtool.md) | RM API Swiss Army Knife - CLI for state enumeration, engine control, memory ops, NV2080 direct control |
| `rmtop` | [rmtop.md](rmtop.md) | GPU htop equivalent - ncurses real-time dashboard |
## Code Reuse Sources (component level)
All planned tools reuse the driver components we studied. Tracked
documentation refers to them by component only:
| Component | Use Case |
|-----------|----------|
| NVML / nvidia-smi component | CLI framework, GPU enumeration, NV2080 ioctls |
| gpumon / perfmon component | Performance sampling, perfmon counters |
| NV2080 control component | RM control interfaces (classes, methods, events) |
| Resource server component | Resource Server (resserve) API |
| CUDA software (CUDASW) component | CUDA internal layer behaviours |
| Resource manager component | Resman API |
## Build Integration
Tools will be built under `open-iov/tools/`:
```
tools/
├── rmtool/
│ ├── src/
│ ├── lib/
│ └── Makefile
├── rmtop/
│ ├── src/
│ ├── lib/
│ └── Makefile
└── Makefile # Builds all tools
```
## Dependencies
- `libnvidia-rmapi.so` - reused RM API layer (component level)
- `libgpumon.so` - reused perfmon layer (component level)
- `libpciaccess` - PCI configuration access
- `libnuma` - NUMA topology
- `ncursesw` - rmtop UI (wide character support)
- `libjson-c` - JSON output formatting
- `libcurl` - Remote API (future)
## Integration with Open-IOV Stack
Tools will integrate with the host VFIO driver via:
- `/dev/nvidia*` character devices (existing nvidia.ko)
- `open-iov-vfio.ko` debugfs interface (`/sys/kernel/debug/open-iov-vfio/`)
- VFIO ioctls for guest state introspection
- GSP-RM telemetry via firmware analyzer / dynamic dispatcher
## Future Tool Ideas
| Tool | Purpose |
|------|---------|
| `rmmigrate` | Live migration coordinator via resserve |
| `rmprofile` | Workload profiler (CUDA/Video/AI correlation) |
| `rmpolicy` | Policy engine for automated engine allocation |
| `rmtelemetry` | Telemetry exporter (Prometheus/OTel/InfluxDB) |
| `rmguest` | Guest introspection via vGPU VFIO interface |
| `rmfirmware` | GSP firmware analysis / update utility |
|