]> git.feebdaed.xyz Git - 0xmirror/tokio.git/commit
time: add alternative timer for better multicore scalability (#7467)
authorQi <qiqi.zhang@konghq.com>
Thu, 27 Nov 2025 01:29:28 +0000 (09:29 +0800)
committerGitHub <noreply@github.com>
Thu, 27 Nov 2025 01:29:28 +0000 (09:29 +0800)
commit73d733a3415af98d72c2cce40612c4e59adbd5d8
treee571d026dca985132f1d11d2eaa9f5126a48060a
parent749322d3510a6828d9b118027fddedbc2d174d28
time: add alternative timer for better multicore scalability (#7467)

This change introduces per-worker timer wheels in the time subsystem
to reduce the lock contention.

Key changes:
- Each worker now maintains a local timer wheel.
- Timer insertions are performed locally.
- Timer cancellations are forwarded via a
  dedicated cross-worker cancellation queue.

Relevant RFC: https://github.com/tokio-rs/tokio/issues/7384

---------

Signed-off-by: ADD-SP <qiqi.zhang@konghq.com>
34 files changed:
.github/workflows/ci.yml
.github/workflows/loom.yml
spellcheck.dic
tokio/Cargo.toml
tokio/src/runtime/builder.rs
tokio/src/runtime/driver.rs
tokio/src/runtime/mod.rs
tokio/src/runtime/scheduler/current_thread/mod.rs
tokio/src/runtime/scheduler/mod.rs
tokio/src/runtime/scheduler/multi_thread/handle.rs
tokio/src/runtime/scheduler/multi_thread/mod.rs
tokio/src/runtime/scheduler/multi_thread/park.rs
tokio/src/runtime/scheduler/multi_thread/worker.rs
tokio/src/runtime/scheduler/util/mod.rs [new file with mode: 0644]
tokio/src/runtime/scheduler/util/time_alt.rs [new file with mode: 0644]
tokio/src/runtime/time/handle.rs
tokio/src/runtime/time/mod.rs
tokio/src/runtime/time_alt/cancellation_queue.rs [new file with mode: 0644]
tokio/src/runtime/time_alt/cancellation_queue/tests.rs [new file with mode: 0644]
tokio/src/runtime/time_alt/context.rs [new file with mode: 0644]
tokio/src/runtime/time_alt/entry.rs [new file with mode: 0644]
tokio/src/runtime/time_alt/mod.rs [new file with mode: 0644]
tokio/src/runtime/time_alt/registration_queue.rs [new file with mode: 0644]
tokio/src/runtime/time_alt/registration_queue/tests.rs [new file with mode: 0644]
tokio/src/runtime/time_alt/tests.rs [new file with mode: 0644]
tokio/src/runtime/time_alt/timer.rs [new file with mode: 0644]
tokio/src/runtime/time_alt/wake_queue.rs [new file with mode: 0644]
tokio/src/runtime/time_alt/wake_queue/tests.rs [new file with mode: 0644]
tokio/src/runtime/time_alt/wheel/level.rs [new file with mode: 0644]
tokio/src/runtime/time_alt/wheel/mod.rs [new file with mode: 0644]
tokio/src/time/sleep.rs
tokio/tests/time_alt.rs [new file with mode: 0644]
tokio/tests/time_panic.rs
tokio/tests/time_rt.rs