Files
ozone-tech_owl_prime/docs/SERVER_CAPACITY_REPORT.md
Даня Архипов 985f7c327d feat: maximize sorter demo realism and add safe agent MVP
Wire live classifyItem into continuous playback, add jam/E-stop cases,
presenter controls (seek/speed/hotkeys), quality modes, demo scripts,
audit docs, and a verify-only autonomous agent CLI with hard safety limits.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-15 16:53:35 +00:00

177 lines
9.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Отчёт о ёмкости сервера
**Хост:** OwlPrime (контейнеризованный Ubuntu 24.04)
**Дата измерений:** 2026-07-15
**Приложение:** OZON Tech Sorter Simulation → nginx `127.0.0.1:3100`, tunnel → https://arhipovdan.ru/
Легенда типов данных: **Измерено** = получено диагностикой на сервере; **Оценка** = вывод по мощности без полного бенчмарка нагрузки.
---
## 1. Точные характеристики сервера
| Ресурс | Фактическое значение | Тип |
| ------ | -------------------: | --- |
| CPU | Intel i5-9400F, 6 ядер, 2.9–4.1 GHz | Измерено |
| RAM | 15 GiB (≈13 GiB available) | Измерено |
| Swap | 15 GiB | Измерено |
| Диск | NVMe ~452 G, ~201 G свободно (~54% used) | Измерено |
| GPU | 2× NVIDIA GTX 1080 8 GB, driver 580.126.09, CUDA 13.0 | Измерено |
| GPU load | idle | Измерено |
| Load average | ~0.5–0.6 | Измерено |
| OS | Ubuntu 24.04 (containerized) | Измерено |
| Node (build env) | 20.20.2 | Измерено |
| Docker CLI в этой среде | отсутствует | Измерено |
| PM2 | отсутствует | Измерено |
| App listen | nginx 127.0.0.1:3100 | Измерено |
| Public | cloudflared → https://arhipovdan.ru/ | Измерено |
| Git repo | `/home/coder/arhipovdan/app` | Измерено |
---
## 2. Текущая нагрузка
| Показатель | Значение | Вывод |
| ---------- | -------: | ----- |
| Load avg | 0.5–0.6 при 6 cores | Большой запас CPU |
| GPU | idle | Можно зарезервировать под LLM/CV, но с осторожностью |
| Disk free | ~201 G | Достаточно для node_modules, dist, Playwright cache, артефактов агента |
| Swap | 15 GiB | Есть подушка, но swap thrash недопустим для демо |
**Оценка:** сервер сейчас в «лёгком» режиме (статика nginx + tunnel). Основная 3D-нагрузка — на **клиентском** WebGL, не на сервере.
---
## 3. Доступные ресурсы (безопасный остаток)
| Ресурс | Оценка свободного бюджета | Тип |
| ------ | ------------------------: | --- |
| CPU | 4–5 ядер можно отдавать фону при лимите 1 тяжёлого worker | Оценка |
| RAM | ~8–10 GiB «мягкий» бюджет до давления на swap | Оценка |
| VRAM (2×8 GB) | теоретически хватает на 7B quant; на практике тяжело и конкурирует | Оценка |
| Disk | десятки GB под кэши/отчёты без риска | Оценка |
---
## 4. Допустимые фоновые процессы
| Процесс | Допустимо 24/7? | Условия |
| ------- | --------------- | ------- |
| nginx + cloudflared (prod static) | Да | Без изменения без явного deploy |
| Vite preview :3101 (demo) | Краткосрочно | Не путать с prod :3100 |
| Vitest / build по запросу | Да | Последовательно, не параллельно с LLM |
| Playwright Chromium (1 worker) | Да, по расписанию | Не во время живого показа жюри |
| Agent MVP (verify-only) | Да, с лимитами | См. ниже |
| Локальная LLM 7B+ | Только эксперименты | Предпочтительно внешний API |
| CV training | Нет как 24/7 | Вынести на dedicated GPU / внешний |
| Server-side Three.js offscreen | Возможно, не нужно | Клиентский WebGL достаточен |
---
## 5. Возможность локальных моделей (LLM)
| Вариант | Вердикт | Комментарий |
| ------- | ------- | ----------- |
| Локальная 7B+ на 2×1080 | **Возможна технически, тяжело** | VRAM суммарно 16 GB; квантизация нужна; CPU/RAM конкурируют с Playwright |
| Внешний LLM API | **Рекомендуется** | Hybrid Variant C |
| Полностью локальный агент (Variant A) | Не рекомендуется на этом хосте | Риск OOM / деградации демо |
**Вывод:** локальный инференс — опциональный research-path; production-агент должен использовать **внешний API** с бюджетом.
---
## 6. Возможность Playwright / Chromium
| Критерий | Вердикт |
| -------- | ------- |
| CPU + RAM | Достаточно (**Измерено** ресурсы; **Оценка** нагрузки) |
| Параллелизм | **1 worker** |
| 24/7 непрерывный прогон | Нежелателен; лучше nightly / по событию |
| Конфликт с живой демо | Высокий — не запускать во время показа |
---
## 7. Возможность автономного агента
**Однозначный вывод: возможен с ограничениями.**
| Параметр | Лимит |
| -------- | ----- |
| Parallel workers | 1 |
| LLM | Hybrid (внешний API primary) |
| Auto merge to main | Запрещено |
| Auto production deploy | Запрещено |
| Режим MVP | verify-only (dry-run / run-once), без auto-patch |
| Kill switch | `agent/state/KILL` |
Подробности: `AI_AGENT_SAFETY_LIMITS.md`, `AUTONOMOUS_AI_AGENT_ARCHITECTURE.md`.
---
## 8. Рекомендуемые лимиты
| Лимит | Значение | Источник |
| ----- | -------: | -------- |
| maxParallelWorkers | 1 | Agent MVP + ёмкость |
| maxCycleMinutes | 25 | `agent/cli.mjs` LIMITS |
| maxChangedFiles | 12 | Agent LIMITS |
| maxDiffLines | 800 | Agent LIMITS |
| dailyLlmBudgetUsd | 5 | Agent LIMITS |
| Playwright workers | 1 | Capacity |
| CPU soft cap для агента | ≤50% одного ядра в idle-poll; burst на test/build | Оценка |
| RAM soft cap агент+Chromium | ≤4 GiB | Оценка |
| Запрет | merge main, prod deploy, чтение секретов в логи | Policy |
---
## 9. Режимы эксплуатации
| Режим | Что запущено | Параллелизм | Назначение |
| ----- | ------------ | ----------: | ---------- |
| Минимальный безопасный | nginx :3100 + tunnel | 0 background jobs | Стабильный публичный показ |
| Оптимальный | + редкие `agent dry-run`, nightly tests | 1 | Поддержание качества |
| Максимальный | + Playwright 1w + внешний LLM | 1 | Исследования (не во время демо) |
| Демонстрация | Только prod или preview; агент STOP | 0 | Живое жюри |
| Автономное AI-улучшение | Agent + external LLM, ветки feature/*, no deploy | 1 | Улучшения с human gate |
---
## 10. Сводная таблица ёмкости
| Ресурс | Фактическое значение | Текущая нагрузка | Безопасный лимит | Вывод |
| ------ | -------------------: | ---------------: | ---------------: | ----- |
| CPU 6c | i5-9400F | load ~0.5–0.6 | 1 тяжёлый worker | Запас есть |
| RAM 15 GiB | ≈13 available | низкая | ≤4 GiB агент+browser | OK |
| Swap 15 GiB | — | не давить | Избегать thrash | OK как подушка |
| Disk ~452G | ~201G free | 54% used | Оставить ≥50G free | OK |
| GPU 2×1080 | idle | 0% | Не для prod demo loop | LLM/CV опционально |
| Playwright | — | нет | 1 worker | Да |
| Agent 24/7 | — | MVP | с ограничениями | Да |
| Local LLM 7B+ | — | нет | эксперимент | Тяжело; лучше API |
| CV training | — | нет | external | Не на этом хосте 24/7 |
| Server 3D | — | нет | не требуется | Клиент WebGL |
---
## 11. Риски ёмкости
| Риск | Вероятность | Влияние | Митигация |
| ---- | ----------- | ------- | --------- |
| OOM при локальной LLM + Playwright | Средняя | Падение демо | Не совмещать; API LLM |
| Swap thrash во время показа | Низкая | Лаги tunnel/nginx | Режим «Демонстрация» = stop agent |
| Disk fill артефактами | Низкая | Сборка падает | Ротация `agent/reports`, screenshot dirs |
| Старый dist на :3100 | Высокая (процесс) | Жюри видит не то | Явный redeploy после merge |
| Нет docker CLI здесь | Факт | Сложнее ops | Документировать внешний deploy path |
---
## 12. Нужен ли дополнительный сервер?
| Вопрос | Ответ |
| ------ | ----- |
| Отдельный staging | Желателен при частом агенте; на текущем хосте можно эмулировать preview :3101 |
| Dedicated GPU server | Да, если цель — CV training / тяжёлый local LLM |
| Доп. сервер для static demo | Нет — текущий nginx достаточен |
**Итог:** для demo + ограниченного агента текущий сервер **достаточен**. Для тяжёлого ML — вынести.