Message ID | 20220908130936.674-1-thunder.leizhen@huawei.com (mailing list archive) |
---|---|
Headers | show |
Series | kallsyms: Optimizes the performance of lookup symbols | expand |
On Thu, Sep 08, 2022 at 09:09:29PM +0800, Zhen Lei wrote: > Currently, to search for a symbol, we need to expand the symbols in > 'kallsyms_names' one by one, and then use the expanded string for > comparison. This is very slow. > > In fact, we can first compress the name being looked up and then use > it for comparison when traversing 'kallsyms_names'. > > This patch series optimizes the performance of function kallsyms_lookup_name(), > and function klp_find_object_symbol() in the livepatch module. Based on the > test results, the performance overhead is reduced to 5%. That is, the > performance of these functions is improved by 20 times. > > To avoid increasing the kernel size in non-debug mode, the optimization is only > for the case CONFIG_KALLSYMS_ALL=y. WIthout having time yet to reveiw the implementation details, it would seem this is an area we may want to test for future improvements easily, so a selftest better yet a kunit test may be nice for this. Can you write one so we can easily gather a simple metric for "how long does this take"? Luis
On 2022/9/9 8:07, Luis Chamberlain wrote: > On Thu, Sep 08, 2022 at 09:09:29PM +0800, Zhen Lei wrote: >> Currently, to search for a symbol, we need to expand the symbols in >> 'kallsyms_names' one by one, and then use the expanded string for >> comparison. This is very slow. >> >> In fact, we can first compress the name being looked up and then use >> it for comparison when traversing 'kallsyms_names'. >> >> This patch series optimizes the performance of function kallsyms_lookup_name(), >> and function klp_find_object_symbol() in the livepatch module. Based on the >> test results, the performance overhead is reduced to 5%. That is, the >> performance of these functions is improved by 20 times. >> >> To avoid increasing the kernel size in non-debug mode, the optimization is only >> for the case CONFIG_KALLSYMS_ALL=y. > > WIthout having time yet to reveiw the implementation details, it would > seem this is an area we may want to test for future improvements easily, > so a selftest better yet a kunit test may be nice for this. Can you > write one so we can easily gather a simple metric for "how long does > this take"? Good advice. I'll write it today. > > Luis > . >