已开启
sglang #8
QLiangong创建于  8月4日
QLiangong
QLiangong成员
8月4日 创建
cd experimental/sgl-router
cargo bench --bench tree_lookup   -- --sample-size 30 --measurement-time 3
cargo bench --bench policy_select -- --sample-size 30 --measurement-time 3
likedislike
QLiangong
QLiangong成员
8月4日 评论:
cd sgl-model-gateway
cargo bench                      # 跑全部 6 个已注册的
cargo bench --bench tree_benchmark -- benchmark_summary --exact   # 单个快速验证
likedislike
QLiangong
QLiangong成员
8月4日 评论:
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
likedislike
QLiangong
QLiangong成员
8月4日 评论:
   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 编译失败
likedislike
QLiangong
QLiangong成员
8月4日 评论:

rustfilt

likedislike
QLiangong
QLiangong成员
8月4日 评论:
{"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}

likedislike
QLiangong
QLiangong成员
8月4日 评论:
     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
likedislike
QLiangong
QLiangong成员
8月4日 评论:

_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

likedislike
QLiangong
QLiangong成员
8月5日 评论:

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

likedislike
QLiangong
QLiangong成员
8月5日 评论:

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

likedislike
QLiangong
QLiangong成员
8月5日 评论:
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

likedislike
QLiangong
QLiangong成员
8月5日 评论:

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 中间件修复前延迟(基线对照)

likedislike
QLiangong
QLiangong成员
8月5日 评论:
=== 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 ===

likedislike
QLiangong
QLiangong成员
8月5日 评论:
编译完成: /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''
      ^
likedislike
QLiangong
QLiangong成员
8月5日 评论:
=== 用例 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

likedislike
QLiangong
QLiangong成员
8月5日 评论:

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

likedislike
QLiangong
QLiangong成员
8月5日 评论:

我再这个文件夹下面准备了这些,这个可以吗:
[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

likedislike
QLiangong
QLiangong成员
8月6日 评论:
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

likedislike
QLiangong
QLiangong成员
8月6日 评论:
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

likedislike
QLiangong
QLiangong成员
8月6日 评论:
=== 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

likedislike
QLiangong
QLiangong成员
8月6日 评论:

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

likedislike
QLiangong
QLiangong成员
8月6日 评论:
QLiangong
QLiangong成员
8月6日 评论:
QLiangong
QLiangong成员
8月6日 评论:
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

likedislike
QLiangong
QLiangong成员
8月7日 评论:
=== 用例 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

likedislike
QLiangong
QLiangong成员
8月7日 评论:
QLiangong
QLiangong成员
8月7日 评论:
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

likedislike
QLiangong
QLiangong成员
8月7日 评论:
=== 用例 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

likedislike
QLiangong
QLiangong成员
8月7日 评论:
=== 用例 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

likedislike