]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: Reduce size of ibuf_work ringbuf 14091/head
authorDonald Sharp <sharpd@nvidia.com>
Mon, 24 Jul 2023 14:33:21 +0000 (10:33 -0400)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Tue, 25 Jul 2023 14:27:39 +0000 (14:27 +0000)
The ringbuf is 650k in size.  This is obscenely large and
in practical experimentation FRR never even approaches
that size at all.  Let's reduce this to 1.5 max packet sizes.

If a BGP_MAX_PACKET_SIZE packet is ever received having a bit
of extra space ensures that we can read at least 1 packet.

This also will significantly reduce memory usage when the
operator has a lot of peers.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit fe1c72a57315a7c9fc3c63dd2fbf3a10dafbc10b)

bgpd/bgpd.c

index 86bded14bbfc8f6ab9678f9ece692588f7fa9fd4..c12cf03cec2bd8d98a9f6b6e9837c0b868f83f2c 100644 (file)
@@ -1414,7 +1414,7 @@ struct peer *peer_new(struct bgp *bgp)
        pthread_mutex_init(&peer->io_mtx, NULL);
 
        peer->ibuf_work =
-               ringbuf_new(BGP_MAX_PACKET_SIZE * BGP_READ_PACKET_MAX);
+               ringbuf_new(BGP_MAX_PACKET_SIZE + BGP_MAX_PACKET_SIZE/2);
 
        /* Get service port number.  */
        sp = getservbyname("bgp", "tcp");