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

    文章

    10803

    浏览量

    210787
  • API
    API
    +关注

    关注

    2

    文章

    1471

    浏览量

    61744
  • RTOS
    +关注

    关注

    21

    文章

    809

    浏览量

    119358
收藏 人收藏

    评论

    相关推荐

    边缘计算在工业自动的应用

    自动系统,需要处理大量的数据。边缘计算可以在设备附近进行本地的数据处理和分析,减少数据传输的时间,提高系统
    的头像 发表于 10-24 14:30 277次阅读

    嵌入式系统的未来趋势有哪些?

    (ML)技术的快速发展,嵌入式系统将更多地整合这些先进技术,以支持智能决策和自动化。在设备上直接运行AI和ML模型,进行图像识别、自然语言处理、预测分析等任务,将极大提升嵌入式系统的智
    发表于 09-12 15:42

    莱迪思Propel工具套件加速FPGA应用开发

    许多嵌入式系统的开发者都对使用基于FPGA的SoC系统感兴趣,但是基于传统HDL硬件描述语言的FPGA开发工具和复杂流程往往会令他们望而却步。为了解决这一问题,莱迪思的Propel
    的头像 发表于 08-30 17:23 965次阅读

    PLC冗余系统的配置方式和工作原理

    在现代工业自动化控制系统,可编程逻辑控制器(PLC)的应用已经变得非常普遍。为了保障生产过程的连续性和系统的稳定性,PLC冗余系统作为一种
    的头像 发表于 06-19 10:42 2032次阅读

    工业自动的控制方式

    工业自动化是现代工业发展的重要标志,它极大地提高了生产效率,降低了生产成本,并改善了产品质量。在工业自动,控制方式作为实现自动化控制的关
    的头像 发表于 06-17 11:41 666次阅读

    嵌入式多核心系统渐成趋势,IAR工具化繁为简

    ,边缘智能又要求嵌入式系统进行架构创新,以满足其对性能、功耗、实时性及成本等多方面的需求。在此背景下,多核系统应运而生,成为了嵌入式系统发展
    的头像 发表于 06-05 16:57 630次阅读

    电表自动抄表系统软件

    1.电表自动抄表系统软件简述电表自动抄表系统软件,是一种现代化电力工程可视化工具,它利用先进的信息科技,实现远程、
    的头像 发表于 05-17 14:19 469次阅读
    电表<b class='flag-5'>自动</b>抄表<b class='flag-5'>系统</b>软件

    实时频谱分析仪的关键技术浅析

    实时频谱分析仪作为电子测试与测量领域的重要工具,其在无线通信、雷达系统、电子对抗等多个领域都发挥着至关重要的作用。随着现代通信技术的飞速发展,对频谱
    的头像 发表于 05-16 15:39 790次阅读

    裸机系统以任务方式高效利用SystemView调试分析

    对无OS的应用,SystemView除了将整个系统视为idle空闲分析方式外,还可以通过任务方式检测系统运行时行为。
    发表于 04-26 15:53 838次阅读
    裸机<b class='flag-5'>系统</b><b class='flag-5'>中</b>以任务<b class='flag-5'>方式</b>高效利用SystemView调试<b class='flag-5'>分析</b>

    Minitab 包括哪些图形

    概述 Minitab 在“图形”菜单上提供了一套灵活的图形以支持各种分析需要。创建图形时有许多自定义选项可用。 除了可以从“图形”菜单中使用
    的头像 发表于 01-29 10:28 417次阅读

    工控系统Web组态工具的特点

    组态软件的定义 组态软件主要作为SCADA系统及其他控制系统的上位机人机界面的开发平台,为用户提供快速地构建工业自动系统数据采集和实时监控
    的头像 发表于 01-26 15:31 771次阅读
    工控<b class='flag-5'>系统</b>Web组态<b class='flag-5'>工具</b>的特点

    什么是实时频谱分析仪呢?傅里叶变换(FFT)如何实现频谱测量?

    仪广泛应用于无线通信、音频处理、声学研究等领域。 傅里叶变换(FFT)是实现频谱测量的重要数学工具。FFT算法可以将时域信号转换为频域信号,并以图形形式呈现出来。它是一种离散傅里叶变换(DFT)的高效计算方法。通过FFT算法,我
    的头像 发表于 01-19 15:50 2815次阅读

    MES系统采集数据的方式

    MES系统的最大特点,就是能实时收集生产过程的各类信息、数据,然后汇集到数据库,作数据分析及供管理层查询。如何高效的采集车间的各类数据,
    发表于 12-12 15:54 3次下载

    Get职场新知识:做分析,用大数据分析工具

    为什么企业每天累积那么多的数据,也做数据分析,但最后决策还是靠经验?很大程度上是因为这些数据都被以不同的指标和存储方式放在各自的系统,这就导致了数据的
    发表于 12-05 09:36

    专注数据采集分析系统研发 做设备与MES系统中转站

    并以数据采集为基础,搭建一个车间级的生产指挥调度中心,通过对设备运行情况、生产过程、产品质量的实时监控与分析,科学实时对生产进行指挥调度,确保生产的有序和可控,实现与MES
    发表于 12-01 17:09