我想使用Ftrace来测量一些内核函数的性能,但我想有选择地测量参数的特定值。这是因为调用相同函数(但参数不同)的相同/其他程序污染了我的Ftrace输出日志。另外,我不想设置PID过滤器,因为它不会解决我的问题(我正在运行多个并行内核线程,并且同一个程序也可以使用不同的参数调用该函数)。在不影响测量的情况下,最好的方法是什么?有没有我遗漏的Ftrace功能(或者可能是定制跟踪点)?
发布于 2021-05-13 01:51:40
对于这种情况,我们可以使用Conditional Tracepoints。This 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对理解这一点非常有帮助。
https://stackoverflow.com/questions/67439409
复制相似问题