第 4 章 - Azure RTOS TraceX 性能分析
本章介绍了 Azure RTOS TraceX 性能分析工具:
性能分析
TraceX 提供内置的跟踪文件性能分析功能。 “执行分析”、“常见服务”、“线程堆栈使用情况”以及各种性能统计信息(包括 FileX 和 NetX 统计信息)等信息均可提供。 可以通过“视图”菜单项了解此信息。
执行分析
选择“生成执行分析”按钮或“视图 - 执行分析”会显示当前加载的跟踪文件的 TraceX 执行分析。 图 19 显示了与示例 ThreadX 演示跟踪关联的执行分析。
图 19
图 19 显示的示例指示大约 45% 的处理时间在线程 2 内,大约 51% 的处理时间在线程 1 内。这是合乎逻辑的,因为大部分跟踪显示了发送和接收消息的这些线程。 在此示例中,剩余的执行上下文只有少量的执行时间。
常见服务
选择“视图”->“常见服务”会显示当前加载的跟踪文件中的常见服务。 默认情况下,此信息是针对整个系统显示的。 但是,还提供了针对特定线程的常见服务。 图 20 显示了示例 ThreadX 演示跟踪中的常见服务。
图 20
图 20 显示的示例指示 tx_queue_send 和 tx_queue_receive 是此跟踪中最常见的两项服务。 这与已从中捕获此跟踪的标准 ThreadX 演示的行为一致。
通过使用此窗口顶部的下拉选择列表,可以为此分析选择特定的线程。 图 21 为线程 3 显示了此分析。
图 21
线程堆栈使用情况
选择“生成线程堆栈使用情况”>按钮或“视图”-“线程堆栈使用情况”会提供跟踪文件中每个线程的堆栈使用情况。 这是由 ThreadX 完成的,它将当前线程堆栈指针包含在文件的许多跟踪条目中。 堆栈使用率为 100% 表示堆栈已溢出,必须在应用程序中更正。 如果此跟踪文件中没有线程执行,则该线程的堆栈使用率显示为 0%。 图 22 显示了示例 ThreadX 演示跟踪中的线程堆栈使用率。
图 22
图 22 显示的示例指示此跟踪中大多数线程的堆栈使用率介于 9% 到 12% 之间。
性能统计信息
选择“生成性能统计信息”>按钮或“视图”-“性能统计信息”会提供当前加载的跟踪文件的性能统计信息。 默认情况下,此信息是针对整个系统显示的。 但是,也针对每个特定的线程提供了性能统计信息。
图 23 显示了示例 ThreadX 演示跟踪的性能统计信息。
图 23
图 23 显示的示例指示此跟踪文件中有 18 个上下文切换,以及 5 个线程抢占、16 个线程挂起、19 个线程恢复和 3 个中断。 在此跟踪文件中未发现优先级倒置。 请注意,有两个类别的优先级倒置,即“确定性的”和“非确定性的”。 确定性优先级倒置是这样一种优先级倒置:某个线程在优先级较低的线程拥有的互斥上被阻塞。 非确定性优先级倒置是指在确定性优先级倒置期间运行其他优先级较低的线程。 后者在应用程序中可能会导致不可预见的计时行为,应仔细研究。
FileX 统计信息
选择“视图”->“FileX 统计信息”会提供当前加载的跟踪文件的 FileX 性能统计信息。 此信息是在所有已打开的 ../media 对象上针对整个系统显示的。 图 24 显示了示例 FileX 演示跟踪的性能统计信息。
图 24
图 27 显示的示例指示有 19 次../media 打开、19 次 ../media 关闭、19 次 ../media 刷新、18 次目录读取、19 次目录写入以及 18 次目录缓存未命中。 可以通过在统计信息窗口中向下滚动来查看其他信息。
NetX 统计信息
选择“视图”-“NetX 统计信息”会提供当前加载的跟踪文件的 NetX 性能统计信息。 此信息是为整个系统显示的。 图 25 显示了示例 NetX 演示跟踪的性能统计信息。
图 25
图 25 显示的示例指示没有 ARP、Ping 或 UDP 事件,但发送了 30 个 IP 数据包,发送了 1,368 个 IP 字节,接收了 30 个 IP 数据包,接收了 1,360 个 IP 字节。
跟踪文件信息
选择“视图”->“跟踪文件信息”会显示有关打开的跟踪文件的一些基本信息。 此信息包括文件的字节顺序、时间源的大小、每个对象名称的最大字节数以及所有跟踪文件指针的基址。 图 26 显示了标准 demo_threadx.trx 跟踪文件的跟踪文件信息。
图 26
原始跟踪转储
选择“视图”->“原始跟踪转储”会显示一个对话框,用于为包含原始跟踪转储的文件命名。 输入文件名和路径后,TraceX 会生成文本格式的原始跟踪文件,并启动 notepad.exe 以显示该文件。 图 27 显示了标准 demo_threadx.trx 跟踪文件的原始跟踪文件转储。
图 27