From: Simon Kirby <sim@xxxxxxxxxxxxx>
Date: Mon, 9 Jun 2003 01:18:03 -0700
On Sun, Jun 08, 2003 at 11:56:22PM -0700, David S. Miller wrote:
> + if (cand) {
> + *candp = cand->u.rt_next;
> + rt_free(cand);
> }
Hmm...It looks like this is still freeing the entry.. Is it possible to
recycle the dst without reallocating it?
Yes, can you test the patch I just sent you? We can modify that
to recycle easily instead of freeing.
Well... one problem is that in 2.5.x we have to kill off entries using
RCU so such recycling may not be so easy there.
This is with a routing table of 300,000 entries (though only one prefix)
and with your hash fix patch. ip_route_input is still highest, but
dst_alloc is an obvious second. ip_route_input is actually always the
highest (excluding the IRQ handling stuff), and doesn't seem to change at
all based on routing table size.
We spend a decent amount of time mucking with fib rules, turning
off multiple-tables support would kill that, although I suspect
you're actually using that :)
|