REQUIREMENTS.md 3.39 KB
Newer Older
wangkaixiong's avatar
init  
wangkaixiong committed
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# DCU 多机监控平台需求文档

## 1. 项目概述

- **项目名称**: DCU Multi-Machine Monitor
- **项目描述**: 基于 DCGM 的多台 GPU 服务器实时监控可视化平台
- **技术栈**: Python + Gradio + Plotly + SQLite

---

## 2. 功能需求

### 2.1 多机监控

- [x] 支持同时监控多台机器
- [x] 批量添加 URL(每行一个地址)
- [x] 单个添加 URL
- [x] 添加 URL 后自动开始监控
- [x] 支持移除已添加的目标
- [x] 监控数据保存到数据库

### 2.2 监控指标

从 API `http://<ip>:16081/CollectDeviceMetrics` 获取以下数据:

| 字段 | 说明 | 显示方式 |
|------|------|----------|
| PowerUsage | 功率 (W) | 折线图 |
| MemoryCap | 内存容量 | - |
| MemoryUsed | 内存使用量 | 计算利用率 |
| UtilizationRate | 利用率 (%) | 折线图 |
| Temperature | 温度 (°C) | 折线图 |

**内存利用率计算**
```
Mem Utilization (%) = ceil(MemoryUsed / MemoryCap * 100)
```
- 精度:整数(向上取整,不四舍五入)

### 2.3 数据存储

- **数据库**: SQLite (`/public/wkx/dcgm/mon/monitor.db`)
- **保留时间**: 最近 24 小时
- **自动清理**: 每次更新数据时删除超过 24 小时的数据
- **数据表**:
  - `monitor_targets`: 监控目标 URL 列表
  - `monitor_data`: 监控数据(包含 timestamp 字段)

### 2.4 图表展示

- [x] 4 个独立 Tab 页:Power、Memory、Utilization、Temperature
- [x] 每个设备单独的颜色曲线
- [x] 鼠标悬停显示详细数值
- [] 必须是折线图

### 2.5 时间轴功能

- **默认显示**: 最近 30 分钟
- **可调范围**: 5 分钟 ~ 24 小时(1440 分钟)
- [] 期望在2.4的每一个图表底部增加选中后,鼠标滚轮滑动缩放时间轴的功能
- [] 滑动鼠标滚轮:5 ~ 1440 分钟

### 2.6 UI 布局

- 图表尺寸:高度 800px(比原来增加 1 倍)
- 目标选择:下拉框切换不同机器
- 目标列表:滚动显示所有已添加的目标

---

## 3. 页面交互

### 3.1 添加监控目标

**方式一:单个添加**
```
输入框: http://10.20.100.12:16081/CollectDeviceMetrics
按钮: Add Single URL
```

**方式二:批量添加**
```
输入框: 每行一个URL
http://10.20.100.12:16081/CollectDeviceMetrics
http://10.20.100.13:16081/CollectDeviceMetrics
...
按钮: Batch Add URLs
```

### 3.2 监控控制

- **Start Monitoring**: 启动监控(每5秒采集一次)
- **Refresh Charts**: 刷新图表数据
- [] 增加监控失败的提示,如果失败,出现按钮,删除指定机器的监控任务;

### 3.3 多个监控目标的显示

- [] 多个监控目标的话,在监控栏,以每个机器为一个矩形区,从上向下,每台机器增加1个监控目标的监控折线图展示
- [] 每个机器的矩形区的右侧,增加停机并监控目标的按钮



---

## 4. 配置文件

## 5. API 数据格式

### 5.1 输入数据

```json
[
  {
    "MinorNumber": 0,
    "PciBusNumber": "0000:00:08.0",
    "DeviceId": "TPXS320016070601",
    "SubSystemName": "K100 AI",
    "Temperature": 57,
    "PowerUsage": 113,
    "PowerCap": 400,
    "MemoryCap": 68702699520,
    "MemoryUsed": 2142208,
    "UtilizationRate": 0,
    "PcieBwMb": 0,
    "Clk": 600,
    "Socclk": 309,
    "PerfLevel": "AUTO"
  }
]
```

### 5.2 输出图表

- **Power**: 功率监控 (W)
- **Memory**: 内存利用率 (%), 范围 0-100
- **Utilization**: 利用率 (%), 范围 0-100
- **Temperature**: 温度 (°C)