• Kevin Cernekee's avatar
    module: Fix performance regression on modules with large symbol tables · 48fd1188
    Kevin Cernekee authored
    Looking at /proc/kallsyms, one starts to ponder whether all of the extra
    strtab-related complexity in module.c is worth the memory savings.
    
    Instead of making the add_kallsyms() loop even more complex, I tried the
    other route of deleting the strmap logic and naively copying each string
    into core_strtab with no consideration for consolidating duplicates.
    
    Performance on an "already exists" insmod of nvidia.ko (runs
    add_kallsyms() but does not actually initialize the module):
    
    	Original scheme: 1.230s
    	With naive copying: 0.058s
    
    Extra space used: 35k (of a 408k module).
    Signed-off-by: default avatarKevin Cernekee <cernekee@gmail.com>
    Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
    LKML-Reference: <73defb5e4bca04a6431392cc341112b1@localhost>
    48fd1188
module.c 88.3 KB