Skip to content

perf: box client_server_exchange future [PGO] - #2013

Open
jkaczman wants to merge 1 commit into
jk-command-complete-tag-charfrom
jk-box-client-server-exchange
Open

jkaczman wants to merge 1 commit into
jk-command-complete-tag-charfrom
jk-box-client-server-exchange

Conversation

@jkaczman

Copy link
Copy Markdown
Contributor

Background:

  • QueryEngine::execute runs the client_server_exchange future (4.9 KB value that Rust creates for the async function) inside a tokio select macro
  • when Box::pin is used, it puts futures in heap memory via malloc, so that when we move the future, we only copy a pointer
  • Without Box::pin, the compiler can usually create the future in place, directly in the memory of the select maro (with no copies)

In that spirit, #1396 removed the Box::pin to get rid of the malloc call.
However, that was before we built releases with PGO (#1872).

With PGO, this optimization no longer happens: the compiler no longer creates the future in place, and instead copies the 4.9 KB future into place twice per transaction. In our PGO profiles of the pooler bench, these copies cost ~660 cycles per transaction.

Thus, this PR boxes the future again to save the copies (malloc costs ~100 cycles, a much smaller price to pay).

@jkaczman
jkaczman added this pull request to stack #2012 November 11, 2026 16:47
@codecov

codecov Bot commented Nov 11, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@github-actions

github-actions Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

Metal bench (arm64) failed. 176 of 517 measures outside bounds.

suite throughput cpu/txn user cycles/txn user instr/txn kernel cycles/txn kernel instr/txn ctx/txn
pooler 19.22 (+0.2% ± 0.5%) 19,232 (+2.0% ± 1.0%), bound +2% 32,876 (+3.0% ± 0.07%), bound +0.5% 30,030 (-0.7% ± 1.0%) 51,102 (-0.0% ± 0.4%)
lb 19.94 (+1.4% ± 1.2%) 19,971 (+2.8% ± 0.8%), bound +2% 33,733 (+2.8% ± 0.2%), bound +0.5% 30,999 (+1.5% ± 1.6%) 52,308 (+0.0% ± 0.4%)
sharding-w2 31.76 (+1.9% ± 1.8%) 43,269 (+1.4% ± 1.1%) 98,305 (+1.0% ± 0.01%) 39,227 (+2.6% ± 3.4%) 53,670 (-0.0% ± 0.2%) 1.548 (-0.1% ± 0.1%)
sharding-w8 250,123 (-0.1% ± 1.5%) 28.49 (+0.1% ± 1.6%) 43,497 (+0.5% ± 1.8%) 53,798 (+1.8% ± 0.07%), bound +0.5% 35,170 (-0.3% ± 2.2%) 42,388 (+0.0% ± 0.07%) 0.1745 (-0.1% ± 1.4%)
Counters per txn
suite frontend stall l1i refill backend stall
pooler 8,414 (-0.2% ± 2.6%) 2,748 (-0.1% ± 1.5%)
lb 8,941 (+3.2% ± 1.9%) 2,842 (+1.7% ± 1.0%)
sharding-w2 16,915 (+0.8% ± 2.6%) 3,995 (+0.6% ± 1.8%)
sharding-w8 18,254 (-2.1% ± 5.2%) 3,858 (-1.2% ± 2.0%)
benchmark measure result baseline change bound
full_extended_cached::aggregate alloc_count 131 130 +0.77% ± 0.00% +0%
full_extended_cached::aggregate alloc_bytes 20,810 15,270 +36.28% ± 0.00% +1%
full_extended_cached::cte alloc_count 62 61 +1.64% ± 0.00% +0%
full_extended_cached::cte alloc_bytes 7,831 2,295 +241.22% ± 0.00% +1%
full_extended_cached::cte instructions 101,482 100,144 +1.34% ± 0.00% +1%
full_extended_cached::delete_all_shards alloc_count 67 66 +1.52% ± 0.00% +0%
full_extended_cached::delete_all_shards alloc_bytes 15,850 10,310 +53.73% ± 0.00% +1%
full_extended_cached::delete_all_shards instructions 98,837 97,642 +1.22% ± 0.00% +1%
full_extended_cached::delete_by_key alloc_count 39 38 +2.63% ± 0.00% +0%
full_extended_cached::delete_by_key alloc_bytes 6,758 1,222 +453.03% ± 0.00% +1%
full_extended_cached::delete_by_key instructions 66,221 64,766 +2.25% ± 0.00% +1%
full_extended_cached::distinct alloc_count 156 155 +0.65% ± 0.00% +0%
full_extended_cached::distinct alloc_bytes 19,440 13,900 +39.86% ± 0.00% +1%
full_extended_cached::group_by alloc_count 291 290 +0.34% ± 0.00% +0%
full_extended_cached::group_by alloc_bytes 38,680 33,150 +16.68% ± 0.00% +1%
full_extended_cached::having alloc_count 480 479 +0.21% ± 0.00% +0%
full_extended_cached::having alloc_bytes 57,890 52,360 +10.56% ± 0.00% +1%
full_extended_cached::having_distinct_limit alloc_bytes 60,012 54,476 +10.16% ± 0.03% +1%
full_extended_cached::insert alloc_count 39 38 +2.63% ± 0.00% +0%
full_extended_cached::insert alloc_bytes 6,712 1,176 +470.75% ± 0.00% +1%
full_extended_cached::insert instructions 67,432 65,660 +2.70% ± 0.00% +1%
full_extended_cached::insert_returning alloc_count 40 39 +2.56% ± 0.00% +0%
full_extended_cached::insert_returning alloc_bytes 6,778 1,242 +445.73% ± 0.00% +1%
full_extended_cached::insert_returning instructions 71,070 69,189 +2.72% ± 0.00% +1%
full_extended_cached::insert_split alloc_count 64 63 +1.59% ± 0.00% +0%
full_extended_cached::insert_split alloc_bytes 16,460 10,920 +50.73% ± 0.00% +1%
full_extended_cached::insert_split instructions 98,556 97,089 +1.51% ± 0.00% +1%
full_extended_cached::join alloc_count 62 61 +1.64% ± 0.00% +0%
full_extended_cached::join alloc_bytes 8,237 2,701 +204.96% ± 0.00% +1%
full_extended_cached::join instructions 108,387 106,503 +1.77% ± 0.00% +1%
full_extended_cached::lookup alloc_count 60 59 +1.69% ± 0.00% +0%
full_extended_cached::lookup alloc_bytes 7,539 2,003 +276.39% ± 0.00% +1%
full_extended_cached::lookup instructions 96,267 94,758 +1.59% ± 0.00% +1%
full_extended_cached::min_max_sum alloc_count 108 107 +0.93% ± 0.00% +0%
full_extended_cached::min_max_sum alloc_bytes 19,190 13,650 +40.59% ± 0.00% +1%
full_extended_cached::order_limit_offset alloc_count 189 188 +0.53% ± 0.00% +0%
full_extended_cached::order_limit_offset alloc_bytes 19,710 14,180 +39.00% ± 0.00% +1%
full_extended_cached::select_all_shards alloc_count 114 113 +0.88% ± 0.00% +0%
full_extended_cached::select_all_shards alloc_bytes 17,230 11,690 +47.39% ± 0.00% +1%
full_extended_cached::select_by_key alloc_count 60 59 +1.69% ± 0.00% +0%

Microbench: 333 of 504 measures within bounds. See verdict.json for the rest.

  • full_extended_cached: 23 of 24 benches slower, median +1.3% ± 0.0%
  • full_named_cached: 21 of 24 benches slower, median +1.3% ± 0.0%
  • full_simple: 22 of 24 benches slower, median +1.1% ± 0.0%
Microbench latency: 4 benches changed more than 3%
benchmark latency baseline change instructions change
full_simple::delete_by_key 8,455 ns 8,157 ns +3.66% ± 0.32% +3.07% ± 0.00%
full_simple::cte 14,580 ns 14,088 ns +3.49% ± 1.24% +1.35% ± 0.00%
full_simple::update_by_key 8,843 ns 8,545 ns +3.48% ± 0.90% +2.74% ± 0.00%
full_named_cached::update_by_key 10,572 ns 10,226 ns +3.39% ± 1.45% +2.45% ± 0.00%
Hot code per txn
path base head change
pooler 110.8 KB 114.5 KB +3.7 KB
sharding-w2 164.7 KB 167.4 KB +2.7 KB

pooler:

crate base head change
pgdog::frontend::client::query_engine 19.8 KB 19.4 KB -0.4 KB
tokio 18.5 KB 18.6 KB +0.1 KB
pgdog::backend::pool 17.7 KB 17.6 KB -0.1 KB
aws-lc (TLS crypto) 10.3 KB 10.5 KB +0.2 KB
rustls (TLS) 8.4 KB 8.4 KB +0.0 KB
pgdog::frontend (other) 7.9 KB 7.8 KB -0.1 KB
pgdog::backend::server 7.1 KB 7.1 KB +0.0 KB
other 5.8 KB 6.9 KB +1.2 KB
everything else 15.4 KB 18.3 KB +2.9 KB
function head change
pgdog::frontend::client::Client::run::{{closure}} 5.4 KB -0.1 KB
pgdog::frontend::client::query_engine::query::<impl pgdog::frontend::client::query_engine: 5.1 KB -0.2 KB
pgdog::frontend::client::query_engine::QueryEngine::handle::{{closure}} 3.9 KB -0.2 KB
tokio::runtime::task::raw::poll 3.2 KB +0.0 KB
pgdog::frontend::client::query_engine::query::<impl pgdog::frontend::client::query_engine: 2.8 KB +0.0 KB

sharding-w2:

crate base head change
pgdog::frontend::router 28.9 KB 28.6 KB -0.4 KB
pgdog::frontend::client::query_engine 20.6 KB 20.6 KB +0.1 KB
tokio 18.9 KB 18.6 KB -0.3 KB
pgdog::backend::pool 18.0 KB 18.2 KB +0.2 KB
aws-lc (TLS crypto) 13.0 KB 13.3 KB +0.3 KB
other 9.6 KB 9.9 KB +0.2 KB
pgdog::frontend (other) 8.6 KB 8.6 KB +0.0 KB
rustls (TLS) 8.0 KB 8.1 KB +0.1 KB
everything else 39.1 KB 41.6 KB +2.4 KB
function head change
pgdog::frontend::client::Client::run::{{closure}} 6.1 KB +0.1 KB
pgdog::frontend::client::query_engine::query::<impl pgdog::frontend::client::query_engine: 5.1 KB +0.1 KB
pgdog::frontend::client::query_engine::QueryEngine::handle::{{closure}} 4.0 KB +0.0 KB
pgdog::frontend::router::parser::query::select::<impl pgdog::frontend::router::parser::que 3.3 KB +0.0 KB
tokio::runtime::task::raw::poll 3.2 KB +0.1 KB
lb flamegraph vs b47ea9b

lb

Open interactive for hover, zoom and search.

lb removed

Open interactive.

microbench flamegraph vs b47ea9b

microbench

Open interactive for hover, zoom and search.

microbench removed

Open interactive.

pooler flamegraph vs b47ea9b

pooler

Open interactive for hover, zoom and search.

pooler removed

Open interactive.

sharding-w2 flamegraph vs b47ea9b

sharding-w2

Open interactive for hover, zoom and search.

sharding-w2 removed

Open interactive.

sharding-w8 flamegraph vs b47ea9b

sharding-w8

Open interactive for hover, zoom and search.

sharding-w8 removed

Open interactive.

Logs

lb, microbench, pooler, sharding-w2, sharding-w8, verdict.json

Compared 679ccc4 with b47ea9b on m8g.metal-24xl (on-demand).

@github-actions

github-actions Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

Metal bench (x86) failed. 157 of 517 measures outside bounds.

suite throughput cpu/txn user cycles/txn user instr/txn kernel cycles/txn kernel instr/txn ctx/txn
pooler 35.03 (+0.7% ± 0.3%) 23,912 (+3.7% ± 0.3%), bound +2% 34,094 (+0.9% ± 0.02%), bound +0.5% 57,663 (-0.2% ± 0.3%) 38,382 (-0.3% ± 0.09%)
lb 36.04 (+0.8% ± 0.2%) 25,103 (+3.7% ± 0.2%), bound +2% 35,055 (+0.9% ± 0.02%), bound +0.5% 58,572 (-0.2% ± 0.3%) 39,084 (-0.2% ± 0.1%)
sharding-w2 57.17 (+0.8% ± 1.0%) 54,793 (+1.9% ± 0.8%) 101,578 (+0.4% ± 0.02%) 72,859 (+0.2% ± 2.0%) 43,053 (-0.1% ± 0.4%) 1.388 (-0.2% ± 0.4%)
sharding-w8 147,550 (-0.6% ± 1.3%) 48.67 (+1.0% ± 0.9%) 59,280 (+1.8% ± 0.3%) 57,000 (+0.6% ± 0.06%), bound +0.5% 64,291 (+0.3% ± 1.9%) 34,244 (+0.0% ± 0.1%) 0.1657 (-1.8% ± 0.9%)
Counters per txn
suite frontend stall l1i refill backend stall
pooler 75,487 (+1.6% ± 1.0%) 3,664 (+1.1% ± 0.1%)
lb 79,229 (+3.0% ± 1.2%) 3,800 (+1.2% ± 0.3%)
sharding-w2 166,080 (+3.8% ± 3.1%) 6,153 (+2.2% ± 1.3%)
sharding-w8 127,975 (+3.7% ± 2.8%) 4,888 (+1.8% ± 0.3%)
benchmark measure result baseline change bound
full_extended_cached::aggregate alloc_count 131 130 +0.77% ± 0.00% +0%
full_extended_cached::aggregate alloc_bytes 20,820 15,290 +36.17% ± 0.00% +1%
full_extended_cached::cte alloc_count 62 61 +1.64% ± 0.00% +0%
full_extended_cached::cte alloc_bytes 7,855 2,319 +238.72% ± 0.00% +1%
full_extended_cached::delete_all_shards alloc_count 67 66 +1.52% ± 0.00% +0%
full_extended_cached::delete_all_shards alloc_bytes 15,850 10,310 +53.73% ± 0.00% +1%
full_extended_cached::delete_by_key alloc_count 39 38 +2.63% ± 0.00% +0%
full_extended_cached::delete_by_key alloc_bytes 6,766 1,230 +450.08% ± 0.00% +1%
full_extended_cached::delete_by_key instructions 69,819 68,856 +1.40% ± 0.00% +1%
full_extended_cached::distinct alloc_count 156 155 +0.65% ± 0.00% +0%
full_extended_cached::distinct alloc_bytes 19,460 13,930 +39.70% ± 0.00% +1%
full_extended_cached::group_by alloc_count 291 290 +0.34% ± 0.00% +0%
full_extended_cached::group_by alloc_bytes 38,720 33,180 +16.70% ± 0.00% +1%
full_extended_cached::having alloc_count 480 479 +0.21% ± 0.00% +0%
full_extended_cached::having alloc_bytes 57,920 52,390 +10.56% ± 0.00% +1%
full_extended_cached::having_distinct_limit alloc_bytes 60,080 54,540 +10.16% ± 0.02% +1%
full_extended_cached::insert alloc_count 39 38 +2.63% ± 0.00% +0%
full_extended_cached::insert alloc_bytes 6,712 1,176 +470.75% ± 0.00% +1%
full_extended_cached::insert instructions 70,703 69,631 +1.54% ± 0.00% +1%
full_extended_cached::insert_returning alloc_count 40 39 +2.56% ± 0.00% +0%
full_extended_cached::insert_returning alloc_bytes 6,778 1,242 +445.73% ± 0.00% +1%
full_extended_cached::insert_returning instructions 74,103 73,231 +1.19% ± 0.00% +1%
full_extended_cached::insert_split alloc_count 64 63 +1.59% ± 0.00% +0%
full_extended_cached::insert_split alloc_bytes 16,460 10,920 +50.73% ± 0.00% +1%
full_extended_cached::join alloc_count 62 61 +1.64% ± 0.00% +0%
full_extended_cached::join alloc_bytes 8,261 2,725 +203.16% ± 0.00% +1%
full_extended_cached::join instructions 113,939 112,797 +1.01% ± 0.00% +1%
full_extended_cached::lookup alloc_count 60 59 +1.69% ± 0.00% +0%
full_extended_cached::lookup alloc_bytes 7,555 2,019 +274.20% ± 0.00% +1%
full_extended_cached::min_max_sum alloc_count 108 107 +0.93% ± 0.00% +0%
full_extended_cached::min_max_sum alloc_bytes 19,210 13,670 +40.53% ± 0.00% +1%
full_extended_cached::order_limit_offset alloc_count 189 188 +0.53% ± 0.00% +0%
full_extended_cached::order_limit_offset alloc_bytes 19,710 14,180 +39.00% ± 0.00% +1%
full_extended_cached::select_all_shards alloc_count 114 113 +0.88% ± 0.00% +0%
full_extended_cached::select_all_shards alloc_bytes 17,230 11,690 +47.39% ± 0.00% +1%
full_extended_cached::select_by_key alloc_count 60 59 +1.69% ± 0.00% +0%
full_extended_cached::select_by_key alloc_bytes 7,523 1,987 +278.61% ± 0.00% +1%
full_extended_cached::select_by_key instructions 100,079 98,953 +1.14% ± 0.00% +1%
full_extended_cached::select_in_list alloc_count 126 125 +0.80% ± 0.00% +0%
full_extended_cached::select_in_list alloc_bytes 17,880 12,350 +44.78% ± 0.00% +1%

Microbench: 352 of 504 measures within bounds. See verdict.json for the rest.

Microbench latency: 6 benches changed more than 3%
benchmark latency baseline change instructions change
full_named_cached::insert 12,354 ns 11,898 ns +3.83% ± 1.16% +1.22% ± 0.00%
full_extended_cached::delete_by_key 13,108 ns 12,670 ns +3.46% ± 1.24% +1.40% ± 0.00%
full_extended_cached::update_by_key 13,516 ns 13,076 ns +3.38% ± 2.04% +1.61% ± 0.00%
full_extended_cached::insert 13,332 ns 12,906 ns +3.31% ± 1.64% +1.54% ± 0.00%
full_named_cached::insert_returning 12,750 ns 12,350 ns +3.24% ± 1.63% +1.15% ± 0.00%
full_named_cached::delete_by_key 12,202 ns 11,842 ns +3.04% ± 0.68% +1.32% ± 0.00%
Hot code per txn
path base head change
pooler 104.7 KB 111.6 KB +6.9 KB
sharding-w2 159.4 KB 164.6 KB +5.1 KB

pooler:

crate base head change
pgdog::frontend::client::query_engine 20.1 KB 20.4 KB +0.3 KB
tokio 17.8 KB 18.1 KB +0.2 KB
pgdog::backend::pool 17.3 KB 17.4 KB +0.1 KB
pgdog::frontend (other) 8.8 KB 8.6 KB -0.1 KB
aws-lc (TLS crypto) 7.2 KB 7.4 KB +0.2 KB
rustls (TLS) 7.4 KB 7.0 KB -0.4 KB
jemalloc 1.4 KB 6.9 KB +5.6 KB
other 5.5 KB 6.6 KB +1.1 KB
everything else 19.3 KB 19.1 KB -0.2 KB
function head change
pgdog::frontend::client::Client::run::{{closure}} 6.8 KB +0.0 KB
pgdog::frontend::client::query_engine::query::<impl pgdog::frontend::client::query_engine: 5.8 KB +0.1 KB
pgdog::frontend::client::query_engine::QueryEngine::handle::{{closure}} 4.8 KB +0.1 KB
tokio::runtime::task::raw::poll 3.6 KB -0.1 KB
pgdog::frontend::client::query_engine::query::<impl pgdog::frontend::client::query_engine: 2.9 KB -0.2 KB

sharding-w2:

crate base head change
pgdog::frontend::router 27.4 KB 27.4 KB +0.0 KB
pgdog::frontend::client::query_engine 22.4 KB 22.2 KB -0.1 KB
pgdog::backend::pool 18.6 KB 18.0 KB -0.6 KB
tokio 18.5 KB 17.8 KB -0.7 KB
aws-lc (TLS crypto) 10.0 KB 10.2 KB +0.2 KB
jemalloc 4.3 KB 9.9 KB +5.6 KB
other 9.8 KB 9.9 KB +0.2 KB
pgdog::frontend (other) 10.2 KB 9.9 KB -0.3 KB
everything else 38.2 KB 39.1 KB +0.9 KB
function head change
pgdog::frontend::client::Client::run::{{closure}} 7.6 KB -0.2 KB
pgdog::frontend::client::query_engine::query::<impl pgdog::frontend::client::query_engine: 5.8 KB -0.2 KB
pgdog::frontend::client::query_engine::QueryEngine::handle::{{closure}} 4.8 KB -0.1 KB
pgdog::frontend::router::parser::query::select::<impl pgdog::frontend::router::parser::que 3.9 KB -0.2 KB
tokio::runtime::task::raw::poll 3.6 KB -0.3 KB
lb flamegraph vs b47ea9b

lb

Open interactive for hover, zoom and search.

lb removed

Open interactive.

microbench flamegraph vs b47ea9b

microbench

Open interactive for hover, zoom and search.

microbench removed

Open interactive.

pooler flamegraph vs b47ea9b

pooler

Open interactive for hover, zoom and search.

pooler removed

Open interactive.

sharding-w2 flamegraph vs b47ea9b

sharding-w2

Open interactive for hover, zoom and search.

sharding-w2 removed

Open interactive.

sharding-w8 flamegraph vs b47ea9b

sharding-w8

Open interactive for hover, zoom and search.

sharding-w8 removed

Open interactive.

Logs

lb, microbench, pooler, sharding-w2, sharding-w8, verdict.json

Compared 679ccc4 with b47ea9b on c7a.metal-48xl (spot).

@jkaczman
jkaczman force-pushed the jk-box-client-server-exchange branch from 7b9431c to 3671429 Compare November 11, 2026 18:29
@github-actions

github-actions Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

Metal bench PGO (arm64).

6 rounds of e9316d2 vs 679ccc4.

suite measure base head launches per side delta (95% CI)
pooler throughput 16,994 16,994 18 +0.00% ± 0.00%
pooler cpu-per-txn 17.91 17.87 18 -0.20% ± 0.45%
pooler user-cycles-per-txn 16,386 16,247 18 -0.85% ± 0.69%
pooler user-instructions-per-txn 30,527 29,175 18 -4.43% ± 0.06%
pooler kernel-instructions-per-txn 51,509 51,538 18 +0.06% ± 0.35%
pooler kernel-cycles-per-txn 29,021 29,143 18 +0.42% ± 0.70%
lb throughput 15,997 15,997 18 +0.00% ± 0.00%
lb cpu-per-txn 18.51 18.57 18 +0.33% ± 0.34%
lb user-cycles-per-txn 17,013 16,955 18 -0.34% ± 0.51%
lb user-instructions-per-txn 31,409 30,051 18 -4.32% ± 0.08%
lb kernel-instructions-per-txn 52,611 52,520 18 -0.17% ± 0.29%
lb kernel-cycles-per-txn 29,772 30,059 18 +0.97% ± 0.79%
sharding-w8 throughput 271,687 276,263 4 +1.68% ± 1.79%
sharding-w8 cpu-per-txn 25.52 24.98 4 -2.11% ± 2.27%
sharding-w8 user-cycles-per-txn 37,901 36,851 4 -2.77% ± 1.30%
sharding-w8 user-instructions-per-txn 46,320 45,125 4 -2.58% ± 0.03%
sharding-w8 kernel-instructions-per-txn 42,470 42,511 4 +0.10% ± 0.22%
sharding-w8 kernel-cycles-per-txn 32,335 31,891 4 -1.38% ± 3.50%
sharding-w8 ctx-switches-per-txn 0.1986 0.2071 4 +4.27% ± 4.13%
sharding-w2 throughput 9,999 9,999 4 +0.00% ± 0.00%
sharding-w2 cpu-per-txn 26.4 26.71 4 +1.16% ± 1.31%
sharding-w2 user-cycles-per-txn 34,112 34,474 4 +1.06% ± 1.17%
sharding-w2 user-instructions-per-txn 84,135 82,838 4 -1.54% ± 0.02%
sharding-w2 kernel-instructions-per-txn 53,783 53,756 4 -0.05% ± 0.26%
sharding-w2 kernel-cycles-per-txn 33,321 33,858 4 +1.62% ± 1.43%
sharding-w2 ctx-switches-per-txn 1.572 1.567 4 -0.32% ± 0.11%

Compared 679ccc4 with e9316d2 on c8g.metal-24xl (on-demand).

@github-actions

github-actions Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

Metal bench PGO (x86).

6 rounds of e9316d2 vs 679ccc4.

suite measure base head launches per side delta (95% CI)
pooler throughput 16,994 16,994 18 +0.00% ± 0.00%
pooler cpu-per-txn 32.53 32.71 18 +0.54% ± 0.17%
pooler user-cycles-per-txn 19,407 18,923 18 -2.49% ± 0.73%
pooler user-instructions-per-txn 27,084 26,867 18 -0.80% ± 0.02%
pooler kernel-instructions-per-txn 38,987 38,931 18 -0.14% ± 0.08%
pooler kernel-cycles-per-txn 55,139 56,119 18 +1.78% ± 0.23%
lb throughput 15,997 15,997 18 +0.00% ± 0.00%
lb cpu-per-txn 33.42 33.54 18 +0.34% ± 0.14%
lb user-cycles-per-txn 20,260 19,774 18 -2.40% ± 0.44%
lb user-instructions-per-txn 28,085 27,881 18 -0.73% ± 0.03%
lb kernel-instructions-per-txn 39,614 39,585 18 -0.07% ± 0.05%
lb kernel-cycles-per-txn 56,029 56,847 18 +1.46% ± 0.15%
sharding-w8 throughput 158,877 156,584 4 -1.44% ± 1.58%
sharding-w8 cpu-per-txn 44.88 44.98 4 +0.23% ± 0.69%
sharding-w8 user-cycles-per-txn 51,959 52,034 4 +0.14% ± 1.62%
sharding-w8 user-instructions-per-txn 44,207 43,759 4 -1.01% ± 0.30%
sharding-w8 kernel-instructions-per-txn 34,270 34,236 4 -0.10% ± 0.04%
sharding-w8 kernel-cycles-per-txn 61,461 61,674 4 +0.35% ± 0.44%
sharding-w8 ctx-switches-per-txn 0.2047 0.1998 4 -2.38% ± 2.72%
sharding-w2 throughput 9,999 9,999 4 +0.00% ± 0.00%
sharding-w2 cpu-per-txn 50.48 50.71 4 +0.45% ± 0.76%
sharding-w2 user-cycles-per-txn 41,738 41,718 4 -0.04% ± 1.16%
sharding-w2 user-instructions-per-txn 86,684 82,214 4 -5.16% ± 0.01%
sharding-w2 kernel-instructions-per-txn 43,309 43,297 4 -0.03% ± 0.15%
sharding-w2 kernel-cycles-per-txn 68,730 69,350 4 +0.90% ± 1.05%
sharding-w2 ctx-switches-per-txn 1.436 1.432 4 -0.27% ± 0.36%

Compared 679ccc4 with e9316d2 on c7a.metal-48xl (spot).

@jkaczman
jkaczman force-pushed the jk-box-client-server-exchange branch from 3671429 to 679ccc4 Compare November 11, 2026 20:54

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant