Implementerer prioritetsregler, ressursgrenser og LiveKit-bevisst resource governor for jobbkø-workeren, pluss disk-overvåking med varsling. Hovedkomponenter: 1. Prioritetsregler (job_priority_rules-tabell): - Konfigurerbar base_priority, cpu_weight, max_concurrent per jobbtype - LiveKit-justering: livekit_priority_adj og block_during_livekit - Timeout per jobbtype - Admin-API for å endre regler uten restart 2. Ressurs-governor i worker-loopen: - Semaphore: maks 3 samtidige jobber - CPU-vektgrense: total vekt maks 8 (Whisper=5, render=1, etc.) - Per-type concurrency-grense - LiveKit-status sjekkes med 10s cache-TTL - Jobber utsettes/nedprioriteres ved aktive LiveKit-rom - Individuell timeout per jobb (default 600s) - Jobber kjøres i egne tokio-tasks (parallell dispatch) 3. Disk-overvåking: - Sjekker diskbruk hvert 60. sekund via statvfs - Terskler: 85% warning, 90% critical, 95% emergency - Logger til disk_status_log (siste 1000 målinger beholdes) - Admin-API: GET /admin/resources/disk med historikk 4. Admin-API: - GET /admin/resources — samlet ressursstatus - GET /admin/resources/disk — diskstatus med historikk - POST /admin/resources/update_rule — oppdater prioritetsregel Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
24 lines
870 B
TOML
24 lines
870 B
TOML
[package]
|
|
name = "maskinrommet"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
|
|
[dependencies]
|
|
axum = { version = "0.8", features = ["multipart"] }
|
|
tokio = { version = "1", features = ["full"] }
|
|
sqlx = { version = "0.8", features = ["runtime-tokio", "tls-rustls", "postgres", "uuid", "chrono", "json"] }
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
uuid = { version = "1", features = ["v7", "serde"] }
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
|
|
tower-http = { version = "0.6", features = ["cors", "trace"] }
|
|
jsonwebtoken = "9"
|
|
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "json", "multipart", "stream"] }
|
|
sha2 = "0.10"
|
|
hex = "0.4"
|
|
tokio-util = { version = "0.7", features = ["io"] }
|
|
tera = "1"
|
|
rand = "0.8"
|
|
libc = "0.2.183"
|