Hi Kazu,
On Fri, Oct 15, 2021 at 10:12 AM HAGIO KAZUHITO(萩尾 一仁)
<k-hagio-ab(a)nec.com> wrote:
Hi Tao Liu,
One more comment, the mod_syment_hash also should be printed by help -s,
like symname_hash.
crash> set debug 1
debug: 1
crash> help -s
...
val_hash_iterations: 530 (avg: 75.7)
symname_hash[512]: ff7808
[ 0]: 57 [ 1]: 121 [ 2]: 28 [ 3]: 79 [ 4]: 165 [ 5]: 51
[ 6]: 57 [ 7]: 99 [ 8]: 61 [ 9]: 98 [ 10]: 108 [ 11]: 68
Thanks for pointing this out. I will implement code for it.
The other patches (2 to 6) look good to me.
Thanks for reviewing the patch, I will get it improved for the v6 patch.
Thanks,
Tao Liu
Thanks,
Kazu
-----Original Message-----
> Currently the sequence for symbol_search to search a symbol is: 1) kernel
> symname hash table, 2) iterate all kernel symbols, 3) iterate all kernel
> modules and their symbols. In the worst case, if a non-exist symbol been
> searched, all 3 stages will be went through. The time consuming status for
> each stage is like:
>
> stage 1 stage 2 stage 3
> 0.007000(ms) 0.593000(ms) 2.421000(ms)
>
> stage 3 takes too much time when comparing to stage 1. This patch introduces
> a symname hash table for kernel modules, to improve the performance of symbol
> searching.
>
> Functions symbol_search and symbol_exists are fundamental and widely used by
> other crash functions, thus the benefit of performance improvement can
> get accumulated. For example, "ps -m" and "irq" commands, which
call
> the functions many times, will become faster with the patch.
>
> v4 -> v5:
>
> 1) Seperated kernel modules syment install from kernel syment install,
> making them 2 independent functions. Thus kernel modules syment can get sorted
> when installed into mod_syment_hash. And spn->cnt stays untouched in v5.
> 2) Removed syment_is_installed check, it is no longer needed for the new
> kernel modules syment install function.
> 3) Splitted the patches into smaller ones for better patch review.
> 4) Changed SYMNAME_HASH_INDEX macro into symname_hash_index function.
> 5) v5 patch can be applied to master branch, for crash-7-branch it needs
> slightly modification.
>
> Tao Liu (6):
> Implement install and remove operations for mod_symname_hash
> Integrate symbol_search with mod_symname_hash search
> Extend symname_hash_search with hash table select
> Intergrate symbol_exists with mod_symname_hash search
> Sync module symbols into mod_symtable whenever module symbols change
> Refactor SYMNAME_HASH_INDEX macro to be a function
>
> defs.h | 3 +-
> kernel.c | 1 +
> symbols.c | 212 ++++++++++++++++++++++++++++++++++--------------------
> 3 files changed, 137 insertions(+), 79 deletions(-)
>
> --
> 2.29.2