

cd sgl-model-gateway
cargo bench # 跑全部 6 个已注册的
cargo bench --bench tree_benchmark -- benchmark_summary --exact # 单个快速验证


cd rust/sglang-mm
pip install maturin && maturin develop --release # 先编 Rust 扩展
python bench/generate_golden.py # 生成 fixtures
pytest bench/test_golden.py # 回归测试(注意:在 tests/ 下)
python bench/bench_parity.py # parity + benchmark


Compiling sglang-mm v0.1.0 (/home/y30075072/bench/sglang/rust/sglang-mm)
Finished `release` profile [optimized] target(s) in 12.25s
💥 maturin failed
Caused by: Failed to generate cffi declarations using /root/miniconda3/envs/l00556901/bin/python: exit status: 1
--- Stdout:
--- Stderr:
Traceback (most recent call last):
File "<string>", line 7, in <module>
File "/root/miniconda3/envs/l00556901/lib/python3.11/site-packages/cffi/api.py", line 112, in cdef
self._cdef(csource, override=override, packed=packed, pack=pack)
File "/root/miniconda3/envs/l00556901/lib/python3.11/site-packages/cffi/api.py", line 126, in _cdef
self._parser.parse(csource, override=override, **options)
File "/root/miniconda3/envs/l00556901/lib/python3.11/site-packages/cffi/cparser.py", line 390, in parse
self._internal_parse(csource)
File "/root/miniconda3/envs/l00556901/lib/python3.11/site-packages/cffi/cparser.py", line 397, in _internal_parse
self._process_macros(macros)
File "/root/miniconda3/envs/l00556901/lib/python3.11/site-packages/cffi/cparser.py", line 488, in _process_macros
raise CDefError(
cffi.CDefError: only supports one of the following syntax:
#define MAX_FETCH_BYTES ... (literally dot-dot-dot)
#define MAX_FETCH_BYTES NUMBER (with NUMBER an integer constant, decimal/hex/octal)
got:
#define MAX_FETCH_BYTES (64 << 20)
错误:sglang-mm 编译失败


rustfilt


{"run_name": "default", "batch_size": 32, "input_len": 256, "output_len": 32, "prefill_latency": 0.052822504192590714, "prefill_throughput": 155085.4153020082, "median_decode_latency": 0.0200568912550807, "median_decode_throughput": 1595.4616093306054, "total_latency": 0.6746031083166599, "overall_throughput": 13661.366048248317}


0.32% 0.00% 0 sgl-mm-0 _core.cpython-311-aarch64-linux-gnu.so [.] 0x0000fffd738fa497
0.32% 0.00% 0 sgl-mm-0 _core.cpython-311-aarch64-linux-gnu.so [.] 0x0000fffd738fae5f


_core.cpython-311-arch64-linux-gnu.so
_specialufncs.cpython-1-arch64-linux-gu.so
libarm_compute.so
libc10.so
libllvmlite.so
libstdc++so.6.0.34
libtorch_cpu.so
libtorch_python.so
libtriton.so


bench/sglang/bench_gateway_runs_20260804_204931/run_001/G01/noperf_logs/gateway_noperf_output.log的结果:
=== 用例 G01 noperf 测试开始: 2026-08-04 20:53:40 ===
Bench: request_processing
描述: 请求序列化/反序列化 + PD bootstrap
Criterion: --sample-size 30 --measurement-time 3
命令: cargo bench --bench request_processing -- --sample-size 30 --measurement-time 3
==========================================
warning: /home/y30075072/bench/sglang/sgl-model-gateway/Cargo.toml: file `/home/y30075072/bench/sglang/sgl-model-gateway/src/main.rs` found to be present in multiple build targets:
* `bin` target `amg`
* `bin` target `sgl-model-gateway`
* `bin` target `smg`
Finished `bench` profile [optimized] target(s) in 0.31s
Running benches/request_processing.rs (target/release/deps/request_processing-530c155d60d1e8d9)
Gnuplot not found, using plotters backend
SGLang Model Gateway Performance Benchmark Suite
=================================================
Quick Performance Overview:
* Serialization (avg): 911 ns/req
* Deserialization (avg): 1545 ns/req
* Bootstrap Injection (avg): 2059 ns/req
* Total Pipeline (avg): 4515 ns/req
Performance Insights:
• Total pipeline latency is excellent (< 100μs)
Simplification Benefits:
• Eliminated complex type conversion layer
• Reduced memory allocations
• Automatic field preservation (no manual mapping)
• Direct JSON manipulation improves performance
Recommendations:
• PD mode overhead is minimal - safe to use for latency-sensitive workloads
• Consider batching small requests to improve overall throughput
==================================================
Benchmarking json_serialization/generate_request
Benchmarking json_serialization/generate_request: Warming up for 3.0000 s
Benchmarking json_serialization/generate_request: Collecting 30 samples in estimated 3.0000 s (3.4M iterations)
Benchmarking json_serialization/generate_request: Analyzing
json_serialization/generate_request
time: [875.41 ns 877.09 ns 878.45 ns]
change: [-0.0404% +0.2098% +0.4513%] (p = 0.09 > 0.05)
No change in performance detected.
Benchmarking json_serialization/chat_completion_request
Benchmarking json_serialization/chat_completion_request: Warming up for 3.0000 s
Benchmarking json_serialization/chat_completion_request: Collecting 30 samples in estimated 3.0003 s (2.5M iterations)
Benchmarking json_serialization/chat_completion_request: Analyzing
json_serialization/chat_completion_request
time: [1.1941 µs 1.1948 µs 1.1956 µs]
change: [-2.1919% -2.1030% -2.0185%] (p = 0.00 < 0.05)
Performance has improved.
Found 1 outliers among 30 measurements (3.33%)
1 (3.33%) high mild
Benchmarking json_serialization/completion_request
Benchmarking json_serialization/completion_request: Warming up for 3.0000 s
Benchmarking json_serialization/completion_request: Collecting 30 samples in estimated 3.0000 s (3.9M iterations)
Benchmarking json_serialization/completion_request: Analyzing
json_serialization/completion_request
time: [759.75 ns 761.30 ns 763.18 ns]
change: [-3.3330% -3.0530% -2.7681%] (p = 0.00 < 0.05)
Performance has improved.
Found 4 outliers among 30 measurements (13.33%)
1 (3.33%) low severe
1 (3.33%) low mild
2 (6.67%) high mild
Benchmarking json_serialization/large_chat_completion_request
Benchmarking json_serialization/large_chat_completion_request: Warming up for 3.0000 s
Benchmarking json_serialization/large_chat_completion_request: Collecting 30 samples in estimated 3.0009 s (143k iterations)
Benchmarking json_serialization/large_chat_completion_request: Analyzing
json_serialization/large_chat_completion_request
time: [20.971 µs 20.974 µs 20.976 µs]
change: [-0.1983% -0.1742% -0.1510%] (p = 0.00 < 0.05)
Change within noise threshold.
Found 3 outliers among 30 measurements (10.00%)
2 (6.67%) low mild
1 (3.33%) high mild
Benchmarking json_serialization/generate_request_to_bytes
Benchmarking json_serialization/generate_request_to_bytes: Warming up for 3.0000 s
Benchmarking json_serialization/generate_request_to_bytes: Collecting 30 samples in estimated 3.0002 s (3.3M iterations)
Benchmarking json_serialization/generate_request_to_bytes: Analyzing
json_serialization/generate_request_to_bytes
time: [899.46 ns 899.92 ns 900.37 ns]
change: [+0.7515% +0.8822% +1.0081%] (p = 0.00 < 0.05)
Change within noise threshold.
Found 2 outliers among 30 measurements (6.67%)
2 (6.67%) high severe
Benchmarking json_deserialization/generate_request
Benchmarking json_deserialization/generate_request: Warming up for 3.0000 s
Benchmarking json_deserialization/generate_request: Collecting 30 samples in estimated 3.0005 s (2.0M iterations)
Benchmarking json_deserialization/generate_request: Analyzing
json_deserialization/generate_request
time: [1.5150 µs 1.5162 µs 1.5177 µs]
change: [-0.9468% -0.8304% -0.7143%] (p = 0.00 < 0.05)
Change within noise threshold.
Benchmarking json_deserialization/chat_completion_request
Benchmarking json_deserialization/chat_completion_request: Warming up for 3.0000 s
Benchmarking json_deserialization/chat_completion_request: Collecting 30 samples in estimated 3.0001 s (1.3M iterations)
Benchmarking json_deserialization/chat_completion_request: Analyzing
json_deserialization/chat_completion_request
time: [2.2429 µs 2.2464 µs 2.2496 µs]
change: [-1.0823% -0.9724% -0.8630%] (p = 0.00 < 0.05)
Change within noise threshold.
Found 3 outliers among 30 measurements (10.00%)
2 (6.67%) low mild
1 (3.33%) high severe
Benchmarking json_deserialization/completion_request
Benchmarking json_deserialization/completion_request: Warming up for 3.0000 s
Benchmarking json_deserialization/completion_request: Collecting 30 samples in estimated 3.0002 s (2.8M iterations)
Benchmarking json_deserialization/completion_request: Analyzing
json_deserialization/completion_request
time: [1.0910 µs 1.0927 µs 1.0940 µs]
change: [-0.3832% -0.1948% -0.0081%] (p = 0.05 < 0.05)
Change within noise threshold.
Found 1 outliers among 30 measurements (3.33%)
1 (3.33%) low mild
Benchmarking json_deserialization/large_chat_completion_request
Benchmarking json_deserialization/large_chat_completion_request: Warming up for 3.0000 s
Benchmarking json_deserialization/large_chat_completion_request: Collecting 30 samples in estimated 3.0018 s (104k iterations)
Benchmarking json_deserialization/large_chat_completion_request: Analyzing
json_deserialization/large_chat_completion_request
time: [29.210 µs 29.215 µs 29.221 µs]
change: [+0.0887% +0.1251% +0.1591%] (p = 0.00 < 0.05)
Change within noise threshold.
Benchmarking bootstrap_injection/generate_bootstrap_injection
Benchmarking bootstrap_injection/generate_bootstrap_injection: Warming up for 3.0000 s
Benchmarking bootstrap_injection/generate_bootstrap_injection: Collecting 30 samples in estimated 3.0009 s (1.4M iterations)
Benchmarking bootstrap_injection/generate_bootstrap_injection: Analyzing
bootstrap_injection/generate_bootstrap_injection
time: [2.1097 µs 2.1104 µs 2.1110 µs]
change: [-0.6887% -0.6429% -0.5904%] (p = 0.00 < 0.05)
Change within noise threshold.
Found 2 outliers among 30 measurements (6.67%)
2 (6.67%) high mild
Benchmarking bootstrap_injection/chat_completion_bootstrap_injection
Benchmarking bootstrap_injection/chat_completion_bootstrap_injection: Warming up for 3.0000 s
Benchmarking bootstrap_injection/chat_completion_bootstrap_injection: Collecting 30 samples in estimated 3.0001 s (940k iterations)
Benchmarking bootstrap_injection/chat_completion_bootstrap_injection: Analyzing
bootstrap_injection/chat_completion_bootstrap_injection
time: [3.0278 µs 3.0291 µs 3.0303 µs]
change: [+0.1610% +0.2047% +0.2536%] (p = 0.00 < 0.05)
Change within noise threshold.
Benchmarking bootstrap_injection/completion_bootstrap_injection
Benchmarking bootstrap_injection/completion_bootstrap_injection: Warming up for 3.0000 s
Benchmarking bootstrap_injection/completion_bootstrap_injection: Collecting 30 samples in estimated 3.0005 s (1.5M iterations)
Benchmarking bootstrap_injection/completion_bootstrap_injection: Analyzing
bootstrap_injection/completion_bootstrap_injection
time: [2.0064 µs 2.0073 µs 2.0082 µs]
change: [-4.1043% -4.0434% -3.9855%] (p = 0.00 < 0.05)
Performance has improved.
Found 1 outliers among 30 measurements (3.33%)
1 (3.33%) low mild
Benchmarking bootstrap_injection/large_chat_completion_bootstrap_injection
Benchmarking bootstrap_injection/large_chat_completion_bootstrap_injection: Warming up for 3.0000 s
Benchmarking bootstrap_injection/large_chat_completion_bootstrap_injection: Collecting 30 samples in estimated 3.0064 s (76k iterations)
Benchmarking bootstrap_injection/large_chat_completion_bootstrap_injection: Analyzing
bootstrap_injection/large_chat_completion_bootstrap_injection
time: [39.473 µs 39.479 µs 39.484 µs]
change: [+6.0500% +6.1008% +6.1577%] (p = 0.00 < 0.05)
Performance has regressed.
Found 2 outliers among 30 measurements (6.67%)
1 (3.33%) low mild
1 (3.33%) high severe
Benchmarking direct_json_routing/generate_to_json
Benchmarking direct_json_routing/generate_to_json: Warming up for 3.0000 s
Benchmarking direct_json_routing/generate_to_json: Collecting 30 samples in estimated 3.0002 s (1.6M iterations)
Benchmarking direct_json_routing/generate_to_json: Analyzing
direct_json_routing/generate_to_json
time: [1.8309 µs 1.8317 µs 1.8324 µs]
change: [+1.2327% +1.3089% +1.3845%] (p = 0.00 < 0.05)
Performance has regressed.
Found 3 outliers among 30 measurements (10.00%)
3 (10.00%) low mild
Benchmarking direct_json_routing/generate_to_json_string
Benchmarking direct_json_routing/generate_to_json_string: Warming up for 3.0000 s
Benchmarking direct_json_routing/generate_to_json_string: Collecting 30 samples in estimated 3.0001 s (3.3M iterations)
Benchmarking direct_json_routing/generate_to_json_string: Analyzing
direct_json_routing/generate_to_json_string
time: [891.19 ns 892.66 ns 893.99 ns]
change: [+0.5391% +0.6756% +0.8110%] (p = 0.00 < 0.05)
Change within noise threshold.
Benchmarking direct_json_routing/generate_to_bytes
Benchmarking direct_json_routing/generate_to_bytes: Warming up for 3.0000 s
Benchmarking direct_json_routing/generate_to_bytes: Collecting 30 samples in estimated 3.0003 s (3.3M iterations)
Benchmarking direct_json_routing/generate_to_bytes: Analyzing
direct_json_routing/generate_to_bytes
time: [901.06 ns 902.08 ns 903.00 ns]
change: [-0.4458% -0.3022% -0.1653%] (p = 0.00 < 0.05)
Change within noise threshold.
Benchmarking direct_json_routing/chat_completion_to_json
Benchmarking direct_json_routing/chat_completion_to_json: Warming up for 3.0000 s
Benchmarking direct_json_routing/chat_completion_to_json: Collecting 30 samples in estimated 3.0009 s (1.2M iterations)
Benchmarking direct_json_routing/chat_completion_to_json: Analyzing
direct_json_routing/chat_completion_to_json
time: [2.4161 µs 2.4169 µs 2.4177 µs]
change: [-3.8534% -3.8019% -3.7532%] (p = 0.00 < 0.05)
Performance has improved.
Benchmarking direct_json_routing/chat_completion_to_json_string
Benchmarking direct_json_routing/chat_completion_to_json_string: Warming up for 3.0000 s
Benchmarking direct_json_routing/chat_completion_to_json_string: Collecting 30 samples in estimated 3.0005 s (2.5M iterations)
Benchmarking direct_json_routing/chat_completion_to_json_string: Analyzing
direct_json_routing/chat_completion_to_json_string
time: [1.2186 µs 1.2218 µs 1.2244 µs]
change: [-0.0751% +0.0762% +0.2368%] (p = 0.37 > 0.05)
No change in performance detected.
Found 1 outliers among 30 measurements (3.33%)
1 (3.33%) high mild
Benchmarking direct_json_routing/completion_to_json
Benchmarking direct_json_routing/completion_to_json: Warming up for 3.0000 s
Benchmarking direct_json_routing/completion_to_json: Collecting 30 samples in estimated 3.0008 s (1.6M iterations)
Benchmarking direct_json_routing/completion_to_json: Analyzing
direct_json_routing/completion_to_json
time: [1.8651 µs 1.8656 µs 1.8661 µs]
change: [-0.6651% -0.6060% -0.5455%] (p = 0.00 < 0.05)
Change within noise threshold.
Found 5 outliers among 30 measurements (16.67%)
5 (16.67%) high mild
Benchmarking throughput_by_size/serialize/small
Benchmarking throughput_by_size/serialize/small: Warming up for 3.0000 s
Benchmarking throughput_by_size/serialize/small: Collecting 30 samples in estimated 3.0001 s (6.8M iterations)
Benchmarking throughput_by_size/serialize/small: Analyzing
throughput_by_size/serialize/small
time: [443.44 ns 443.54 ns 443.65 ns]
thrpt: [429.92 MiB/s 430.03 MiB/s 430.13 MiB/s]
change:
time: [-0.6373% -0.5719% -0.5015%] (p = 0.00 < 0.05)
thrpt: [+0.5040% +0.5752% +0.6414%]
Change within noise threshold.
Found 6 outliers among 30 measurements (20.00%)
1 (3.33%) low mild
2 (6.67%) high mild
3 (10.00%) high severe
Benchmarking throughput_by_size/deserialize/small
Benchmarking throughput_by_size/deserialize/small: Warming up for 3.0000 s
Benchmarking throughput_by_size/deserialize/small: Collecting 30 samples in estimated 3.0005 s (2.5M iterations)
Benchmarking throughput_by_size/deserialize/small: Analyzing
throughput_by_size/deserialize/small
time: [1.2061 µs 1.2084 µs 1.2108 µs]
thrpt: [157.53 MiB/s 157.83 MiB/s 158.14 MiB/s]
change:
time: [-0.5688% -0.3423% -0.1358%] (p = 0.00 < 0.05)
thrpt: [+0.1360% +0.3435% +0.5720%]
Change within noise threshold.
Benchmarking throughput_by_size/bootstrap_inject/small
Benchmarking throughput_by_size/bootstrap_inject/small: Warming up for 3.0000 s
Benchmarking throughput_by_size/bootstrap_inject/small: Collecting 30 samples in estimated 3.0006 s (2.0M iterations)
Benchmarking throughput_by_size/bootstrap_inject/small: Analyzing
throughput_by_size/bootstrap_inject/small
time: [1.5671 µs 1.5679 µs 1.5688 µs]
thrpt: [121.58 MiB/s 121.65 MiB/s 121.71 MiB/s]
change:
time: [+10.753% +10.848% +10.955%] (p = 0.00 < 0.05)
thrpt: [-9.8737% -9.7860% -9.7087%]
Performance has regressed.
Benchmarking throughput_by_size/serialize/medium
Benchmarking throughput_by_size/serialize/medium: Warming up for 3.0000 s
Benchmarking throughput_by_size/serialize/medium: Collecting 30 samples in estimated 3.0001 s (4.4M iterations)
Benchmarking throughput_by_size/serialize/medium: Analyzing
throughput_by_size/serialize/medium
time: [684.84 ns 685.73 ns 686.76 ns]
thrpt: [774.87 MiB/s 776.03 MiB/s 777.04 MiB/s]
change:
time: [+1.9475% +2.1017% +2.2475%] (p = 0.00 < 0.05)
thrpt: [-2.1981% -2.0585% -1.9103%]
Performance has regressed.
Benchmarking throughput_by_size/deserialize/medium
Benchmarking throughput_by_size/deserialize/medium: Warming up for 3.0000 s
Benchmarking throughput_by_size/deserialize/medium: Collecting 30 samples in estimated 3.0004 s (2.4M iterations)
Benchmarking throughput_by_size/deserialize/medium: Analyzing
throughput_by_size/deserialize/medium
time: [1.2663 µs 1.2684 µs 1.2703 µs]
thrpt: [418.92 MiB/s 419.55 MiB/s 420.23 MiB/s]
change:
time: [-0.4756% -0.2507% -0.0273%] (p = 0.04 < 0.05)
thrpt: [+0.0273% +0.2513% +0.4779%]
Change within noise threshold.
Found 1 outliers among 30 measurements (3.33%)
1 (3.33%) high mild
Benchmarking throughput_by_size/bootstrap_inject/medium
Benchmarking throughput_by_size/bootstrap_inject/medium: Warming up for 3.0000 s
Benchmarking throughput_by_size/bootstrap_inject/medium: Collecting 30 samples in estimated 3.0004 s (2.2M iterations)
Benchmarking throughput_by_size/bootstrap_inject/medium: Analyzing
throughput_by_size/bootstrap_inject/medium
time: [1.3928 µs 1.3967 µs 1.4007 µs]
thrpt: [379.90 MiB/s 381.00 MiB/s 382.09 MiB/s]
change:
time: [-0.6226% -0.4162% -0.2014%] (p = 0.00 < 0.05)
thrpt: [+0.2018% +0.4179% +0.6265%]
Change within noise threshold.
Benchmarking throughput_by_size/serialize/large
Benchmarking throughput_by_size/serialize/large: Warming up for 3.0000 s
Benchmarking throughput_by_size/serialize/large: Collecting 30 samples in estimated 3.0019 s (528k iterations)
Benchmarking throughput_by_size/serialize/large: Analyzing
throughput_by_size/serialize/large
time: [5.6806 µs 5.6809 µs 5.6811 µs]
thrpt: [1.5406 GiB/s 1.5407 GiB/s 1.5408 GiB/s]
change:
time: [-0.3683% -0.3399% -0.3163%] (p = 0.00 < 0.05)
thrpt: [+0.3173% +0.3411% +0.3697%]
Change within noise threshold.
Found 5 outliers among 30 measurements (16.67%)
3 (10.00%) high mild
2 (6.67%) high severe
Benchmarking throughput_by_size/deserialize/large
Benchmarking throughput_by_size/deserialize/large: Warming up for 3.0000 s
Benchmarking throughput_by_size/deserialize/large: Collecting 30 samples in estimated 3.0005 s (1.2M iterations)
Benchmarking throughput_by_size/deserialize/large: Analyzing
throughput_by_size/deserialize/large
time: [2.4321 µs 2.4327 µs 2.4334 µs]
thrpt: [3.5969 GiB/s 3.5978 GiB/s 3.5988 GiB/s]
change:
time: [-0.0500% +0.0031% +0.0533%] (p = 0.90 > 0.05)
thrpt: [-0.0533% -0.0031% +0.0500%]
No change in performance detected.
Found 1 outliers among 30 measurements (3.33%)
1 (3.33%) low mild
Benchmarking throughput_by_size/bootstrap_inject/large
Benchmarking throughput_by_size/bootstrap_inject/large: Warming up for 3.0000 s
Benchmarking throughput_by_size/bootstrap_inject/large: Collecting 30 samples in estimated 3.0002 s (1.9M iterations)
Benchmarking throughput_by_size/bootstrap_inject/large: Analyzing
throughput_by_size/bootstrap_inject/large
time: [1.5962 µs 1.5971 µs 1.5978 µs]
thrpt: [5.4779 GiB/s 5.4803 GiB/s 5.4835 GiB/s]
change:
time: [-0.2420% -0.0885% +0.0453%] (p = 0.26 > 0.05)
thrpt: [-0.0452% +0.0886% +0.2426%]
No change in performance detected.
Benchmarking full_round_trip/generate_openai_to_pd_pipeline
Benchmarking full_round_trip/generate_openai_to_pd_pipeline: Warming up for 3.0000 s
Benchmarking full_round_trip/generate_openai_to_pd_pipeline: Collecting 30 samples in estimated 3.0007 s (1.2M iterations)
Benchmarking full_round_trip/generate_openai_to_pd_pipeline: Analyzing
full_round_trip/generate_openai_to_pd_pipeline
time: [2.5694 µs 2.5708 µs 2.5719 µs]
change: [+1.0315% +1.0975% +1.1628%] (p = 0.00 < 0.05)
Performance has regressed.
Benchmarking full_round_trip/chat_completion_openai_to_pd_pipeline
Benchmarking full_round_trip/chat_completion_openai_to_pd_pipeline: Warming up for 3.0000 s
Benchmarking full_round_trip/chat_completion_openai_to_pd_pipeline: Collecting 30 samples in estimated 3.0004 s (809k iterations)
Benchmarking full_round_trip/chat_completion_openai_to_pd_pipeline: Analyzing
full_round_trip/chat_completion_openai_to_pd_pipeline
time: [3.7205 µs 3.7238 µs 3.7273 µs]
change: [-0.1422% -0.0697% +0.0080%] (p = 0.09 > 0.05)
No change in performance detected.
Benchmarking full_round_trip/completion_openai_to_pd_pipeline
Benchmarking full_round_trip/completion_openai_to_pd_pipeline: Warming up for 3.0000 s
Benchmarking full_round_trip/completion_openai_to_pd_pipeline: Collecting 30 samples in estimated 3.0007 s (1.5M iterations)
Benchmarking full_round_trip/completion_openai_to_pd_pipeline: Analyzing
full_round_trip/completion_openai_to_pd_pipeline
time: [2.0244 µs 2.0253 µs 2.0262 µs]
change: [-0.9520% -0.9003% -0.8364%] (p = 0.00 < 0.05)
Change within noise threshold.
Found 2 outliers among 30 measurements (6.67%)
1 (3.33%) high mild
1 (3.33%) high severe
Benchmarking full_round_trip/generate_direct_json_pipeline
Benchmarking full_round_trip/generate_direct_json_pipeline: Warming up for 3.0000 s
Benchmarking full_round_trip/generate_direct_json_pipeline: Collecting 30 samples in estimated 3.0013 s (706k iterations)
Benchmarking full_round_trip/generate_direct_json_pipeline: Analyzing
full_round_trip/generate_direct_json_pipeline
time: [4.2737 µs 4.2760 µs 4.2782 µs]
change: [+0.8317% +0.8796% +0.9230%] (p = 0.00 < 0.05)
Change within noise threshold.
==========================================
=== 用例 G01 noperf 测试结束: 2026-08-04 20:57:43 ===
运行时长: 243秒
退出码: 0
bench/sglang/bench_gateway_runs_20260804_204931/run_001/G02/noperf_logs/gateway_noperf_output.log的结果:
=== 用例 G02 noperf 测试开始: 2026-08-04 21:02:08 ===
Bench: tree_benchmark
描述: radix tree 缓存感知路由
Criterion: --sample-size 30 --measurement-time 3
命令: cargo bench --bench tree_benchmark -- --sample-size 30 --measurement-time 3
==========================================
warning: /home/y30075072/bench/sglang/sgl-model-gateway/Cargo.toml: file `/home/y30075072/bench/sglang/sgl-model-gateway/src/main.rs` found to be present in multiple build targets:
* `bin` target `amg`
* `bin` target `sgl-model-gateway`
* `bin` target `smg`
Finished `bench` profile [optimized] target(s) in 0.31s
Running benches/tree_benchmark.rs (target/release/deps/tree_benchmark-5a7b26c695b5c6b0)
Gnuplot not found, using plotters backend
Benchmarking insert_throughput/random_text/10
Benchmarking insert_throughput/random_text/10: Warming up for 3.0000 s
[BENCH_RESULT] insert | random_text_10 | 10 | 211416 | 10
Benchmarking insert_throughput/random_text/10: Collecting 30 samples in estimated 3.0002 s (5.1M iterations)
Benchmarking insert_throughput/random_text/10: Analyzing
insert_throughput/random_text/10
time: [597.41 ns 599.39 ns 601.90 ns]
thrpt: [1.6614 Melem/s 1.6684 Melem/s 1.6739 Melem/s]
change:
time: [-4.0339% -1.3178% +1.3328%] (p = 0.37 > 0.05)
thrpt: [-1.3153% +1.3354% +4.2035%]
No change in performance detected.
Found 4 outliers among 30 measurements (13.33%)
2 (6.67%) high mild
2 (6.67%) high severe
Benchmarking insert_throughput/random_text/50
Benchmarking insert_throughput/random_text/50: Warming up for 3.0000 s
[BENCH_RESULT] insert | random_text_50 | 50 | 78493 | 10
Benchmarking insert_throughput/random_text/50: Collecting 30 samples in estimated 3.0001 s (4.7M iterations)
Benchmarking insert_throughput/random_text/50: Analyzing
insert_throughput/random_text/50
time: [645.46 ns 647.65 ns 649.94 ns]
thrpt: [1.5386 Melem/s 1.5440 Melem/s 1.5493 Melem/s]
change:
time: [-3.5193% -0.9744% +1.8937%] (p = 0.52 > 0.05)
thrpt: [-1.8585% +0.9840% +3.6476%]
No change in performance detected.
Found 4 outliers among 30 measurements (13.33%)
1 (3.33%) high mild
3 (10.00%) high severe
Benchmarking insert_throughput/random_text/100
Benchmarking insert_throughput/random_text/100: Warming up for 3.0000 s
[BENCH_RESULT] insert | random_text_100 | 100 | 105263 | 10
Benchmarking insert_throughput/random_text/100: Collecting 30 samples in estimated 3.0002 s (4.2M iterations)
Benchmarking insert_throughput/random_text/100: Analyzing
insert_throughput/random_text/100
time: [720.45 ns 721.66 ns 723.31 ns]
thrpt: [1.3825 Melem/s 1.3857 Melem/s 1.3880 Melem/s]
change:
time: [-3.6413% -1.0872% +1.4526%] (p = 0.45 > 0.05)
thrpt: [-1.4318% +1.0991% +3.7789%]
No change in performance detected.
Found 4 outliers among 30 measurements (13.33%)
1 (3.33%) high mild
3 (10.00%) high severe
Benchmarking insert_throughput/random_text/500
Benchmarking insert_throughput/random_text/500: Warming up for 3.0000 s
[BENCH_RESULT] insert | random_text_500 | 500 | 77459 | 10
Benchmarking insert_throughput/random_text/500: Collecting 30 samples in estimated 3.0001 s (2.3M iterations)
Benchmarking insert_throughput/random_text/500: Analyzing
insert_throughput/random_text/500
time: [1.3302 µs 1.3349 µs 1.3397 µs]
thrpt: [746.46 Kelem/s 749.10 Kelem/s 751.75 Kelem/s]
change:
time: [-3.2034% -0.8971% +1.3042%] (p = 0.49 > 0.05)
thrpt: [-1.2874% +0.9052% +3.3094%]
No change in performance detected.
Found 5 outliers among 30 measurements (16.67%)
1 (3.33%) low mild
2 (6.67%) high mild
2 (6.67%) high severe
Benchmarking insert_throughput/shared_prefix_100
Benchmarking insert_throughput/shared_prefix_100: Warming up for 3.0000 s
[BENCH_RESULT] insert | shared_prefix | ~58 | 131234 | 10
Benchmarking insert_throughput/shared_prefix_100: Collecting 30 samples in estimated 3.0001 s (4.1M iterations)
Benchmarking insert_throughput/shared_prefix_100: Analyzing
insert_throughput/shared_prefix_100
time: [736.28 ns 738.17 ns 740.22 ns]
thrpt: [1.3510 Melem/s 1.3547 Melem/s 1.3582 Melem/s]
change:
time: [-3.8069% -0.8914% +2.0861%] (p = 0.60 > 0.05)
thrpt: [-2.0434% +0.8995% +3.9575%]
No change in performance detected.
Found 3 outliers among 30 measurements (10.00%)
1 (3.33%) high mild
2 (6.67%) high severe
Benchmarking insert_throughput/realistic_llm_requests
Benchmarking insert_throughput/realistic_llm_requests: Warming up for 3.0000 s
[BENCH_RESULT] insert | realistic_llm | ~100 | 125786 | 10
Benchmarking insert_throughput/realistic_llm_requests: Collecting 30 samples in estimated 3.0017 s (767k iterations)
Benchmarking insert_throughput/realistic_llm_requests: Analyzing
insert_throughput/realistic_llm_requests
time: [3.9235 µs 3.9359 µs 3.9499 µs]
thrpt: [253.17 Kelem/s 254.07 Kelem/s 254.88 Kelem/s]
change:
time: [-1.9598% -0.7418% +0.5469%] (p = 0.27 > 0.05)
thrpt: [-0.5439% +0.7474% +1.9990%]
No change in performance detected.
Found 4 outliers among 30 measurements (13.33%)
1 (3.33%) high mild
3 (10.00%) high severe
Benchmarking prefix_match_latency/cache_hit
Benchmarking prefix_match_latency/cache_hit: Warming up for 3.0000 s
[BENCH_RESULT] prefix_match | cache_hit | 431034 | 2320.0
Benchmarking prefix_match_latency/cache_hit: Collecting 30 samples in estimated 3.0002 s (6.3M iterations)
Benchmarking prefix_match_latency/cache_hit: Analyzing
prefix_match_latency/cache_hit
time: [480.21 ns 481.30 ns 482.30 ns]
change: [-1.1801% -0.9843% -0.7885%] (p = 0.00 < 0.05)
Change within noise threshold.
Found 1 outliers among 30 measurements (3.33%)
1 (3.33%) high mild
Benchmarking prefix_match_latency/cache_miss
Benchmarking prefix_match_latency/cache_miss: Warming up for 3.0000 s
[BENCH_RESULT] prefix_match | cache_miss | 237530 | 4210.0
Benchmarking prefix_match_latency/cache_miss: Collecting 30 samples in estimated 3.0000 s (19M iterations)
Benchmarking prefix_match_latency/cache_miss: Analyzing
prefix_match_latency/cache_miss
time: [154.91 ns 155.13 ns 155.38 ns]
change: [+17.173% +17.410% +17.598%] (p = 0.00 < 0.05)
Performance has regressed.
Found 3 outliers among 30 measurements (10.00%)
1 (3.33%) low severe
2 (6.67%) high mild
Benchmarking prefix_match_latency/partial_match
Benchmarking prefix_match_latency/partial_match: Warming up for 3.0000 s
[BENCH_RESULT] prefix_match | partial_match | 90253 | 11080.0
Benchmarking prefix_match_latency/partial_match: Collecting 30 samples in estimated 3.0000 s (12M iterations)
Benchmarking prefix_match_latency/partial_match: Analyzing
prefix_match_latency/partial_match
time: [240.75 ns 241.21 ns 241.69 ns]
change: [+1.7218% +1.8943% +2.0690%] (p = 0.00 < 0.05)
Performance has regressed.
Found 1 outliers among 30 measurements (3.33%)
1 (3.33%) high mild
Benchmarking concurrent/mixed_workload/2
Benchmarking concurrent/mixed_workload/2: Warming up for 3.0000 s
[BENCH_RESULT] concurrent | mixed_workload_2_threads | 2 | 265897 | 132949
Benchmarking concurrent/mixed_workload/2: Collecting 50 samples in estimated 3.4818 s (3825 iterations)
Benchmarking concurrent/mixed_workload/2: Analyzing
concurrent/mixed_workload/2
time: [893.47 µs 925.36 µs 968.99 µs]
change: [-65.619% -64.676% -63.539%] (p = 0.00 < 0.05)
Performance has improved.
Found 7 outliers among 50 measurements (14.00%)
1 (2.00%) low mild
6 (12.00%) high severe
Benchmarking concurrent/mixed_workload/4
Benchmarking concurrent/mixed_workload/4: Warming up for 3.0000 s
[BENCH_RESULT] concurrent | mixed_workload_4_threads | 4 | 469274 | 117319
Benchmarking concurrent/mixed_workload/4: Collecting 50 samples in estimated 3.7686 s (2550 iterations)
Benchmarking concurrent/mixed_workload/4: Analyzing
concurrent/mixed_workload/4
time: [1.4106 ms 1.4144 ms 1.4185 ms]
change: [-62.874% -62.629% -62.404%] (p = 0.00 < 0.05)
Performance has improved.
Found 2 outliers among 50 measurements (4.00%)
2 (4.00%) high mild
Benchmarking concurrent/mixed_workload/8
Benchmarking concurrent/mixed_workload/8: Warming up for 3.0000 s
[BENCH_RESULT] concurrent | mixed_workload_8_threads | 8 | 522650 | 65331
Benchmarking concurrent/mixed_workload/8: Collecting 50 samples in estimated 5.7678 s (2550 iterations)
Benchmarking concurrent/mixed_workload/8: Analyzing
concurrent/mixed_workload/8
time: [2.2126 ms 2.2627 ms 2.3203 ms]
change: [-64.616% -63.893% -63.078%] (p = 0.00 < 0.05)
Performance has improved.
Found 9 outliers among 50 measurements (18.00%)
2 (4.00%) high mild
7 (14.00%) high severe
Benchmarking concurrent/mixed_workload/16
Benchmarking concurrent/mixed_workload/16: Warming up for 3.0000 s
[BENCH_RESULT] concurrent | mixed_workload_16_threads | 16 | 436476 | 27280
Benchmarking concurrent/mixed_workload/16: Collecting 50 samples in estimated 3.0375 s (500 iterations)
Benchmarking concurrent/mixed_workload/16: Analyzing
concurrent/mixed_workload/16
time: [5.8638 ms 6.0346 ms 6.2120 ms]
change: [-52.038% -50.493% -48.855%] (p = 0.00 < 0.05)
Performance has improved.
Benchmarking concurrent/high_contention_10_tenants
Benchmarking concurrent/high_contention_10_tenants: Warming up for 3.0000 s
[BENCH_RESULT] concurrent | high_contention | 10 | 898513 | 89851
Benchmarking concurrent/high_contention_10_tenants: Collecting 50 samples in estimated 4.4050 s (2550 iterations)
Benchmarking concurrent/high_contention_10_tenants: Analyzing
concurrent/high_contention_10_tenants
time: [1.7100 ms 1.7130 ms 1.7162 ms]
change: [-70.495% -70.292% -70.042%] (p = 0.00 < 0.05)
Performance has improved.
Found 4 outliers among 50 measurements (8.00%)
3 (6.00%) high mild
1 (2.00%) high severe
Benchmarking eviction/evict_to_half_single_tenant/1000
Benchmarking eviction/evict_to_half_single_tenant/1000: Warming up for 3.0000 s
[BENCH_RESULT] eviction | single_tenant_1000 | 1000 | 485 | 2.00
Benchmarking eviction/evict_to_half_single_tenant/1000: Collecting 20 samples in estimated 3.4590 s (840 iterations)
Benchmarking eviction/evict_to_half_single_tenant/1000: Analyzing
eviction/evict_to_half_single_tenant/1000
time: [2.2167 ms 2.2759 ms 2.3388 ms]
change: [-7.1226% -3.3372% +0.4803%] (p = 0.12 > 0.05)
No change in performance detected.
Benchmarking eviction/evict_to_half_single_tenant/5000
Benchmarking eviction/evict_to_half_single_tenant/5000: Warming up for 3.0000 s
[BENCH_RESULT] eviction | single_tenant_5000 | 5000 | 82 | 12.00
Warning: Unable to complete 20 samples in 3.0s. You may wish to increase target time to 4.9s, enable flat sampling, or reduce sample count to 10.
Benchmarking eviction/evict_to_half_single_tenant/5000: Collecting 20 samples in estimated 4.9085 s (210 iterations)
Benchmarking eviction/evict_to_half_single_tenant/5000: Analyzing
eviction/evict_to_half_single_tenant/5000
time: [12.311 ms 12.483 ms 12.681 ms]
change: [-2.1136% -0.3028% +1.6160%] (p = 0.74 > 0.05)
No change in performance detected.
Benchmarking eviction/evict_to_half_single_tenant/10000
Benchmarking eviction/evict_to_half_single_tenant/10000: Warming up for 3.0000 s
[BENCH_RESULT] eviction | single_tenant_10000 | 10000 | 37 | 26.00
Benchmarking eviction/evict_to_half_single_tenant/10000: Collecting 20 samples in estimated 3.9413 s (80 iterations)
Benchmarking eviction/evict_to_half_single_tenant/10000: Analyzing
eviction/evict_to_half_single_tenant/10000
time: [26.903 ms 27.194 ms 27.517 ms]
change: [-3.2383% -1.6266% -0.0041%] (p = 0.07 > 0.05)
No change in performance detected.
Found 2 outliers among 20 measurements (10.00%)
2 (10.00%) high mild
Benchmarking eviction/evict_multi_tenant_10/1000
Benchmarking eviction/evict_multi_tenant_10/1000: Warming up for 3.0000 s
[BENCH_RESULT] eviction | multi_tenant_1000 | 1000 | 196 | 5.00
Benchmarking eviction/evict_multi_tenant_10/1000: Collecting 20 samples in estimated 3.0360 s (420 iterations)
Benchmarking eviction/evict_multi_tenant_10/1000: Analyzing
eviction/evict_multi_tenant_10/1000
time: [4.5046 ms 4.5222 ms 4.5509 ms]
change: [+0.8324% +1.4559% +2.0940%] (p = 0.00 < 0.05)
Change within noise threshold.
Benchmarking eviction/evict_multi_tenant_10/5000
Benchmarking eviction/evict_multi_tenant_10/5000: Warming up for 3.0000 s
[BENCH_RESULT] eviction | multi_tenant_5000 | 5000 | 30 | 33.00
Benchmarking eviction/evict_multi_tenant_10/5000: Collecting 20 samples in estimated 3.1701 s (60 iterations)
Benchmarking eviction/evict_multi_tenant_10/5000: Analyzing
eviction/evict_multi_tenant_10/5000
time: [41.678 ms 43.224 ms 44.932 ms]
change: [-21.646% -16.577% -10.768%] (p = 0.00 < 0.05)
Performance has improved.
Found 1 outliers among 20 measurements (5.00%)
1 (5.00%) high mild
Benchmarking eviction/evict_multi_tenant_10/10000
Benchmarking eviction/evict_multi_tenant_10/10000: Warming up for 3.0000 s
[BENCH_RESULT] eviction | multi_tenant_10000 | 10000 | 9 | 107.00
Warning: Unable to complete 20 samples in 3.0s. You may wish to increase target time to 3.2s, or reduce sample count to 10.
Benchmarking eviction/evict_multi_tenant_10/10000: Collecting 20 samples in estimated 3.2168 s (20 iterations)
Benchmarking eviction/evict_multi_tenant_10/10000: Analyzing
eviction/evict_multi_tenant_10/10000
time: [126.05 ms 127.80 ms 129.49 ms]
change: [+12.635% +14.521% +16.298%] (p = 0.00 < 0.05)
Performance has regressed.
Benchmarking encoding/ascii_match
Benchmarking encoding/ascii_match: Warming up for 3.0000 s
[BENCH_RESULT] encoding | ASCII | 526316 | baseline
Benchmarking encoding/ascii_match: Collecting 30 samples in estimated 3.0001 s (6.5M iterations)
Benchmarking encoding/ascii_match: Analyzing
encoding/ascii_match time: [465.20 ns 466.64 ns 468.43 ns]
change: [-3.2838% -2.9539% -2.5891%] (p = 0.00 < 0.05)
Performance has improved.
Found 2 outliers among 30 measurements (6.67%)
2 (6.67%) high mild
Benchmarking encoding/utf8_match
Benchmarking encoding/utf8_match: Warming up for 3.0000 s
[BENCH_RESULT] encoding | UTF-8 | 99800 | N/A
Benchmarking encoding/utf8_match: Collecting 30 samples in estimated 3.0001 s (7.2M iterations)
Benchmarking encoding/utf8_match: Analyzing
encoding/utf8_match time: [418.64 ns 424.04 ns 430.22 ns]
change: [-9.6439% -9.1065% -8.4606%] (p = 0.00 < 0.05)
Performance has improved.
Found 6 outliers among 30 measurements (20.00%)
1 (3.33%) low severe
3 (10.00%) low mild
2 (6.67%) high severe
Benchmarking multi_tenant/shared_prefix_lookup_10_tenants
Benchmarking multi_tenant/shared_prefix_lookup_10_tenants: Warming up for 3.0000 s
[BENCH_RESULT] multi_tenant | shared_prefix_lookup | 10 | 671141
Benchmarking multi_tenant/shared_prefix_lookup_10_tenants: Collecting 30 samples in estimated 3.0001 s (10M iterations)
Benchmarking multi_tenant/shared_prefix_lookup_10_tenants: Analyzing
multi_tenant/shared_prefix_lookup_10_tenants
time: [293.11 ns 293.44 ns 293.72 ns]
change: [-1.8855% -1.7350% -1.5896%] (p = 0.00 < 0.05)
Performance has improved.
Benchmarking multi_tenant/tenant_specific_match_10_tenants
Benchmarking multi_tenant/tenant_specific_match_10_tenants: Warming up for 3.0000 s
[BENCH_RESULT] multi_tenant | tenant_specific_match | 10 | 101937
Benchmarking multi_tenant/tenant_specific_match_10_tenants: Collecting 30 samples in estimated 3.0001 s (6.5M iterations)
Benchmarking multi_tenant/tenant_specific_match_10_tenants: Analyzing
multi_tenant/tenant_specific_match_10_tenants
time: [457.02 ns 457.64 ns 458.43 ns]
change: [-0.5114% -0.3481% -0.0872%] (p = 0.00 < 0.05)
Change within noise threshold.
Found 1 outliers among 30 measurements (3.33%)
1 (3.33%) high severe
Benchmarking multi_tenant/tenant_removal
Benchmarking multi_tenant/tenant_removal: Warming up for 3.0000 s
[BENCH_RESULT] multi_tenant | tenant_removal | 10 | 1924 | 0.00ms
Benchmarking multi_tenant/tenant_removal: Collecting 30 samples in estimated 5.5125 s (930 iterations)
Benchmarking multi_tenant/tenant_removal: Analyzing
multi_tenant/tenant_removal
time: [490.09 µs 491.68 µs 493.52 µs]
change: [-1.7514% -1.2157% -0.7174%] (p = 0.00 < 0.05)
Change within noise threshold.
Found 1 outliers among 30 measurements (3.33%)
1 (3.33%) high mild
[BENCH_RESULT] config | Test Configuration:
[BENCH_RESULT] config | Request size: ~2026 chars (~506 tokens)
[BENCH_RESULT] config | Tree size: 10000 entries (for MATCH tests)
[BENCH_RESULT] config | Insert pool: 10000 unique requests
[BENCH_RESULT] config | Concurrency: 64 threads x 200 ops/thread
[BENCH_RESULT] config | Worker counts tested: [10, 50, 100, 500]
Benchmarking benchmark_summary/insert_10w
Benchmarking benchmark_summary/insert_10w: Warming up for 1.0000 s
[BENCH_RESULT] summary | INSERT 10 workers: 104384 ops/sec | 9.6 µs/op | 211.5 MB/s | ~2026 chars
Benchmarking benchmark_summary/insert_10w: Collecting 30 samples in estimated 3.0010 s (696k iterations)
Benchmarking benchmark_summary/insert_10w: Analyzing
benchmark_summary/insert_10w
time: [4.3306 µs 4.3478 µs 4.3663 µs]
change: [-2.7328% -1.6755% -0.4739%] (p = 0.01 < 0.05)
Change within noise threshold.
Found 2 outliers among 30 measurements (6.67%)
2 (6.67%) low mild
Benchmarking benchmark_summary/insert_50w
Benchmarking benchmark_summary/insert_50w: Warming up for 1.0000 s
[BENCH_RESULT] summary | INSERT 50 workers: 72307 ops/sec | 13.8 µs/op | 146.5 MB/s | ~2026 chars
Benchmarking benchmark_summary/insert_50w: Collecting 30 samples in estimated 3.0016 s (669k iterations)
Benchmarking benchmark_summary/insert_50w: Analyzing
benchmark_summary/insert_50w
time: [4.5148 µs 4.5285 µs 4.5464 µs]
change: [-0.7565% +0.1278% +1.0530%] (p = 0.80 > 0.05)
No change in performance detected.
Found 3 outliers among 30 measurements (10.00%)
1 (3.33%) low severe
2 (6.67%) low mild
Benchmarking benchmark_summary/insert_100w
Benchmarking benchmark_summary/insert_100w: Warming up for 1.0000 s
[BENCH_RESULT] summary | INSERT 100 workers: 106383 ops/sec | 9.4 µs/op | 215.5 MB/s | ~2026 chars
Benchmarking benchmark_summary/insert_100w: Collecting 30 samples in estimated 3.0002 s (662k iterations)
Benchmarking benchmark_summary/insert_100w: Analyzing
benchmark_summary/insert_100w
time: [4.5673 µs 4.5996 µs 4.6327 µs]
change: [-2.2009% -1.1642% -0.0409%] (p = 0.05 < 0.05)
Change within noise threshold.
Found 3 outliers among 30 measurements (10.00%)
3 (10.00%) low mild
Benchmarking benchmark_summary/insert_500w
Benchmarking benchmark_summary/insert_500w: Warming up for 1.0000 s
[BENCH_RESULT] summary | INSERT 500 workers: 108225 ops/sec | 9.2 µs/op | 219.3 MB/s | ~2026 chars
Benchmarking benchmark_summary/insert_500w: Collecting 30 samples in estimated 3.0017 s (614k iterations)
Benchmarking benchmark_summary/insert_500w: Analyzing
benchmark_summary/insert_500w
time: [4.7375 µs 4.7653 µs 4.8074 µs]
change: [-1.2321% -0.2466% +0.7203%] (p = 0.63 > 0.05)
No change in performance detected.
Benchmarking benchmark_summary/match_10w
Benchmarking benchmark_summary/match_10w: Warming up for 1.0000 s
[BENCH_RESULT] summary | MATCH 10 workers: 85763 ops/sec | 11.7 µs/op | 173.8 MB/s | 10k tree entries
Benchmarking benchmark_summary/match_10w: Collecting 30 samples in estimated 3.0013 s (523k iterations)
Benchmarking benchmark_summary/match_10w: Analyzing
benchmark_summary/match_10w
time: [5.7414 µs 5.7441 µs 5.7473 µs]
change: [-6.5584% -6.2189% -5.8384%] (p = 0.00 < 0.05)
Performance has improved.
Found 7 outliers among 30 measurements (23.33%)
3 (10.00%) low severe
1 (3.33%) low mild
3 (10.00%) high mild
Benchmarking benchmark_summary/match_50w
Benchmarking benchmark_summary/match_50w: Warming up for 1.0000 s
[BENCH_RESULT] summary | MATCH 50 workers: 107643 ops/sec | 9.3 µs/op | 218.1 MB/s | 10k tree entries
Benchmarking benchmark_summary/match_50w: Collecting 30 samples in estimated 3.0007 s (528k iterations)
Benchmarking benchmark_summary/match_50w: Analyzing
benchmark_summary/match_50w
time: [5.6931 µs 5.6956 µs 5.6986 µs]
change: [-7.9985% -7.7833% -7.5693%] (p = 0.00 < 0.05)
Performance has improved.
Found 6 outliers among 30 measurements (20.00%)
1 (3.33%) low severe
3 (10.00%) low mild
2 (6.67%) high mild
Benchmarking benchmark_summary/match_100w
Benchmarking benchmark_summary/match_100w: Warming up for 1.0000 s
[BENCH_RESULT] summary | MATCH 100 workers: 92166 ops/sec | 10.8 µs/op | 186.7 MB/s | 10k tree entries
Benchmarking benchmark_summary/match_100w: Collecting 30 samples in estimated 3.0010 s (529k iterations)
Benchmarking benchmark_summary/match_100w: Analyzing
benchmark_summary/match_100w
time: [5.6722 µs 5.6755 µs 5.6792 µs]
change: [-1.7960% -1.4657% -1.1746%] (p = 0.00 < 0.05)
Performance has improved.
Found 6 outliers among 30 measurements (20.00%)
1 (3.33%) low severe
3 (10.00%) low mild
2 (6.67%) high mild
Benchmarking benchmark_summary/match_500w
Benchmarking benchmark_summary/match_500w: Warming up for 1.0000 s
[BENCH_RESULT] summary | MATCH 500 workers: 97943 ops/sec | 10.2 µs/op | 198.4 MB/s | 10k tree entries
Benchmarking benchmark_summary/match_500w: Collecting 30 samples in estimated 3.0020 s (492k iterations)
Benchmarking benchmark_summary/match_500w: Analyzing
benchmark_summary/match_500w
time: [6.1054 µs 6.1097 µs 6.1156 µs]
change: [+6.0662% +6.3450% +6.6110%] (p = 0.00 < 0.05)
Performance has regressed.
Found 3 outliers among 30 measurements (10.00%)
1 (3.33%) low severe
1 (3.33%) low mild
1 (3.33%) high mild
Benchmarking benchmark_summary/concurrent_10w
Benchmarking benchmark_summary/concurrent_10w: Warming up for 1.0000 s
[BENCH_RESULT] summary | CONCURRENT 10 workers: 337144 ops/sec | 64 threads | 5268 ops/thread
Benchmarking benchmark_summary/concurrent_10w: Collecting 10 samples in estimated 3.9425 s (110 iterations)
Benchmarking benchmark_summary/concurrent_10w: Analyzing
benchmark_summary/concurrent_10w
time: [34.820 ms 35.544 ms 36.290 ms]
change: [-25.969% -24.024% -22.294%] (p = 0.00 < 0.05)
Performance has improved.
Found 2 outliers among 10 measurements (20.00%)
1 (10.00%) low severe
1 (10.00%) high mild
Benchmarking benchmark_summary/concurrent_50w
Benchmarking benchmark_summary/concurrent_50w: Warming up for 1.0000 s
[BENCH_RESULT] summary | CONCURRENT 50 workers: 375860 ops/sec | 64 threads | 5873 ops/thread
Benchmarking benchmark_summary/concurrent_50w: Collecting 10 samples in estimated 3.9563 s (110 iterations)
Benchmarking benchmark_summary/concurrent_50w: Analyzing
benchmark_summary/concurrent_50w
time: [34.896 ms 35.414 ms 36.086 ms]
change: [-24.903% -23.166% -21.482%] (p = 0.00 < 0.05)
Performance has improved.
Benchmarking benchmark_summary/concurrent_100w
Benchmarking benchmark_summary/concurrent_100w: Warming up for 1.0000 s
[BENCH_RESULT] summary | CONCURRENT 100 workers: 359527 ops/sec | 64 threads | 5618 ops/thread
Benchmarking benchmark_summary/concurrent_100w: Collecting 10 samples in estimated 3.8900 s (110 iterations)
Benchmarking benchmark_summary/concurrent_100w: Analyzing
benchmark_summary/concurrent_100w
time: [35.333 ms 35.752 ms 36.093 ms]
change: [-24.498% -22.661% -20.913%] (p = 0.00 < 0.05)
Performance has improved.
Benchmarking benchmark_summary/concurrent_500w
Benchmarking benchmark_summary/concurrent_500w: Warming up for 1.0000 s
[BENCH_RESULT] summary | CONCURRENT 500 workers: 354295 ops/sec | 64 threads | 5536 ops/thread
Benchmarking benchmark_summary/concurrent_500w: Collecting 10 samples in estimated 3.9483 s (110 iterations)
Benchmarking benchmark_summary/concurrent_500w: Analyzing
benchmark_summary/concurrent_500w
time: [35.289 ms 35.740 ms 36.253 ms]
change: [-36.231% -34.668% -33.216%] (p = 0.00 < 0.05)
Performance has improved.
====================================================================================================
RADIX TREE BENCHMARK SUMMARY (Cache-Aware Routing)
====================================================================================================
Total benchmark results collected: 43
----------------------------------------------------------------------------------------------------
INSERT THROUGHPUT (10 endpoint tenants)
Test Case | Size | Ops/sec | Tenants
----------------------------------------------------------------------------------------------------
random_text_10 | 10 | 211416 | 10
random_text_50 | 50 | 78493 | 10
random_text_100 | 100 | 105263 | 10
random_text_500 | 500 | 77459 | 10
shared_prefix | ~58 | 131234 | 10
realistic_llm | ~100 | 125786 | 10
----------------------------------------------------------------------------------------------------
PREFIX MATCH LATENCY
Match Type | Ops/sec | Latency(ns)
----------------------------------------------------------------------------------------------------
cache_hit | 431034 | 2320.0
cache_miss | 237530 | 4210.0
partial_match | 90253 | 11080.0
----------------------------------------------------------------------------------------------------
CONCURRENT OPERATIONS (mixed read/write)
Configuration | Threads | Total Ops/s | Per-Thread
----------------------------------------------------------------------------------------------------
mixed_workload_2_threads | 2 | 265897 | 132949
mixed_workload_4_threads | 4 | 469274 | 117319
mixed_workload_8_threads | 8 | 522650 | 65331
mixed_workload_16_threads | 16 | 436476 | 27280
high_contention | 10 | 898513 | 89851
----------------------------------------------------------------------------------------------------
EVICTION PERFORMANCE
Configuration | Size | Ops/sec | Latency(ms)
----------------------------------------------------------------------------------------------------
single_tenant_1000 | 1000 | 485 | 2.00
single_tenant_5000 | 5000 | 82 | 12.00
single_tenant_10000 | 10000 | 37 | 26.00
multi_tenant_1000 | 1000 | 196 | 5.00
multi_tenant_5000 | 5000 | 30 | 33.00
multi_tenant_10000 | 10000 | 9 | 107.00
----------------------------------------------------------------------------------------------------
ENCODING (ASCII vs UTF-8)
Encoding | Ops/sec | Comparison
----------------------------------------------------------------------------------------------------
ASCII | 526316 | baseline
UTF-8 | 99800 | N/A
----------------------------------------------------------------------------------------------------
MULTI-TENANT SCENARIOS (10 HTTP/gRPC endpoints)
Operation | Tenants | Ops/sec
----------------------------------------------------------------------------------------------------
shared_prefix_lookup | 10 | 671141
tenant_specific_match | 10 | 101937
tenant_removal | 10 | 1924 | 0.00ms
----------------------------------------------------------------------------------------------------
TEST CONFIGURATION
----------------------------------------------------------------------------------------------------
Test Configuration:
Request size: ~2026 chars (~506 tokens)
Tree size: 10000 entries (for MATCH tests)
Insert pool: 10000 unique requests
Concurrency: 64 threads x 200 ops/thread
Worker counts tested: [10, 50, 100, 500]
----------------------------------------------------------------------------------------------------
BENCHMARK RESULTS
----------------------------------------------------------------------------------------------------
INSERT 10 workers: 104384 ops/sec | 9.6 µs/op | 211.5 MB/s | ~2026 chars
INSERT 50 workers: 72307 ops/sec | 13.8 µs/op | 146.5 MB/s | ~2026 chars
INSERT 100 workers: 106383 ops/sec | 9.4 µs/op | 215.5 MB/s | ~2026 chars
INSERT 500 workers: 108225 ops/sec | 9.2 µs/op | 219.3 MB/s | ~2026 chars
MATCH 10 workers: 85763 ops/sec | 11.7 µs/op | 173.8 MB/s | 10k tree entries
MATCH 50 workers: 107643 ops/sec | 9.3 µs/op | 218.1 MB/s | 10k tree entries
MATCH 100 workers: 92166 ops/sec | 10.8 µs/op | 186.7 MB/s | 10k tree entries
MATCH 500 workers: 97943 ops/sec | 10.2 µs/op | 198.4 MB/s | 10k tree entries
CONCURRENT 10 workers: 337144 ops/sec | 64 threads | 5268 ops/thread
CONCURRENT 50 workers: 375860 ops/sec | 64 threads | 5873 ops/thread
CONCURRENT 100 workers: 359527 ops/sec | 64 threads | 5618 ops/thread
CONCURRENT 500 workers: 354295 ops/sec | 64 threads | 5536 ops/thread
====================================================================================================
Endpoint tenants used:
[0] http://worker-0.sglang.svc.cluster.local:8000
[1] http://worker-1.sglang.svc.cluster.local:8000
[2] http://worker-2.sglang.svc.cluster.local:8000
[3] http://worker-3.sglang.svc.cluster.local:8000
[4] http://worker-4.sglang.svc.cluster.local:8000
[5] grpc://worker-5.sglang.svc.cluster.local:50051
[6] grpc://worker-6.sglang.svc.cluster.local:50051
[7] grpc://worker-7.sglang.svc.cluster.local:50051
[8] http://10.0.0.100:8000
[9] http://10.0.0.101:8000
====================================================================================================
==========================================
=== 用例 G02 noperf 测试结束: 2026-08-04 21:06:25 ===
运行时长: 257秒
退出码: 0


直接调用 ModelRunner.forward() 测量单个固定 batch 的 prefill 和 decode 延迟


request_processing bootstrap_injection/chat_completion_bootstrap_injection µs 4.5722
request_processing bootstrap_injection/completion_bootstrap_injection µs 2.8297
request_processing bootstrap_injection/generate_bootstrap_injection µs 3.0563
request_processing bootstrap_injection/large_chat_completion_bootstrap_injection µs 63.723
request_processing direct_json_routing/chat_completion_to_json µs 3.6423
request_processing direct_json_routing/chat_completion_to_json_string µs 1.7173
request_processing direct_json_routing/completion_to_json µs 2.8703
request_processing direct_json_routing/generate_to_bytes µs 1.2987
request_processing direct_json_routing/generate_to_json µs 2.6862
request_processing direct_json_routing/generate_to_json_string µs 1.2139
request_processing full_round_trip/chat_completion_openai_to_pd_pipeline µs 5.9404
request_processing full_round_trip/completion_openai_to_pd_pipeline µs 3.2283
request_processing full_round_trip/generate_direct_json_pipeline µs 7.012
request_processing full_round_trip/generate_openai_to_pd_pipeline µs 4.3532
request_processing json_deserialization/chat_completion_request µs 3.9143
request_processing json_deserialization/completion_request µs 1.9797
request_processing json_deserialization/generate_request µs 2.5776
request_processing json_deserialization/large_chat_completion_request µs 43.099
request_processing json_serialization/chat_completion_request µs 1.5911
request_processing json_serialization/completion_request ns 953.93
request_processing json_serialization/generate_request µs 1.1779
request_processing json_serialization/generate_request_to_bytes µs 1.2238
request_processing json_serialization/large_chat_completion_request µs 34.705
request_processing throughput_by_size/bootstrap_inject/large µs 2.4323
request_processing throughput_by_size/bootstrap_inject/medium µs 2.2587
request_processing throughput_by_size/bootstrap_inject/small µs 2.2559
request_processing throughput_by_size/deserialize/large µs 3.0436
request_processing throughput_by_size/deserialize/medium µs 1.6206
request_processing throughput_by_size/deserialize/small µs 1.7029
request_processing throughput_by_size/serialize/large µs 11.865
request_processing throughput_by_size/serialize/medium µs 1.0115
request_processing throughput_by_size/serialize/small ns 525.49
tree_benchmark benchmark_summary/concurrent_100w ms 18.27
tree_benchmark benchmark_summary/concurrent_10w ms 18.071
tree_benchmark benchmark_summary/concurrent_500w ms 19.306
tree_benchmark benchmark_summary/concurrent_50w ms 17.977
tree_benchmark benchmark_summary/insert_100w µs 4.0628
tree_benchmark benchmark_summary/insert_10w µs 3.5833
tree_benchmark benchmark_summary/insert_500w µs 3.8846
tree_benchmark benchmark_summary/insert_50w µs 3.7566
tree_benchmark benchmark_summary/match_100w µs 4.4151
tree_benchmark benchmark_summary/match_10w µs 4.8048
tree_benchmark benchmark_summary/match_500w µs 4.398
tree_benchmark benchmark_summary/match_50w µs 4.3962
tree_benchmark concurrent/high_contention_10_tenants ms 2.1092
tree_benchmark concurrent/mixed_workload/16 ms 3.9586
tree_benchmark concurrent/mixed_workload/2 ms 1.0061
tree_benchmark concurrent/mixed_workload/4 ms 1.2271
tree_benchmark concurrent/mixed_workload/8 ms 1.9194
tree_benchmark encoding/ascii_match ns 594.41
tree_benchmark encoding/utf8_match ns 697.23
tree_benchmark eviction/evict_multi_tenant_10/1000 ms 9.9349
tree_benchmark eviction/evict_multi_tenant_10/10000 ms 202.21
tree_benchmark eviction/evict_multi_tenant_10/5000 ms 93.652
tree_benchmark eviction/evict_to_half_single_tenant/1000 ms 6.0384
tree_benchmark eviction/evict_to_half_single_tenant/10000 ms 63.531
tree_benchmark eviction/evict_to_half_single_tenant/5000 ms 31.702
tree_benchmark insert_throughput/random_text/10 ns 943.46
tree_benchmark insert_throughput/random_text/100 µs 1.0048
tree_benchmark insert_throughput/random_text/50 ns 977.48
tree_benchmark insert_throughput/random_text/500 µs 1.317
tree_benchmark insert_throughput/realistic_llm_requests µs 2.9268
tree_benchmark insert_throughput/shared_prefix_100 µs 1.1108
tree_benchmark multi_tenant/shared_prefix_lookup_10_tenants ns 559.36
tree_benchmark multi_tenant/tenant_removal ms 1.1602
tree_benchmark multi_tenant/tenant_specific_match_10_tenants ns 764.43
tree_benchmark prefix_match_latency/cache_hit ns 769
tree_benchmark prefix_match_latency/cache_miss ns 258.28
tree_benchmark prefix_match_latency/partial_match ns 449.09
manual_policy_benchmark manual_policy/cache_size/keys/100 µs 47.752
manual_policy_benchmark manual_policy/cache_size/keys/1000 µs 47.69
manual_policy_benchmark manual_policy/cache_size/keys/10000 µs 47.834
manual_policy_benchmark manual_policy/cache_size/keys/100000 µs 47.804
manual_policy_benchmark manual_policy/concurrent/threads/16 ms 801.21
manual_policy_benchmark manual_policy/concurrent/threads/2 ms 162.35
manual_policy_benchmark manual_policy/concurrent/threads/4 ms 216.47
manual_policy_benchmark manual_policy/concurrent/threads/8 ms 400.71
manual_policy_benchmark manual_policy/failover/workers/16 ms 99.708
manual_policy_benchmark manual_policy/failover/workers/4 ms 99.973
manual_policy_benchmark manual_policy/failover/workers/64 ms 98.657
manual_policy_benchmark manual_policy/fast_path/workers/16 µs 47.788
manual_policy_benchmark manual_policy/fast_path/workers/256 µs 51.794
manual_policy_benchmark manual_policy/fast_path/workers/4 µs 47.488
manual_policy_benchmark manual_policy/fast_path/workers/64 µs 51.377
manual_policy_benchmark manual_policy/no_routing_key/workers/16 µs 47.186
manual_policy_benchmark manual_policy/no_routing_key/workers/256 µs 49.952
manual_policy_benchmark manual_policy/no_routing_key/workers/4 µs 46.935
manual_policy_benchmark manual_policy/no_routing_key/workers/64 µs 47.761
manual_policy_benchmark manual_policy/slow_path_vacant/workers/16 µs 48.061
manual_policy_benchmark manual_policy/slow_path_vacant/workers/256 µs 50.81
manual_policy_benchmark manual_policy/slow_path_vacant/workers/4 µs 47.73
manual_policy_benchmark manual_policy/slow_path_vacant/workers/64 µs 48.619
manual_policy_benchmark manual_policy/vs_baseline/raw_random ns 13.79
router_registry_bench Registry Optimizations/New: get_worker_distribution()/5000 µs 46.804
router_registry_bench Registry Optimizations/Old: get_all()/5000 µs 441.95
consistent_hash_bench ConsistentHashRing/get_owners/10 ns 472.36
consistent_hash_bench ConsistentHashRing/get_owners/100 ns 514.48
consistent_hash_bench ConsistentHashRing/get_owners/500 ns 499.55
consistent_hash_bench ConsistentHashRing/is_owner/10 ns 499.76
consistent_hash_bench ConsistentHashRing/is_owner/100 ns 535.57
consistent_hash_bench ConsistentHashRing/is_owner/500 ns 522.97
streaming_utils_bench streaming_utils_baseline_iter/16 ns 680.66
streaming_utils_bench streaming_utils_baseline_iter/256 µs 6.592
streaming_utils_bench streaming_utils_baseline_iter/64 µs 1.9147
streaming_utils_bench streaming_utils_tracked_clean/16 µs 27.646
streaming_utils_bench streaming_utils_tracked_clean/256 µs 37.525
streaming_utils_bench streaming_utils_tracked_clean/64 µs 29.398
streaming_utils_bench streaming_utils_tracked_mark_completed_drop µs 26.455
wasm_middleware_latency wasm_middleware_pre_fix_latency µs 23.847


Chat 请求注入 PD bootstrap 字段
Completion 请求注入 PD bootstrap
Generate 请求注入 PD bootstrap
大 Chat 请求注入 PD bootstrap
Chat 请求序列化为 JSON
Chat 请求序列化为 JSON 字符串
Completion 序列化为 JSON
Generate 序列化为 bytes
Generate 序列化为 JSON
Generate 序列化为 JSON 字符串
Chat 请求 OpenAI→PD 完整管线
Completion OpenAI→PD 完整管线
Generate 直接 JSON 管线
Generate OpenAI→PD 完整管线
Chat 请求 JSON 反序列化
Completion 反序列化
Generate 反序列化
大 Chat 请求反序列化
Chat 请求 JSON 序列化
Completion 序列化
Generate 序列化
Generate 序列化为 bytes
大 Chat 请求序列化
大请求 bootstrap 吞吐
中请求 bootstrap 吞吐
小请求 bootstrap 吞吐
大请求反序列化吞吐
中请求反序列化吞吐
小请求反序列化吞吐
大请求序列化吞吐
中请求序列化吞吐
小请求序列化吞吐
100 worker 并发操作汇总
10 worker 并发操作汇总
500 worker 并发操作汇总
50 worker 并发操作汇总
100 worker 插入汇总
10 worker 插入汇总
500 worker 插入汇总
50 worker 插入汇总
100 worker 前缀匹配汇总
10 worker 前缀匹配汇总
500 worker 前缀匹配汇总
50 worker 前缀匹配汇总
10 租户高竞争并发
16 线程混合读写
2 线程混合读写
4 线程混合读写
8 线程混合读写
ASCII 文本前缀匹配
UTF-8 文本前缀匹配
10 租户驱逐 1000 条目
10 租户驱逐 10000 条目
10 租户驱逐 5000 条目
单租户驱逐到一半 1000 条目
单租户驱逐到一半 10000 条目
单租户驱逐到一半 5000 条目
随机文本插入 10 条
随机文本插入 100 条
随机文本插入 50 条
随机文本插入 500 条
真实 LLM 请求文本插入
共享前缀插入 100 条
10 租户共享前缀查找
租户移除
10 租户特定匹配
缓存命中前缀匹配
缓存未命中前缀匹配
部分匹配前缀
路由键缓存 100 条
路由键缓存 1000 条
路由键缓存 10000 条
路由键缓存 100000 条
16 线程并发路由
2 线程并发路由
4 线程并发路由
8 线程并发路由
16 worker 故障转移
4 worker 故障转移
64 worker 故障转移
16 worker 快路径(命中路由键)
256 worker 快路径
4 worker 快路径
64 worker 快路径
16 worker 无路由键
256 worker 无路由键
4 worker 无路由键
64 worker 无路由键
16 worker 慢路径(路由键空)
256 worker 慢路径
4 worker 慢路径
64 worker 慢路径
基线对照:原始随机选择
新方法:获取 5000 worker 分布
旧方法:获取全部 5000 worker(对照)
10 节点查询归属
100 节点查询归属
500 节点查询归属
10 节点判断是否归属
100 节点判断是否归属
500 节点判断是否归属
16 chunk 基线迭代(无包装)
256 chunk 基线迭代
64 chunk 基线迭代
16 chunk 熔断跟踪包装
256 chunk 熔断跟踪包装
64 chunk 熔断跟踪包装
标记完成后丢弃的跟踪开销
WASM 中间件修复前延迟(基线对照)


=== Gateway E2E Benchmark 开始: Wed Aug 5 04:39:54 PM CST 2026 ===
总运行轮次: 3
测试用例: regular_http pd
==========================================
=== 第 1/3 轮运行开始: Wed Aug 5 04:39:54 PM CST 2026 ===
=== 用例 regular_http 开始: Wed Aug 5 04:39:54 PM CST 2026 ===


编译完成: /home/y30075072/bench/sglang/sgl-model-gateway/target/release/sgl-model-gateway
开始 SGLang Model Gateway E2E Benchmark...
总计划:运行 3 轮,每轮跑 15 个用例,每用例 perf + noperf 各一次。
官方配置: concurrency=32, scenario=D(4000,100), max_requests=160
Mock worker: delay=20ms, output_tokens=100
所有结果将保存在: /home/y30075072/bench/sglang/bench_gw_e2e_runs_20260805_170638/
=========================================
>>>>>> 开始第 1/3 轮运行 <<<<<<
==== 用例 regular_http: 官方 test_regular_perf [http]: 4 worker, cache_aware ====
启动 mock workers...
Mock worker starting on port 31001 (delay=20ms, output=100 tokens, type=regular)
Mock worker starting on port 31003 (delay=20ms, output=100 tokens, type=regular)
Mock worker starting on port 31002 (delay=20ms, output=100 tokens, type=regular)
Mock worker starting on port 31000 (delay=20ms, output=100 tokens, type=regular)
mock workers 已启动: 382932 382933 382934 382935
启动 gateway...
SGLang Router starting...
Host: 127.0.0.1:30000
Mode: Regular (sglang)
Policy: cache_aware
2026-08-05 09:06:43 INFO smg::server: src/server.rs:792: Starting router on 127.0.0.1:30000 | mode: Regular { worker_urls: ["http://127.0.0.1:31000", "http://127.0.0.1:31001", "http://127.0.0.1:31002", "http://127.0.0.1:31003"] } | policy: CacheAware { cache_threshold: 0.3, balance_abs_threshold: 64, balance_rel_threshold: 1.5, eviction_interval_secs: 120, max_tree_size: 67108864 } | max_payload: 512MB
2026-08-05 09:06:43 INFO smg_mcp::manager: /root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/smg-mcp-1.0.0/src/manager.rs:97: No static MCP servers connected
2026-08-05 09:06:43 INFO smg::server: src/server.rs:867: Initializing workers for routing mode: Regular { worker_urls: ["http://127.0.0.1:31000", "http://127.0.0.1:31001", "http://127.0.0.1:31002", "http://127.0.0.1:31003"] }
2026-08-05 09:06:43 INFO smg::server: src/server.rs:885: Worker initialization job submitted (will complete in background)
2026-08-05 09:06:43 INFO smg::server: src/server.rs:897: No MCP config provided, skipping MCP server initialization
2026-08-05 09:06:43 INFO smg::server: src/server.rs:909: Workers initialized: 0 total, 0 healthy
2026-08-05 09:06:43 INFO smg::routers::router_manager: src/routers/router_manager.rs:169: Initializing RouterManager in single-router mode
2026-08-05 09:06:43 INFO smg::routers::router_manager: src/routers/router_manager.rs:177: Created single router with ID: http-regular
2026-08-05 09:06:43 INFO smg::routers::router_manager: src/routers/router_manager.rs:216: Set default router to http-regular
2026-08-05 09:06:43 INFO smg::core::worker_manager: src/core/worker_manager.rs:307: Starting load monitoring with interval: 30s
2026-08-05 09:06:43 INFO smg::server: src/server.rs:941: Rate limiting is disabled (max_concurrent_requests = -1)
2026-08-05 09:06:43 INFO smg::server: src/server.rs:1019: Router ready | workers: []
2026-08-05 09:06:43 INFO smg::server: src/server.rs:1052: Starting server on 127.0.0.1:30000
Error handling request from 127.0.0.1
Traceback (most recent call last):
File "/home/y30075072/env/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 408, in data_received
messages, upgraded, tail = self._request_parser.feed_data(data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "aiohttp/_http_parser.pyx", line 556, in aiohttp._http_parser.HttpParser.feed_data
aiohttp.http_exceptions.BadHttpMessage: 400, message:
Pause on PRI/Upgrade:
b''
^
Error handling request from 127.0.0.1
Traceback (most recent call last):
File "/home/y30075072/env/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 408, in data_received
messages, upgraded, tail = self._request_parser.feed_data(data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "aiohttp/_http_parser.pyx", line 556, in aiohttp._http_parser.HttpParser.feed_data
aiohttp.http_exceptions.BadHttpMessage: 400, message:
Pause on PRI/Upgrade:
b''
^
Error handling request from 127.0.0.1
Traceback (most recent call last):
File "/home/y30075072/env/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 408, in data_received
messages, upgraded, tail = self._request_parser.feed_data(data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "aiohttp/_http_parser.pyx", line 556, in aiohttp._http_parser.HttpParser.feed_data
aiohttp.http_exceptions.BadHttpMessage: 400, message:
Pause on PRI/Upgrade:
b''
^
Error handling request from 127.0.0.1
Traceback (most recent call last):
File "/home/y30075072/env/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 408, in data_received
messages, upgraded, tail = self._request_parser.feed_data(data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "aiohttp/_http_parser.pyx", line 556, in aiohttp._http_parser.HttpParser.feed_data
aiohttp.http_exceptions.BadHttpMessage: 400, message:
Pause on PRI/Upgrade:
b''
^
Error handling request from 127.0.0.1
Traceback (most recent call last):
File "/home/y30075072/env/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 408, in data_received
messages, upgraded, tail = self._request_parser.feed_data(data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "aiohttp/_http_parser.pyx", line 556, in aiohttp._http_parser.HttpParser.feed_data
aiohttp.http_exceptions.BadHttpMessage: 400, message:
Pause on PRI/Upgrade:
b''
^
Error handling request from 127.0.0.1
Traceback (most recent call last):
File "/home/y30075072/env/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 408, in data_received
messages, upgraded, tail = self._request_parser.feed_data(data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "aiohttp/_http_parser.pyx", line 556, in aiohttp._http_parser.HttpParser.feed_data
aiohttp.http_exceptions.BadHttpMessage: 400, message:
Pause on PRI/Upgrade:
b''
^
Error handling request from 127.0.0.1
Traceback (most recent call last):
File "/home/y30075072/env/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 408, in data_received
messages, upgraded, tail = self._request_parser.feed_data(data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "aiohttp/_http_parser.pyx", line 556, in aiohttp._http_parser.HttpParser.feed_data
aiohttp.http_exceptions.BadHttpMessage: 400, message:
Pause on PRI/Upgrade:
b''
^
Error handling request from 127.0.0.1
Traceback (most recent call last):
File "/home/y30075072/env/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 408, in data_received
messages, upgraded, tail = self._request_parser.feed_data(data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "aiohttp/_http_parser.pyx", line 556, in aiohttp._http_parser.HttpParser.feed_data
aiohttp.http_exceptions.BadHttpMessage: 400, message:
Pause on PRI/Upgrade:
b''
^
Gateway ready (pid=382972, port=30000)
运行 perf 版本...
Error handling request from 127.0.0.1
Traceback (most recent call last):
File "/home/y30075072/env/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 408, in data_received
messages, upgraded, tail = self._request_parser.feed_data(data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "aiohttp/_http_parser.pyx", line 556, in aiohttp._http_parser.HttpParser.feed_data
aiohttp.http_exceptions.BadHttpMessage: 400, message:
Pause on PRI/Upgrade:
b''
^
Error handling request from 127.0.0.1
Traceback (most recent call last):
File "/home/y30075072/env/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 408, in data_received
messages, upgraded, tail = self._request_parser.feed_data(data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "aiohttp/_http_parser.pyx", line 556, in aiohttp._http_parser.HttpParser.feed_data
aiohttp.http_exceptions.BadHttpMessage: 400, message:
Pause on PRI/Upgrade:
b''
^
Error handling request from 127.0.0.1
Traceback (most recent call last):
File "/home/y30075072/env/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 408, in data_received
messages, upgraded, tail = self._request_parser.feed_data(data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "aiohttp/_http_parser.pyx", line 556, in aiohttp._http_parser.HttpParser.feed_data
aiohttp.http_exceptions.BadHttpMessage: 400, message:
Pause on PRI/Upgrade:
b''
^
Error handling request from 127.0.0.1
Traceback (most recent call last):
File "/home/y30075072/env/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 408, in data_received
messages, upgraded, tail = self._request_parser.feed_data(data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "aiohttp/_http_parser.pyx", line 556, in aiohttp._http_parser.HttpParser.feed_data
aiohttp.http_exceptions.BadHttpMessage: 400, message:
Pause on PRI/Upgrade:
b''
^
Error handling request from 127.0.0.1
Traceback (most recent call last):
File "/home/y30075072/env/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 408, in data_received
messages, upgraded, tail = self._request_parser.feed_data(data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "aiohttp/_http_parser.pyx", line 556, in aiohttp._http_parser.HttpParser.feed_data
aiohttp.http_exceptions.BadHttpMessage: 400, message:
Pause on PRI/Upgrade:
b''
^
Error handling request from 127.0.0.1
Traceback (most recent call last):
File "/home/y30075072/env/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 408, in data_received
messages, upgraded, tail = self._request_parser.feed_data(data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "aiohttp/_http_parser.pyx", line 556, in aiohttp._http_parser.HttpParser.feed_data
aiohttp.http_exceptions.BadHttpMessage: 400, message:
Pause on PRI/Upgrade:
b''
^
Error handling request from 127.0.0.1
Traceback (most recent call last):
File "/home/y30075072/env/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 408, in data_received
messages, upgraded, tail = self._request_parser.feed_data(data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "aiohttp/_http_parser.pyx", line 556, in aiohttp._http_parser.HttpParser.feed_data
aiohttp.http_exceptions.BadHttpMessage: 400, message:
Pause on PRI/Upgrade:
b''
^
Error handling request from 127.0.0.1
Traceback (most recent call last):
File "/home/y30075072/env/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 408, in data_received
messages, upgraded, tail = self._request_parser.feed_data(data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "aiohttp/_http_parser.pyx", line 556, in aiohttp._http_parser.HttpParser.feed_data
aiohttp.http_exceptions.BadHttpMessage: 400, message:
Pause on PRI/Upgrade:
b''
^


=== 用例 regular_http noperf 测试开始: 2026-08-05 17:28:05 ===
描述: 官方 test_regular_perf [http]: 4 worker, cache_aware
genai-bench: concurrency=32 scenario=D(4000,100)
==========================================
Usage: genai-bench benchmark [OPTIONS]
Try 'genai-bench benchmark --help' for help.
Error: Invalid value: Hugging Face requires authentication for this tokenizer. Please export HF_TOKEN with a valid access token and retry.
==========================================
=== 用例 regular_http noperf 测试结束: 2026-08-05 17:28:11 ===
运行时长: 6秒
genai-bench 退出码: 2
=== 用例 pd noperf 测试开始: 2026-08-05 17:28:27 ===
描述: 官方 test_pd_perf: 2 prefill + 2 decode, PD
genai-bench: concurrency=32 scenario=D(4000,100)
==========================================
Usage: genai-bench benchmark [OPTIONS]
Try 'genai-bench benchmark --help' for help.
Error: Invalid value: Hugging Face requires authentication for this tokenizer. Please export HF_TOKEN with a valid access token and retry.
==========================================
=== 用例 pd noperf 测试结束: 2026-08-05 17:28:32 ===
运行时长: 5秒
genai-bench 退出码: 2


find ~/.cache/huggingface -name "tokenizer.json" 2>/dev/null


我再这个文件夹下面准备了这些,这个可以吗:
[root@localhost ~]# cd /home/y30075072/bench/tok
[root@localhost tok]# ll
total 692
-rw-r--r--. 1 root root 112 Aug 5 17:41 special_tokens_map.json
-rw-r--r--. 1 root root 350 Aug 5 17:41 tokenizer_config.json
-rw-r--r--. 1 root root 466247 Aug 5 17:41 tokenizer.json
-rw-r--r--. 1 root root 231508 Aug 5 17:41 vocab.txt


Function Name Category Shared Object Total Time (%) Call Count Average Time per Call (%) Is Rust Function Is Rust Original
zune_jpeg::bitstream::BitStream::decode_mcu_block zune_jpeg _core.cpython-311-aarch64-linux-gnu.so 0.32 1 0.32 FALSE TRUE
crossbeam_deque::deque::Stealer<T>::steal crossbeam_deque _core.cpython-311-aarch64-linux-gnu.so 0 2 0 FALSE TRUE
crossbeam_epoch::default::with_handle crossbeam_epoch _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
alloc::raw_vec::RawVecInner<A>::finish_grow alloc _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
rayon_core::sleep::Sleep::sleep rayon_core _core.cpython-311-aarch64-linux-gnu.so 0 8 0 FALSE TRUE
rayon_core::sleep::Sleep::wake_specific_thread rayon_core _core.cpython-311-aarch64-linux-gnu.so 0 2 0 FALSE TRUE
rayon_core::sleep::Sleep::wake_any_threads rayon_core _core.cpython-311-aarch64-linux-gnu.so 0 2 0 FALSE TRUE
std::sys::pal::unix::futex::futex_wait (inlined) std _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
rayon_core::latch::LockLatch::wait_and_reset rayon_core _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
rayon_core::registry::Registry::in_worker_cold rayon_core _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
sglang_mm_core::inkling::python::__pyfunction_decode_patchify_batch sglang_mm_core _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
pyo3::impl_::trampoline::trampoline pyo3 _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
pyo3::impl_::trampoline::fastcall_cfunction_with_keywords pyo3 _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
pyo3::impl_::pyclass::tp_dealloc pyo3 _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
pyo3::impl_::trampoline::trampoline_unraisable pyo3 _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
core::ops::function::FnOnce::call_once$u7b$$u7b$vtable.shim$u7d$$u7d$::h0bd0fa8f53c1651a core _core.cpython-311-aarch64-linux-gnu.so 0 8 0 FALSE TRUE
rayon_core::join::join_context::_$u7b$$u7b$closure$u7d$$u7d$::he58260e8e6576411 rayon_core _core.cpython-311-aarch64-linux-gnu.so 0 7 0 FALSE TRUE
rayon::iter::plumbing::bridge_producer_consumer::helper rayon _core.cpython-311-aarch64-linux-gnu.so 0 7 0 FALSE TRUE
<rayon_core::job::StackJob<L,F,R> as rayon_core::job::Job>::execute rayon_core _core.cpython-311-aarch64-linux-gnu.so 0 7 0 FALSE TRUE
rayon_core::registry::WorkerThread::wait_until_cold rayon_core _core.cpython-311-aarch64-linux-gnu.so 0 8 0 FALSE TRUE
std::sys::backtrace::__rust_begin_short_backtrace std _core.cpython-311-aarch64-linux-gnu.so 0 8 0 FALSE TRUE
image::io::image_reader_type::ImageReader<R>::make_decoder image _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
zune_jpeg::mcu::<impl zune_jpeg::decoder::JpegDecoder<T>>::decode_mcu_ycbcr_baseline zune_jpeg _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
<image::codecs::jpeg::decoder::JpegDecoder<R> as image::io::decoder::ImageDecoder>::read_image_boxed image _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE


Traceback (most recent call last):
File "/home/y30075072/bench/sglang/bench_rust_only.py", line 22, in <module>
import sglang.srt.multimodal._core.inkling
ModuleNotFoundError: No module named 'sglang.srt.multimodal._core.inkling'; 'sglang.srt.multimodal._core' is not a package


=== Noperf 测试开始: 2026-08-06 16:42:14 ===
命令: python /home/y30075072/bench/sglang/bench_rust_only.py
==========================================
=== Rust Only A: patchify from decoded array ===
1080x1920: shape (1323, 40, 40, 3) dtype torch.bfloat16
1920x1080: shape (1344, 40, 40, 3) dtype torch.bfloat16
40x40: shape (2, 40, 40, 3) dtype torch.bfloat16
37x53: shape (2, 40, 40, 3) dtype torch.bfloat16
720x1280: shape (594, 40, 40, 3) dtype torch.bfloat16
1x1: shape (1, 40, 40, 3) dtype torch.bfloat16
=== Rust Only B: full decode path ===
PNG: decode_patchify OK shape=(1323, 40, 40, 3) (1.22MB)
JPEG: decode_patchify OK shape=(1323, 40, 40, 3) (0.20MB)
=== Benchmark (1080p, patch_size=40) ===
rust decode_patchify wall 4.45 ms/img cpu 6.98 ms/img
rust decode_patchify_batch (5 imgs/call) wall 1.31 ms/img cpu 7.82 ms/img
rust patchify_rgb only wall 1.02 ms/img cpu 3.49 ms/img
OK
==========================================
=== Noperf 测试结束: 2026-08-06 16:42:19 ===
运行时长: 5秒
退出码: 0


单图完整路径
5 图批量并行
仅 patchify(跳过 decode)


Function Name Category Shared Object Total Time (%) Call Count Average Time per Call (%) Is Rust Function Is Rust Original
rayon::iter::plumbing::bridge_producer_consumer::helper rayon _core.cpython-311-aarch64-linux-gnu.so 5.46 14 0.39 FALSE TRUE
zune_jpeg::bitstream::BitStream::decode_mcu_block zune_jpeg _core.cpython-311-aarch64-linux-gnu.so 3.4 8 0.425 FALSE TRUE
zune_jpeg::idct::scalar::idct4x4 zune_jpeg _core.cpython-311-aarch64-linux-gnu.so 1.49 6 0.2483 FALSE TRUE
zune_jpeg::color_convert::neon64::ycbcr_to_rgb_neon zune_jpeg _core.cpython-311-aarch64-linux-gnu.so 1.01 5 0.202 FALSE TRUE
zune_jpeg::upsampler::neon::upsample_horizontal_neon zune_jpeg _core.cpython-311-aarch64-linux-gnu.so 0.24 2 0.12 FALSE TRUE
crossbeam_epoch::default::with_handle crossbeam_epoch _core.cpython-311-aarch64-linux-gnu.so 0.21 4 0.0525 FALSE TRUE
std::string::_Rep::_M_dispose(std::allocator<char> const&) [clone .part.0] std _core.cpython-311-aarch64-linux-gnu.so 0.14 1 0.14 FALSE TRUE
fdeflate::decompress::Decompressor::read fdeflate _core.cpython-311-aarch64-linux-gnu.so 0.14 1 0.14 FALSE TRUE
core::ops::function::FnOnce::call_once core _core.cpython-311-aarch64-linux-gnu.so 0.11 2 0.055 FALSE TRUE
zune_jpeg::mcu::<impl zune_jpeg::decoder::JpegDecoder<T>>::decode_mcu_ycbcr_baseline zune_jpeg _core.cpython-311-aarch64-linux-gnu.so 0.09 9 0.01 FALSE TRUE
crossbeam_deque::deque::Stealer<T>::steal crossbeam_deque _core.cpython-311-aarch64-linux-gnu.so 0.04 4 0.01 FALSE TRUE
zune_jpeg::huffman::HuffmanTable::new zune_jpeg _core.cpython-311-aarch64-linux-gnu.so 0.02 1 0.02 FALSE TRUE
<image::codecs::png::PngDecoder<R> as image::io::decoder::ImageDecoder>::read_image_boxed image _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
png::decoder::Reader<R>::next_interlaced_row_impl png _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
png::decoder::stream::StreamingDecoder::update png _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
image::io::image_reader_type::ImageReader<R>::make_decoder image _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
rayon_core::registry::WorkerThread::take_local_job.1650 rayon_core _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
std::sys::pal::unix::futex::futex_wait (inlined) std _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
rayon_core::sleep::Sleep::sleep rayon_core _core.cpython-311-aarch64-linux-gnu.so 0 8 0 FALSE TRUE
zune_jpeg::decoder::JpegDecoder<T>::parse_marker_inner zune_jpeg _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
rayon_core::sleep::Sleep::wake_any_threads rayon_core _core.cpython-311-aarch64-linux-gnu.so 0 2 0 FALSE TRUE
rayon_core::sleep::Sleep::wake_specific_thread rayon_core _core.cpython-311-aarch64-linux-gnu.so 0 2 0 FALSE TRUE
pybind11::class_<HighsOptions>& pybind11::class_<HighsOptions>::def_readwrite<HighsOptionsStruct, int>(char const*, int HighsOptionsStruct::*) pybind11 _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
pybind11::detail::generate_function_signature(char const*, pybind11::detail::function_record*, std::type_info const* const*, unsigned long&, unsigned long&) pybind11 _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
<rayon_core::job::StackJob<L,F,R> as rayon_core::job::Job>::execute rayon_core _core.cpython-311-aarch64-linux-gnu.so 0 15 0 FALSE TRUE
rayon_core::join::join_context::_$u7b$$u7b$closure$u7d$$u7d$::he58260e8e6576411 rayon_core _core.cpython-311-aarch64-linux-gnu.so 0 8 0 FALSE TRUE
core::ops::function::FnOnce::call_once$u7b$$u7b$vtable.shim$u7d$$u7d$::h0bd0fa8f53c1651a core _core.cpython-311-aarch64-linux-gnu.so 0 8 0 FALSE TRUE
std::sys::backtrace::__rust_begin_short_backtrace std _core.cpython-311-aarch64-linux-gnu.so 0 8 0 FALSE TRUE
rayon_core::registry::WorkerThread::wait_until_cold rayon_core _core.cpython-311-aarch64-linux-gnu.so 0 8 0 FALSE TRUE
zune_jpeg::mcu::<impl zune_jpeg::decoder::JpegDecoder<T>>::post_process zune_jpeg _core.cpython-311-aarch64-linux-gnu.so 0 5 0 FALSE TRUE
zune_jpeg::mcu::_$LT$impl$u20$zune_jpeg..decoder..JpegDecoder$LT$T$GT$$GT$::post_process::_$u7b$$u7b$closure$u7d$$u7d$::h180e30c390792f8e zune_jpeg _core.cpython-311-aarch64-linux-gnu.so 0 5 0 FALSE TRUE
zune_jpeg::worker::color_convert_ycbcr zune_jpeg _core.cpython-311-aarch64-linux-gnu.so 0 5 0 FALSE TRUE
pyo3::impl_::trampoline::trampoline pyo3 _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
sglang_mm_core::inkling::patchify_alloc sglang_mm_core _core.cpython-311-aarch64-linux-gnu.so 0 7 0 FALSE TRUE
<image::codecs::jpeg::decoder::JpegDecoder<R> as image::io::decoder::ImageDecoder>::read_image_boxed image _core.cpython-311-aarch64-linux-gnu.so 0 9 0 FALSE TRUE
image::io::free_functions::decoder_to_vec image _core.cpython-311-aarch64-linux-gnu.so 0 2 0 FALSE TRUE
rayon_core::join::join_context::_$u7b$$u7b$closure$u7d$$u7d$::h01af6c563654abc6 rayon_core _core.cpython-311-aarch64-linux-gnu.so 0 3 0 FALSE TRUE
rayon_core::thread_pool::ThreadPool::install::_$u7b$$u7b$closure$u7d$$u7d$::h3ec060c71febc475 rayon_core _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
sglang_mm_core::inkling::python::__pyfunction_patchify_rgb sglang_mm_core _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
sglang_mm_core::common::decode_rgb sglang_mm_core _core.cpython-311-aarch64-linux-gnu.so 0 5 0 FALSE TRUE
pyo3::impl_::trampoline::fastcall_cfunction_with_keywords pyo3 _core.cpython-311-aarch64-linux-gnu.so 0 2 0 FALSE TRUE
sglang_mm_core::inkling::python::__pyfunction_decode_patchify sglang_mm_core _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
rayon_core::thread_pool::ThreadPool::install::_$u7b$$u7b$closure$u7d$$u7d$::h3ec060c71febc475 rayon_core _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
rayon_core::join::join_context::_$u7b$$u7b$closure$u7d$$u7d$::h01af6c563654abc6 rayon_core _core.cpython-311-aarch64-linux-gnu.so 0 3 0 FALSE TRUE
sglang_mm_core::inkling::python::__pyfunction_decode_patchify sglang_mm_core _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
<image::codecs::png::PngDecoder<R> as image::io::decoder::ImageDecoder>::read_image_boxed image _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE
png::decoder::Reader<R>::next_interlaced_row_impl png _core.cpython-311-aarch64-linux-gnu.so 0 1 0 FALSE TRUE


=== 用例 P08 noperf 测试开始: 2026-08-06 18:37:57 ===
Bench: bench_dict
描述: PyDict 操作
Criterion: --sample-size 30 --measurement-time 3
命令: cargo bench --bench bench_dict -- --sample-size 30 --measurement-time 3
==========================================
Finished `bench` profile [optimized] target(s) in 0.06s
Running benches/bench_dict.rs (target/release/deps/bench_dict-b412df81c50d00bc)
Gnuplot not found, using plotters backend
Benchmarking iter_dict
Benchmarking iter_dict: Warming up for 3.0000 s
Benchmarking iter_dict: Collecting 30 samples in estimated 3.0620 s (2790 iterations)
Benchmarking iter_dict: Analyzing
iter_dict time: [1.1126 ms 1.1151 ms 1.1179 ms]
change: [+1.0252% +1.5024% +1.9829%] (p = 0.00 < 0.05)
Performance has regressed.
Found 2 outliers among 30 measurements (6.67%)
1 (3.33%) low mild
1 (3.33%) high mild
Benchmarking dict_new
Benchmarking dict_new: Warming up for 3.0000 s
Benchmarking dict_new: Collecting 30 samples in estimated 3.9443 s (930 iterations)
Benchmarking dict_new: Analyzing
dict_new time: [3.1902 ms 3.2687 ms 3.3172 ms]
change: [-4.6883% -0.0837% +4.8787%] (p = 0.97 > 0.05)
No change in performance detected.
Benchmarking dict_get_item
Benchmarking dict_get_item: Warming up for 3.0000 s
Benchmarking dict_get_item: Collecting 30 samples in estimated 3.6647 s (1860 iterations)
Benchmarking dict_get_item: Analyzing
dict_get_item time: [1.9616 ms 1.9661 ms 1.9702 ms]
change: [-3.9433% -3.0197% -2.2502%] (p = 0.00 < 0.05)
Performance has improved.
Benchmarking extract_hashmap
Benchmarking extract_hashmap: Warming up for 3.0000 s
Benchmarking extract_hashmap: Collecting 30 samples in estimated 3.3732 s (930 iterations)
Benchmarking extract_hashmap: Analyzing
extract_hashmap time: [3.5958 ms 3.6095 ms 3.6229 ms]
change: [-2.9706% -2.3051% -1.6400%] (p = 0.00 < 0.05)
Performance has improved.
Benchmarking extract_btreemap
Benchmarking extract_btreemap: Warming up for 3.0000 s
Warning: Unable to complete 30 samples in 3.0s. You may wish to increase target time to 3.8s, enable flat sampling, or reduce sample count to 10.
Benchmarking extract_btreemap: Collecting 30 samples in estimated 3.8107 s (465 iterations)
Benchmarking extract_btreemap: Analyzing
extract_btreemap time: [8.2242 ms 8.2401 ms 8.2683 ms]
change: [-2.0341% -1.4483% -0.7967%] (p = 0.00 < 0.05)
Change within noise threshold.
Found 2 outliers among 30 measurements (6.67%)
1 (3.33%) high mild
1 (3.33%) high severe
Benchmarking mapping_from_dict
Benchmarking mapping_from_dict: Warming up for 3.0000 s
Benchmarking mapping_from_dict: Collecting 30 samples in estimated 3.0000 s (3.3B iterations)
Benchmarking mapping_from_dict: Analyzing
mapping_from_dict time: [921.00 ps 935.65 ps 962.02 ps]
change: [-2.0474% -0.2878% +1.2725%] (p = 0.80 > 0.05)
No change in performance detected.
Found 2 outliers among 30 measurements (6.67%)
2 (6.67%) high severe
Benchmarking extract_hashbrown_map
Benchmarking extract_hashbrown_map: Warming up for 3.0000 s
Benchmarking extract_hashbrown_map: Collecting 30 samples in estimated 3.2352 s (1395 iterations)
Benchmarking extract_hashbrown_map: Analyzing
extract_hashbrown_map time: [2.3254 ms 2.3337 ms 2.3426 ms]
change: [-6.1730% -5.2886% -4.3950%] (p = 0.00 < 0.05)
Performance has improved.
Found 2 outliers among 30 measurements (6.67%)
2 (6.67%) high mild
==========================================
=== 用例 P08 noperf 测试结束: 2026-08-06 18:38:53 ===
运行时长: 56秒
退出码: 0


Function Name Category Shared Object Total Time (%) Call Count Average Time per Call (%) Is Rust Function Is Rust Original
rayon::iter::plumbing::bridge_producer_consumer::helper rayon _core.cpython-311-aarch64-linux-gnu.so 5.46 14 0.3900 FALSE TRUE
zune_jpeg::bitstream::BitStream::decode_mcu_block zune_jpeg _core.cpython-311-aarch64-linux-gnu.so 3.40 8 0.4250 FALSE TRUE
zune_jpeg::idct::scalar::idct4x4 zune_jpeg _core.cpython-311-aarch64-linux-gnu.so 1.49 6 0.2483 FALSE TRUE
zune_jpeg::color_convert::neon64::ycbcr_to_rgb_neon zune_jpeg _core.cpython-311-aarch64-linux-gnu.so 1.01 5 0.2020 FALSE TRUE
zune_jpeg::upsampler::neon::upsample_horizontal_neon zune_jpeg _core.cpython-311-aarch64-linux-gnu.so 0.24 2 0.1200 FALSE TRUE
crossbeam_epoch::default::with_handle crossbeam_epoch _core.cpython-311-aarch64-linux-gnu.so 0.21 4 0.0525 FALSE TRUE
std::string::_Rep::_M_dispose(std::allocator<char> const&) [clone .part.0] std _core.cpython-311-aarch64-linux-gnu.so 0.14 1 0.1400 FALSE TRUE
fdeflate::decompress::Decompressor::read fdeflate _core.cpython-311-aarch64-linux-gnu.so 0.14 1 0.1400 FALSE TRUE
core::ops::function::FnOnce::call_once core _core.cpython-311-aarch64-linux-gnu.so 0.11 2 0.0550 FALSE TRUE
zune_jpeg::mcu::<impl zune_jpeg::decoder::JpegDecoder<T>>::decode_mcu_ycbcr_baseline zune_jpeg _core.cpython-311-aarch64-linux-gnu.so 0.09 9 0.0100 FALSE TRUE
crossbeam_deque::deque::Stealer<T>::steal crossbeam_deque _core.cpython-311-aarch64-linux-gnu.so 0.04 4 0.0100 FALSE TRUE
<std::sys::sync::mutex::futex::Mutex>::lock_contended _core _core.cpython-311-aarch64-linux-gnu.so 0.02 2 0.0100 FALSE FALSE
zune_jpeg::huffman::HuffmanTable::new zune_jpeg _core.cpython-311-aarch64-linux-gnu.so 0.02 1 0.0200 FALSE TRUE
<image::codecs::png::PngDecoder<R> as image::io::decoder::ImageDecoder>::read_image_boxed image _core.cpython-311-aarch64-linux-gnu.so 0.00 1 0.0000 FALSE TRUE
png::decoder::Reader<R>::next_interlaced_row_impl png _core.cpython-311-aarch64-linux-gnu.so 0.00 1 0.0000 FALSE TRUE
png::decoder::stream::StreamingDecoder::update png _core.cpython-311-aarch64-linux-gnu.so 0.00 1 0.0000 FALSE TRUE
image::io::image_reader_type::ImageReader<R>::make_decoder image _core.cpython-311-aarch64-linux-gnu.so 0.00 1 0.0000 FALSE TRUE
rayon_core::registry::WorkerThread::take_local_job.1650 rayon_core _core.cpython-311-aarch64-linux-gnu.so 0.00 1 0.0000 FALSE TRUE
std::sys::pal::unix::futex::futex_wait (inlined) std _core.cpython-311-aarch64-linux-gnu.so 0.00 1 0.0000 FALSE TRUE
rayon_core::sleep::Sleep::sleep rayon_core _core.cpython-311-aarch64-linux-gnu.so 0.00 8 0.0000 FALSE TRUE
zune_jpeg::decoder::JpegDecoder<T>::parse_marker_inner zune_jpeg _core.cpython-311-aarch64-linux-gnu.so 0.00 1 0.0000 FALSE TRUE
rayon_core::sleep::Sleep::wake_any_threads rayon_core _core.cpython-311-aarch64-linux-gnu.so 0.00 2 0.0000 FALSE TRUE
rayon_core::sleep::Sleep::wake_specific_thread rayon_core _core.cpython-311-aarch64-linux-gnu.so 0.00 2 0.0000 FALSE TRUE
pybind11_exec__core(_object*) _core _core.cpython-311-aarch64-linux-gnu.so 0.00 1 0.0000 FALSE FALSE
pybind11_init__core(pybind11::module_&) _core _core.cpython-311-aarch64-linux-gnu.so 0.00 1 0.0000 FALSE FALSE
pybind11::class_<HighsOptions>& pybind11::class_<HighsOptions>::def_readwrite<HighsOptionsStruct, int>(char const*, int HighsOptionsStruct::*) pybind11 _core.cpython-311-aarch64-linux-gnu.so 0.00 1 0.0000 FALSE TRUE
pybind11::detail::generate_function_signature(char const*, pybind11::detail::function_record*, std::type_info const* const*, unsigned long&, unsigned long&) pybind11 _core.cpython-311-aarch64-linux-gnu.so 0.00 1 0.0000 FALSE TRUE
<rayon_core::job::StackJob<L,F,R> as rayon_core::job::Job>::execute rayon_core _core.cpython-311-aarch64-linux-gnu.so 0.00 15 0.0000 FALSE TRUE
rayon_core::join::join_context::_$u7b$$u7b$closure$u7d$$u7d$::he58260e8e6576411 rayon_core _core.cpython-311-aarch64-linux-gnu.so 0.00 8 0.0000 FALSE TRUE
<std::sys::thread::unix::Thread>::new::thread_start _core _core.cpython-311-aarch64-linux-gnu.so 0.00 8 0.0000 FALSE FALSE
core::ops::function::FnOnce::call_once$u7b$$u7b$vtable.shim$u7d$$u7d$::h0bd0fa8f53c1651a core _core.cpython-311-aarch64-linux-gnu.so 0.00 8 0.0000 FALSE TRUE
std::sys::backtrace::__rust_begin_short_backtrace std _core.cpython-311-aarch64-linux-gnu.so 0.00 8 0.0000 FALSE TRUE
rayon_core::registry::WorkerThread::wait_until_cold rayon_core _core.cpython-311-aarch64-linux-gnu.so 0.00 8 0.0000 FALSE TRUE
zune_jpeg::mcu::<impl zune_jpeg::decoder::JpegDecoder<T>>::post_process zune_jpeg _core.cpython-311-aarch64-linux-gnu.so 0.00 5 0.0000 FALSE TRUE
zune_jpeg::mcu::_$LT$impl$u20$zune_jpeg..decoder..JpegDecoder$LT$T$GT$$GT$::post_process::_$u7b$$u7b$closure$u7d$$u7d$::h180e30c390792f8e zune_jpeg _core.cpython-311-aarch64-linux-gnu.so 0.00 5 0.0000 FALSE TRUE
zune_jpeg::worker::color_convert_ycbcr zune_jpeg _core.cpython-311-aarch64-linux-gnu.so 0.00 5 0.0000 FALSE TRUE
pyo3::impl_::trampoline::trampoline pyo3 _core.cpython-311-aarch64-linux-gnu.so 0.00 1 0.0000 FALSE TRUE
sglang_mm_core::inkling::patchify_alloc sglang_mm_core _core.cpython-311-aarch64-linux-gnu.so 0.00 7 0.0000 FALSE TRUE
<image::codecs::jpeg::decoder::JpegDecoder<R> as image::io::decoder::ImageDecoder>::read_image_boxed image _core.cpython-311-aarch64-linux-gnu.so 0.00 9 0.0000 FALSE TRUE
image::io::free_functions::decoder_to_vec image _core.cpython-311-aarch64-linux-gnu.so 0.00 2 0.0000 FALSE TRUE
rayon_core::join::join_context::_$u7b$$u7b$closure$u7d$$u7d$::h01af6c563654abc6 rayon_core _core.cpython-311-aarch64-linux-gnu.so 0.00 3 0.0000 FALSE TRUE
rayon_core::thread_pool::ThreadPool::install::_$u7b$$u7b$closure$u7d$$u7d$::h3ec060c71febc475 rayon_core _core.cpython-311-aarch64-linux-gnu.so 0.00 1 0.0000 FALSE TRUE
sglang_mm_core::inkling::python::__pyfunction_patchify_rgb sglang_mm_core _core.cpython-311-aarch64-linux-gnu.so 0.00 1 0.0000 FALSE TRUE
sglang_mm_core::common::decode_rgb sglang_mm_core _core.cpython-311-aarch64-linux-gnu.so 0.00 5 0.0000 FALSE TRUE
pyo3::impl_::trampoline::fastcall_cfunction_with_keywords pyo3 _core.cpython-311-aarch64-linux-gnu.so 0.00 2 0.0000 FALSE TRUE
sglang_mm_core::inkling::python::__pyfunction_decode_patchify sglang_mm_core _core.cpython-311-aarch64-linux-gnu.so 0.00 1 0.0000 FALSE TRUE


=== 用例 R01 noperf 测试开始: 2026-08-07 15:15:38 ===
Bench: tree_lookup
描述: HashTree insert/match_prefix 缓存感知路由树
Criterion: --sample-size 30 --measurement-time 3
命令: cargo bench --bench tree_lookup -- --sample-size 30 --measurement-time 3
==========================================
Finished `bench` profile [optimized] target(s) in 0.20s
Running benches/tree_lookup.rs (target/release/deps/tree_lookup-7b25980595c630f1)
Gnuplot not found, using plotters backend
Benchmarking hashtree_insert/8
Benchmarking hashtree_insert/8: Warming up for 3.0000 s
Benchmarking hashtree_insert/8: Collecting 30 samples in estimated 3.0008 s (411k iterations)
Benchmarking hashtree_insert/8: Analyzing
hashtree_insert/8 time: [4.0444 µs 4.2701 µs 4.3912 µs]
thrpt: [1.8218 Melem/s 1.8735 Melem/s 1.9781 Melem/s]
change:
time: [-14.411% -1.8249% +12.153%] (p = 0.78 > 0.05)
thrpt: [-10.836% +1.8588% +16.837%]
No change in performance detected.
Benchmarking hashtree_insert/32
Benchmarking hashtree_insert/32: Warming up for 3.0000 s
Benchmarking hashtree_insert/32: Collecting 30 samples in estimated 3.0070 s (106k iterations)
Benchmarking hashtree_insert/32: Analyzing
hashtree_insert/32 time: [12.220 µs 14.053 µs 15.456 µs]
thrpt: [2.0704 Melem/s 2.2771 Melem/s 2.6186 Melem/s]
change:
time: [-12.459% -2.3308% +9.0446%] (p = 0.69 > 0.05)
thrpt: [-8.2944% +2.3865% +14.232%]
No change in performance detected.
Found 5 outliers among 30 measurements (16.67%)
5 (16.67%) high severe
Benchmarking hashtree_insert/128
Benchmarking hashtree_insert/128: Warming up for 3.0000 s
Benchmarking hashtree_insert/128: Collecting 30 samples in estimated 3.0388 s (27k iterations)
Benchmarking hashtree_insert/128: Analyzing
hashtree_insert/128 time: [42.572 µs 42.851 µs 43.246 µs]
thrpt: [2.9598 Melem/s 2.9871 Melem/s 3.0066 Melem/s]
change:
time: [-3.8024% -1.8624% -0.0465%] (p = 0.07 > 0.05)
thrpt: [+0.0465% +1.8978% +3.9527%]
No change in performance detected.
Found 3 outliers among 30 measurements (10.00%)
3 (10.00%) high severe
Benchmarking hashtree_insert/512
Benchmarking hashtree_insert/512: Warming up for 3.0000 s
Benchmarking hashtree_insert/512: Collecting 30 samples in estimated 3.0439 s (7905 iterations)
Benchmarking hashtree_insert/512: Analyzing
hashtree_insert/512 time: [252.96 µs 266.07 µs 273.79 µs]
thrpt: [1.8700 Melem/s 1.9243 Melem/s 2.0240 Melem/s]
change:
time: [-7.9876% +6.8431% +24.960%] (p = 0.44 > 0.05)
thrpt: [-19.974% -6.4048% +8.6810%]
No change in performance detected.
Found 1 outliers among 30 measurements (3.33%)
1 (3.33%) high severe
Benchmarking hashtree_match_prefix/w4_bpw32_q8
Benchmarking hashtree_match_prefix/w4_bpw32_q8: Warming up for 3.0000 s
Benchmarking hashtree_match_prefix/w4_bpw32_q8: Collecting 30 samples in estimated 3.0000 s (48M iterations)
Benchmarking hashtree_match_prefix/w4_bpw32_q8: Analyzing
hashtree_match_prefix/w4_bpw32_q8
time: [61.275 ns 61.351 ns 61.428 ns]
thrpt: [130.23 Melem/s 130.40 Melem/s 130.56 Melem/s]
change:
time: [-0.1740% +0.0395% +0.2507%] (p = 0.76 > 0.05)
thrpt: [-0.2501% -0.0395% +0.1743%]
No change in performance detected.
Found 2 outliers among 30 measurements (6.67%)
1 (3.33%) low mild
1 (3.33%) high mild
Benchmarking hashtree_match_prefix/w16_bpw64_q32
Benchmarking hashtree_match_prefix/w16_bpw64_q32: Warming up for 3.0000 s
Benchmarking hashtree_match_prefix/w16_bpw64_q32: Collecting 30 samples in estimated 3.0000 s (47M iterations)
Benchmarking hashtree_match_prefix/w16_bpw64_q32: Analyzing
hashtree_match_prefix/w16_bpw64_q32
time: [62.854 ns 63.078 ns 63.213 ns]
thrpt: [506.22 Melem/s 507.30 Melem/s 509.11 Melem/s]
change:
time: [+2.1100% +2.5842% +3.0067%] (p = 0.00 < 0.05)
thrpt: [-2.9189% -2.5191% -2.0664%]
Performance has regressed.
Benchmarking hashtree_match_prefix/w64_bpw128_q64
Benchmarking hashtree_match_prefix/w64_bpw128_q64: Warming up for 3.0000 s
Benchmarking hashtree_match_prefix/w64_bpw128_q64: Collecting 30 samples in estimated 3.0000 s (49M iterations)
Benchmarking hashtree_match_prefix/w64_bpw128_q64: Analyzing
hashtree_match_prefix/w64_bpw128_q64
time: [60.862 ns 60.933 ns 61.007 ns]
thrpt: [1.0491 Gelem/s 1.0503 Gelem/s 1.0516 Gelem/s]
change:
time: [-0.2855% -0.0942% +0.1014%] (p = 0.35 > 0.05)
thrpt: [-0.1013% +0.0942% +0.2863%]
No change in performance detected.
Found 1 outliers among 30 measurements (3.33%)
1 (3.33%) high mild
Benchmarking hashtree_match_prefix/w128_bpw256_q128
Benchmarking hashtree_match_prefix/w128_bpw256_q128: Warming up for 3.0000 s
Benchmarking hashtree_match_prefix/w128_bpw256_q128: Collecting 30 samples in estimated 3.0000 s (47M iterations)
Benchmarking hashtree_match_prefix/w128_bpw256_q128: Analyzing
hashtree_match_prefix/w128_bpw256_q128
time: [63.312 ns 63.384 ns 63.470 ns]
thrpt: [2.0167 Gelem/s 2.0194 Gelem/s 2.0217 Gelem/s]
change:
time: [-0.3668% -0.1650% +0.0462%] (p = 0.12 > 0.05)
thrpt: [-0.0462% +0.1653% +0.3681%]
No change in performance detected.
==========================================
=== 用例 R01 noperf 测试结束: 2026-08-07 15:16:30 ===
运行时长: 52秒
退出码: 0


=== 用例 R01 noperf 测试开始: 2026-08-07 15:15:38 ===
Bench: tree_lookup
描述: HashTree insert/match_prefix 缓存感知路由树
Criterion: --sample-size 30 --measurement-time 3
命令: cargo bench --bench tree_lookup -- --sample-size 30 --measurement-time 3
==========================================
Finished `bench` profile [optimized] target(s) in 0.20s
Running benches/tree_lookup.rs (target/release/deps/tree_lookup-7b25980595c630f1)
Gnuplot not found, using plotters backend
Benchmarking hashtree_insert/8
Benchmarking hashtree_insert/8: Warming up for 3.0000 s
Benchmarking hashtree_insert/8: Collecting 30 samples in estimated 3.0008 s (411k iterations)
Benchmarking hashtree_insert/8: Analyzing
hashtree_insert/8 time: [4.0444 µs 4.2701 µs 4.3912 µs]
thrpt: [1.8218 Melem/s 1.8735 Melem/s 1.9781 Melem/s]
change:
time: [-14.411% -1.8249% +12.153%] (p = 0.78 > 0.05)
thrpt: [-10.836% +1.8588% +16.837%]
No change in performance detected.
Benchmarking hashtree_insert/32
Benchmarking hashtree_insert/32: Warming up for 3.0000 s
Benchmarking hashtree_insert/32: Collecting 30 samples in estimated 3.0070 s (106k iterations)
Benchmarking hashtree_insert/32: Analyzing
hashtree_insert/32 time: [12.220 µs 14.053 µs 15.456 µs]
thrpt: [2.0704 Melem/s 2.2771 Melem/s 2.6186 Melem/s]
change:
time: [-12.459% -2.3308% +9.0446%] (p = 0.69 > 0.05)
thrpt: [-8.2944% +2.3865% +14.232%]
No change in performance detected.
Found 5 outliers among 30 measurements (16.67%)
5 (16.67%) high severe
Benchmarking hashtree_insert/128
Benchmarking hashtree_insert/128: Warming up for 3.0000 s
Benchmarking hashtree_insert/128: Collecting 30 samples in estimated 3.0388 s (27k iterations)
Benchmarking hashtree_insert/128: Analyzing
hashtree_insert/128 time: [42.572 µs 42.851 µs 43.246 µs]
thrpt: [2.9598 Melem/s 2.9871 Melem/s 3.0066 Melem/s]
change:
time: [-3.8024% -1.8624% -0.0465%] (p = 0.07 > 0.05)
thrpt: [+0.0465% +1.8978% +3.9527%]
No change in performance detected.
Found 3 outliers among 30 measurements (10.00%)
3 (10.00%) high severe
Benchmarking hashtree_insert/512
Benchmarking hashtree_insert/512: Warming up for 3.0000 s
Benchmarking hashtree_insert/512: Collecting 30 samples in estimated 3.0439 s (7905 iterations)
Benchmarking hashtree_insert/512: Analyzing
hashtree_insert/512 time: [252.96 µs 266.07 µs 273.79 µs]
thrpt: [1.8700 Melem/s 1.9243 Melem/s 2.0240 Melem/s]
change:
time: [-7.9876% +6.8431% +24.960%] (p = 0.44 > 0.05)
thrpt: [-19.974% -6.4048% +8.6810%]
No change in performance detected.
Found 1 outliers among 30 measurements (3.33%)
1 (3.33%) high severe
Benchmarking hashtree_match_prefix/w4_bpw32_q8
Benchmarking hashtree_match_prefix/w4_bpw32_q8: Warming up for 3.0000 s
Benchmarking hashtree_match_prefix/w4_bpw32_q8: Collecting 30 samples in estimated 3.0000 s (48M iterations)
Benchmarking hashtree_match_prefix/w4_bpw32_q8: Analyzing
hashtree_match_prefix/w4_bpw32_q8
time: [61.275 ns 61.351 ns 61.428 ns]
thrpt: [130.23 Melem/s 130.40 Melem/s 130.56 Melem/s]
change:
time: [-0.1740% +0.0395% +0.2507%] (p = 0.76 > 0.05)
thrpt: [-0.2501% -0.0395% +0.1743%]
No change in performance detected.
Found 2 outliers among 30 measurements (6.67%)
1 (3.33%) low mild
1 (3.33%) high mild
Benchmarking hashtree_match_prefix/w16_bpw64_q32
Benchmarking hashtree_match_prefix/w16_bpw64_q32: Warming up for 3.0000 s
Benchmarking hashtree_match_prefix/w16_bpw64_q32: Collecting 30 samples in estimated 3.0000 s (47M iterations)
Benchmarking hashtree_match_prefix/w16_bpw64_q32: Analyzing
hashtree_match_prefix/w16_bpw64_q32
time: [62.854 ns 63.078 ns 63.213 ns]
thrpt: [506.22 Melem/s 507.30 Melem/s 509.11 Melem/s]
change:
time: [+2.1100% +2.5842% +3.0067%] (p = 0.00 < 0.05)
thrpt: [-2.9189% -2.5191% -2.0664%]
Performance has regressed.
Benchmarking hashtree_match_prefix/w64_bpw128_q64
Benchmarking hashtree_match_prefix/w64_bpw128_q64: Warming up for 3.0000 s
Benchmarking hashtree_match_prefix/w64_bpw128_q64: Collecting 30 samples in estimated 3.0000 s (49M iterations)
Benchmarking hashtree_match_prefix/w64_bpw128_q64: Analyzing
hashtree_match_prefix/w64_bpw128_q64
time: [60.862 ns 60.933 ns 61.007 ns]
thrpt: [1.0491 Gelem/s 1.0503 Gelem/s 1.0516 Gelem/s]
change:
time: [-0.2855% -0.0942% +0.1014%] (p = 0.35 > 0.05)
thrpt: [-0.1013% +0.0942% +0.2863%]
No change in performance detected.
Found 1 outliers among 30 measurements (3.33%)
1 (3.33%) high mild
Benchmarking hashtree_match_prefix/w128_bpw256_q128
Benchmarking hashtree_match_prefix/w128_bpw256_q128: Warming up for 3.0000 s
Benchmarking hashtree_match_prefix/w128_bpw256_q128: Collecting 30 samples in estimated 3.0000 s (47M iterations)
Benchmarking hashtree_match_prefix/w128_bpw256_q128: Analyzing
hashtree_match_prefix/w128_bpw256_q128
time: [63.312 ns 63.384 ns 63.470 ns]
thrpt: [2.0167 Gelem/s 2.0194 Gelem/s 2.0217 Gelem/s]
change:
time: [-0.3668% -0.1650% +0.0462%] (p = 0.12 > 0.05)
thrpt: [-0.0462% +0.1653% +0.3681%]
No change in performance detected.
==========================================
=== 用例 R01 noperf 测试结束: 2026-08-07 15:16:30 ===
运行时长: 52秒
退出码: 0

