summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgdt <gdt>2005-02-15 17:10:03 +0000
committergdt <gdt>2005-02-15 17:10:03 +0000
commitb72d185dc7d3764a42c030ea2196180a629eb82d (patch)
treeb539b22d9da6260da914654801072b50d3c5b3e4
parent9c5d75f1746ee7db6bc74adaf63a02451c7c520d (diff)
downloadquagga-b72d185dc7d3764a42c030ea2196180a629eb82d.tar.bz2
quagga-b72d185dc7d3764a42c030ea2196180a629eb82d.tar.xz
Adjust size complexity estimates. Still not quite right, but closer.
-rw-r--r--bgpd/IMPLEMENTATION.txt16
1 files changed, 12 insertions, 4 deletions
diff --git a/bgpd/IMPLEMENTATION.txt b/bgpd/IMPLEMENTATION.txt
index 782b51d3..ac087a38 100644
--- a/bgpd/IMPLEMENTATION.txt
+++ b/bgpd/IMPLEMENTATION.txt
@@ -150,10 +150,18 @@ bgpd.c
Question: How much memory does quagga's bgpd use as a function of
state received from peers?
-It seems that a struct bgp_info is kept for each prefix, and this has
-its own struct attr. aspath, etc. are 'interned' and shared.
-So, it seems that 144 bytes are used per received prefix, plus storage
-for all unique aspaths received.
+It seems that a struct bgp_info is kept for each prefix. The "struct
+attr *" is interned, and variables within that are interned. So, 40
+bytes are kept per received prefix, plus interned shared values. This
+could be 36 if 'int suppress' where changed to a u_char and moved to
+be with the other u_chars. Without MPLS, this could be 32 bytes.
+Note that 8 bytes of this is linked list overhead, meaning that 24
+bytes are the raw per-prefix storage requirements.
+
+Also, a struct bgp_damp_info is apparently maintained per route; this
+is fairly large (about 44 bytes).
+
+[TODO: the role of struct bgp_node.]
* TIME COMPLEXITY