Re: RFC: remove __read_mostly

From: Eric Dumazet
Date: Fri Dec 14 2007 - 11:31:51 EST


Arnd Bergmann a Ãcrit :
On Thursday 13 December 2007, Adrian Bunk wrote:
On Thu, Dec 13, 2007 at 11:29:08PM +0100, Andi Kleen wrote:
Adrian Bunk <bunk@xxxxxxxxxx> writes:
-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
File sizes are useless -- check size output.
text data bss dec hex filename
29268488 3697961 5222400 38188849 246b731 vmlinux.old
29268435 3685565 5228784 38192784 246c690 vmlinux

Just to make sure everyone interprets this correctly:

The file size in the first example suggests a 8552 byte
(0.02%) size improvement for removing __read_mostly.

The size output shows a -3935 byte (0.01%) size penalty
instead, much smaller because data that was moved out to
the .data.read_mostly section from .bss now takes space
in the binary but won't consume more RAM.

Since 'size' does not take any sections except text, data and
bss into account, its output is more often than not also
misleading, but at least it shows that the footprint is likely
to get larger without __read_mostly rather than smaller.

Your analysis is fine, except the last point. Just check "size -A vmlinux" and you'll see
that "size vmlinux" take into account not only "text, data and bss"

# size vmlinux
text data bss dec hex filename
4835243 450722 610304 5896269 59f84d vmlinux
# size -A vmlinux
vmlinux :
section size addr
.text.head 885 3222274048
.text 3359764 3222278144
__ex_table 3904 3225637920
.notes 36 3225641824
__bug_table 21120 3225641864
.rodata 1130680 3225665536
.pci_fixup 2192 3226796216
__ksymtab 23104 3226798408
__ksymtab_gpl 7224 3226821512
__ksymtab_unused_gpl 16 3226828736
__ksymtab_gpl_future 24 3226828752
__ksymtab_strings 72470 3226828776
__param 4020 3226901248
.data 309056 3226906624
.data_nosave 4096 3227217920
.data.page_aligned 2048 3227222016
.data.cacheline_aligned 46720 3227224064
.data.read_mostly 11388 3227270784
.data.init_task 8192 3227287552
.smp_locks 19128 3227295744
.init.text 137115 3227316224
.init.data 40290 3227453344
.init.setup 1656 3227493648
.initcall.init 1124 3227495304
.con_initcall.init 8 3227496428
.altinstructions 38771 3227496436
.altinstr_replacement 9908 3227535207
.exit.text 4750 3227545116
.init.ramfs 132 3227553792
.data.percpu 26144 3227557888
.bss 610304 3227586560
.comment 19746 0
Total 5916015




--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/