From 6f009961bb940fcca681832a3a8dbc01fb25c0f4 Mon Sep 17 00:00:00 2001 From: Praneth Paruchuri Date: Wed, 28 Jan 2026 12:16:40 +0530 Subject: [PATCH] [model-gateway] Optimize HashRing construction to reduce heap allocations (#17575) --- sgl-model-gateway/src/core/worker_registry.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sgl-model-gateway/src/core/worker_registry.rs b/sgl-model-gateway/src/core/worker_registry.rs index 67a048f85..f91c9769c 100644 --- a/sgl-model-gateway/src/core/worker_registry.rs +++ b/sgl-model-gateway/src/core/worker_registry.rs @@ -57,11 +57,16 @@ impl HashRing { for worker in workers { // Create Arc once per worker, share across all virtual nodes let url: Arc = Arc::from(worker.url()); + let url_bytes = url.as_bytes(); // Create multiple virtual nodes per worker for vnode in 0..VIRTUAL_NODES_PER_WORKER { - let vnode_key = format!("{}#{}", url, vnode); - let pos = Self::hash_position(&vnode_key); + let mut hasher = blake3::Hasher::new(); + hasher.update(url_bytes); + hasher.update(b"#"); + hasher.update(&(vnode as u64).to_le_bytes()); + let hash = hasher.finalize(); + let pos = u64::from_le_bytes(hash.as_bytes()[..8].try_into().unwrap()); entries.push((pos, Arc::clone(&url))); } }