Linux ftrace简介与分析

最近遇到 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 的基础。

“5G+云+AI”成为中国电信天翼云的核心战略
大联大旗下友尚推出基于升特SX1276的老人安全健康智能手环解决方案
气象风速风向仪参数
如何向您选择的某人发送电子邮件
极视角重磅推出“极星平台”,助力人工智能应用落地
Linux ftrace简介与分析
Zynq UltraScale+迎来全新里程碑:率先获得汽车功能安全应用全面认证的自适应 SoC
4.63万家!芯片企业疯狂激增,是好是坏?
SiliconLabs:AI/机器学习将被扩大整合至广泛的应用中
关于锂离子电池充电IC的路径管理和工厂模式的分析和介绍
虹科气体密度传感器应用:空气和氮气的密度测量
滤波电路的设计
德州仪器分享加快汽车系统未来发展举措 同时发布参考设计和新产品
MEMS系统的EMC合规性提高了99%
永磁电机和直流电机退磁的处理方法是怎样的
预测下代iPhone将支持双向无线充电
详解温度传感器的精度、灵敏度及分辨率
小型粮食重金属检测仪哪家质量好
zSpace推出首款VR笔记本电脑,带给人逼真和舒适的AR或VR体验
NVIDIA平台构建Fotokite Sigma完全自主的系绳无人机