[lkml]   [2010]   [Jun]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [PATCH v2 1/2] tmpfs: Quick token library to allow scalable retrieval of tokens from token jar
    On Wed, 02 Jun 2010 10:58:42 +0200
    Andi Kleen <> wrote:

    > Andrew Morton <> writes:
    > I am to blame for the "token jar" name.
    > > OK, thanks. But I'm still struggling a bit in understanding the
    > > applicability. Where else might one use this? What particular
    > > problem is it good at solving?
    > I wrote a similar scheme a long time ago for IP protocol ID
    > allocation (but that code never ended up in mainline).
    > Back then it was called "cookie jar" and you can actually
    > still google for it :)
    > It can be used for pretty much anything where you have
    > a global resource and want to hand it out to different CPUs,
    > but still have a global limit that is enforced.
    > For example a file system could use it for accounting
    > free space too.
    > In principle you could even use it for pids for example
    > or other IDs.

    You could, execept the code's basically identical to percpu_counters,
    only worse.

    > >
    > > I think the problem here is that you're using the term "token jar" as
    > > if others already know what a token jar _is_. I guess I was asleep
    > > during that compsci lecture, but google doesn't appear to know about
    > > the term either.
    > >
    > > And from looking at the tmpfs caller, it appears that the token jar is
    > > being used to speed up the access to a single `unsigned long
    > > free_blocks'. Could we have used say a percpu_counter instead?
    > You need some synchronization, otherwise the accounting
    > would not be exact and you could overflow. Yes you could
    > open code it, but having it in a library is nicer.

    The code doesn't have synchronisation! qtoken_return() can modify the
    per-cpu "cache" in parallel with qtoken_avail()'s walk across the
    per-cpu "caches", yielding an inaccurate result.

    This is all the same as percpu_add() executing in parallel with
    percpu_counter_sum() or percpu_counter_sum_positive().

    If we cannot tolerate that inaccuracy then these patches are no good
    and we need a rethink.

    If we _can_ tolerate that inaccuracy then percpu_counters can be used
    here. And doing that is preferable to reinventing percpu_counters

    I'm just not seeing it.

     \ /
      Last update: 2010-06-10 00:39    [W:0.022 / U:75.752 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site