Smoke run for v1; README for leases, admin and accounting
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
This commit is contained in:
+15
-1
@@ -75,7 +75,7 @@ func (c *hostChooser) Choose(candidates []string, model string) (string, bool) {
|
||||
Draining: false,
|
||||
Loaded: contains(s.Loaded, model),
|
||||
CanServe: c.cfg.Serves(host, model),
|
||||
Free: c.lim.FreeSlots(host),
|
||||
Free: freeForModel(c.cfg.Hosts[host], model, c.lim.InFlight(host, model)),
|
||||
Queued: c.lim.Queued(host, model),
|
||||
Weight: c.cfg.Hosts[host].Weight,
|
||||
}
|
||||
@@ -91,3 +91,17 @@ func contains(list []string, v string) bool {
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// freeForModel returns the free slots for one model on one host: its parallel minus the in-flight
|
||||
// count, floored at zero, and zero when the host does not list that model.
|
||||
func freeForModel(h config.Host, model string, inflight int) int {
|
||||
m, ok := h.Models[model]
|
||||
if !ok {
|
||||
return 0
|
||||
}
|
||||
free := m.Parallel - inflight
|
||||
if free < 0 {
|
||||
return 0
|
||||
}
|
||||
return free
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user