lkml.org 
[lkml]   [2010]   [Aug]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 03/10] Use percpu stats
    On 08/10/2010 10:04 AM, Andrew Morton wrote:
    > On Mon, 9 Aug 2010 22:56:49 +0530 Nitin Gupta <ngupta@vflare.org> wrote:
    >
    >> +/*
    >> + * Individual percpu values can go negative but the sum across all CPUs
    >> + * must always be positive (we store various counts). So, return sum as
    >> + * unsigned value.
    >> + */
    >> +static u64 zram_get_stat(struct zram *zram, enum zram_stats_index idx)
    >> {
    >> - u64 val;
    >> -
    >> - spin_lock(&zram->stat64_lock);
    >> - val = *v;
    >> - spin_unlock(&zram->stat64_lock);
    >> + int cpu;
    >> + s64 val = 0;
    >> +
    >> + for_each_possible_cpu(cpu) {
    >> + s64 temp;
    >> + unsigned int start;
    >> + struct zram_stats_cpu *stats;
    >> +
    >> + stats = per_cpu_ptr(zram->stats, cpu);
    >> + do {
    >> + start = u64_stats_fetch_begin(&stats->syncp);
    >> + temp = stats->count[idx];
    >> + } while (u64_stats_fetch_retry(&stats->syncp, start));
    >> + val += temp;
    >> + }
    >>
    >> + WARN_ON(val < 0);
    >> return val;
    >> }
    >
    > That reimplements include/linux/percpu_counter.h, poorly.
    >
    > Please see the June discussion "[PATCH v2 1/2] tmpfs: Quick token
    > library to allow scalable retrieval of tokens from token jar" for some
    > discussion.
    >
    >

    I read the discussion you pointed out but still fail to see how percpu_counters,
    with all their overhead, are better than simple pcpu variable used in current
    version. What is the advantage?

    Thanks,
    Nitin



    \
     
     \ /
      Last update: 2010-08-11 18:41    [W:0.025 / U:29.932 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site