Messages in this thread Patch in this message | | | Date | Tue, 25 Oct 2011 09:25:16 +0200 | From | Eial Czerwacki <> | Subject | Re: [PATCH] Move mostly read variables to __read_mostly section. |
| |
On 10/24/2011 06:47 AM, Andi Kleen wrote: > Eial Czerwacki<eial@scalemp.com> writes: >> * Once the number of bh's in the machine exceeds this level, we start >> --- a/kernel/time/timekeeping.c 2010-05-12 14:59:32.000000000 -0700 >> +++ b/kernel/time/timekeeping.c 2010-05-24 11:56:32.000000000 -0700 >> @@ -154,7 +154,7 @@ __cacheline_aligned_in_smp DEFINE_SEQLOC >> * used instead. >> */ >> static struct timespec xtime __attribute__ ((aligned (16))); >> -static struct timespec wall_to_monotonic __attribute__ ((aligned (16))); >> +static struct timespec wall_to_monotonic __attribute__ ((aligned >> (16))) __read_mostly; > > That means that a common time fetch/update call will usually have to fetch two > cachelines now instead of one, because it needs xtime and > wall_to_monotonic. Usually those end up nearby. > > On the other hand it's rare to fetch wall_to_monotonic without xtime. > > So if anything all those variables should be grouped together in a > single cacheline, but definitely not split like you do. > > The other changes in your patch are fine for me. > > -Andi Hello Andi,
Thanks for the input, we've removed the mentioned above section from the patch and it will be handled in a different patch.
the new patch is as follows:
Signed-off-by: Eial Czerwacki<eial@ScaleMP.com> Signed-off-by: Shai Fultheim<Shai@ScaleMP.com> ---
--- a/fs/buffer.c 2010-05-12 14:59:32.000000000 -0700 +++ b/fs/buffer.c 2010-05-24 11:56:32.000000000 -0700 @@ -3233,7 +3233,7 @@ SYSCALL_DEFINE2(bdflush, int, func, long /* * Buffer-head allocation */ -static struct kmem_cache *bh_cachep; +static struct kmem_cache __read_mostly *bh_cachep;
/* * Once the number of bh's in the machine exceeds this level, we start
| |