Subject: Re: [PATCH] Stochastic Fair Blue queue discipline

From: Patrick McHardy <[email-masked]>
Date: Thu, 10 Apr 2008 03:38:13 +0200

Patrick McHardy wrote:
> Andi Kleen wrote:
>>> Random32 is initialised from get_random_bytes; so the per-cpu
>>> pseudo-random sequences should be uncorrelated.  I fail to see how an
>>> arbitrary interleaving of uncorrelated good pseudo-random sequences
>>> can fail to be good.
>>
>> They are not necessarily uncorreleated, especially on platforms
>> which do have poor entropy support and when your initialization happens
>> at boot time. Take a look at how the random pool starts in random.c.
>>
>>> Looking at line 448 of sch_sfq.c in Linus' current HEAD, I see that
>>> somebody else thinks the same as I do.  So please let me know if sfq
>>> needs fixed, or whether I can use net_random in sfb.
>>
>> A lot of people get this wrong, but this doesn't mean that the
>> problem should be readded in new code again.
> 
> 
> Well, if I'm not mistaken net_random() used to be a function
> (in net/core/utils.c) that didn't have this problem. So these
> problems seem to have been introduced by the conversion to
> srandom().

Two more noteworthy things:

- net_random() was intended to provide *mediocre* random,
cheap to compute, not perfect. Good enough for many networking
related things.

- traffic schedulers shouldn't depend on perfect random,
its more about statistical multiplexing.