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

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

3天内不再提示

Linux ftrace简介与分析

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:嵌入式Linux系统开 2023-07-20 11:17 次阅读

最近遇到 i2c 传输慢的问题,正常一笔 i2c 传输 52 bytes 应该在 1ms 内返回,但是偶尔出现 6 ~ 7ms 才返回,不满足要求,因此研究一下 ftrace 工具,分析 i2c 传输到底慢在哪里。怀疑:

同一路 i2c bus 挂载设备多,可能同时发起传输,导致抢占。(解决方法:重要器件独占一路 i2c bus)

i2c 硬件传输慢。一般不太可能,因为这是硬件行为,除非从机返回慢。(研究从机为什么慢)

i2c 传输完成后返回,i2c 控制器发传输完成的信号cpu,但 cpu 忙 loading 重,没有及时调用 i2c_reply 通知调用者;或者是 i2c 传输完成后,CPU 处于睡眠状态,由于 i2c 中断无法唤醒系统,系统醒了以后才返回,导致慢。(提升 user 线程优先级 + 让这一路 i2c bus 持锁,可以优化)

1、简介

strace:用来跟踪 Linux 进程执行时的系统调用和接收所接收的信号,可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。

ftrace:是一个 Linux 内核函数跟踪器,function tracer,旨在帮助开发人员和系统设计者可以找到内核内部发生的事情,从 Linux-2.6 内核就支持了。

atrace:Android tracer,使用 ftrace 来跟踪 Android 上层的函数调用。

systrace:Android 的 trace 数据分析工具,将 atrace 采集上来的数据,以图形化的方式展现出来。systrace 是分析 Android 设备性能的主要工具。不过,它实际上是多种其他工具的封装容器:它是 atrace 的主机端封装容器。atrace 是用于控制用户空间跟踪和设置 ftrace 的设备端可执行文件,也是 Linux 内核中的主要跟踪机制。systrace 使用 atrace 来启用跟踪,然后读取 ftrace 缓冲区并将其全部封装到一个独立的 HTML 查看器中。

perfetto:新一代 systrace 分析工具,使用 perfetto 工具,可以通过 Android 调试桥 (ADB) 在 Android 设备上收集性能信息。perfetto 从您的设备上收集性能跟踪数据时会使用多种来源,例如:使用 ftrace 收集内核信息、使用 atrace 收集服务和应用中的用户空间注释、使用 heapprofd 收集服务和应用的本地内存使用情况信息。

在 Android 9 (P) 及以上版本平台都可用,但只有在 Android 11 (R) 及以上的版本中才默认启用。在Android 9 (P) 和 10 (Q) 上,你需要执行下面的命令,以确保在一切开始之前跟踪服务正常启动:

# Needed only on Android 9 (P) and 10 (Q) on non-Pixel phones.adb shell setprop persist.traced.enable 1

perfconv:CPU Freq 分析工具

LTR:Long Trace Recoder,可以录制长达半个小时的 trace,主要用于分析游戏场景。

因此,首先需要学习 ftrace,它是其他 trace 的基础。

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

    关注

    87

    文章

    11191

    浏览量

    208623
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1472

    浏览量

    122944
收藏 人收藏

    评论

    相关推荐

    Linux在医疗电子上的应用案例分析--谷歌GDG开源Linux

    专辑:谷歌GDG开源linux开发经验及典型应用案例分享讲座视频简介:本专题将介绍嵌入式Linux的最新发展与知识框架,并通过分析一个Linux
    发表于 08-06 10:05

    嵌入式Linux的启动流程简介

    目录嵌入式 Linux 启动流程简介启动流程Bootloader 简介市面上可见的 bootloader入式 Linux 启动流程简介对于一
    发表于 11-04 09:04

    嵌入式Linux开发简介

    目录1、嵌入式Linux开发简介1.1嵌入式系统1.2嵌入式操作系统简介1.2.1嵌入式操作系统的发展1.2.2几种代表性嵌入式操作系统1.3嵌入式Linux
    发表于 12-14 08:24

    Linux简介

    Linux简介Linux是一款优秀的计算机操作系统LINUX是在UNIX基础上开发,具有UNIX全部功能。1991年,芬兰赫尔辛基大学的学生Linus Torvalds开发了
    发表于 12-16 06:00

    OpenHarmony常用的性能分析工具

    1、OpenHarmony性能分析工具Bytrace介绍一、Bytrace简介bytrace是开发人员用于追踪进程轨迹、查看性能的一种工具,主要对内核ftrace进行了封装和扩展,来支持用户态的打点
    发表于 03-21 09:42

    Linux源代码简介

     Linux源代码简介欢迎进入Linux的世界!随着人们对开放源代码软件热情的不断高涨,Linux也受到了越来越多的关注。Linux
    发表于 02-10 13:54 78次下载

    第1章 Linux简介和安装

    有关于linux简介
    发表于 12-20 22:16 0次下载

    基于linuxFtrace简介、案例、结果读法以及用vim进行Ftrace折叠的解析

    Ftrace简介Ftrace案例,Ftrace结果怎么读, vim进行Ftrace折叠。
    的头像 发表于 01-24 14:14 4281次阅读
    基于<b class='flag-5'>linux</b>的<b class='flag-5'>Ftrace</b><b class='flag-5'>简介</b>、案例、结果读法以及用vim进行<b class='flag-5'>Ftrace</b>折叠的解析

    ADM1266 Linux API和Python库简介

    ADM1266 Linux API和Python库简介
    发表于 05-17 10:50 6次下载
    ADM1266 <b class='flag-5'>Linux</b> API和Python库<b class='flag-5'>简介</b>

    Linux内核ftrace的学习

    目录 1. 前言 2. ARM64栈帧结构 3. 编译阶段 3.1 未开启ftrace时的blk_update_request 3.2 开启ftrace时的blk_update_request 4.
    的头像 发表于 08-13 17:33 3085次阅读
    <b class='flag-5'>Linux</b>内核<b class='flag-5'>ftrace</b>的学习

    使用Ftrace研究Linux内核

    Ftrace通过tracefs文件系统的控制文件来进行调试。如果内核构建阶段配置ftrace,默认会挂载tracefs到/sys/kernel/tracing,也可以在运行环境手动挂载
    的头像 发表于 05-05 10:00 1572次阅读

    Ftrace使用tracefs文件系统保存控制文件

    FtraceLinux Kernel的官方tracing系统,支持Function trace、静态tracepoint、动态Tracepoint的跟踪,还提供各种Tracer,用于统计最大irq延迟、最大函数调用栈大小、调度事件等。
    的头像 发表于 02-22 14:34 1101次阅读

    万字长文解读Linux内核追踪机制

    Linux 存在众多 tracing tools,比如 ftrace、perf,他们可用于内核的调试、提高内核的可观测性。
    的头像 发表于 06-11 11:05 719次阅读
    万字长文解读<b class='flag-5'>Linux</b>内核追踪机制

    Arch Linux RISC-V 端口及相关作品简介

    Arch Linux RISC-V 端口及相关作品简介 演讲ppt分享
    发表于 07-17 16:34 6次下载

    Linux ftrace工具宏定义

    宏定义 在使用 ftrace 之前,需要确保内核配置编译了其配置选项。 CONFIG_FTRACE=y CONFIG_HAVE_FUNCTION_TRACER=y
    的头像 发表于 07-20 11:18 593次阅读