lkml.org 
[lkml]   [2004]   [Dec]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: Prezeroing V2 [0/3]: Why and When it works


    On Fri, 24 Dec 2004, Paul Mackerras wrote:
    >
    > I did some measurements once on my G5 powermac (running a ppc64 linux
    > kernel) of how long clear_page takes, and it only takes 96ns for a 4kB
    > page. This is real-life elapsed time in the kernel, not just some
    > cache-hot benchmark measurement. Thus I don't think your patch will
    > gain us anything on ppc64.

    Well, the thing is, if we really _know_ the machine is idle (and not just
    waiting for something like disk IO), it might be a good idea to just
    pre-zero everything we can.

    The question to me is whether we can have a good enough heuristic to
    notice that it triggers often enough to matter, but seldom enough that it
    really won't disturb anybody.

    And "disturb" very much includes things like laptop battery life,
    scheduling latencies, memory bus traffic _and_ cache contents.

    And I really don't see a very good heuristic. Maybe it might literally be
    something like "five-second load average goes down to zero" (we've got
    fixed-point arithmetic with eleven fractional bits, so we can tune just
    how close to "zero" we want to get). The load average is system-wide and
    takes disk load (which tends to imply latency-critical work) into account,
    so that might actually work out reasonably well as a "the system really is
    quiescent".

    So if we make the "what load is considered low" tunable, a system
    administrator can use that to make it more aggressive. And indeed, you
    might have a cron-job that says "be more aggressive at clearing pages
    between 2AM and 4AM in the morning" or something - if you have so much
    memory that it actually matters if you clear the memory just occasionally.

    And the tunable load-average check has another advantage: if you want to
    benchmark it, you can first set it to true zero (basically never), and run
    the benchmark, and then you can set it to something very agressive ("clear
    pages every five seconds regardless of load") and re-run.

    Does this sound sane? Christoph - can you try making the "scrub deamon" do
    that? Instead of the "scrub-low" and "scrub-high" (or in _addition_ to
    them), do a "scub-load" thing that takes a scaled integer, and compares it
    with "avenrun[0]" in kernel/timer.c: calc_load() when the average is
    updated every five seconds..

    Personally, at least for a desktop usage, I think that the load average
    would work wonderfully well. I know my machines are often at basically
    zero load, and then having low-latency zero-pages when I sit down sounds
    like a good idea. Whether there is _enough_ free memory around for a
    5-second thing to work out well, I have no idea..

    Linus
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2009-11-18 23:46    [W:0.023 / U:36.564 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site