real-time - 在 ARM 中启用 FTRACE 以跟踪系统的实时特性
问题描述
我按照这篇文章启用 FTRACE https://lwn.net/Articles/365835/
为了测试实时系统,我的系统使用 arm cortexa15(描述:https ://mp.renesas.com/en-us/rzg/marketplace/board/RZGB000003.html )
CONFIG_FTRACE=y
CONFIG_FUNCTION_TRACER=y
CONFIG_FUNCTION_GRAPH_TRACER=y
CONFIG_STACK_TRACER=y
CONFIG_DYNAMIC_FTRACE=y
但是,它不起作用,导致系统在启动内核时挂起。甚至提到如何启用或配置 ftrace 模块
我想用 cyclictest 测试实时系统中的延迟(选项 -b 触发 FTRACER)
cyclictest -a -t -n -p99 -f -b100
它生成了转储消息:
INFO: debugfs mountpoint: /sys/kernel/debug/tracing/
WARN: tracing_enabled or tracing_on not found
debug fs not mounted, TRACERs not configured?
could not set ftrace_enabled to 0
FATAL: Can't open /sys/kernel/debug/tracing/available_tracers for reading
我重复了下一步以启用一组跟踪器配置:
CONFIG_FTRACE=y
CONFIG_DYNAMIC_FTRACE=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
CONFIG_HAVE_C_RECORDMCOUNT=y
CONFIG_TRACING_SUPPORT=y
CONFIG_FUNCTION_TRACER=y
CONFIG_IRQSOFF_TRACER=y
CONFIG_FUNCTION_PROFILER=y
CONFIG_PREEMPT_TRACER=y
CONFIG_SCHED_TRACER=y
CONFIG_ENABLE_DEFAULT_TRACERS=y
CONFIG_FTRACE_SYSCALLS=y
CONFIG_TRACER_SNAPSHOT=y
CONFIG_STACK_TRACER=y
CONFIG_BLK_DEV_IO_TRACE=y
CONFIG_TRACEPOINT_BENCHMARK=y
CONFIG_BACKTRACE_SELF_TEST=y
CONFIG_EARLY_PRINTK=y
CONFIG_DEBUG_LL=y
结果还是一样。内核挂起,没有显示任何内容。
任何处理实时系统和 Ftrace 的人都可以提供帮助吗?谢谢。
解决方案
我解决了我的问题。下面是我的 defconfig 文件的一部分。
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_TRACEPOINTS=y
CONFIG_STACKTRACE=y
CONFIG_NOP_TRACER=y
CONFIG_TRACER_MAX_TRACE=y
CONFIG_TRACE_CLOCK=y
CONFIG_CONTEXT_SWITCH_TRACER=y
CONFIG_GENERIC_TRACER=y
CONFIG_FTRACE=y
CONFIG_FUNCTION_TRACER=y
CONFIG_FUNCTION_GRAPH_TRACER=y
CONFIG_SCHED_TRACER=y
CONFIG_FTRACE_SYSCALLS=y
CONFIG_TRACER_SNAPSHOT=y
CONFIG_STACK_TRACER=y
CONFIG_DYNAMIC_FTRACE=y
CONFIG_FTRACE_MCOUNT_RECORD=y
启用 Ftrace 工具后,可以在 /sys/kernel/debug/tracing/trace 的跟踪输出中找到罪魁祸首。在检测到超过 100 微秒的延迟之前执行的内核函数用感叹号标记。
推荐阅读
- javascript - 在javascript中使用异步函数调用获取数据不起作用(不遵循执行顺序)
- opayo - 使用表单集成时调用repeat.vsp后的回调URL是什么?
- mongodb - 将 Heroku 与 Mongo Atlas 结合使用的缓慢请求,仅在这种情况下
- vue.js - 在子组件上使用哪个生命周期钩子在 Vuejs 中的父组件之后运行?
- c# - 数据库表未保存
- javascript - 如何响应在 Vue 事件处理程序中解决的承诺
- reactjs - 在 Chromium/Chrome 中自动将 cookie 的属性设置为 SameStite=None
- jquery - 如果 div 孩子身高 > 69,则添加 CSS 类
- sql-server - 什么可能会阻止 SQL Server 以最佳方式处理查询过滤器
- css - 是否可以像“@include media-breakpoint-up(900px)”(bootstrap4)这样以像素为单位设置断点?