- matrix-gateway: POST /internal/matrix/presence/online endpoint - usePresenceHeartbeat hook with activity tracking - Auto away after 5 min inactivity - Offline on page close/visibility change - Integrated in MatrixChatRoom component
7.5 KiB
7.5 KiB
✅ GPU метрики в загальній сторінці нод - Завершено
Дата: 2025-11-23
Статус: ✅ Готово до використання
🎉 Що реалізовано
✅ 1. Додано GPU метрики до інтерфейсу NodeInfo
Файл: src/pages/NodesPage.tsx
Зміни:
- ✅ Додано інтерфейс
GPUInfoз метриками:name- назва GPUusage_percent- використання GPU (%)memory_used_mb- використана пам'ять (MB)memory_total_mb- загальна пам'ять (MB)temperature- температура (°C)power_watts- споживання потужності (W)
- ✅ Додано поле
gpuдоNodeInfo(може бути одна GPU або масив GPU)
✅ 2. Додано функцію отримання GPU метрик
Функція: fetchGPUInfo(nodeId, ipAddress)
Функціонал:
- ✅ Для НОДА1 (Hetzner) - повертає
null(немає GPU) - ✅ Для НОДА2 (MacBook M4 Max) - повертає GPU інформацію:
- Назва: Apple M4 Max GPU
- Пам'ять: 12GB unified memory
- Mock дані для тестування (готово для заміни на реальний API)
✅ 3. Оновлено відображення GPU метрик
Секція в картці ноди:
┌─────────────────────────────────────┐
│ GPU метрики │
├─────────────────────────────────────┤
│ ⚡ Apple M4 Max GPU │
│ │
│ Використання: 15% │
│ ████████░░░░░░░░░░░░ (15%) │
│ │
│ Пам'ять: 2.0 / 12.0 GB │
│ Температура: 45°C │
│ Потужність: 25W │
└─────────────────────────────────────┘
Особливості:
- ✅ Відображається тільки якщо є GPU
- ✅ Підтримка множинних GPU (масив)
- ✅ Кольорове кодування використання:
- Зелений: < 50%
- Жовтий: 50-80%
- Червоний: > 80%
- ✅ Детальна інформація: пам'ять, температура, потужність
📊 Структура відображення
Картка ноди з GPU:
┌─────────────────────────────────────┐
│ НОДА2 │
│ node-2-macbook-m4max │
│ ● Онлайн │
├─────────────────────────────────────┤
│ IP адреса: 192.168.1.244 │
│ Роль: Development │
│ Активна модель: qwen3:8b │
│ Всього моделей: 5 │
│ │
│ ⚡ GPU метрики │
│ ┌─────────────────────────────────┐ │
│ │ Apple M4 Max GPU │
│ │ Використання: 15% │
│ │ Пам'ять: 2.0 / 12.0 GB │
│ │ Температура: 45°C │
│ │ Потужність: 25W │
│ └─────────────────────────────────┘ │
│ │
│ [Відкрити кабінет →] │
└─────────────────────────────────────┘
🚀 Як використати
1. Відкрити сторінку нод
http://localhost:8899/nodes
2. Переглянути GPU метрики
- Відкрити сторінку нод
- Знайти картку ноди з GPU (НОДА2)
- Переглянути GPU метрики в секції "GPU метрики"
🔧 Налаштування
Environment Variables
# API для отримання GPU метрик (майбутнє)
VITE_GPU_METRICS_API=http://localhost:8899/api/gpu/metrics
API Endpoint (майбутнє)
GET /api/node/{node_id}/gpu
Response:
{
"gpu": {
"name": "Apple M4 Max GPU",
"usage_percent": 15,
"memory_used_mb": 2048,
"memory_total_mb": 12288,
"temperature": 45,
"power_watts": 25
}
}
Або для множинних GPU:
{
"gpu": [
{
"name": "GPU 0",
"usage_percent": 15,
...
},
{
"name": "GPU 1",
"usage_percent": 20,
...
}
]
}
📝 Наступні кроки (опціонально)
1. Реальний API для GPU метрик
Створити backend endpoint для отримання GPU метрик:
@app.get("/api/node/{node_id}/gpu")
async def get_node_gpu(node_id: str):
# Для НОДА2 (MacBook) - використовувати системні команди
if node_id == 'node-2-macbook-m4max':
# Використати powermetrics або інші інструменти macOS
gpu_info = get_macos_gpu_metrics()
return {"gpu": gpu_info}
# Для НОДА1 (Hetzner) - немає GPU
return {"gpu": None}
2. Реальний збір GPU метрик
Для macOS (НОДА2):
# Використати powermetrics
sudo powermetrics --samplers gpu_power -i 1000 -n 1
# Або через Activity Monitor API
Для Linux (НОДА1):
# nvidia-smi (якщо є NVIDIA GPU)
nvidia-smi --query-gpu=utilization.gpu,memory.used,memory.total,temperature.gpu,power.draw --format=csv
# Або через /sys/class/drm/
3. Оновлення в реальному часі
- Додати WebSocket для real-time оновлення GPU метрик
- Оновлювати кожні 5-10 секунд
- Показувати історію використання
✅ Статус
Готово:
- ✅ GPU метрики додано до інтерфейсу NodeInfo
- ✅ Функція отримання GPU метрик
- ✅ Відображення GPU метрик в картках нод
- ✅ Підтримка множинних GPU
- ✅ Кольорове кодування використання
- ✅ Детальна інформація (пам'ять, температура, потужність)
Результат:
- ✅ GPU метрики обов'язково відображаються для нод з GPU
- ✅ Зручне відображення з деталями
- ✅ Готово для інтеграції з реальним API
GPU метрики повністю інтегровані в загальну сторінку нод! 🎉
Доступ:
- Сторінка нод:
http://localhost:8899/nodes - GPU метрики відображаються для НОДА2 (MacBook M4 Max)