On Tue, 15 Nov 2005, Paul Jackson wrote:
> Mel wrote:
> > - mark -= mark / 2; [A]
> > + mark /= 2; [B]
> > if (alloc_flags & ALLOC_HARDER)
> > - mark -= mark / 4; [C]
> > + mark /= 4; [D]
>
> Why these changes? For each of [A] - [D] above, if I start with a
> value of mark == 33 and recycle that same mark through the above
> transformation 16 times, I get the following sequence of values:
This change by me is totally totally wrong. I shouldn't have modified how
the calculation is made at all. Fix made.
> A: 33 17 9 5 3 2 1 1 1 1 1 1 1 1 1 1
> B: 33 16 8 4 2 1 0 0 0 0 0 0 0 0 0 0
> C: 33 25 19 15 12 9 7 6 5 4 3 3 3 3 3 3
> D: 33 8 2 0 0 0 0 0 0 0 0 0 0 0 0 0
>
> Comparing [A] to [B], observe that [A] converges to 1, but [B] to 0,
> due to handling the underflow differently.
>
> Comparing [C] to [D], observe that [D] converges to 0, due to the
> different underflow, and converges much faster, since it is taking off
> 3/4's instead of 1/4 each iteration.
>
> I doubt you want this change.
>
And you'd be right.
--
Mel Gorman
Part-time Phd Student Java Applications Developer
University of Limerick IBM Dublin Software Lab
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]