@@ -16,18 +16,35 @@ def _overhead(key: str, b: float, p: float) -> str:
1616 return "-"
1717
1818
19- def format_report (baseline : dict , proxy : dict ) -> str :
20- header = f"{ 'Metric' :<25} { 'Baseline' :>12} { 'LiteLLM Proxy' :>14} { 'Overhead' :>12} "
19+ def format_report (baseline : dict , proxy : dict , ebpf : dict | None = None ) -> str :
20+ if ebpf is None :
21+ header = f"{ 'Metric' :<25} { 'Baseline' :>12} { 'LiteLLM Proxy' :>14} { 'Overhead' :>12} "
22+ sep = "-" * len (header )
23+ lines = [header , sep ]
24+ for row in ROWS :
25+ label , key , fmt = row [0 ], row [1 ], row [2 ]
26+ mult = row [3 ] if len (row ) > 3 else 1
27+ b = baseline .get (key , 0 ) * mult
28+ p = proxy .get (key , 0 ) * mult
29+ lines .append (f"{ label :<25} { format (b , fmt ):>12} { format (p , fmt ):>14} { _overhead (key , b , p ):>12} " )
30+ return "\n " .join (lines )
31+
32+ header = (
33+ f"{ 'Metric' :<25} { 'Baseline' :>12} { 'LiteLLM Proxy' :>14} { 'honeybeepf-llm' :>15} "
34+ f"{ 'Proxy Overhead' :>14} { 'eBPF Overhead' :>14} "
35+ )
2136 sep = "-" * len (header )
2237 lines = [header , sep ]
23-
2438 for row in ROWS :
2539 label , key , fmt = row [0 ], row [1 ], row [2 ]
2640 mult = row [3 ] if len (row ) > 3 else 1
2741 b = baseline .get (key , 0 ) * mult
2842 p = proxy .get (key , 0 ) * mult
29- lines .append (f"{ label :<25} { format (b , fmt ):>12} { format (p , fmt ):>14} { _overhead (key , b , p ):>12} " )
30-
43+ e = ebpf .get (key , 0 ) * mult
44+ lines .append (
45+ f"{ label :<25} { format (b , fmt ):>12} { format (p , fmt ):>14} { format (e , fmt ):>15} "
46+ f"{ _overhead (key , b , p ):>14} { _overhead (key , b , e ):>14} "
47+ )
3148 return "\n " .join (lines )
3249
3350
@@ -40,24 +57,38 @@ def format_markdown(results: dict) -> str:
4057
4158 baseline = data .get ("baseline" , {})
4259 proxy = data .get ("proxy" , {})
60+ ebpf = data .get ("ebpf" )
4361
4462 lines .append (f"### { scenario_name } " )
4563 lines .append ("" )
46- lines .append ("| Metric | Baseline | LiteLLM Proxy | Overhead |" )
47- lines .append ("|--------|----------|---------------|----------|" )
48-
49- for row in ROWS :
50- label , key , fmt = row [0 ], row [1 ], row [2 ]
51- mult = row [3 ] if len (row ) > 3 else 1
52- b = baseline .get (key , 0 ) * mult
53- p = proxy .get (key , 0 ) * mult
54- lines .append (f"| { label } | { format (b , fmt )} | { format (p , fmt )} | { _overhead (key , b , p )} |" )
5564
65+ if ebpf is None :
66+ lines .append ("| Metric | Baseline | LiteLLM Proxy | Overhead |" )
67+ lines .append ("|--------|----------|---------------|----------|" )
68+ for row in ROWS :
69+ label , key , fmt = row [0 ], row [1 ], row [2 ]
70+ mult = row [3 ] if len (row ) > 3 else 1
71+ b = baseline .get (key , 0 ) * mult
72+ p = proxy .get (key , 0 ) * mult
73+ lines .append (f"| { label } | { format (b , fmt )} | { format (p , fmt )} | { _overhead (key , b , p )} |" )
74+ else :
75+ lines .append ("| Metric | Baseline | LiteLLM Proxy | honeybeepf-llm | Proxy Overhead | eBPF Overhead |" )
76+ lines .append ("|--------|----------|---------------|----------------|----------------|----------------|" )
77+ for row in ROWS :
78+ label , key , fmt = row [0 ], row [1 ], row [2 ]
79+ mult = row [3 ] if len (row ) > 3 else 1
80+ b = baseline .get (key , 0 ) * mult
81+ p = proxy .get (key , 0 ) * mult
82+ e = ebpf .get (key , 0 ) * mult
83+ lines .append (
84+ f"| { label } | { format (b , fmt )} | { format (p , fmt )} | { format (e , fmt )} "
85+ f"| { _overhead (key , b , p )} | { _overhead (key , b , e )} |"
86+ )
5687 lines .append ("" )
5788
5889 if "kill" in results :
5990 k = results ["kill" ]
60- lines .append ("### Kill Test" )
91+ lines .append ("### Kill Test (LiteLLM Proxy only — single-arm, no baseline/eBPF analog) " )
6192 lines .append ("" )
6293 lines .append (f"- Proxy killed mid-load: **{ k ['errors' ]} ** requests failed ({ k ['error_rate' ]:.0%} error rate)" )
6394 lines .append ("" )
0 commit comments