Skip to content

perf: add thread-priority utils and boost engine/sparse-trie priority#22541

Merged
DaniPopes merged 6 commits into
mainfrom
danipopes/thread-priority-utils
Feb 25, 2026
Merged

perf: add thread-priority utils and boost engine/sparse-trie priority#22541
DaniPopes merged 6 commits into
mainfrom
danipopes/thread-priority-utils

Conversation

@gakonst
Copy link
Copy Markdown
Member

@gakonst gakonst commented Feb 24, 2026

Summary

Add a utils module to reth-tasks that re-exports the thread-priority crate, and use it to set ThreadPriority::Max on the engine and sparse-trie threads.

Changes

  • Add thread-priority workspace dep
  • Add reth_tasks::utils module re-exporting thread_priority::*
  • Set ThreadPriority::Max on the engine thread (crates/engine/tree/src/tree/mod.rs)
  • Set ThreadPriority::Max on the sparse-trie thread (crates/engine/tree/src/tree/payload_processor/mod.rs)

Testing

cargo check -p reth-tasks -p reth-engine-tree and clippy pass clean.

Prompted by: danipopes

Adds a utils module to reth-tasks that re-exports the thread-priority
crate. Uses ThreadPriority::Max for the engine and sparse-trie threads
to reduce scheduling latency on the critical path.

Amp-Thread-ID: https://ampcode.com/threads/T-019c9077-b36e-71c5-9169-b736627b7e7a
Co-authored-by: Amp <amp@ampcode.com>
@gakonst gakonst added the A-engine Related to the engine implementation label Feb 24, 2026
@github-project-automation github-project-automation Bot moved this to Backlog in Reth Tracker Feb 24, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 24, 2026

⚠️ Changelog not found.

A changelog entry is required before merging. We've generated a suggested changelog based on your changes:

Preview
---
reth-tasks: minor
reth-engine-tree: patch
---

Added thread priority boosting for critical engine threads. Introduced `reth-tasks::utils::increase_thread_priority()` using the `thread-priority` crate, and applied it to the engine task and sparse trie task threads to improve scheduling priority.

Add changelog to commit this to your branch.

@github-project-automation github-project-automation Bot moved this from Backlog to In Progress in Reth Tracker Feb 25, 2026
@DaniPopes
Copy link
Copy Markdown
Contributor

derek bench

@decofe
Copy link
Copy Markdown
Member

decofe commented Feb 25, 2026

cc @DaniPopes

✅ Benchmark complete! View job

Benchmark Results

⚠️ Feature is 11 commits behind main. Consider rebasing for accurate results.

Metric main danipopes/thread-priority-utils Change
Mean 26.87ms 27.10ms +0.87% ❌ (±0.69%)
StdDev 14.47ms 14.70ms
P50 25.22ms 25.27ms +0.19% ⚪ (±2.12%)
P90 40.51ms 41.03ms +1.29% ⚪ (±1.82%)
P99 76.76ms 77.59ms +1.09% ⚪ (±13.34%)
Mgas/s 1136.13 1127.98 -0.72% ❌ (±0.64%)

500 blocks

Wait Time Breakdown

Persistence Wait

Metric main danipopes/thread-priority-utils
Mean 322.06ms 321.39ms
P50 327.88ms 327.67ms
P95 455.84ms 455.94ms

Trie Cache Update Wait

Metric main danipopes/thread-priority-utils
Mean 17.90ms 18.80ms
P50 17.32ms 18.28ms
P95 26.46ms 27.59ms

Execution Cache Update Wait

Metric main danipopes/thread-priority-utils
Mean 0.00ms 0.00ms
P50 0.00ms 0.00ms
P95 0.00ms 0.00ms

Charts

Latency, Throughput & Diff

Latency, Throughput & Diff

Wait Time Breakdown

Wait Time Breakdown

Gas vs Latency

Gas vs Latency

⚠️ Node Errors

baseline-1: 171 panic(s), 0 error(s)

Panics:

thread 'prewarm-00' (1737250) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-03' (1737253) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-00' (1737250) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1737251) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-03' (1737253) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-02' (1737252) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-00' (1737250) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-02' (1737252) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1737251) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1737251) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
feature-1: 185 panic(s), 0 error(s)

Panics:

thread 'prewarm-01' (1737674) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1737674) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-04' (1737677) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-02' (1737675) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-03' (1737676) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1737674) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-02' (1737675) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-04' (1737677) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-05' (1737678) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1737674) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
feature-2: 224 panic(s), 0 error(s)

Panics:

thread 'prewarm-01' (1738091) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1738091) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-02' (1738092) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-03' (1738093) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1738091) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-03' (1738093) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1738091) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-00' (1738090) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-04' (1738094) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1738091) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
baseline-2: 140 panic(s), 0 error(s)

Panics:

thread 'prewarm-01' (1738508) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-03' (1738510) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-02' (1738509) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-00' (1738507) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-03' (1738510) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1738508) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1738508) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1738508) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-02' (1738509) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-00' (1738507) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:

@DaniPopes
Copy link
Copy Markdown
Contributor

derek bench

@decofe
Copy link
Copy Markdown
Member

decofe commented Feb 25, 2026

cc @DaniPopes

✅ Benchmark complete! View job

Benchmark Results

⚠️ Feature is 11 commits behind main. Consider rebasing for accurate results.

Metric main danipopes/thread-priority-utils Change
Mean 26.89ms 27.09ms +0.71% ❌ (±0.65%)
StdDev 14.54ms 14.62ms
P50 25.27ms 25.21ms -0.21% ⚪ (±1.78%)
P90 40.76ms 40.68ms -0.20% ⚪ (±2.23%)
P99 77.10ms 78.38ms +1.66% ⚪ (±6.28%)
Mgas/s 1136.72 1127.11 -0.85% ❌ (±0.63%)

500 blocks

Wait Time Breakdown

Persistence Wait

Metric main danipopes/thread-priority-utils
Mean 322.20ms 321.38ms
P50 329.65ms 327.46ms
P95 464.75ms 465.74ms

Trie Cache Update Wait

Metric main danipopes/thread-priority-utils
Mean 17.91ms 18.73ms
P50 17.32ms 18.21ms
P95 26.25ms 27.58ms

Execution Cache Update Wait

Metric main danipopes/thread-priority-utils
Mean 0.00ms 0.00ms
P50 0.00ms 0.00ms
P95 0.00ms 0.00ms

Charts

Latency, Throughput & Diff

Latency, Throughput & Diff

Wait Time Breakdown

Wait Time Breakdown

Gas vs Latency

Gas vs Latency

⚠️ Node Errors

baseline-1: 166 panic(s), 0 error(s)

Panics:

thread 'prewarm-01' (1742883) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-03' (1742885) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-02' (1742884) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-11' (1742893) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-06' (1742888) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-10' (1742892) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-00' (1742882) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-08' (1742890) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1742883) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-00' (1742882) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
feature-1: 213 panic(s), 0 error(s)

Panics:

thread 'prewarm-02' (1743298) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-03' (1743299) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1743297) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-02' (1743298) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-03' (1743299) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-03' (1743299) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1743297) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-03' (1743299) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-02' (1743298) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-08' (1743304) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
feature-2: 183 panic(s), 0 error(s)

Panics:

thread 'prewarm-12' (1743722) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1743711) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1743711) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-03' (1743713) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1743711) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-04' (1743714) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1743711) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-02' (1743712) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-07' (1743717) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1743711) panicked at /home/ubuntu/actions-runner/_work/reth/reth-feature/crates/tasks/src/pool.rs:342:14:
baseline-2: 229 panic(s), 0 error(s)

Panics:

thread 'prewarm-00' (1744128) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-03' (1744131) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-00' (1744128) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-04' (1744132) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1744129) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-03' (1744131) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-02' (1744130) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1744129) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-01' (1744129) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:
thread 'prewarm-03' (1744131) panicked at /home/ubuntu/actions-runner/_work/reth/reth-baseline/crates/tasks/src/pool.rs:342:14:

@DaniPopes
Copy link
Copy Markdown
Contributor

derek bench

@decofe
Copy link
Copy Markdown
Member

decofe commented Feb 25, 2026

cc @DaniPopes

✅ Benchmark complete! View job

Benchmark Results

Metric main danipopes/thread-priority-utils Change
Mean 25.75ms 25.70ms -0.19% ⚪ (±0.88%)
StdDev 15.00ms 14.91ms
P50 23.73ms 23.48ms -1.03% ⚪ (±2.01%)
P90 40.08ms 39.72ms -0.90% ⚪ (±1.87%)
P99 77.08ms 76.33ms -0.97% ⚪ (±2.93%)
Mgas/s 1194.95 1195.76 +0.07% ⚪ (±0.74%)

500 blocks

Wait Time Breakdown

Persistence Wait

Metric main danipopes/thread-priority-utils
Mean 325.10ms 325.05ms
P50 332.08ms 331.06ms
P95 468.64ms 470.12ms

Trie Cache Update Wait

Metric main danipopes/thread-priority-utils
Mean 17.85ms 18.68ms
P50 17.35ms 18.15ms
P95 26.48ms 27.42ms

Execution Cache Update Wait

Metric main danipopes/thread-priority-utils
Mean 0.00ms 0.00ms
P50 0.00ms 0.00ms
P95 0.00ms 0.00ms

Charts

Latency, Throughput & Diff

Latency, Throughput & Diff

Wait Time Breakdown

Wait Time Breakdown

Gas vs Latency

Gas vs Latency

@DaniPopes DaniPopes added this pull request to the merge queue Feb 25, 2026
Merged via the queue into main with commit 85abd41 Feb 25, 2026
38 checks passed
@DaniPopes DaniPopes deleted the danipopes/thread-priority-utils branch February 25, 2026 08:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-engine Related to the engine implementation

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants