lkml.org 
[lkml]   [2007]   [Mar]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH] time : SMP friendly alignment of struct clocksource
    From
    Date
    On Tue, 2007-03-20 at 11:09 +0100, Eric Dumazet wrote:
    > struct clocksource is a critical data structure.
    >
    > Most of its fields are read only, some of them are heavily modified at each timer interrupt.
    >
    > It makes sense to separate those fields and make sure they all share one cache line, or at least the minimum for machines with small cache lines.
    >
    > Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>


    Sounds fine to me. Can you actually observe a difference?

    Acked-by: John Stultz <johnstul@us.ibm.com>



    > --- linux-2.6.21-rc4-mm1/include/linux/clocksource.h
    > +++ linux-2.6.21-rc4-mm1-ed/include/linux/clocksource.h
    > @@ -49,25 +49,35 @@ struct clocksource;
    > * @flags: flags describing special properties
    > * @vread: vsyscall based read
    > * @cycle_interval: Used internally by timekeeping core, please ignore.
    > * @xtime_interval: Used internally by timekeeping core, please ignore.
    > */
    > struct clocksource {
    > + /*
    > + * First part of structure is read mostly
    > + */
    > char *name;
    > struct list_head list;
    > int rating;
    > cycle_t (*read)(void);
    > cycle_t mask;
    > u32 mult;
    > u32 shift;
    > unsigned long flags;
    > cycle_t (*vread)(void);
    >
    > /* timekeeping specific data, ignore */
    > - cycle_t cycle_last, cycle_interval;
    > - u64 xtime_nsec, xtime_interval;
    > + cycle_t cycle_interval;
    > + u64 xtime_interval;
    > + /*
    > + * Second part is written at each timer interrupt
    > + * Keep it in a different cache line to dirty no
    > + * more than one cache line.
    > + */
    > + cycle_t cycle_last ____cacheline_aligned_in_smp;
    > + u64 xtime_nsec;
    > s64 error;
    >
    > #ifdef CONFIG_CLOCKSOURCE_WATCHDOG
    > /* Watchdog related data, used by the framework */
    > struct list_head wd_list;
    > cycle_t wd_last;

    -
    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: 2007-03-20 19:01    [W:0.042 / U:0.020 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site