Update idle time configuration to improve resource management
- Reduced default values for IDLE_MINUTES from 60 to 30 and IDLE_GRACE_MINUTES from 90 to 45 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` с ноутбука.
|
Учётные данные на VM: application credential (или роль без `compute:create`), только delete/shelve. Файл не попадает в Output/Models. Истечение кредов = killer слеп; тогда спасает `gpu-rent status` с ноутбука.
|
||||||
|
|
||||||
Дефолты: `IDLE_MINUTES=60`, `IDLE_GRACE_MINUTES=90`.
|
Дефолты: `IDLE_MINUTES=30`, `IDLE_GRACE_MINUTES=45`.
|
||||||
|
|
||||||
## Watchdog туннеля (на ноутбуке)
|
## Watchdog туннеля (на ноутбуке)
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -201,8 +201,8 @@ FLAVOR_FALLBACK=true
|
|||||||
SCAN_POOLS=ru-6,ru-7
|
SCAN_POOLS=ru-6,ru-7
|
||||||
DEFAULT_SPOT=true
|
DEFAULT_SPOT=true
|
||||||
KEEP_FLOATING_IP=false
|
KEEP_FLOATING_IP=false
|
||||||
IDLE_MINUTES=60
|
IDLE_MINUTES=30
|
||||||
IDLE_GRACE_MINUTES=90
|
IDLE_GRACE_MINUTES=45
|
||||||
# LOCAL_WATCHDOG_GRACE_MINUTES=10
|
# LOCAL_WATCHDOG_GRACE_MINUTES=10
|
||||||
PULL_OUTPUT=false
|
PULL_OUTPUT=false
|
||||||
NOTIFY_READY=true
|
NOTIFY_READY=true
|
||||||
|
|||||||
+1
-1
@@ -87,7 +87,7 @@ ComfyUI в `dlbackend` качается всегда. Речь только о *
|
|||||||
8. Первый старт SwarmUI (папки чекпоинтов уже не пустые → установщик не предлагает свой SD; Extensions и Autocompletions уже на месте).
|
8. Первый старт SwarmUI (папки чекпоинтов уже не пустые → установщик не предлагает свой SD; Extensions и Autocompletions уже на месте).
|
||||||
9. Ждать backend Idle, затем вооружить idle-killer.
|
9. Ждать backend Idle, затем вооружить idle-killer.
|
||||||
|
|
||||||
Качание нескольких GB легко длиннее льготы 90 минут. Поэтому killer не живёт, пока не закончился seed.
|
Качание нескольких GB легко длиннее льготы 45 минут. Поэтому killer не живёт, пока не закончился seed.
|
||||||
|
|
||||||
Позже тот же код: `gpu-rent seed-models` — докачать новые строки манифеста на уже живой диск (идемпотентно).
|
Позже тот же код: `gpu-rent seed-models` — докачать новые строки манифеста на уже живой диск (идемпотентно).
|
||||||
|
|
||||||
|
|||||||
@@ -10,4 +10,4 @@
|
|||||||
- App cred с узкими access_rules на Selectel: код fail closed; на spike убедиться, что Keystone принимает rules.
|
- App cred с узкими access_rules на Selectel: код fail closed; на spike убедиться, что Keystone принимает rules.
|
||||||
- Snapshot attached boot после Idle: время; create from snapshot ок.
|
- Snapshot attached boot после Idle: время; create from snapshot ок.
|
||||||
|
|
||||||
Если 90 мин льготы мало на первый Comfy — подними `IDLE_GRACE_MINUTES`, не отключай killer.
|
Если 45 мин льготы мало на первый Comfy — подними `IDLE_GRACE_MINUTES`, не отключай killer.
|
||||||
|
|||||||
+1
-1
@@ -273,7 +273,7 @@ copy models.example.yaml models.yaml
|
|||||||
- **GPU** — пока жив compute.
|
- **GPU** — пока жив compute.
|
||||||
- **Data-диск** — тарифицируется **всегда** после создания.
|
- **Data-диск** — тарифицируется **всегда** после создания.
|
||||||
- Preemptible ~**24 ч** → `EXPIRED`; `tunnel` или `up` восстановят.
|
- Preemptible ~**24 ч** → `EXPIRED`; `tunnel` или `up` восстановят.
|
||||||
- Idle-killer: после льготы (~90 мин) + ~60 мин пустой очереди → delete compute.
|
- Idle-killer: после льготы (~45 мин) + ~30 мин пустой очереди → delete compute.
|
||||||
- Цены в OpenStack API нет — смотри панель Selectel.
|
- Цены в OpenStack API нет — смотри панель Selectel.
|
||||||
|
|
||||||
Дальше: чеклист живого прогона [spike-notes.md](spike-notes.md), справочник команд [cli.md](cli.md).
|
Дальше: чеклист живого прогона [spike-notes.md](spike-notes.md), справочник команд [cli.md](cli.md).
|
||||||
|
|||||||
+2
-2
@@ -72,8 +72,8 @@ FLAVOR_FALLBACK=true
|
|||||||
SCAN_POOLS=ru-6,ru-7
|
SCAN_POOLS=ru-6,ru-7
|
||||||
DEFAULT_SPOT=true
|
DEFAULT_SPOT=true
|
||||||
KEEP_FLOATING_IP=false
|
KEEP_FLOATING_IP=false
|
||||||
IDLE_MINUTES=60
|
IDLE_MINUTES=30
|
||||||
IDLE_GRACE_MINUTES=90
|
IDLE_GRACE_MINUTES=45
|
||||||
# Optional local safety net (after: gpu-rent watchdog install)
|
# Optional local safety net (after: gpu-rent watchdog install)
|
||||||
# LOCAL_WATCHDOG_GRACE_MINUTES=10
|
# LOCAL_WATCHDOG_GRACE_MINUTES=10
|
||||||
PULL_OUTPUT=false
|
PULL_OUTPUT=false
|
||||||
|
|||||||
@@ -19,8 +19,8 @@
|
|||||||
# SWARMUI_LOCAL_PORT=17801
|
# SWARMUI_LOCAL_PORT=17801
|
||||||
# DATA_VOLUME_SIZE_GB=100
|
# DATA_VOLUME_SIZE_GB=100
|
||||||
# ENABLE_SWARMUI=true
|
# ENABLE_SWARMUI=true
|
||||||
# IDLE_MINUTES=60
|
# IDLE_MINUTES=30
|
||||||
# IDLE_GRACE_MINUTES=90
|
# IDLE_GRACE_MINUTES=45
|
||||||
# NOTIFY_READY=true
|
# NOTIFY_READY=true
|
||||||
# UP_STOP_ON_FAIL=true # при падении up гасить GPU (default); false / --keep-on-fail
|
# UP_STOP_ON_FAIL=true # при падении up гасить GPU (default); false / --keep-on-fail
|
||||||
# Prefer auto /32 (leave unset). Spike/WARP only:
|
# Prefer auto /32 (leave unset). Spike/WARP only:
|
||||||
|
|||||||
@@ -255,8 +255,8 @@ def load_config(*, require_auth: bool = True) -> Config:
|
|||||||
scan_pools=(os.environ.get("SCAN_POOLS") or "ru-6,ru-7").strip(),
|
scan_pools=(os.environ.get("SCAN_POOLS") or "ru-6,ru-7").strip(),
|
||||||
default_spot=_as_bool(os.environ.get("DEFAULT_SPOT"), True),
|
default_spot=_as_bool(os.environ.get("DEFAULT_SPOT"), True),
|
||||||
keep_floating_ip=_as_bool(os.environ.get("KEEP_FLOATING_IP"), False),
|
keep_floating_ip=_as_bool(os.environ.get("KEEP_FLOATING_IP"), False),
|
||||||
idle_minutes=_as_int(os.environ.get("IDLE_MINUTES"), 60),
|
idle_minutes=_as_int(os.environ.get("IDLE_MINUTES"), 30),
|
||||||
idle_grace_minutes=_as_int(os.environ.get("IDLE_GRACE_MINUTES"), 90),
|
idle_grace_minutes=_as_int(os.environ.get("IDLE_GRACE_MINUTES"), 45),
|
||||||
pull_output=_as_bool(os.environ.get("PULL_OUTPUT"), False),
|
pull_output=_as_bool(os.environ.get("PULL_OUTPUT"), False),
|
||||||
notify_ready=_as_bool(os.environ.get("NOTIFY_READY"), True),
|
notify_ready=_as_bool(os.environ.get("NOTIFY_READY"), True),
|
||||||
# Default on: failed up must not leave a billing GPU running.
|
# Default on: failed up must not leave a billing GPU running.
|
||||||
|
|||||||
@@ -242,7 +242,7 @@ def main() -> int:
|
|||||||
|
|
||||||
now = time.time()
|
now = time.time()
|
||||||
grace_from = float(creds.get("grace_from") or 0)
|
grace_from = float(creds.get("grace_from") or 0)
|
||||||
grace_minutes = float(creds.get("grace_minutes") or 90)
|
grace_minutes = float(creds.get("grace_minutes") or 45)
|
||||||
if now < grace_from + grace_minutes * 60:
|
if now < grace_from + grace_minutes * 60:
|
||||||
left = int(grace_from + grace_minutes * 60 - now)
|
left = int(grace_from + grace_minutes * 60 - now)
|
||||||
log(f"grace {left}s left")
|
log(f"grace {left}s left")
|
||||||
@@ -269,7 +269,7 @@ def main() -> int:
|
|||||||
log(f"busy: {llm_detail}")
|
log(f"busy: {llm_detail}")
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
idle_minutes = float(creds.get("idle_minutes") or 60)
|
idle_minutes = float(creds.get("idle_minutes") or 30)
|
||||||
since = read_ts(IDLE_SINCE)
|
since = read_ts(IDLE_SINCE)
|
||||||
if since is None:
|
if since is None:
|
||||||
write_ts(IDLE_SINCE, now)
|
write_ts(IDLE_SINCE, now)
|
||||||
|
|||||||
Reference in New Issue
Block a user