Arm Coresight 介绍

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
EMR Serverless StarRocks,5000CU*H 48000GB*H
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: Coresight 是 ARM 架构上的一款嵌入式系统监控和调试工具,能够为系统管理员和开发人员提供便捷的系统监控和调试功能。该平台可以实时追踪和分析处理器上的活动,以深入了解潜在的性能瓶颈和问题。本文将介绍Coresight的概念、优势及其安装、配置、故障排除和调试等方面的内容,并探讨其未来发展方向和重要性。

Arm Coresight 介绍

简介

Coresight 是 ARM 架构上的一款嵌入式系统监控和调试工具,能够为系统管理员和开发人员提供便捷的系统监控和调试功能。该平台可以实时追踪和分析处理器上的活动,以深入了解潜在的性能瓶颈和问题。本文将介绍Coresight的概念、优势及其安装、配置、故障排除和调试等方面的内容,并探讨其未来发展方向和重要性。

Coresight 特点

  1. 收集流水线中所有的 branch 指令。

  2. 全量采集:大多数 trace 组件都是基于一定的采样频率采集,Coresight 可以全量采集。

  3. 可以结合 PMU 事件。

Coresight 架构

Coresight 架构较为复杂,包括数据采集、数据传输、采集时间通知、多核协同、物理/虚拟地址映射等功能。具体描述可见附录A

安装和使用

购买倚天裸金属服务器

安装 Coresight 驱动

modprobe coresight

modprobe coresight-catu

modprobe coresight-funnel

modprobe coresight-tmc

modprobe coresight-cti

modprobe coresight-replicator

modprobe coresight-etm4x

modprobe coresight-tpiu

image

利用 perf-tools 直接使用 coresight 收集数据

采集命令:perf record -C 0 -m ,1G -e cs_etm//u ls

解析命令:perf script

coresight 设置采样频率

perf record -C 0 -m ,1G -e cs_etm/autofdo,preset=8/u ./app

preset 可以设置为 1-9,对应的采样频率为:

preset 采样间隔
1 每隔 2 * 5000 个 cycle,持续采集 5000 个 cycle
2 每隔 4 * 5000 个 cycle,持续采集 5000 个 cycle
3 每隔 8 * 5000 个 cycle,持续采集 5000 个 cycle
4 每隔 16 * 5000 个 cycle,持续采集 5000 个 cycle
5 每隔 64 * 5000 个 cycle,持续采集 5000 个 cycle
6 每隔 128 * 5000 个 cycle,持续采集 5000 个 cycle
7 每隔 512 * 5000 个 cycle,持续采集 5000 个 cycle
8 每隔 1024 * 5000 个 cycle,持续采集 5000 个 cycle
9 每隔 4096 * 5000 个 cycle,持续采集 5000 个 cycle

地址过滤

即使是最简单的跟踪场景,CoreSight tracers生成的跟踪数量也是惊人的。可以通过地址过滤来节省跟踪缓冲区空间并避免不相关的跟踪数据。

在CoreSight上实现了两种类型的地址过滤器-地址范围和开始/停止过滤器:

Start/Stop filters: 使用开始/停止过滤器,当指令指针等于开始地址时,生成跟踪。顺便说一句,当指示指针等于停止地址时,停止生成跟踪。在事件之间发生的任何事情都被跟踪:

perf record -e cs_etm/@tmc_etr0/k --filter 'start 0xffffff800856bc50,stop 0xffffff800856bcb0' --per-thread  uname

perf record -vvv -e cs_etm/@tmc_etr0/u --filter 'start 0x72c@/opt/lib/libcstest.so.1.0,    \
                                                     stop 0x40082c@/home/linaro/main'          \
                                                 --per-thread ./main

三、故障排除和调试

在使用Coresight时,可能会遇到一些常见问题,如数据丢失、不准确的分析结果等。为了解决这些问题,可以采取以下措施:检查Coresight设备和代码是否正确连接和编写,检查数据采集是否正常,检查分析结果是否准确,并查阅Coresight文档或联系技术支持。在调试时,还可以采用以下技巧和技巧:正确使用Coresight、分析Coresight数据以查找问题,并使用调试工具进行跟踪和调试。

四、未来方向

Coresight将继续发展,未来将支持更多的处理器和硬件平台,并增强分析功能,如深度学习和数据可视化。同时,将与其他开源和商业工具集成,以满足不断增长的需求。

五、结论

总的来说,Coresight是一款功能强大的嵌入式系统监控和分析工具,能够帮助开发人员和系统管理员更轻松地解决问题。通过正确的安装、配置、故障排除和调试,可以更好地利用Coresight的功能。未来,Coresight将继续发展,并与其他工具和技术集成,以应对日益增长的需求。

附录A

CoreSight架构指定了一组组件,用于实现支持调试和跟踪信息收集的特定SoC子系统。本节展示了基于CoreSight架构的CoreSight组件的一些示例实现。

硬件组成

Control components

  • Cross Trigger Interface (CTI).

  • Cross Trigger Matrix (CTM).

Trace sources

  • Embedded Trace Macrocells (ETMs).

  • AMBA Trace Macrocells.

  • Program Flow Trace Macrocells (PTMs).

  • System Trace Macrocells (STMs).

Trace links

  1. Trace funnels.

  2. Replicators.

  3. ATB bridges.

Trace sinks

  • Trace Port Interface Units (TPIUs).

  • Embedded Trace Buffers (ETBs).

  • Trace Memory Controllers (TMCs).

硬件结构

Coresight 组件的组合方式可以参考 Linux Kernel 文档

 *****************************************************************
**************************** AMBA AXI  ****************************===||
 *****************************************************************    ||
       ^                    ^                            |            ||
       |                    |                            *            **
    0000000    :::::     0000000    :::::    :::::    @@@@@@@    ||||||||||||
    0 CPU 0<-->: C :     0 CPU 0<-->: C :    : C :    @ STM @    || System ||
 |->0000000    : T :  |->0000000    : T :    : T :<--->@@@@@     || Memory ||
 |  #######<-->: I :  |  #######<-->: I :    : I :      @@@<-|   ||||||||||||
 |  # ETM #    :::::  |  # PTM #    :::::    :::::       @   |
 |   #####      ^ ^   |   #####      ^ !      ^ !        .   |   |||||||||
 | |->###       | !   | |->###       | !      | !        .   |   || DAP ||
 | |   #        | !   | |   #        | !      | !        .   |   |||||||||
 | |   .        | !   | |   .        | !      | !        .   |      |  |
 | |   .        | !   | |   .        | !      | !        .   |      |  *
 | |   .        | !   | |   .        | !      | !        .   |      | SWD/
 | |   .        | !   | |   .        | !      | !        .   |      | JTAG
 *****************************************************************<-|
*************************** AMBA Debug APB ************************
 *****************************************************************
  |    .          !         .          !        !        .    |
  |    .          *         .          *        *        .    |
 *****************************************************************
******************** Cross Trigger Matrix (CTM) *******************
 *****************************************************************
  |    .     ^              .                            .    |
  |    *     !              *                            *    |
 *****************************************************************
****************** AMBA Advanced Trace Bus (ATB) ******************
 *****************************************************************
  |          !                        ===============         |
  |          *                         ===== F =====<---------|
  |   :::::::::                         ==== U ====
  |-->:: CTI ::<!!                       === N ===
  |   :::::::::  !                        == N ==
  |    ^         *                        == E ==
  |    !  &&&&&&&&&       IIIIIII         == L ==
  |------>&& ETB &&<......II     I        =======
  |    !  &&&&&&&&&       II     I           .
  |    !                    I     I          .
  |    !                    I REP I<..........
  |    !                    I     I
  |    !!>&&&&&&&&&       II     I           *Source: ARM ltd.
  |------>& TPIU  &<......II    I            DAP = Debug Access Port
          &&&&&&&&&       IIIIIII            ETM = Embedded Trace Macrocell
              ;                              PTM = Program Trace Macrocell
              ;                              CTI = Cross Trigger Interface
              *                              ETB = Embedded Trace Buffer
         To trace port                       TPIU= Trace Port Interface Unit
                                             SWD = Serial Wire Debug
目录
相关文章
|
存储 监控 算法
ARM:CoreSight、ETM、PTM、ITM、HTM、ETB等常用术语解析
ARM:CoreSight、ETM、PTM、ITM、HTM、ETB等常用术语解析
1029 0
|
1月前
|
存储 机器学习/深度学习 数据库
阿里云服务器X86/ARM/GPU/裸金属/超算五大架构技术特点、场景适配参考
在云计算技术飞速发展的当下,云计算已经渗透到各个行业,成为企业数字化转型的关键驱动力。选择合适的云服务器架构对于提升业务效率、降低成本至关重要。阿里云提供了多样化的云服务器架构选择,包括X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器以及高性能计算等。本文将深入解析这些架构的特点、优势及适用场景,以供大家了解和选择参考。
308 61
|
1月前
|
消息中间件 数据可视化 Kafka
docker arm架构部署kafka要点
本内容介绍了基于 Docker 的容器化解决方案,包含以下部分: 1. **Docker 容器管理**:通过 Portainer 可视化管理工具实现对主节点和代理节点的统一管理。 2. **Kafka 可视化工具**:部署 Kafka-UI 以图形化方式监控和管理 Kafka 集群,支持动态配置功能, 3. **Kafka 安装与配置**:基于 Bitnami Kafka 镜像,提供完整的 Kafka 集群配置示例,涵盖 KRaft 模式、性能调优参数及数据持久化设置,适用于高可用生产环境。 以上方案适合 ARM64 架构,为用户提供了一站式的容器化管理和消息队列解决方案。
101 10
|
2月前
|
存储 机器学习/深度学习 算法
阿里云X86/ARM/GPU/裸金属/超算等五大服务器架构技术特点、场景适配与选型策略
在我们选购阿里云服务器的时候,云服务器架构有X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器、高性能计算可选,有的用户并不清楚他们之间有何区别。本文将深入解析这些架构的特点、优势及适用场景,帮助用户更好地根据实际需求做出选择。
|
4月前
|
弹性计算 编解码 运维
飞天技术沙龙回顾:业务创新新选择,倚天 Arm 架构深入探讨
飞天技术沙龙回顾:业务创新新选择,倚天 Arm 架构深入探讨
|
5月前
|
机器学习/深度学习 弹性计算 人工智能
阿里云服务器ECS架构区别及选择参考:X86计算、ARM计算等架构介绍
在我们选购阿里云服务器的时候,云服务器架构有X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器、高性能计算可选,有的用户并不清楚他们之间有何区别,本文主要简单介绍下这些架构各自的主要性能及适用场景,以便大家了解不同类型的架构有何不同,主要特点及适用场景有哪些。
822 10
|
6月前
|
人工智能 芯片 Windows
ARM架构PC退货率与CEO策略透视
ARM架构PC退货率与CEO策略透视
|
7月前
|
机器学习/深度学习 弹性计算 人工智能
阿里云服务器架构有啥区别?X86计算、Arm、GPU异构、裸金属和高性能计算对比
阿里云ECS涵盖x86、ARM、GPU/FPGA/ASIC、弹性裸金属及高性能计算等多种架构。x86架构采用Intel/AMD处理器,适用于广泛企业级应用;ARM架构低功耗,适合容器与微服务;GPU/FPGA/ASIC专为AI、图形处理设计;弹性裸金属提供物理机性能;高性能计算则针对大规模并行计算优化。
417 7
|
8月前
|
编解码 弹性计算 应用服务中间件
阿里云服务器Arm计算架构解析:Arm计算架构云服务器租用收费标准价格参考
阿里云服务器架构分为X86计算、Arm计算、高性能计算等多种架构,其中Arm计算架构以其低功耗、高效率的特点受到广泛关注。本文将深入解析阿里云Arm计算架构云服务器的技术特点、适用场景以及包年包月与按量付费的收费标准与最新活动价格情况,以供选择参考。
|
8月前
|
机器学习/深度学习 弹性计算 编解码
阿里云服务器计算架构X86/ARM/GPU/FPGA/ASIC/裸金属/超级计算集群有啥区别?
阿里云服务器ECS提供了多种计算架构,包括X86、ARM、GPU/FPGA/ASIC、弹性裸金属服务器及超级计算集群。X86架构常见且通用,适合大多数应用场景;ARM架构具备低功耗优势,适用于长期运行环境;GPU/FPGA/ASIC则针对深度学习、科学计算、视频处理等高性能需求;弹性裸金属服务器与超级计算集群则分别提供物理机级别的性能和高速RDMA互联,满足高性能计算和大规模训练需求。
303 6