我正在做一些研究,需要在一定的时间跨度内收集所有内核函数调用,例如 60 秒。我正在使用树莓派 4B。我尝试使用函数跟踪器ftrace
并阅读trace_pipe
通过
echo function > current_tracer
echo 1 > tracing_on
cat trace_pipe > /home/pi/trace/test.txt
这种方法似乎太慢了,并且由于缓冲区过满而丢失了太多数据:大约。50-60M 数据点丢失,我只得到大约 3M 数据点。所以这不是一个好的统计数据。
我也尝试使用trace-cmd
:
trace-cmd record -p function sleep 60
大约有trace-cmd
20 M 数据点丢失,这要好得多,但仍然不足以建立良好的统计数据。此外,我得到的文件
trace-cmd report > /home/pi/trace/test_trace-cmd.txt
大约 5-6 Gb,需要几分钟才能写入。我不打算让这个文件更小(我认为这是不可能的)。但我就是不能等这么久。我还担心保存如此大的跟踪文件会给系统带来过多的开销。是这样吗?
我想知道,是否可以将 trace_pipe(或其他跟踪文件)的输出定向到某个 I/O 引脚,以便我可以将一些逻辑分析仪连接到该引脚并通过其他一些读取数据流设备?这样就不需要将跟踪文件保存在树莓本身上。我也希望我可以减少丢失的数据量。