• Zhou Chengming's avatar
    livepatch: Reduce the time of finding module symbols · 72f04b50
    Zhou Chengming authored
    It's reported that the time of insmoding a klp.ko for one of our
    out-tree modules is too long.
    
    ~ time sudo insmod klp.ko
    real	0m23.799s
    user	0m0.036s
    sys	0m21.256s
    
    Then we found the reason: our out-tree module used a lot of static local
    variables, so klp.ko has a lot of relocation records which reference the
    module. Then for each such entry klp_find_object_symbol() is called to
    resolve it, but this function uses the interface kallsyms_on_each_symbol()
    even for finding module symbols, so will waste a lot of time on walking
    through vmlinux kallsyms table many times.
    
    This patch changes it to use module_kallsyms_on_each_symbol() for modules
    symbols. After we apply this patch, the sys time reduced dramatically.
    
    ~ time sudo insmod klp.ko
    real	0m1.007s
    user	0m0.032s
    sys	0m0.924s
    Signed-off-by: default avatarZhou Chengming <zhouchengming1@huawei.com>
    Acked-by: default avatarJosh Poimboeuf <jpoimboe@redhat.com>
    Acked-by: default avatarJessica Yu <jeyu@redhat.com>
    Acked-by: default avatarMiroslav Benes <mbenes@suse.cz>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
    72f04b50
core.c 23.9 KB