]> git.bitcoin.ninja Git - rust-lightning/commit
Tweak alignment and memory order in the `ProbabilisticScorer` 2023-12-cache-scoring-points
authorMatt Corallo <git@bluematt.me>
Mon, 11 Dec 2023 02:10:51 +0000 (02:10 +0000)
committerMatt Corallo <git@bluematt.me>
Mon, 19 Aug 2024 14:25:58 +0000 (14:25 +0000)
commit4fd07ecada554e2f7b0a24fa3df1f8f5c0d8f4f7
treecde83e2bf27e82690972000cd489d65565c9e35e
parent8904073a15d87b789ebf36993ed1b06fee591a1e
Tweak alignment and memory order in the `ProbabilisticScorer`

During routing, the majority of our time is spent in the scorer.
Given the scorer isn't actually doing all that much computation,
this means we're quite sensitive to memory latency. Thus, the cache
lines our data sits on is incredibly important.

Here, we manually lay out the `ChannelLiquidity` and
`HistoricalLiquidityTracker` structs to ensure that we can do the
non-historical scoring and skip historical scoring for channels
with insufficient data by just looking at the same cache line the
channel's SCID is on.

Sadly, to do the full historical scoring we need to load a second
128-byte cache line pair, but we have some time to get there. We
might consider issuing a preload instruction in the future.

This improves performance a few percent.
lightning/src/routing/scoring.rs