On Thu, Dec 13, 2007 at 11:48:27PM +0100, Eric Dumazet wrote: > Adrian Bunk a écrit : >> I tried the following patch with a full x86 .config [1]: >> >> --- a/include/asm-x86/cache.h >> +++ b/include/asm-x86/cache.h >> -#define __read_mostly __attribute__((__section__(".data.read_mostly"))) >> +/* #define __read_mostly __attribute__((__section__(".data.read_mostly"))) */ >> >> The result [2,3] was: >> >> -rwxrwxr-x 1 bunk bunk 46607243 2007-12-13 19:50 vmlinux.old >> -rwxrwxr-x 1 bunk bunk 46598691 2007-12-13 21:55 vmlinux >> >> It's not a surprise that the kernel can become bigger when __read_mostly >> gets used, especially in cases where __read_mostly prevents gcc >> optimizations. >> >> My question is: >> Is there anywhere in the kernel a case where __read_mostly brings a >> measurable improvement or can it be removed? > > Yes, there are many cases where read_mostly brings huge improvements. > > I did test your idea on a 4 CPUS server, and system time was roughly > doubled, from 11% to 20% Thanks, that answered my question. > Of course, you noticed that puting a __read_mostly attribute force the > linker to reserve space for the variable. So a null variable previously in > bss section (no space in vmlinux file) is now in .data.read_mostly. Not a > big deal. > > If you want, you could play some .lds games to create sort of a > "bss.read_mostly" section to save 10000 bytes in vmlinux. No, what I was thinking of kernel code like static int fooxxxvar = 0; static int __read_mostly fooyyyvar = 0; void mytest() { if (fooxxxvar) printk("fooxxx"); if (fooyyyvar) printk("fooyyy"); } If you run "strings file.c | grep foo" on the file it will only return "fooyyy" but not "fooxxx". It's not a big deal, but it's an area where __read_mostly affects gcc and not ld. cu Adrian -- "Is there not promise of rain?" Ling Tan asked suddenly out of the darkness. There had been need of rain for many days. "Only a promise," Lao Er said. Pearl S. Buck - Dragon Seed - To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html