0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何通过Tracealyzer实现Linux系统的跟踪?

麦克泰技术 来源:麦克泰技术 2023-12-08 14:08 次阅读

Tracealyzer是Percepio 公司开发的一款可视化跟踪工具, 目前它提供了30多种相互关联的运行时行为视图,支持裸机、FreeRTOS、μC/OS-III、Zephyr、ThreadX、VxWorksLinux系统的跟踪。能够帮助开发人员加快固件的开发,减少对系统验证和性能优化所需要的时间。

本文将介绍如何通过Tracealyzer实现Linux系统的跟踪。

1)在Linux主机上安装Tracealyzer

Tracealyzer应用可以运行在Windows系统和Linux系统上,如果在在Linux系统上安装应用,需Mono框架支持。

可以参考Tracealyzer应用程序目录中的RunningOnLinux.txt。其中包含针对某些Linux发行版的附加说明。

2)在目标系统设置LTTng

在运行Linux系统的目标设备上安装LTTng(Linux Trace Toolkit next generation),具体步骤与使用的目标系统相关。为了熟悉LLTng,可以先在主机上安装。在Ubuntu系统上,只需要几个apt-get命令。

确保运行跟踪的用户位于tracing group组,或者使用root用户进行跟踪。

在某些情况下,你需要在记录跟踪之前以root用户身份启动lttng -sessiond。

安装LLTng并确保用户位于tracing group后,可以创建一个简单的跟踪,例如:

lttng create

lttng enable-event -k sched_*

lttng add-context -k -t pid

lttng add-context -k -t ppid

lttng start

# Run some test command to get more activity in the trace echo “Hello world” | wc

lttng stop

lttng destroy

如果设置正确,将在~/ ltng -traces中记录跟踪信息。在Tracealyzer中选择File ->Open→Open Folder加载trace文件。

3)在Tracealyzer中查看LTTng跟踪记录

在Linux系统中,使用Tracealyzer应用目录中的launch-tz.sh脚本启动Tracealyzer。

$ cd Tracealyzer--linux64

$ ./launch-tz.sh

如果不熟悉Tracealyzer,可以参考https://percepio.com/tag/tzlinux/下的Linux跟踪系列文章。

接下来,阅读Tracealyzer用户手册。用户手册可以在Help菜单中找到。建议阅读Views、Tools、Event Mapping、User Events和Intervals and State Machines章节。TraceRecorder的部分仅适用于RTOS跟踪。

确保在设置中启用了“Raw Events”,参见File ->Settings->Project Settings->Performance Settings,确保“Include Raw Events”项选中。

下一步是从目标系统获取LTTng跟踪记录。首先,使用File ->Open->Open Folder并选择root下跟踪文件夹,可以打开上一步中记录的跟踪信息。

更简便的方法是使用Trace菜单中的Tracealyzer Library Tool,用户可以使用SSH连接直接从Tracealyzer应用中控制和下载跟踪。

Target Library工具

使用Target Library,你可以设置目标配置文件,以便于访问。使用New按钮创建一个新的配置文件,设置目标地址,用户名和密码或私钥文件。配置文件创建完成后,通过Connect按钮连接到目标。

7da1ec5a-958c-11ee-8b88-92fbcf53809c.png

连接后,Target Library界面将打开一个新标签,其中包含三个主要部分,跟踪会话控制面板、命令日志和命令详细信息框。单击Start New Session按钮启动新会话。默认情况下,已经定义了一个TzTrace会话,它被预先配置为包括scheduling调度、syscalls系统调用、signals信号和UST事件。用户可以使用Sessions和Channels Editor创建自己的设置。

Quick Connect选项

Target Library工具还提供了一个“Quick Connect”选项,位于左下角,允许用户在一个字符串中指定所有参数,例如:

host=raspberrypi;user=pi;pass=raspberry;

Quick Connect选项的完整列表如下:

host -目标的主机名或地址

port - SSH端口(默认为22)

myhost -目标端看到的主机地址,可以不指定,但如果目标无法查找主机的主机名,则需显式指定。

user—要连接的用户

pass -用户的密码

keyFile -用于公钥身份验证的密钥文件,注意F大写。

cmdname - lttng命令的名称。默认为lttng,但在使用前缀或类似的情况下可以重写。

输入连接字符串后,即可以使用 “Connect”按钮进行连接。这需要主机已安装lttng -relayd工具,通常使用发行版的lytng -tools包安装。如果在Windows主机上运行Tracealyzer,则需要使用Windows Services For Linux,并确保在该环境中安装并可访问lttng -relayd。

为了获得最佳体验,我们建议在包含调度事件的内核通道上启用pid和ppid上下文字段。在跟踪用户空间事件(UST)时,建议启用vtid上下文。这将有助于Tracealyzer在某些特殊情况下正确呈现事件,特别是涉及多核系统中的迁移。

用于Linux跟踪的Tracealyzer特性

当查看LTTng跟踪信息时,Tracealyzer提供了专为Linux系统设计的分析功能:

Signals And Syscalls资源管理器工具,可以帮助分析进程如何通过系统调用与内核交互。例如,它可以让你跟踪正在访问的文件。它将尝试帮助你跟踪文件描述符(有一些限制),并帮助识别失败的调用。它可以显示每个线程、进程或进程树的系统调用列表。此外,它还可以展示信号是如何产生和传递的。

syscalls plot绘制系统调用的持续时间。它支持两种模式:执行时间和响应时间。前者将只考虑线程处于活动状态时的时间,而后者将包括线程切换出(即阻塞)的时间。

Communication flow view视图具有特定于linux的模式,可以通过view菜单访问。它支持进程树模式、信号模式和文件描述符模式。后者可以帮助您跟踪进程如何通过管道等进行通信

如果在主跟踪视图或事件日志中选择raw event并右键单击它,则可以向快速绘图中添加数字字段。这可以用于任何事件类型,包括自己的用户空间跟踪事件。

Linux事件

Tracealyzer内置了对以下类型的Linux内核事件的感知:

调度事件(内核域中的sched_*)

信号事件(内核域中的signal_*)

IRQ和SoftIRQ事件(内核域的irq_*)

系统调用(在内核域中--sycall -a)

其他事件将以“Raw Events”的形式呈现。默认情况下,Tracealyzer不会解释这些事件,只会在跟踪视图中显示为事件标签(即那些具有青色背景色的事件标签),并且也会在事件日志中列出。

注意,Raw Events可以通过“Event Interpretation”来配置,以创建“User Events”。这些可以在用户事件信号图中绘制,并转换为状态机或自定义间隔。请参阅Tracealyzer用户手册中的“Event Mapping”、“User Events”和“Intervals and State Machines”章节。

7dca3d90-958c-11ee-8b88-92fbcf53809c.png

Tracealyzer目标库使用LTTng接口,通过SSH连接到目标系统上的LTTng。LTTng接口对快照的支持有限。用户也可以通过终端手动控制LTTng。然后将跟踪目录传输到主机,使用File ->Open Folder打开。

缓冲区覆盖不均匀的跟踪可能会有问题,多核Linux系统上的快照跟踪有时就是这种情况。不均匀缓冲区覆盖,指的是不同的LTTng通道或事件流覆盖不同时间段的场景。如果为一个核调度数据的时间为30秒,而为另一个核调度数据的时间只有5秒,那么这些时间不一定在跟踪的开始或结束时对齐。这使得Tracealyzer很难同步调度跟踪。这个问题可以通过确保捕获整个跟踪来避免,例如通过将跟踪流传输到目标文件系统(存储在目标上)。







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux系统
    +关注

    关注

    4

    文章

    567

    浏览量

    26926
  • RTOS
    +关注

    关注

    20

    文章

    776

    浏览量

    118812
  • FreeRTOS
    +关注

    关注

    12

    文章

    473

    浏览量

    61362
  • SSH
    SSH
    +关注

    关注

    0

    文章

    177

    浏览量

    16084

原文标题:如何使用Tracealyzer跟踪Linux?

文章出处:【微信号:麦克泰技术,微信公众号:麦克泰技术】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Tracealyzer 技术分享

    售出以后返厂维修的情况,对于系统运行情况,可以通过Tracealyzer 生成文件进行分析,以用于改进产品的性能。下面讲一下Tracealyzer的工作原理:Tracelayzer 与
    发表于 01-04 21:10

    教你快递入门-Tracealyzer跟踪记录库移植

    。使用Tracealyzer,可以查看到系统的真实运行情况,为开发人员节省排除错误的时间。Tracealyzer由PC应用程序和跟踪组件组成,Percepio提供了
    发表于 07-31 14:08

    使用Tracealyzer分析RTOS系统需掌握的基本概念

    Tracealyzer是一款RTOS行为分析工具,支持包括VxWorks、μC/OS-III、FreeRTOS在内的众多RTOS,以及Linux系统Tracealyzer能够分析RT
    发表于 09-27 10:10

    Tracealyzer利用CortexM的ITM实现跟踪

    通过EWARM来实时获取跟踪数据。图 6 设置流模式的连接方式九、开启实时跟踪。需要先启动Tracealyzer,Live Stream窗口中点“Start Session”之后,EW
    发表于 12-05 15:34

    如何使用Tracealyzer预先定义的记录器扩展文件实现用户应用程序跟踪

    被记录为“用户事件”。从Tracealyzer V4.2.9版本开始,增加了记录器扩展方式来跟踪用户应用程序。记录器扩展方式可以帮助用户实现中间件、驱动程序API等重要功能函数调用的跟踪
    发表于 12-18 13:37

    出现“丢失事件”?看Tracealyzer流模式如何调优

    在使用自己定义的流端口实现跟踪时,如果Tracealyzer提示了“丢失事件”,那么你可以参照以下几种方法,来提升流端口的性能。潜在的问题可以分成3类:1、跟踪记录时没有足够的临时缓
    发表于 02-19 10:06

    通过Tracealyzer用户事件来了解应用程序

    Tracealyzer中称为间隔)。间隔表示跟踪中任意两个事件之间的时间,例如按键按下和按键释放。可以为任何类型的事件定义间隔,无论我们决定使用内核事件(如释放或获取信号量)还是用户事件(如刚才定义的事件)。间隔对于理解系统中的
    发表于 08-20 10:11

    使用Tracealyzer跟踪FreeRTOS内核

    程序,还需要可用于周期性任务的定时机制。大多数现有的开源 RTOS 实现了基于树或列表的机制来跟踪哪个任务已就绪。我们知道,基于树的机制在复杂搜索操作方面是高效和极时的,但在处理删除和插入操作上需花费
    发表于 12-01 14:57

    如何使用Tracealyzer理解多任务调度?

    任务使用了多少CPU时间?在运行时系统中实际发生了什么?Tracealyzer是一款记录RTOS运行时行为的可视化分析工具,通过30多个相互关联的视图对记录数据进行解析,向用户展示应用层级详细视图,作为
    发表于 12-17 16:01

    如何使用Tracealyzer流模式跟踪ThreadX?

    Tracealyzer是Percepio 公司开发的一款用于RTOS的嵌入式软件系统的可视化跟踪工具,提供了30多种相互关联的可视化运行时行为视图,本文将介绍如何使用Tracealyzer
    发表于 09-23 13:25

    Tracealyzer实现跟踪最简单的方法

    Tracealyzer 实现跟踪最简单的方法就是使用SEGGER J-Link调试器,通过RTT功能来实现数据的传送。RTT需要在RAM上
    的头像 发表于 09-02 11:11 1732次阅读

    如何使用Tracealyzer的流模式来跟踪ThreadX应用

    Tracealyzer是Percepio 公司开发的一款用于RTOS的嵌入式软件系统的可视化跟踪工具,提供了30多种相互关联的可视化运行时行为视图,本文将介绍如何使用Tracealyzer
    的头像 发表于 09-16 11:14 1093次阅读

    Tracealyzer跟踪记录库移植

    使用Tracealyzer,首先要将跟踪记录库集成到工程。安装了Tracealyzer 4之后,在安装路径下找到以RTOS名称命名的文件夹,将TraceRecorder子文件夹复制到自己的工程目录中。以FreeRTOS为例:
    的头像 发表于 11-08 11:17 1330次阅读

    Tracealyzer利用CortexM的ITM实现跟踪

    Tracealyzer快照模式,能够跟踪RTOS系统的运行时间受限于硬件可用的RAM大小,通常只能追踪几十秒的时间。使用流模式则不会存在这个问题,只要电脑硬盘空间足够,可用追踪几小时甚至几天的时间。
    的头像 发表于 12-20 11:12 1163次阅读

    如何通过Tracealyzer导出的跟踪数据对任务进行分析?

    Tracealyzer是Percepio 公司开发的一款用于RTOS的可视化跟踪工具, 目前Tracealyzer提供了30多种相互关联的运行时行为视图,对系统运行时的行为提供了前所未
    的头像 发表于 02-06 14:13 766次阅读