]> git.ipfire.org Git - thirdparty/bird.git/commit
BGP: Improve tx performance during feed/flush
authorOndrej Zajicek <santiago@crfreenet.org>
Sun, 15 May 2022 13:05:13 +0000 (15:05 +0200)
committerOndrej Zajicek <santiago@crfreenet.org>
Sun, 15 May 2022 13:05:37 +0000 (15:05 +0200)
commitba2a076001be6e4140fbd2703cd134e5aa51450b
tree03f42c0f8ede487b0f4752cadbd4044b43812b94
parent207ac4853316ceffa6d56ff06f8904320d3bf45f
BGP: Improve tx performance during feed/flush

The prefix hash table in BGP used the same hash function as the rtable.
When a batch of routes are exported during feed/flush to the BGP, they
all have similar hash values, so they are all crowded in a few slots in
the BGP prefix table (which is much smaller - around the size of the
batch - and uses higher bits from hash values), making it much slower due
to excessive collisions. Use a different hash function to avoid this.

Also, increase the batch size to fill 4k BGP packets and increase minimum
BGP bucket and prefix hash sizes to avoid back and forth resizing during
flushes.

This leads to order of magnitude faster flushes (on my test data).
nest/rt-table.c
proto/bgp/attrs.c