Reititys: busy-solmut suodatetaan pois — työ jakautuu solmuille
Aiemmin busy-lukko luettiin mutta sitä ei käytetty suodatukseen, joten sama solmu valittiin aina uudelleen vaikka se oli varattu. Nyt matching-lista suodattaa pois busy-solmut, joten toinen vapaa solmu saa tehtävän. Heavy-fallback kevyempään solmuun jos kaikki isot mallit ovat varattuja.
This commit is contained in:
@@ -1314,12 +1314,12 @@ async fn api_chat_completions(
|
||||
let param_b_snapshot: HashMap<u64, u32> = state.node_max_param_b.read().await.clone();
|
||||
let (target_node, _total_matching) = {
|
||||
let tasks = state.node_tasks.lock().unwrap();
|
||||
let _busy = state.node_busy.lock().unwrap();
|
||||
let busy = state.node_busy.lock().unwrap();
|
||||
let node_types = state.node_types.lock().unwrap();
|
||||
let paused = state.node_paused.lock().unwrap();
|
||||
let matching: Vec<u64> = tasks.iter().filter(|(k, task)| {
|
||||
if paused.contains(k) { return false; } // Ei sallita tauotettuja
|
||||
// Eksakti match tai qwen-perheen yhteensopivuus (selain: qwen-coder-05b, natiivi: qwen2.5-coder:7b)
|
||||
if paused.contains(k) { return false; } // Ei tauotettuja
|
||||
if busy.contains(k) { return false; } // Ei varattuja
|
||||
let req_model = payload.model.to_lowercase();
|
||||
let node_task = task.to_lowercase();
|
||||
if req_model.starts_with("qwen") {
|
||||
@@ -1341,10 +1341,16 @@ async fn api_chat_completions(
|
||||
tracing::info!("Heavy-reititys: solmu {} valittu ({}B parametria)", best_id, best_b);
|
||||
Some(*best_id)
|
||||
} else {
|
||||
None
|
||||
// Kaikki heavy-solmut busy — fallback mihin tahansa vapaaseen
|
||||
let all_matching: Vec<u64> = tasks.iter().filter(|(k, task)| {
|
||||
if paused.contains(k) || busy.contains(k) { return false; }
|
||||
let req_model = payload.model.to_lowercase();
|
||||
task.to_lowercase().starts_with(&req_model.split('-').next().unwrap_or(""))
|
||||
}).map(|(k, _)| *k).collect();
|
||||
all_matching.first().copied()
|
||||
}
|
||||
} else {
|
||||
// Oletus: natiivi ensin, sitten mikä tahansa
|
||||
// Oletus: vapaa natiivi ensin, sitten mikä tahansa vapaa
|
||||
let native = matching.iter().find(|id| {
|
||||
node_types.get(id).map(|t| t == "native").unwrap_or(false)
|
||||
}).copied();
|
||||
|
||||
Reference in New Issue
Block a user