- 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
9.4 KiB
🚀 Оптимізація CPU навантаження через GPU на НОДА1
Дата: 2025-01-27
Проблема: CPU навантаження 85.3% (високе)
Мета: Перенести частину навантаження на GPU (якщо доступний)
🔍 Аналіз поточної ситуації
CPU навантаження
- Загальне: 85.3%
- Основні споживачі:
- PostgreSQL: 1706% CPU (multi-core, нормально для БД)
- Інші процеси: розподілені
Перевірка GPU
Hetzner сервер (НОДА1)
- Тип: Cloud сервер (144.76.224.179)
- GPU: ❌ Зазвичай немає GPU на стандартних Hetzner серверах
- Варіанти: Потрібно перевірити чи є GPU-оптимізований інстанс
✅ РІШЕННЯ: Увімкнути GPU для Ollama!
Поточна ситуація
- ✅ GPU доступний: NVIDIA RTX 4000 SFF Ada (20GB VRAM)
- ❌ Ollama використовує CPU: 1583% CPU (multi-core)
- ⚠️ GPU не використовується Ollama
Термінове рішення
1. Увімкнути GPU для Ollama контейнера:
# docker-compose.yml (на НОДА1)
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
environment:
- NVIDIA_VISIBLE_DEVICES=all
- CUDA_VISIBLE_DEVICES=0
2. Перезапустити Ollama:
docker stop ollama
docker compose up -d ollama
3. Перевірити використання GPU:
nvidia-smi
docker exec ollama ollama ps
Очікувані результати
До оптимізації:
- CPU: 85.3% (Ollama: 1583% multi-core)
- GPU: 0% utilization
- Швидкість інференсу: повільно (CPU)
Після оптимізації:
- CPU: ~40-50% (Ollama: ~50-100% на GPU)
- GPU: 30-50% utilization
- Швидкість інференсу: +200-300% (GPU)
💡 Варіанти оптимізації
1. GPU доступний ✅
A. Ollama з GPU acceleration
# docker-compose.yml
services:
ollama:
image: ollama/ollama:latest
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
environment:
- NVIDIA_VISIBLE_DEVICES=all
Переваги:
- ✅ Швидше інференс моделей (qwen3:8b, qwen2.5:14b)
- ✅ Зменшення CPU навантаження на 30-50%
- ✅ Паралельна обробка запитів
Недоліки:
- ❌ Потрібен GPU-оптимізований сервер
- ❌ Додаткові витрати
B. Використання GPU для:
- LLM інференс (Ollama моделі)
- Vision моделі (qwen3-vl:8b)
- Embeddings (Qdrant з GPU)
- Image generation (dagi-image-gen)
2. Якщо GPU недоступний
A. Оптимізація CPU навантаження
1. PostgreSQL оптимізація:
-- Налаштування для зменшення CPU
shared_buffers = 4GB
effective_cache_size = 12GB
work_mem = 64MB
maintenance_work_mem = 1GB
max_worker_processes = 8
max_parallel_workers_per_gather = 4
2. Обмеження CPU для контейнерів:
# docker-compose.yml
services:
dagi-postgres:
deploy:
resources:
limits:
cpus: '4.0'
reservations:
cpus: '2.0'
3. Використання Ollama з CPU оптимізацією:
# Використання менших моделей для простих задач
# qwen2.5:3b-instruct замість qwen3:8b для деяких агентів
B. Розподіл навантаження
1. Перенести частину навантаження на НОДА2:
- НОДА2 має Apple M4 Max GPU
- Можна використовувати для:
- Vision моделі
- Image generation
- Важкі LLM інференси
2. Використання Swapper Service:
- Динамічне завантаження/вивантаження моделей
- Оптимізація використання пам'яті
- Розподіл навантаження між моделями
C. Кешування та оптимізація
1. Redis кешування:
- Кешування результатів LLM запитів
- Зменшення повторних обчислень
2. Batch обробка:
- Групування запитів для ефективнішої обробки
- Зменшення overhead
🎯 Рекомендації
✅ ТЕРМІНОВІ ДІЇ (GPU доступний!)
-
Увімкнути GPU для Ollama (НАЙВАЖЛИВІШЕ):
# На НОДА1 cd /opt/microdao-daarion # Оновити docker-compose.yml для Ollama з GPU docker compose stop ollama docker compose up -d ollama -
Перевірити використання GPU:
nvidia-smi docker exec ollama ollama ps -
Протестувати швидкість:
time docker exec ollama ollama run qwen3:8b "Привіт, як справи?"
Очікуваний результат: CPU навантаження знизиться з 85.3% до 40-50%
Додаткові оптимізації
-
Оптимізувати PostgreSQL:
# Налаштувати postgresql.conf shared_buffers = 4GB effective_cache_size = 12GB max_worker_processes = 8 -
Обмежити CPU для контейнерів:
- PostgreSQL: max 4 cores
- Ollama: max 2 cores для простих моделей
- Інші сервіси: за потреби
-
Використовувати менші моделі:
- qwen2.5:3b-instruct для простих задач
- qwen3:8b тільки для складних задач
-
Перенести на НОДА2:
- Vision моделі (qwen3-vl:8b)
- Image generation
- Важкі LLM інференси
Довгострокові рішення
-
Оновити до GPU-оптимізованого сервера:
- Hetzner GPU сервер (NVIDIA GPU)
- Або використовувати НОДА2 для GPU задач
-
Налаштувати Ollama з GPU:
# Якщо GPU доступний OLLAMA_NUM_GPU=1 OLLAMA_GPU_LAYERS=35 -
Використовувати Qdrant з GPU:
- GPU acceleration для embeddings
- Швидший векторний пошук
📊 Очікувані результати
✅ З GPU (рекомендовано - GPU доступний!)
- CPU навантаження: 85.3% → 40-50% (-35-45%)
- GPU utilization: 0% → 30-50%
- Швидкість інференсу: +200-300% (з CPU на GPU)
- Ollama CPU: 1583% → 50-100% (на GPU)
- Паралельність: +100%
Без GPU (якщо не вдасться увімкнути)
- CPU навантаження: 85.3% → 60-70%
- Швидкість інференсу: +20-30% (через оптимізацію)
- Стабільність: +50%
🔧 План дій
✅ Фаза 1: Увімкнути GPU для Ollama (ТЕРМІНОВО!)
- ✅ Перевірено: GPU доступний (NVIDIA RTX 4000 SFF Ada)
- 🔄 В процесі: Налаштувати Ollama з GPU
- 📋 Планується: Перезапустити Ollama з GPU
- 📋 Планується: Перевірити використання GPU
Команди:
# На НОДА1
cd /opt/microdao-daarion
# Оновити docker-compose.yml для Ollama
docker compose stop ollama
docker compose up -d ollama
nvidia-smi # Перевірити використання GPU
Фаза 2: Додаткові оптимізації
- Оптимізувати PostgreSQL конфігурацію
- Обмежити CPU для інших контейнерів
- Налаштувати Qdrant з GPU (якщо підтримує)
- Мігрувати vision моделі на GPU
Фаза 3: Моніторинг
- Відстежувати CPU навантаження
- Відстежувати GPU використання (якщо є)
- Оптимізувати на основі метрик
⚠️ Важливо
- ✅ НОДА1 має GPU: NVIDIA RTX 4000 SFF Ada (20GB VRAM)
- ❌ Ollama не використовує GPU: працює на CPU (1583% CPU!)
- 🔥 Терміново: Увімкнути GPU для Ollama - це знизить CPU навантаження на 35-45%
- НОДА2 (MacBook M4 Max) також має GPU і може використовуватися для GPU задач
- Оптимізація CPU може дати додаткове покращення після увімкнення GPU
Last Updated: 2025-01-27
Status: 📋 План оптимізації готовий