]> git.bitcoin.ninja Git - rust-lightning/commit
Layout channel info to ensure routing uses cache lines well 2023-12-routing-dist-vec
authorMatt Corallo <git@bluematt.me>
Sat, 9 Dec 2023 21:22:52 +0000 (21:22 +0000)
committerMatt Corallo <git@bluematt.me>
Wed, 10 Jul 2024 19:38:02 +0000 (19:38 +0000)
commitf689e01b358dfa111596721a9a84f808133cd4f9
treedeb040cdacd2c35149c1c805fcd9d34efd7bc346
parentbed1fb073be98b8a0f68bfb12701506d3b4973ae
Layout channel info to ensure routing uses cache lines well

Because we scan per-channel information in the hot inner loop of
our routefinding immediately after looking a channel up in a
`HashMap`, we end up spending a nontrivial portion of our
routefinding time waiting on memory to be read in.

While there is only so much we can do about that, ensuring the
channel information that we care about is sitting on one or
adjacent cache lines avoids paying that penalty twice. Thus, here
we manually lay out `ChannelInfo` and `ChannelUpdateInfo` and set
them to 128b and 32b alignment, respectively. This wastes some
space in memory in our network graph, but improves routing
performance in return.
lightning/src/routing/gossip.rs