Update idle time configuration and documentation
- Increased default values for IDLE_MINUTES from 30 to 60 and IDLE_GRACE_MINUTES from 45 to 90 across configuration files and documentation. - Updated related documentation to reflect the new default idle time settings, ensuring consistency in user guidance and system behavior.
This commit is contained in:
@@ -133,7 +133,7 @@ Killer молчит:
|
||||
|
||||
Учётные данные на VM: application credential (или роль без `compute:create`), только delete/shelve. Файл не попадает в Output/Models. Истечение кредов = killer слеп; тогда спасает `gpu-rent status` с ноутбука.
|
||||
|
||||
Дефолты: `IDLE_MINUTES=30`, `IDLE_GRACE_MINUTES=45`.
|
||||
Дефолты: `IDLE_MINUTES=60`, `IDLE_GRACE_MINUTES=90`.
|
||||
|
||||
## Watchdog туннеля (на ноутбуке)
|
||||
|
||||
|
||||
+2
-2
@@ -200,8 +200,8 @@ FLAVOR_FALLBACK=true
|
||||
SCAN_POOLS=ru-6,ru-7
|
||||
DEFAULT_SPOT=true
|
||||
KEEP_FLOATING_IP=false
|
||||
IDLE_MINUTES=30
|
||||
IDLE_GRACE_MINUTES=45
|
||||
IDLE_MINUTES=60
|
||||
IDLE_GRACE_MINUTES=90
|
||||
# LOCAL_WATCHDOG_GRACE_MINUTES=10
|
||||
PULL_OUTPUT=false
|
||||
NOTIFY_READY=true
|
||||
|
||||
+1
-1
@@ -87,7 +87,7 @@ ComfyUI в `dlbackend` качается всегда. Речь только о *
|
||||
8. Первый старт SwarmUI (папки чекпоинтов уже не пустые → установщик не предлагает свой SD; Extensions и Autocompletions уже на месте).
|
||||
9. Ждать backend Idle, затем вооружить idle-killer.
|
||||
|
||||
Качание нескольких GB легко длиннее льготы 45 минут. Поэтому killer не живёт, пока не закончился seed.
|
||||
Качание нескольких GB легко длиннее льготы 90 минут. Поэтому killer не живёт, пока не закончился seed.
|
||||
|
||||
Позже тот же код: `gpu-rent seed-models` — докачать новые строки манифеста на уже живой диск (идемпотентно).
|
||||
|
||||
|
||||
@@ -10,4 +10,4 @@
|
||||
- App cred с узкими access_rules на Selectel: код fail closed; на spike убедиться, что Keystone принимает rules.
|
||||
- Snapshot attached boot после Idle: время; create from snapshot ок.
|
||||
|
||||
Если 45 мин льготы мало на первый Comfy — подними `IDLE_GRACE_MINUTES`, не отключай killer.
|
||||
Если 90 мин льготы мало на первый Comfy — подними `IDLE_GRACE_MINUTES`, не отключай killer.
|
||||
|
||||
+1
-1
@@ -65,7 +65,7 @@
|
||||
- [x] Clone `extensions.yaml` в Extensions / DLNodes до старта UI
|
||||
- [x] Autocomplete: danbooru.csv + Settings.fds; на каждом up — GitHub sha
|
||||
- [x] Civitai seed по манифесту; без токена — дефолт SwarmUI
|
||||
- [x] systemd idle-killer + application credential; льгота 45 мин; hold-файл; очередь/loading = busy; затем 30 мин пустой очереди; вооружение после seed/start (качалка UI = hold)
|
||||
- [x] systemd idle-killer + application credential; льгота 90 мин; hold-файл; очередь/loading = busy; затем 60 мин пустой очереди; вооружение после seed/start (качалка UI = hold)
|
||||
- [x] Один snapshot `gpu-rent-boot-ok` после первого backend Idle; следующие create — из snapshot если есть
|
||||
- [x] `gpu-rent hold` / `hold --clear` по SSH
|
||||
- [x] `ready` по HTTP, затем backend Idle
|
||||
|
||||
+1
-1
@@ -273,7 +273,7 @@ copy models.example.yaml models.yaml
|
||||
- **GPU** — пока жив compute.
|
||||
- **Data-диск** — тарифицируется **всегда** после создания.
|
||||
- Preemptible ~**24 ч** → `EXPIRED`; `tunnel` или `up` восстановят.
|
||||
- Idle-killer: после льготы (~45 мин) + ~30 мин пустой очереди → delete compute.
|
||||
- Idle-killer: после льготы (~90 мин) + ~60 мин пустой очереди → delete compute.
|
||||
- Цены в OpenStack API нет — смотри панель Selectel.
|
||||
|
||||
Дальше: чеклист живого прогона [spike-notes.md](spike-notes.md), справочник команд [cli.md](cli.md).
|
||||
|
||||
+1
-1
@@ -120,7 +120,7 @@
|
||||
|
||||
- Имя GPU-образа в пуле:
|
||||
- Реальные flavor id (не в git):
|
||||
- Хватает ли `IDLE_GRACE_MINUTES=45`:
|
||||
- Хватает ли `IDLE_GRACE_MINUTES=90`:
|
||||
- Application credential с узкими access_rules: ок / ошибка (fail closed):
|
||||
- Прочее:
|
||||
|
||||
|
||||
+2
-2
@@ -57,8 +57,8 @@ FLAVOR_FALLBACK=true
|
||||
SCAN_POOLS=ru-6,ru-7
|
||||
DEFAULT_SPOT=true
|
||||
KEEP_FLOATING_IP=false
|
||||
IDLE_MINUTES=30
|
||||
IDLE_GRACE_MINUTES=45
|
||||
IDLE_MINUTES=60
|
||||
IDLE_GRACE_MINUTES=90
|
||||
# Optional local safety net (after: gpu-rent watchdog install)
|
||||
# LOCAL_WATCHDOG_GRACE_MINUTES=10
|
||||
PULL_OUTPUT=false
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
# LLM_RUNTIME=none
|
||||
# OLLAMA_LOCAL_PORT=17811
|
||||
# LLAMACPP_LOCAL_PORT=17812
|
||||
# IDLE_MINUTES=30
|
||||
# IDLE_GRACE_MINUTES=45
|
||||
# IDLE_MINUTES=60
|
||||
# IDLE_GRACE_MINUTES=90
|
||||
# LOCAL_WATCHDOG_GRACE_MINUTES=10
|
||||
# NOTIFY_READY=true
|
||||
# PULL_OUTPUT=false
|
||||
|
||||
@@ -250,8 +250,8 @@ def load_config(*, require_auth: bool = True) -> Config:
|
||||
scan_pools=(os.environ.get("SCAN_POOLS") or "ru-6,ru-7").strip(),
|
||||
default_spot=_as_bool(os.environ.get("DEFAULT_SPOT"), True),
|
||||
keep_floating_ip=_as_bool(os.environ.get("KEEP_FLOATING_IP"), False),
|
||||
idle_minutes=_as_int(os.environ.get("IDLE_MINUTES"), 30),
|
||||
idle_grace_minutes=_as_int(os.environ.get("IDLE_GRACE_MINUTES"), 45),
|
||||
idle_minutes=_as_int(os.environ.get("IDLE_MINUTES"), 60),
|
||||
idle_grace_minutes=_as_int(os.environ.get("IDLE_GRACE_MINUTES"), 90),
|
||||
pull_output=_as_bool(os.environ.get("PULL_OUTPUT"), False),
|
||||
notify_ready=_as_bool(os.environ.get("NOTIFY_READY"), True),
|
||||
selectel_api_token=(os.environ.get("SELECTEL_API_TOKEN") or "").strip(),
|
||||
|
||||
@@ -18,7 +18,7 @@ ARMED = DATA / ".gpu-rent-killer-armed"
|
||||
LOG = DATA / ".gpu-rent-killer.log"
|
||||
SERVER_ID_FILE = DATA / ".gpu-rent-server-id"
|
||||
# After this many seconds of continuous Swarm unreachable → treat as idle (don't bill forever).
|
||||
SWARM_UNREACHABLE_IDLE_SEC = 60 * 60
|
||||
SWARM_UNREACHABLE_IDLE_SEC = 2 * 60 * 60
|
||||
|
||||
|
||||
def log(msg: str) -> None:
|
||||
@@ -242,7 +242,7 @@ def main() -> int:
|
||||
|
||||
now = time.time()
|
||||
grace_from = float(creds.get("grace_from") or 0)
|
||||
grace_minutes = float(creds.get("grace_minutes") or 45)
|
||||
grace_minutes = float(creds.get("grace_minutes") or 90)
|
||||
if now < grace_from + grace_minutes * 60:
|
||||
left = int(grace_from + grace_minutes * 60 - now)
|
||||
log(f"grace {left}s left")
|
||||
@@ -269,7 +269,7 @@ def main() -> int:
|
||||
log(f"busy: {llm_detail}")
|
||||
return 0
|
||||
|
||||
idle_minutes = float(creds.get("idle_minutes") or 30)
|
||||
idle_minutes = float(creds.get("idle_minutes") or 60)
|
||||
since = read_ts(IDLE_SINCE)
|
||||
if since is None:
|
||||
write_ts(IDLE_SINCE, now)
|
||||
|
||||
Reference in New Issue
Block a user