arm 环境的确容易出现 backtrace 没有的情况
为什么会出现这个情况,需要调查一下:
vcpu_put 的 backtrace 只能观察到:
@[
]: 125
x86 中使用 bpftrace 中可以观察到的结果:
@[
vcpu_put+5
kvm_arch_vcpu_ioctl+1380
kvm_vcpu_ioctl+1742
__x64_sys_ioctl+150
do_syscall_64+132
entry_SYSCALL_64_after_hwframe+118
]: 128
tracepoint 完全是正确的
在 arm 中是这个样的,显然,这里仅仅展示了 CPU ,后面的 d.h.. 之类就没有了 这是不知道咋测试的,不用关心了
sudo cat /sys/kernel/debug/tracing/trace
# tracer: function
#
# entries-in-buffer/entries-written: 733/733 #P:96
#
# TASK-PID CPU# TIMESTAMP FUNCTION
# | | | | |
sshd-703271 [000] 228905.602395: do_softirq <-__local_bh_enable_ip
ssh-709049 [086] 228911.290913: do_softirq <-__local_bh_enable_ip
qemu-system-aar-685149 [087] 228911.295584: do_softirq <-__local_bh_enable_ip
qemu-system-aar-685149 [087] 228911.316045: do_softirq <-__local_bh_enable_ip
ssh-709049 [086] 228911.401818: do_softirq <-__local_bh_enable_ip
fedora 实际测试 6.17.1-300.fc43.aarch64 ,并不存在任何问题:
sudo cat /sys/kernel/debug/tracing/trace_pipe
<...>-1162199 [081] ...1. 686702.860792: do_softirq <-__local_bh_enable_ip
sh-1162528 [005] .N.1. 686702.925861: do_softirq <-__local_bh_enable_ip
xargs-1162750 [001] ...1. 686702.959796: do_softirq <-__local_bh_enable_ip
sh-1164023 [046] .N.1. 686703.195832: do_softirq <-__local_bh_enable_ip
file-1164155 [001] .N.1. 686703.219857: do_softirq <-__local_bh_enable_ip
nvim-379058 [046] .N.1. 686703.242890: do_softirq <-__local_bh_enable_ip
<...>-1164450 [052] ...1. 686703.271789: do_softirq <-__local_bh_enable_ip
sshd-session-931524 [011] ...1. 686703.677682: do_softirq <-__local_bh_enable_ip
xargs-1153943 [069] .N.1. 686703.944824: do_softirq <-__local_bh_enable_ip
<...>-1167670 [079] ...1. 686704.036785: do_softirq <-__local_bh_enable_ip
xargs-1153943 [057] ...1. 686704.237781: do_softirq <-__local_bh_enable_ip
sh-1168588 [048] .N.1. 686704.256835: do_softirq <-__local_bh_enable_ip
cat-1100345 [048] ...1. 686704.256973: do_softirq <-__local_bh_enable_ip
kworker/u387:1-931114 [048] .N.1. 686704.349832: do_softirq <-__local_bh_enable_ip
sshd-session-931524 [011] ...1. 686704.353483: do_softirq <-__local_bh_enable_ip
观察 idle_cpu 也是如此:
kworker/78:1-619 [078] d.... 866.987658: cpu_util.constprop.0 <-update_sg_lb_stats.isra.0
kworker/78:1-619 [078] d.... 866.987658: idle_cpu <-update_sg_lb_stats.isra.0
sudo-13915 [077] ..... 866.987658: copy_page_range <-dup_mmap
kworker/78:1-619 [078] d.... 866.987658: cpu_util.constprop.0 <-update_sg_lb_stats.isra.0
kworker/78:1-619 [078] d.... 866.987659: idle_cpu <-update_sg_lb_stats.isra.0
sudo-13915 [077] ..... 866.987659: copy_pte_range <-copy_pud_range
kworker/78:1-619 [078] d.... 866.987659: cpu_util.constprop.0 <-update_sg_lb_stats.isra.0
sudo-13915 [077] ..... 866.987659: __pte_alloc <-copy_pte_range
kworker/78:1-619 [078] d.... 866.987659: idle_cpu <-update_sg_lb_stats.isra.0
sudo-13915 [077] ..... 866.987659: alloc_pages_noprof <-__pte_alloc
kworker/78:1-619 [078] d.... 866.987659: cpu_util.constprop.0 <-update_sg_lb_stats.isra.0
sudo-13915 [077] ..... 866.987659: alloc_frozen_pages_noprof <-alloc_pages_noprof
kworker/78:1-619 [078] d.... 866.987659: idle_cpu <-update_sg_lb_stats.isra.0
sudo-13915 [077] ..... 866.987659: alloc_pages_mpol <-alloc_frozen_pages_noprof
sudo-13915 [077] ..... 866.987659: policy_nodemask <-alloc_pages_mpol
但是 guest os 中观察到也是有
systemd-journal-520 [000] ..... 1353.155004: do_el0_svc <-el0_svc
systemd-journal-520 [000] ..... 1353.155004: syscall_trace_enter <-do_el0_svc
systemd-journal-520 [000] ..... 1353.155004: __secure_computing <-syscall_trace_enter
systemd-journal-520 [000] ..... 1353.155004: __seccomp_filter <-__secure_computing
systemd-journal-520 [000] ..... 1353.155004: populate_seccomp_data <-__seccomp_filter
systemd-journal-520 [000] ..... 1353.155004: invoke_syscall.constprop.0 <-do_el0_svc
systemd-journal-520 [000] ..... 1353.155005: __arm64_sys_gettid <-invoke_syscall.constprop.0
systemd-journal-520 [000] ..... 1353.155005: __task_pid_nr_ns <-__arm64_sys_gettid
systemd-journal-520 [000] ..... 1353.155005: __rcu_read_lock <-__task_pid_nr_ns
systemd-journal-520 [000] ..... 1353.155006: rcu_read_lock_held <-__task_pid_nr_ns
systemd-journal-520 [000] ..... 1353.155006: rcu_lockdep_current_cpu_online <-rcu_read_lock_held
6.6 内核中测试结果:
zcat /proc/config.gz | grep -i ftrace
CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS=y
CONFIG_HAVE_FTRACE_GRAPH_FUNC=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_CALL_OPS=y
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_FTRACE=y
CONFIG_DYNAMIC_FTRACE=y
CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y
CONFIG_DYNAMIC_FTRACE_WITH_CALL_OPS=y
CONFIG_DYNAMIC_FTRACE_WITH_ARGS=y
CONFIG_FTRACE_SYSCALLS=y
CONFIG_FTRACE_MCOUNT_RECORD=y
CONFIG_FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY=y
# CONFIG_FTRACE_RECORD_RECURSION is not set
# CONFIG_FTRACE_VALIDATE_RCU_IS_WATCHING is not set
# CONFIG_FTRACE_STARTUP_TEST is not set
# CONFIG_FTRACE_SORT_STARTUP_TEST is not set
# CONFIG_SAMPLE_FTRACE_DIRECT is not set
# CONFIG_SAMPLE_FTRACE_DIRECT_MULTI is not set
# CONFIG_SAMPLE_FTRACE_OPS is not set
CONFIG_HAVE_SAMPLE_FTRACE_DIRECT=y
CONFIG_HAVE_SAMPLE_FTRACE_DIRECT_MULTI=y
6.16 的配置:
CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS=y
# CONFIG_PSTORE_FTRACE is not set
CONFIG_HAVE_FTRACE_GRAPH_FUNC=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_CALL_OPS=y
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_FTRACE=y
CONFIG_DYNAMIC_FTRACE=y
CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y
CONFIG_DYNAMIC_FTRACE_WITH_CALL_OPS=y
CONFIG_DYNAMIC_FTRACE_WITH_ARGS=y
CONFIG_FTRACE_SYSCALLS=y
CONFIG_FTRACE_MCOUNT_RECORD=y
CONFIG_FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY=y
# CONFIG_FTRACE_RECORD_RECURSION is not set
# CONFIG_FTRACE_VALIDATE_RCU_IS_WATCHING is not set
# CONFIG_FTRACE_STARTUP_TEST is not set
# CONFIG_FTRACE_SORT_STARTUP_TEST is not set
CONFIG_HAVE_SAMPLE_FTRACE_DIRECT=y
CONFIG_HAVE_SAMPLE_FTRACE_DIRECT_MULTI=y
本站所有文章转发 CSDN 将按侵权追究法律责任,其它情况随意。