• Phil Carmody's avatar
    calibrate: home in on correct lpj value more quickly · 191e5688
    Phil Carmody authored
    Binary chop with a jiffy-resync on each step to find an upper bound is
    slow, so just race in a tight-ish loop to find an underestimate.
    If done with lots of individual steps, sometimes several hundreds of
    iterations would be required, which would impose a significant overhead,
    and make the initial estimate very low.  By taking slowly increasing steps
    there will be less overhead.
    E.g.  an x86_64 2.67GHz could have fitted in 613 individual small delays,
    but in reality should have been able to fit in a single delay 644 times
    longer, so underestimated by 31 steps.  To reach the equivalent of 644
    small delays with the accelerating scheme now requires about 130
    iterations, so has <1/4th of the overhead, and can therefore be expected
    to underestimate by only 7 steps.
    As now we have a better initial estimate we can binary chop over a smaller
    range.  With the loop overhead in the initial estimate kept low, and the
    step sizes moderate, we won't have under-estimated by much, so chose as
    tight a range as we can.
    Signed-off-by: default avatarPhil Carmody <ext-phil.2.carmody@nokia.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Tested-by: default avatarStephen Boyd <sboyd@codeaurora.org>
    Cc: Greg KH <greg@kroah.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
calibrate.c 5.42 KB