|
57 | 57 | MAX_AVG_DELTA_MS = float(os.environ.get("PROGRAMA_LAG_MAX_AVG_DELTA_MS", "12.0")) |
58 | 58 | MIN_BASELINE_P95_MS_FOR_RATIO = float(os.environ.get("PROGRAMA_LAG_MIN_BASELINE_P95_MS_FOR_RATIO", "6.0")) |
59 | 59 | MIN_BASELINE_AVG_MS_FOR_RATIO = float(os.environ.get("PROGRAMA_LAG_MIN_BASELINE_AVG_MS_FOR_RATIO", "4.0")) |
| 60 | +# Ratios are only meaningful when the churn result is actually slow: on fast |
| 61 | +# baselines (~6-8ms p95) a few ms of runner jitter doubles the ratio while |
| 62 | +# absolute latency stays excellent. Below these churn floors, the delta and |
| 63 | +# absolute caps still guard real regressions (a genuine 3x regression from a |
| 64 | +# 7ms baseline blows the 20ms p95 delta cap anyway). |
| 65 | +MIN_CHURN_P95_MS_FOR_RATIO = float(os.environ.get("PROGRAMA_LAG_MIN_CHURN_P95_MS_FOR_RATIO", "20.0")) |
| 66 | +MIN_CHURN_AVG_MS_FOR_RATIO = float(os.environ.get("PROGRAMA_LAG_MIN_CHURN_AVG_MS_FOR_RATIO", "14.0")) |
60 | 67 | MAX_CPU_PERCENT = float(os.environ.get("PROGRAMA_LAG_MAX_CPU_PERCENT", "180.0")) |
61 | 68 | ENFORCE_CPU = os.environ.get("PROGRAMA_LAG_ENFORCE_CPU", "0") == "1" |
62 | 69 | ALLOW_MAIN_SOCKET = os.environ.get("PROGRAMA_LAG_ALLOW_MAIN_SOCKET", "0") == "1" |
@@ -459,17 +466,25 @@ def main() -> int: |
459 | 466 | avg_ratio = churn.avg_ms / max(baseline.avg_ms, 0.001) |
460 | 467 | p95_delta_ms = churn.p95_ms - baseline.p95_ms |
461 | 468 | avg_delta_ms = churn.avg_ms - baseline.avg_ms |
462 | | - enforce_p95_ratio = baseline.p95_ms >= MIN_BASELINE_P95_MS_FOR_RATIO |
463 | | - enforce_avg_ratio = baseline.avg_ms >= MIN_BASELINE_AVG_MS_FOR_RATIO |
| 469 | + enforce_p95_ratio = ( |
| 470 | + baseline.p95_ms >= MIN_BASELINE_P95_MS_FOR_RATIO |
| 471 | + and churn.p95_ms >= MIN_CHURN_P95_MS_FOR_RATIO |
| 472 | + ) |
| 473 | + enforce_avg_ratio = ( |
| 474 | + baseline.avg_ms >= MIN_BASELINE_AVG_MS_FOR_RATIO |
| 475 | + and churn.avg_ms >= MIN_CHURN_AVG_MS_FOR_RATIO |
| 476 | + ) |
464 | 477 |
|
465 | 478 | print("\nComparison") |
466 | 479 | print( |
467 | 480 | f" p95_ratio: {p95_ratio:.2f}x (max {MAX_P95_RATIO:.2f}x, " |
468 | | - f"enabled when baseline p95 >= {MIN_BASELINE_P95_MS_FOR_RATIO:.2f}ms)" |
| 481 | + f"enabled when baseline p95 >= {MIN_BASELINE_P95_MS_FOR_RATIO:.2f}ms " |
| 482 | + f"and churn p95 >= {MIN_CHURN_P95_MS_FOR_RATIO:.2f}ms)" |
469 | 483 | ) |
470 | 484 | print( |
471 | 485 | f" avg_ratio: {avg_ratio:.2f}x (max {MAX_AVG_RATIO:.2f}x, " |
472 | | - f"enabled when baseline avg >= {MIN_BASELINE_AVG_MS_FOR_RATIO:.2f}ms)" |
| 486 | + f"enabled when baseline avg >= {MIN_BASELINE_AVG_MS_FOR_RATIO:.2f}ms " |
| 487 | + f"and churn avg >= {MIN_CHURN_AVG_MS_FOR_RATIO:.2f}ms)" |
473 | 488 | ) |
474 | 489 | print(f" churn_p95_ms: {churn.p95_ms:.2f} (max {MAX_CHURN_P95_MS:.2f})") |
475 | 490 | print(f" p95_delta_ms: {p95_delta_ms:.2f} (max {MAX_P95_DELTA_MS:.2f})") |
|
0 commit comments