feat(generator): ускорен учебный профиль daily-wave
- Зачем: - суточная волна должна быть видна на занятии за минуты, а не за сутки работы стенда. - Что: - профиль daily-wave переведён на speed 60 при тике 1 секунда. - приглушены подробные live-логи успешного тика без изменения сохранения state. - обновлены тесты, спека и инструкции запуска быстрого профиля. - Проверка: - make generator-test. - git diff --cached --check.
This commit is contained in:
+4
-2
@@ -178,7 +178,9 @@ make generated-history-check
|
||||
```
|
||||
|
||||
По умолчанию команда использует быстрый профиль `ci`: 6 часов модельного
|
||||
времени. Историю на 2 суток с суточной волной можно получить одной командой:
|
||||
времени. Историю на 2 суток с суточной волной можно получить одной командой.
|
||||
В live-продолжении `daily-wave` идёт с ×60 и тикает раз в секунду, поэтому
|
||||
модельные сутки проходят примерно за 24 настенные минуты:
|
||||
|
||||
```bash
|
||||
PROFILE=daily-wave make generated-history-analytics
|
||||
@@ -232,7 +234,7 @@ Live-продолжение стартует с этого state. Использ
|
||||
```bash
|
||||
PROFILE=daily-wave make generator-continue
|
||||
|
||||
sleep 130
|
||||
sleep 5
|
||||
make generator-down
|
||||
sleep 10
|
||||
bash scripts/run_batch.sh
|
||||
|
||||
@@ -26,10 +26,10 @@
|
||||
|
||||
Основной способ — глагол плюс профиль:
|
||||
|
||||
| Профиль | Для чего | Длительность |
|
||||
|---------|----------|--------------|
|
||||
| `ci` | Быстрая проверка и CI | `6h` |
|
||||
| `daily-wave` | История с видимой суточной волной | `2d` |
|
||||
| Профиль | Для чего | Длительность | Live-ход |
|
||||
|---------|----------|--------------|----------|
|
||||
| `ci` | Быстрая проверка и CI | `6h` | ×1, тик 60 с |
|
||||
| `daily-wave` | История с видимой суточной волной | `2d` | ×60, тик 1 с |
|
||||
|
||||
Длительность можно переопределить через `GEN_HISTORY_DURATION`, например `2d`.
|
||||
Команда сама считает `GEN_MODEL_T_END` от `GEN_MODEL_T0`.
|
||||
@@ -84,7 +84,8 @@ make startup-history-export
|
||||
|
||||
Файл по умолчанию: `/tmp/clickstream-startup-history.json`.
|
||||
|
||||
История на 2 суток с суточной волной:
|
||||
История на 2 суток с суточной волной. В live-продолжении этот профиль проживает
|
||||
модельные сутки примерно за 24 настенные минуты:
|
||||
|
||||
```bash
|
||||
ARTIFACT=/tmp/clickstream-startup-history-2d.json \
|
||||
@@ -133,10 +134,11 @@ ClickHouse уже успел прочитать частичные сообще
|
||||
|
||||
## Live-продолжение
|
||||
|
||||
После импорта запускайте live с тем же профилем, что был в артефакте:
|
||||
После импорта запускайте live с тем же профилем, что был в артефакте. Для
|
||||
артефакта `daily-wave`:
|
||||
|
||||
```bash
|
||||
PROFILE=ci make generator-continue
|
||||
PROFILE=daily-wave make generator-continue
|
||||
```
|
||||
|
||||
Если читаемый state есть, но настройки не совпадают, генератор падает с перечнем
|
||||
@@ -146,6 +148,9 @@ PROFILE=ci make generator-continue
|
||||
После нестандартного мира `make generator-continue` нужно запускать с теми же
|
||||
настройками, что были у backfill/import. При расхождении генератор громко
|
||||
покажет поля, которые не совпали.
|
||||
Старые артефакты `daily-wave`, созданные до перехода на ×60 и тик 1 с, с новым
|
||||
профилем несовместимы. Это ожидаемо: защита от смешения миров должна остановить
|
||||
такой запуск.
|
||||
|
||||
Старые переменные `GEN_RUN_MODE`, `GEN_STATE_RESET` и `GEN_MODEL_T_END` остаются
|
||||
низкоуровневым способом для отладки и прямого `docker compose run`.
|
||||
|
||||
@@ -104,10 +104,23 @@ ADR-0005 решил отвязать время генератора от реа
|
||||
- `continue` — подставляет `GEN_RUN_MODE=live` и `GEN_STATE_RESET=false`;
|
||||
- `reset` — подставляет `GEN_RUN_MODE=live` и `GEN_STATE_RESET=true`.
|
||||
|
||||
Профиль `ci` даёт быстрый 6-часовой прогон. Профиль `daily-wave` даёт 2 суток,
|
||||
чтобы была видна суточная волна. `GEN_HISTORY_DURATION` задаёт длительность
|
||||
вида `6h` или `2d`; `GEN_MODEL_T_END` считается от `GEN_MODEL_T0` внутри слоя
|
||||
запуска. Старые переменные остаются низкоуровневым механизмом.
|
||||
Профиль `ci` даёт быстрый 6-часовой прогон и остаётся на ×1 с тиком 60 с.
|
||||
Профиль `daily-wave` даёт 2 суток, чтобы была видна суточная волна, а в live
|
||||
идёт с `GEN_MODEL_TIME_SPEED=60` и `GEN_TICK_SECONDS=1`: модельные сутки
|
||||
проходят примерно за 24 настенные минуты. Пара «тик 1 с, скорость ×60» выбрана,
|
||||
чтобы модельный шаг тика остался 60 секунд. Так событийный бюджет и форма волны
|
||||
не меняются относительно старого минутного тика, а пиковый тик не упирается в
|
||||
`GEN_MAX_EVENTS_PER_TICK`. Вариант «тик 60 с, скорость ×60» не подходит: один
|
||||
тик стал бы модельным часом и слипал бы события в грубые часовые пачки.
|
||||
`GEN_HISTORY_DURATION` задаёт длительность вида `6h` или `2d`; `GEN_MODEL_T_END`
|
||||
считается от `GEN_MODEL_T0` внутри слоя запуска. Старые переменные остаются
|
||||
низкоуровневым механизмом.
|
||||
|
||||
Цена быстрого live-хода `daily-wave`: при тике 1 с сервис пишет примерно 86 400
|
||||
state-записей и столько же записей истории пачек за настенные сутки. Частота
|
||||
state-записей остаётся прежним контрактом возобновления после сбоя: успешный тик
|
||||
сразу сохраняет новую модельную точку. Чтобы быстрый профиль не заливал журналы,
|
||||
подробные строки успешного тика пишутся на DEBUG, а не на INFO.
|
||||
|
||||
#### Ход часов
|
||||
|
||||
|
||||
Reference in New Issue
Block a user