Index | Thread | Search

From:
Theo Buehler <tb@theobuehler.org>
Subject:
Re: bgpd: add attr cache to adj-rib-out
To:
Claudio Jeker <cjeker@diehard.n-r-g.com>
Cc:
tech@openbsd.org
Date:
Tue, 2 Dec 2025 09:36:22 +0100

Download raw body.

Thread
On Mon, Dec 01, 2025 at 03:43:28PM +0100, Claudio Jeker wrote:
> Introduce an adjout_attr object that decouples some of the common data
> from the prefix_adjout. This helps to reduce the memory footprint by
> around 20% in large IXP setups.

Very nice.

> The size of struct prefix_adjout is critical since we allocate very many
> of those. e.g. 250k prefixes * 750 peer = 187mio objects. Every byte saved
> makes a big difference. This removes 28 bytes from the struct.

On many 64-bit architectures there will be 40 bytes that are removed:
you replace 5 aligned 8-byte members with a single one (32 bytes saved)
and path_id_tx and flags now share the same 8-byte block with 3 bytes of
padding, where previously the two uint8_t would be next to 6 bytes of
padding (another 8 bytes saved).

Anyway, I can't spot anything wrong with the diff.

ok tb