Skip to content

pico: pin V toolchain to latest upstream commit#919

Open
enghitalo wants to merge 1 commit into
MDA2AV:mainfrom
enghitalo:chore/pico-pin-latest-v
Open

pico: pin V toolchain to latest upstream commit#919
enghitalo wants to merge 1 commit into
MDA2AV:mainfrom
enghitalo:chore/pico-pin-latest-v

Conversation

@enghitalo

Copy link
Copy Markdown
Contributor

Summary

Pin the V toolchain used by frameworks/pico from c0624b274 to the latest upstream V master commit 6c4d26f1f.

Why this can improve benchmark results

Recent V upstream changes in this range include runtime-oriented improvements relevant to tight HTTP loops:

Closed issue references

Scope

  • Updated only: frameworks/pico/Dockerfile

@enghitalo

Copy link
Copy Markdown
Contributor Author

/benchmark -f pico

@github-actions

Copy link
Copy Markdown
Contributor

👋 /benchmark request received. A collaborator will review and approve the run.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: pico | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
pipelined 512 4,244,495 6290.0% 416MiB ~0% -50.8%
pipelined 4096 4,257,608 6275.8% 701MiB -0.8% -0.3%
json 4096 2,131,290 6280.1% 1.7GiB -0.6% +41.7%
Full log
[info] CPU 6296.4% | Mem 646MiB

=== Best: 4244495 req/s (CPU: 6290.0%, Mem: 416MiB) ===
[info] saved results/pipelined/512/pico.json
httparena-bench-pico
httparena-bench-pico

==============================================
=== pico / pipelined / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3
  Target:    localhost:8080/pipeline
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   15.42ms   14.50ms   20.70ms   29.50ms   38.80ms

  21281322 requests in 5.00s, 21281322 responses
  Throughput: 4.25M req/s
  Bandwidth:  312.43MB/s
  Status codes: 2xx=21281322, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 21281287 / 21281322 responses (100.0%)
[info] CPU 6240.1% | Mem 469MiB

[run 2/3]
gcannon v0.5.3
  Target:    localhost:8080/pipeline
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   15.39ms   14.40ms   20.70ms   29.00ms   34.60ms

  21291497 requests in 5.00s, 21287401 responses
  Throughput: 4.26M req/s
  Bandwidth:  312.52MB/s
  Status codes: 2xx=21287401, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 21287322 / 21287401 responses (100.0%)
[info] CPU 6414.0% | Mem 698MiB

[run 3/3]
gcannon v0.5.3
  Target:    localhost:8080/pipeline
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   15.39ms   14.50ms   20.70ms   29.10ms   34.50ms

  21291113 requests in 5.00s, 21288041 responses
  Throughput: 4.26M req/s
  Bandwidth:  312.54MB/s
  Status codes: 2xx=21288041, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 21288005 / 21288041 responses (100.0%)
[info] CPU 6275.8% | Mem 701MiB

=== Best: 4257608 req/s (CPU: 6275.8%, Mem: 701MiB) ===
[info] saved results/pipelined/4096/pico.json
httparena-bench-pico
httparena-bench-pico
[info] skip: pico does not subscribe to limited-conn

==============================================
=== pico / json / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  1
  Req/conn:  25
  Templates: 7
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   1.24ms    606us    993us   34.10ms   64.70ms

  10658496 requests in 5.00s, 10656450 responses
  Throughput: 2.13M req/s
  Bandwidth:  7.15GB/s
  Status codes: 2xx=10656450, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 10656389 / 10656450 responses (100.0%)
  Reconnects: 424919
  Per-template: 1515939,1520675,1524537,1527267,1526962,1523393,1517616
  Per-template-ok: 1515939,1520675,1524536,1527266,1526962,1523393,1517616
[info] CPU 6280.1% | Mem 1.7GiB

[run 2/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  1
  Req/conn:  25
  Templates: 7
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   1.25ms    610us    997us   35.00ms   64.60ms

  10652871 requests in 5.00s, 10652622 responses
  Throughput: 2.13M req/s
  Bandwidth:  7.15GB/s
  Status codes: 2xx=10652622, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 10652569 / 10652622 responses (100.0%)
  Reconnects: 425727
  Per-template: 1515724,1519305,1523251,1527013,1526505,1523199,1517572
  Per-template-ok: 1515724,1519305,1523251,1527013,1526505,1523199,1517572
[info] CPU 6507.2% | Mem 1.7GiB

[run 3/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  1
  Req/conn:  25
  Templates: 7
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   1.25ms    601us    971us   36.60ms   65.20ms

  10647966 requests in 5.00s, 10647969 responses
  Throughput: 2.13M req/s
  Bandwidth:  7.15GB/s
  Status codes: 2xx=10647969, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 10647883 / 10647969 responses (100.0%)
  Reconnects: 426170
  Per-template: 1515127,1519225,1522868,1526148,1526071,1522245,1516199
  Per-template-ok: 1515127,1519225,1522868,1526148,1526071,1522245,1516199
[info] CPU 6323.7% | Mem 1.7GiB

=== Best: 2131290 req/s (CPU: 6280.1%, Mem: 1.7GiB) ===
[info] input BW: 101.63MB/s (avg template: 50 bytes)
[info] saved results/json/4096/pico.json
httparena-bench-pico
httparena-bench-pico
[info] skip: pico does not subscribe to json-comp
[info] skip: pico does not subscribe to json-tls
[info] skip: pico does not subscribe to upload
[info] skip: pico does not subscribe to api-4
[info] skip: pico does not subscribe to api-16
[info] skip: pico does not subscribe to static
[info] skip: pico does not subscribe to async-db
[info] skip: pico does not subscribe to crud
[info] skip: pico does not subscribe to fortunes
[info] skip: pico does not subscribe to baseline-h2
[info] skip: pico does not subscribe to static-h2
[info] skip: pico does not subscribe to baseline-h2c
[info] skip: pico does not subscribe to json-h2c
[info] skip: pico does not subscribe to baseline-h3
[info] skip: pico does not subscribe to static-h3
[info] skip: pico does not subscribe to gateway-64
[info] skip: pico does not subscribe to gateway-h3
[info] skip: pico does not subscribe to production-stack
[info] skip: pico does not subscribe to unary-grpc
[info] skip: pico does not subscribe to unary-grpc-tls
[info] skip: pico does not subscribe to stream-grpc
[info] skip: pico does not subscribe to stream-grpc-tls
[info] skip: pico does not subscribe to echo-ws
[info] skip: pico does not subscribe to echo-ws-pipeline
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

@enghitalo enghitalo marked this pull request as draft June 23, 2026 20:07
@enghitalo enghitalo marked this pull request as ready for review June 24, 2026 01:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Array single-element push (<<) 4-7x slower on master vs 0.5.1 (alloc, push_many, indexed-write unaffected)

1 participant