微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有选择地记录特定参数的内核 Ftrace 点

如何解决有选择地记录特定参数的内核 Ftrace 点

我想使用 Ftrace 测量某些内核函数性能,但我想针对特定的参数值有选择地测量它。这是因为调用相同函数(但具有不同参数)的相同/其他程序污染了我的 Ftrace 输出日志。 另外,我不想设置 PID 过滤器,因为它不能解决我的问题(我正在运行多个并行内核线程,并且同一个程序也可以使用不同的参数调用函数) 在不影响测量的情况下,最好的方法是什么?是否有我遗漏的 Ftrace 功能(或可能自定义跟踪点)?

解决方法

对于这种情况,我们可以使用 Conditional TracepointsThis patch 也可能有助于理解。可以在 linux 内核中检查此文件 - samples\trace_events\trace-events-sample.h 以查看示例示例。

samples\trace_events\trace-events-sample.h 中,看到这个宏 - TRACE_EVENT_CONDITION() 后,我变得非常清楚。感谢作者在那里提供了详细的文档。

此外,您可以使用预定义的事件跟踪点或在 include/trace/events/*.h 中定义新的自定义事件跟踪点,并通过在 TRACE_DIR/tracing/events/EVENT/filter 中添加条件来过滤跟踪日志。这个 kernel documentation link 非常有助于理解这一点。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。