问题标签 [ftrace]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux-kernel - kprobe 模块在执行“echo 0 > /proc/sys/kernel/ftrace_enabled”后无法工作
只需对 ftrace 进行一些研究。
TCP echo 程序在两台主机之间运行。
当我关闭大开关(echo 0 > /proc/sys/kernel/ftrace_enabled
)时,我自己的 kprobe 模块也无法工作。在内核日志文件中看不到 printk 消息。另外,pkt修改操作失败,可以成功接收到pkt。这真的让我很困惑。
我的测试 kprobe 模块在这里:
ubuntu - ftrace使用空内存?
ftrace 使用内存来保存跟踪记录。在开始新的跟踪之前,旧的跟踪仍然保存在内存中,ftrace 必须清空。如何才能做到这一点?
kernel - 内核跟踪返回截断消息
“文件可能被截断。至少需要 %ld 大小,但大小为 %ld”。任何人都可以帮助我了解如何调用此消息吗?我在尝试收集内核跟踪时看到此消息。谁能解释为什么在我尝试收集内核跟踪时会发生这种情况?
我注意到的另一件事是,当我第一次看到上述消息时尝试收集内核跟踪。当我再次尝试立即收集时,我能够收集日志。但是当我在 > 5 分钟后再次尝试收集时,我看到了上述消息。
kernel - 如何在 ftrace 中使用跟踪标记?
如何使用跟踪标记ftrace
来记录用户事件?我使用以下内容,但编译器无法定义WR_ONLY
:
稍后,使用该trace_write()
函数将其记录到ftrace
缓冲区中。
编译器错误:
linux-kernel - kprobe_events 获取参数在 ARM 上不起作用
以下基于 kprobe_based 的事件示例运行良好:
但是,添加获取参数不起作用:
我认为问题是%ax
,%dx
...它们的含义是什么?我怎样才能使这段代码工作?
linux-kernel - Linux 中 ftrace 的可用列表中会加入哪些功能?
我发现并非同一文件中的每个函数都列在 ftrace 的 /sys/kernel/debug/tracing/available_filter_functions 中。
例如,blk_mq_map_swqueue() 已列出,但 blk_mq_add_queue_tag_set() 未列出,即使文件 blik-mq.c 中有。
我查看了 linux 内核中的文档[ 1 ]。除了内联函数外,它似乎没有突出显示。它的标准是什么?
linux - 为什么 ftrace 中没有 irqsoff 选项
我正在使用带有 Linux 4.10.0-041000-generic 的 ubuntu 16.04。当我尝试输出available_tracers
内容时,没有可用的irqsoff
选项。我想使用此选项来审查论文中的实验。我怎样才能得到irqsoff
可行的。
root@XXX:/sys/kernel/debug/tracing# cat available_tracers
hwlat blk mmiotrace function_graph wakeup_dl wakeup_rt wakeup function nop
linux - Linux 函数分析器输出
我想分析内核中的代码流,以了解瓶颈在哪里。我发现函数分析器对我来说就是这样: https ://lwn.net/Articles/370423/ 不幸的是,我看到的输出对我来说没有意义。从上面的链接中,函数分析器的输出是:
其中“时间”是运行期间在此函数内花费的总时间。因此,如果我有调用 function_B 的 function_A,如果我正确理解了输出,则为 function_A 测量的“时间”也包括 function_B 的持续时间。
当我实际在我的电脑上运行它时,我看到另一个新列显示为输出:
s^2 代表什么?它不能是标准偏差,因为它高于平均值......
我从用户空间测量了这段代码流的总持续时间,得到了 400 毫秒。总结 s^2 列时,它接近 400 毫秒。这让我认为这可能是在 __do_page_fault 中花费的“纯”时间,其中不包括嵌套函数的持续时间。
这个对吗?我没有找到 s^2 列的任何文档,所以我对我的结论犹豫不决。
谢谢!
linux - 如何使用 ftrace 仅跟踪系统调用事件而不显示 Linux 内核中的任何其他功能?
例如,要监控所有mkdir
拨打的电话,我能想到的最好办法是:
然后在运行后sudo
给出:
我的问题是它为每个系统调用输出两行:
sys_mkdir
这是我想要的事件SyS_mkdir
这是过滤功能解决方法,我不想看到
如果我改为尝试这样做:
或者根本不碰那个文件,然后它会显示大量的功能,并且很难找到系统调用。
如果有更好的方法来禁用常规功能,只保留系统调用事件?
我可以只使用SyS_mkdir
并禁用我猜想的系统调用事件,但如果我可以使用更具体的事件会感觉更干净吗?还:
- 该事件显示参数,这更好。
- 系统调用函数名称随内核版本而变化。例如,它已经
__x64_sys_mkdir
代替了SyS_mkdir
Linux v4.18。
有关的:
在 Ubuntu 18.04、Linux 内核 4.15 上测试。
ftrace - 将 ftrace trace.dat 文件转换为 CTF 格式以与 TraceCompass 一起使用
我可以手动(然后生成trace-cmd extract
)或通过方便的 trace-cmd(1) 前端实用程序生成 ftrace 数据。
使用trace-cmd
,默认输出文件trace.dat
;我知道我可以通过 kernelshark 直观地查看它,但更喜欢使用 Trace Compass GUI 来执行此操作。AFAIK,TraceCompass 使用.ctf
文件格式。因此,我的问题是:
如何将 ftrace 或trace.dat
文件从转换trace-cmd
为.ctf
格式?
(我知道有关于将 perf(1) 转换为 CTF 的问答)。