Go to file
Quentin Young bed7ad8387
lib: use load factor as hash expansion trigger
Previous strategy was to resize the hash table when the length of any
one bucket exceeded a certain size, with some logic for intelligently
stopping resizes when the gains from doing so weren't sufficient. While
this was a good idea that attempted to optimize both space and lookup
time, unfortunately under transient degenerate conditions this led to
some issues with the tables not resizing when they should have,
harming performance. The resizing restriction was lifted, but this had
the result of exacerbating degenerate behavior and caused out of memory
conditions.

This patch changes the hash expansion criterion to be based on the
number of elements in the table. Once the # of elements in the table
exceeds the number of buckets, the table size is doubled. While the
space efficiency of this method decreases relative to the perfectness of
the hash function, at least this strategy puts the table performance
squarely in the hands of the hash function.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2017-08-09 13:53:11 -04:00
babeld doc/babeld: small documentation update 2017-08-01 22:19:18 -03:00
bgpd *: Define the number of seconds in a Day, Week and year 2017-08-08 09:06:22 -04:00
debian debian: python3-dev is now a build requirement for main package 2017-06-27 18:09:38 -07:00
doc doc/babeld: small documentation update 2017-08-01 22:19:18 -03:00
eigrpd eigrpd: Fix crash and attempt to send data 2017-08-04 19:29:03 -04:00
fpm protobuf: fix build 2017-07-31 23:03:30 +02:00
gdb gdb: Add a directory of files with gdb macros 2016-05-26 15:33:30 +00:00
init build: delete .cvsignore files 2011-12-13 14:27:01 +04:00
isisd *: Define the number of seconds in a Day, Week and year 2017-08-08 09:06:22 -04:00
ldpd ldpd: use NO_STR 2017-08-07 16:22:59 -04:00
lib lib: use load factor as hash expansion trigger 2017-08-09 13:53:11 -04:00
m4 build: non-recursive auxiliary directories 2017-07-31 23:03:30 +02:00
nhrpd nhrp: fix assertion with negative holding times 2017-08-04 10:19:36 +02:00
ospf6d Merge pull request #870 from chiragshah6/mdev 2017-08-04 08:46:38 +02:00
ospfclient *: reindent 2017-07-17 14:04:07 +02:00
ospfd ospfd: deprecate timers lsa arrival ... 2017-08-07 16:11:10 -04:00
pimd Merge pull request #922 from qlyoung/pim-cli 2017-08-07 13:19:11 -05:00
pkgsrc build: non-recursive auxiliary directories 2017-07-31 23:03:30 +02:00
ports pimd: merge pimd as of 2015-01-19 2016-05-25 20:38:32 -04:00
python build: non-recursive auxiliary directories 2017-07-31 23:03:30 +02:00
qpb protobuf: fix build 2017-07-31 23:03:30 +02:00
redhat rhel: Don't obsolete bird 2017-08-07 14:37:21 -04:00
ripd *: Define the number of seconds in a Day, Week and year 2017-08-08 09:06:22 -04:00
ripngd *: Define the number of seconds in a Day, Week and year 2017-08-08 09:06:22 -04:00
snapcraft build: non-recursive auxiliary directories 2017-07-31 23:03:30 +02:00
solaris gitignore: update references to FRR 2017-07-12 11:55:04 -05:00
tests isisd: rework complete, move "tlvs2" to "tlvs" 2017-08-03 11:34:04 +02:00
tools Revert "*: reindent pt. 2" 2017-07-22 14:52:33 +02:00
vtysh vtysh: add missing \n on warning message 2017-08-06 04:17:13 +02:00
watchfrr watchfrr: hide systemd message if not systemd available 2017-08-04 10:19:36 +02:00
zebra *: Define the number of seconds in a Day, Week and year 2017-08-08 09:06:22 -04:00
.clang-format *: add indent control files 2017-07-17 14:00:23 +02:00
.gitignore gitignore: update references to FRR 2017-07-12 11:55:04 -05:00
AUTHORS Initial revision 2002-12-13 20:15:29 +00:00
bootstrap.sh autoreconf -i 2007-02-06 19:28:28 +00:00
buildtest.sh config: switch a few references to say FRR 2017-07-12 11:25:33 -05:00
ChangeLog Rename: freerangerouting --> frrouting 2017-03-30 14:24:05 -04:00
common.am build: fix/improve clippy dependencies 2017-08-01 07:09:45 +02:00
COMMUNITY.md COMMUNITY.md: rewrap paragraphs, update PR section 2017-07-25 15:53:05 -04:00
configure.ac config: Disable pimd on OpenBSD 6.1 2017-08-02 10:12:19 -05:00
COPYING *: make consistent & update GPLv2 file headers 2017-05-15 16:37:41 +02:00
COPYING-LGPLv2.1 build: remove LGPL v2.0, add LGPL v2.1 2016-11-15 17:19:38 +09:00
defaults.h *: reindent 2017-07-17 14:04:07 +02:00
git-reindent-branch.py *: fix git-reindent-branch.py reversing order 2017-07-22 18:00:44 +02:00
indent.py *: add indent control files 2017-07-17 14:00:23 +02:00
Makefile.am build: non-recursive auxiliary directories 2017-07-31 23:03:30 +02:00
NEWS release: 0.99.24 2016-06-03 15:56:44 -04:00
README README: add references to EIGRP and NHRP. 2017-05-12 22:51:45 +02:00
README.NetBSD config: switch a few references to say FRR 2017-07-12 11:25:33 -05:00
render_md.py build: number sections in COMMUNITY.md HTML 2016-12-05 19:08:00 +01:00
REPORTING-BUGS config: switch a few references to say FRR 2017-07-12 11:25:33 -05:00
SERVICES babeld/eigrpd: flip VTY ports & fix rpm 2017-06-13 14:36:55 +02:00
stamp-h.in Initial revision 2002-12-13 20:15:29 +00:00
update-autotools * README.NetBSD: use update-autotools instead of autoreconf 2007-02-02 16:52:38 +00:00

FRRouting is free software that manages various IPv4 and IPv6 routing
protocols.

Currently FRRouting supports BGP4, BGP4+, OSPFv2, OSPFv3, RIPv1,
RIPv2, RIPng, PIM-SM/MSDP and LDP as well as very early support for IS-IS,
EIGRP and NHRP.

See the file REPORTING-BUGS to report bugs.

Free RRRouting is free software. See the file COPYING for copying conditions.

Public email discussion can be found at https://lists.frrouting.org/listinfo

Our public slack channel is at https://frrouting.slack.com