But log10 loadshare scales universally. Both clusters will show values between 1.7 (50 RPS) and 3.7 (5,000 RPS). You can now create a for all clusters. 3. Autoscaling Algorithms Reactive autoscaling (e.g., KEDA, HPA) often uses thresholds like "scale if CPU > 80%". But CPU is a noisy metric. Request-based scaling using raw RPS is better, but it suffers from the "elephant vs. mouse" problem: a 10x spike in RPS on a small service looks identical to a 10% spike on a large service.
If you have ever stared at a load balancer’s dashboard showing wildly fluctuating request rates or struggled to visualize traffic distribution across 50 backend servers, the linear scale has failed you. Enter log10 loadshare —a logarithmic lens that compresses exponential disparities into readable, actionable insights. log10 loadshare
# Instantaneous loadshare per instance log10( sum by (instance) ( rate(http_requests_total[1m]) ) + 1 ) For a (threshold: any instance exceeds 3x the median): But log10 loadshare scales universally
def imbalance_score(raw_rates): """ Returns a score between 0 (perfect balance) and 1 (severe imbalance). Uses log10 scale to normalize across magnitudes. """ log_vals = log10_loadshare(raw_rates) max_log = max(log_vals) min_log = min(log_vals) # Theoretical maximum delta in log10 space for typical systems is ~5 return (max_log - min_log) / 5.0 backend_rates = [1500, 1200, 300, 1450, 1400] print(f"Log10 values: log10_loadshare(backend_rates)") print(f"Imbalance score: imbalance_score(backend_rates):.2f") Output: Imbalance score: 0.38 (moderate skew) In HAProxy or Nginx Log Analysis If you have raw access logs, you can compute log10 loadshare per backend server using a one-liner in awk : Request-based scaling using raw RPS is better, but