|
@@ -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.
|