Subject: Re: [PATCH] net: implement emergency route cache rebulds when gc_elasticity is exceeded

From: Eric Dumazet <[email-masked]>
Date: Mon, 06 Oct 2008 23:21:38 +0200

Neil Horman a écrit :
> So, I've been playing with this patch, and I've not figured out eactly whats
> bothering me yet, since the math seems right, but something doesn't seem right
> about the outcome of this algorithm.  I've tested with my local system, and all
> works well, because the route cache is well behaved, and the sd value always
> works out to be very small, so ip_rt_gc_elasticity is used.  So I've been
> working through some scenarios by hand to see what this looks like using larger
> numbers.  If i assume ip_rt_gc_interval is 60, and rt_hash_log is 17, my sample
> count here is 7864320 samples per run.  If within that sample 393216 (about 4%)
> of the buckets have one entry on the chain, and all the rest are zeros, my hand
> calculations result in a standard deviation of approximately 140 and an average
> of .4.  That imples that in that sample set any one chain could be almost 500
> entires long before it triggered a cache rebuld.  Does that seem reasonable?
> 

if rt_hash_log is 17, and interval is 60, then you should scan 
(60 << 17)/300 slots. That's 26214 slots. (ie 20% of the 2^17 slots)

I have no idea how you can have sd = 140, even if scaled by (1 << 3)
with slots being empty or with one entry only...

If 4% of your slots have one element, then average length is 0.04 :)