diff options
Diffstat (limited to 'scripts/tracing')
| -rwxr-xr-x | scripts/tracing/ftrace-bisect.sh | 34 | 
1 files changed, 26 insertions, 8 deletions
| diff --git a/scripts/tracing/ftrace-bisect.sh b/scripts/tracing/ftrace-bisect.sh index 926701162bc8..bb4f59262bbe 100755 --- a/scripts/tracing/ftrace-bisect.sh +++ b/scripts/tracing/ftrace-bisect.sh @@ -12,7 +12,7 @@  #   (note, if this is a problem with function_graph tracing, then simply  #    replace "function" with "function_graph" in the following steps).  # -#  # cd /sys/kernel/debug/tracing +#  # cd /sys/kernel/tracing  #  # echo schedule > set_ftrace_filter  #  # echo function > current_tracer  # @@ -20,22 +20,40 @@  #  #  # echo nop > current_tracer  # -#  # cat available_filter_functions > ~/full-file +# Starting with v5.1 this can be done with numbers, making it much faster: +# +# The old (slow) way, for kernels before v5.1. +# +# [old-way] # cat available_filter_functions > ~/full-file +# +# [old-way] *** Note ***  this process will take several minutes to update the +# [old-way] filters. Setting multiple functions is an O(n^2) operation, and we +# [old-way] are dealing with thousands of functions. So go have coffee, talk +# [old-way] with your coworkers, read facebook. And eventually, this operation +# [old-way] will end. +# +# The new way (using numbers) is an O(n) operation, and usually takes less than a second. +# +# seq `wc -l available_filter_functions | cut -d' ' -f1` > ~/full-file +# +# This will create a sequence of numbers that match the functions in +# available_filter_functions, and when echoing in a number into the +# set_ftrace_filter file, it will enable the corresponding function in +# O(1) time. Making enabling all functions O(n) where n is the number of +# functions to enable. +# +# For either the new or old way, the rest of the operations remain the same. +#  #  # ftrace-bisect ~/full-file ~/test-file ~/non-test-file  #  # cat ~/test-file > set_ftrace_filter  # -# *** Note *** this will take several minutes. Setting multiple functions is -# an O(n^2) operation, and we are dealing with thousands of functions. So go -# have  coffee, talk with your coworkers, read facebook. And eventually, this -# operation will end. -#  #  # echo function > current_tracer  #  # If it crashes, we know that ~/test-file has a bad function.  #  #   Reboot back to test kernel.  # -#     # cd /sys/kernel/debug/tracing +#     # cd /sys/kernel/tracing  #     # mv ~/test-file ~/full-file  #  # If it didn't crash. |