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

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

3天内不再提示

多核系统中的自动分析并以图形方式描述实时事件的工具

星星科技指导员 来源:嵌入式计算设计 作者:John A. Carbone 2022-06-14 15:14 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

实时系统必须对外部和内部需求做出快速反应。当系统使用多核架构时,交互的速度和数量会急剧上升。虽然这提高了系统性能,但它使应用程序事件的实时排序变得复杂,因为多核系统事件可以在多个独立处理器上同时发生,而不是在单个处理器上顺序发生。

对于多核开发人员而言,管理事件数量及其同时性质的复杂性增加代表了设计更具挑战性的系统。与单处理器系统相比,多核系统诊断系统故障或效率低下的原因要困难得多。由于可用的多核工具很少,开发人员只能使用原始的打印语句技术,这些技术会在整个系统操作过程中留下面包屑,指示有关已发生的各种事件的数据。开发人员必须收集并理解碎屑并推断系统的状态,这一过程通常需要随后重新测量以获得更精细的粒度和重复该过程。

为了有效地解开多核系统上复杂的操作序列,开发人员需要即时回放,使他们能够检查紧接感兴趣区域之前的系统操作。如图 1 所示,一种新型调试工具准确显示了多核系统在特定时间段内发生的情况。所有系统事件的图形分析显示在由应用程序线程组织并按处理器内核分组的单个时间尺度上。

图 1: TraceX 提供多核系统中实时事件的图形视图。在此示例中,可以看到 Core-0 和 Core-1 同时执行不同的线程。

poYBAGKoNZ6AUF4JAAS1nT-0Zoo261.png

系统事件分析的传统方法

实时程序员早就了解系统行为对其应用程序功能和性能的重要性。传统方法通过切换 I/O 引脚、使用 printf、设置变量或将值写入文件来在代码到达某个阶段时生成有关系统行为的数据来解决这些问题。

插入这样的响应需要大量时间,尤其是考虑到检测代码在第一次时通常不能完全按预期工作,并且必须进行调试。一旦验证了应用程序的该部分,就需要删除检测代码,并且需要对其删除进行调试。大多数检测过程是手动的,因此很耗时并且容易出现额外的错误。

除了检测代码之外,开发人员还需要找到一种方法来解释生成的数据。检测代码生成的大量信息使确定哪些系统事件以何种顺序发生的任务变得复杂。

新方法提供优势

与传统方法相比,TraceX 自动分析并以图形方式描绘运行期间在目标系统上捕获的系统和应用程序事件。线程上下文切换、抢占、暂停、终止和系统中断等事件都会留下调试工具识别和显示的面包屑。这些面包屑描述了刚刚发生的事件、涉及哪个线程、该线程在哪个内核上运行、何时发生以及其他相关信息。

使用此工具,用户可以使用应用程序编程接口 (API) 记录任何所需的应用程序事件。事件信息存储(记录)在目标系统上的循环缓冲区中,缓冲区大小由应用程序确定。循环缓冲区可以随时存储最近的“n”个事件,并可在系统故障或其他重大事件的情况下进行检查。

良好的多核调试工具允许应用程序在特定时间(例如遇到感兴趣的区域时)动态停止和启动事件记录。这样可以避免在系统正常运行时使数据库混乱并消耗目标内存。当遇到断点或系统崩溃或应用程序运行完成后,可以将事件日志上传到主机进行分析。

一旦事件日志从目标内存上传到主机,该工具就会在代表时间的水平轴上以图形方式显示事件(参见图 1)。与事件相关的各种应用程序线程和系统例程沿纵轴列出,事件本身出现在相应的行中。对于多核系统,事件链接到它们各自的处理器内核并分组在一起,以便开发人员可以轻松查看内核的所有事件。

所有事件也显示在顶部摘要行中,无论内核或线程如何,为开发人员提供了一种方便的方式来获取系统事件的完整画面,而无需向下滚动查看所有线程和内核。事件由位于沿水平时间线的发生点以及相关线程或系统例程的右侧的颜色编码图标表示。轴可以展开以显示更多事件详细信息,也可以折叠以显示更多事件。时间刻度可以向左(向后)或向右(向前)平移以显示跟踪缓冲区中的任何点。如图2所示,选择单个事件时,将为该事件提供详细信息,包括核心,上下文,事件,线程指针,新状态,堆栈指针和下一个线程点。

图 2:单击事件图标可以显示单个事件的详细信息。

pYYBAGKoNaWAdReRAATErSUXoeg676.png

解决优先级反转问题

最具挑战性的实时问题之一是优先级反转。优先级反转的出现是因为实时操作系统 (RTOS) 采用基于优先级的抢占式调度程序来确保准备好运行的最高优先级线程实际运行。调度程序可以在执行过程中抢占一个较低优先级的线程来满足这个目标。

当高优先级和低优先级线程共享资源(例如内存缓冲区)时,可能会出现问题。如果在高优先级线程准备运行时低优先级线程正在使用共享资源,则高优先级线程必须等待低优先级线程完成。如果较高优先级的线程必须满足关键期限,则必须计算它可能必须等待其所有共享资源的最长时间,以确定其最坏情况下的性能。当 CPU 为低优先级线程提供服务时,高优先级线程被迫等待,就会发生优先级反转。

优先级倒置很难识别和纠正。他们的症状通常是表现不佳,但表现不佳源于许多潜在原因。使确定原因的挑战更加复杂的是,优先级倒置可以逃避测试,这可能意味着倒置是不确定的。

像 TraceX 这样的系统事件工具可以轻松自动地识别优先级反转。跟踪缓冲区清楚地识别在任何时间点正在运行的线程并记录线程就绪状态的任何变化。因此,很容易及时返回以确定较高优先级线程是否已准备好运行但被持有较高优先级线程所需资源的较低优先级线程阻塞。图 3 显示了非确定性优先级反转。

图 3:高优先级线程必须等待低优先级线程在非确定性优先级反转中释放互斥锁。

pYYBAGKoNa2ASxtwAAQoum3Fsjw353.png

如此图所示,当 Low_thread 被 High_thread 抢占时,它持有一个互斥锁。High_thread 然后寻找相同的互斥体,但必须等待 Low_thread 释放它。但是,Medium_thread 进行了干预,可以运行不确定的时间长度,不仅延迟了 Low_thread,还延迟了 High_thread。只有当 Medium_thread 为 Low_thread 提供足够的时间以完成其处理并释放互斥锁时,High_thread 才能恢复。

提高应用程序性能

虽然大多数开发人员使用支持多核的工具来理解和纠正问题,但好处并不止于此。这些工具提供了用于分析和改进系统级应用程序性能的执行配置文件。使用执行配置文件,开发人员可以看到每个线程和系统服务使用的 CPU 时间量(参见图 4)。开发人员可以轻松地深入了解特定事件以进行诊断。

图 4:执行配置文件显示每个线程使用的 CPU 时间。

pYYBAGKoNbWAFdveAAKjHYwh4j8592.png

与多核系统操作更相关的是,平衡所有可用内核的处理负载可以实现更大的系统吞吐量。如果系统配置文件提供了有关哪些内核具有较长空闲时间的信息,如图 4 所示,开发人员将获得有关如何将处理转移到其他空闲内核的有力线索。

支持多核的调试工具以标准调试器无法提供的方式绘制系统的图形图像。它为开发人员提供了对中断、上下文切换和其他系统事件的清晰视图,这些事件通常通过耗时的代码检测和对结果数据的繁琐检查来检测。因此,与单独使用标准调试工具相比,开发人员可以在更短的时间内找到并修复错误并优化应用程序性能。由于调试占应用程序开发的 70%,这些工具显着改进了产品,同时减少了开发时间。

审核编辑:郭婷

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

    关注

    68

    文章

    11221

    浏览量

    222987
  • API
    API
    +关注

    关注

    2

    文章

    2166

    浏览量

    66253
  • RTOS
    +关注

    关注

    25

    文章

    862

    浏览量

    122617
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    图形界面模式下自定义检查工具的应用

    此前文章已介绍 ANSA 的自定义检查工具。本文将探讨该功能在无图形界面(No-GUI)模式下的应用,旨在满足标准化工作流程的需求,适用于需要高度自动化的前处理场景。通过集成自定义检
    的头像 发表于 11-30 14:13 307次阅读
    无<b class='flag-5'>图形</b>界面模式下自定义检查<b class='flag-5'>工具</b>的应用

    嵌入式软件测试与专业测试工具的必要性深度解析

    。提升测试效率与覆盖率专业工具通过以下方式优化测试过程: ‌静态代码分析‌:通过MISRA-C等规则检查防止缓冲区溢出等隐患 ‌动态符号执行‌:自动探索代码路径生成测试用例 ‌目
    发表于 09-28 17:42

    不同类型的自动化工具在评估数据缓存效果时有哪些优缺点?

    在评估数据缓存效果时,不同类型的自动化工具实时监控类、性能测试类、深度分析类、云原生专属类)因设计目标和技术特性不同,存在显著的优缺点差异。以下结合工具类型与具体场景,
    的头像 发表于 09-25 17:48 509次阅读
    不同类型的<b class='flag-5'>自动化工具</b>在评估数据缓存效果时有哪些优缺点?

    EasyGo TestSim:新能源电力系统自动化测试的利器

    数据处理能力,让工程师能够即时了解系统的运行状态,及时发现问题。 图形绘制 :支持伯德图和奈奎斯特图的绘制,实时生成频域响应曲线。用户还可以根据需要调整坐标范围和参数,使图形更加直观易
    发表于 09-03 18:35

    隧道人员定位管理系统简要描述

    详细介绍隧道人员定位管理系统系统架构、部署方式、基站设置、UWB定位技术、实时人员查看、电子围栏功能及B/S系统查看等关键组成部分,并
    的头像 发表于 06-06 09:27 569次阅读
    隧道人员定位管理<b class='flag-5'>系统</b>简要<b class='flag-5'>描述</b>

    米尔瑞芯微多核异构低功耗RK3506核心板重磅发布

    。 低延时、高实时性RK3506采用了AMP多核异构,具备强大的实时性能使得一颗芯片便能灵活搭配多种操作系统,确保系统能够快速响应各类输入信
    发表于 05-16 17:20

    PanDao:制造成本影响分析软件工具

    摘要 . 本文介绍了一款名为“PanDao”的新软件工具,专为光学系统设计人员打造。该工具能够在设计阶段模拟出最佳的制造流程和所需技术,并对设计参数和公差的制造成本影响进行分析。 在光
    发表于 05-12 08:55

    SEGGER SystemView支持多核行为的观察和验证

    2025年2月,SEGGER宣布其实时软件验证和可视化工具SystemView增加了多核支持,将其功能扩展到单个芯片上具有多个CPU内核的系统
    的头像 发表于 02-07 11:24 1076次阅读
    SEGGER SystemView支持<b class='flag-5'>多核</b>行为的观察和验证

    智能化雨水情自动测报系统实时发布降水预警信息

    雨水情自动测报系统是基于现代信息技术的一套完整的降水量监测和气象预警系统。它通过水位传感器、雨量传感器、无线通信网络以及大数据分析技术,实现降水数据的
    的头像 发表于 02-06 15:12 1966次阅读
    智能化雨水情<b class='flag-5'>自动</b>测报<b class='flag-5'>系统</b>:<b class='flag-5'>实时</b>发布降水预警信息

    VirtualLab Fusion案例:K域和X域中的系统建模

    算法。有关更多信息,请查看下面的用例! 系统建模分析 在本文中,系统建模分析工具的应用和优势将在两个不同的示例中演示。 自由空间传播算子
    发表于 01-15 08:56

    反射光栅的光学系统结构光栅系统的配置与优化

    作为谐振器的反射镜之一,或在单色器和光谱仪。 在本周的时事通讯,我们展示了两个与Littrow配置光栅相关的例子。首先,我们演示了如何利用VirtualLab Fusion
    发表于 01-11 13:19

    Littrow结构光栅系统的配置与优化

    作为谐振器的反射镜之一,或在单色器和光谱仪。 在本周的时事通讯,我们展示了两个与Littrow配置光栅相关的例子。首先,我们演示了如何利用VirtualLab Fusion
    发表于 12-25 15:35

    自动零件分析仪的原理和应用

    自动控制技术和数据处理技术。其主要由进样系统分析系统和数据处理系统三部分组成。 进样系统:负
    发表于 12-23 15:22

    自动控制系统与物联网的结合 自动控制系统实时监测技术

    自动控制系统与物联网的结合为实时监测技术带来了革命性的变化。以下是对这一结合以及自动控制系统实时监测技术的分析: 一、
    的头像 发表于 12-18 10:00 1431次阅读

    Jtti:有哪些工具可以帮助我监控自动更新过程中系统状态?

    监控自动更新过程中系统状态对于确保系统的稳定性和性能至关重要。以下是一些可以帮助你监控系统状态的工具: 1.
    的头像 发表于 12-10 15:46 711次阅读