精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

手把手教你使用 Ftrace,你會了嗎?

系統 Linux
i2c 傳輸完成后返回,i2c 控制器發傳輸完成的信號給 cpu,但 cpu 忙 loading 重,沒有及時調用 i2c_reply 通知調用者;或者是 i2c 傳輸完成后,CPU 處于睡眠狀態,由于 i2c 中斷無法喚醒系統,系統醒了以后才返回,導致慢。

最近遇到 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

LTR:Long Trace Recoder,可以錄制長達半個小時的 trace,主要用于分析游戲場景。

因此,首先需要學習 ftrace,它是其他 trace 的基礎。

2、宏定義

在使用 ftrace 之前,需要確保內核配置編譯了其配置選項。


CONFIG_FTRACE=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_FUNCTION_TRACER=Y
CONFIG_IRQSOFF_TRACER=y
CONFIG_SCHED_TRACER=y
CONFIG_ENABLE_DEFAULT_TRACERS=y
CONFIG_FTRACE_SYSCALLS=y
CONFIG_PREEMPT_TRACER=y

而后在 /sys/kernel/debug/trace 目錄下提供了各種跟蹤器(tracer)和 event 事件,一些常用的選項如下。

  • available_tracers:列出當前系統支持的跟蹤器。
  • available_events:列出當前系統支持的 event 事件。
  • current_tracer:設置和顯示當前正在使用的跟蹤器。使用 echo 命令可以把跟蹤器的名字寫入該文件,即可以切換不同的跟蹤器。默認為 nop,即不做任何跟蹤操作。
  • trace:讀取跟蹤信息。通過 cat 命令查看 ftrace 記錄下來的跟蹤信息。
  • tracing_on:用于開始或暫停跟蹤。
  • trace_options:設置 ftrace 的一些相關選項。

nop:不跟蹤任何信息。將 nop 寫入 current_tracer 文件可以清空之前收集到的跟蹤信息。 function:跟蹤內核函數執行情況。 function_graph:可以顯示類似 C 語言的函數調用關系圖,比較直觀。 wakeup:跟蹤進程喚醒信息。 irqsoff:跟蹤關閉中斷信息,并記錄關閉的最大時長。 preemptoff:跟蹤關閉禁止搶占信息,并記錄關閉的最大時長。 preemptirqsoff:綜合了 irqoff 和 preemptoff 兩個功能。 sched_switch:對內核中的進程調度活動進行跟蹤。

3、抓 i2c traceadb root

adb root

echo nop > /sys/kernel/debug/tracing/current_tracer //清空以前的跟蹤信息
echo 1 > /sys/kernel/debug/tracing/events/i2c/enable
echo 1 > /sys/kernel/debug/tracing/trasing_on //打開跟蹤器

操作設備,復現問題。

echo 0 > /sys/kernel/debug/tracing/tracing_on//關閉跟蹤器

adb pull /sys/kernel/debug/tracing/trace

如下目錄也可以操作:

/sys/kernel/tracing/

adb pull 出來的 trace 文件如下:

# tracer: nop
#
# entries-in-buffer/entries-written: 1203/1087390 #P:6
#
# _-----=> irqs-off
# / _----=> need-resched
# | / _---=> hardirq/softirq
# || / _--=> preempt-depth
# ||| / delay
# TASK-PID CPU# |||| TIMESTAMP FUNCTION
# | | | |||| | |
kworker/u12:0-6 [003] ...1 253.195437: i2c_reply: i2c-1 #1 a=038 f=0001 l=63 [00-00-01-81-68-03-72-00-00-ff-ff-ff-ff-00-00-ff-ff-ff-ff-00-00-ff-ff-ff-ff-00-00-ff-ff-ff-ff-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00]
kworker/u12:0-6 [003] ...1 253.195440: i2c_result: i2c-1 n=2 ret=2
kworker/u12:0-6 [003] ...1 253.257546: i2c_write: i2c-1 #0 a=038 f=0000 l=1 [00]
kworker/u12:0-6 [003] ...1 253.257550: i2c_read: i2c-1 #1 a=038 f=0001 l=63
kworker/u12:0-6 [003] ...1 253.263708: i2c_reply: i2c-1 #1 a=038 f=0001 l=63 [00-00-01-81-68-02-d0-00-00-ff-ff-ff-ff-00-00-ff-ff-ff-ff-00-00-ff-ff-ff-ff-00-00-ff-ff-ff-ff-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00]
kworker/u12:0-6 [003] ...1 253.263711: i2c_result: i2c-1 n=2 ret=2
kworker/u12:5-223 [003] ...1 254.632061: i2c_write: i2c-1 #0 a=038 f=0000 l=1 [00]
kworker/u12:5-223 [003] ...1 254.632064: i2c_read: i2c-1 #1 a=038 f=0001 l=63
kworker/u12:5-223 [003] ...1 255.728473: i2c_result: i2c-1 n=1 ret=1
kworker/u12:5-223 [003] ...1 255.728499: i2c_write: i2c-1 #0 a=01a f=0000 l=3 [63-a8-10]
kworker/u12:4-222 [003] ...1 266.944488: i2c_write: i2c-1 #0 a=038 f=0000 l=1 [00]
kworker/u12:4-222 [003] .n.1 266.944492: i2c_read: i2c-1 #1 a=038 f=0001 l=63
kworker/u12:1-53 [003] ...1 268.822588: i2c_reply: i2c-1 #1 a=038 f=0001 l=63 [00-00-00-40-00-01-c4-00-00-ff-ff-ff-ff-00-00-ff-ff-ff-ff-00-00-ff-ff-ff-ff-00-00-ff-ff-ff-ff-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00]
kworker/u12:1-53 [003] ...1 268.822591: i2c_result: i2c-1 n=2 ret=2
kworker/u12:1-53 [003] ...1 268.822650: i2c_write: i2c-1 #0 a=038 f=0000 l=1 [00]
kworker/u12:1-53 [003] ...1 268.822651: i2c_read: i2c-1 #1 a=038 f=0001 l=63
kworker/u12:0-6 [003] ...1 271.457514: i2c_write: i2c-1 #0 a=038 f=0000 l=1 [00]
kworker/u12:0-6 [003] ...1 271.457518: i2c_read: i2c-1 #1 a=038 f=0001 l=63

這里看出,是哪個 task,PID 是多少,用的 I2C-1 進行通信,傳輸過程是跑在 CPU3 上面,并且有 kernel 時間戳。

i2c_write、i2c_read、i2c_reply、i2c_result 是一個循環,i2c_reply 是 i2c 傳輸完成,并且重新被 CPU 調度,返回到調用線程的時間點,i2c_result 則是兩次 i2c 傳輸的時間間隔。

每一筆 i2c 傳輸的長度,內容,也都會打印出來。

因為博主一開始只在 events 里面 enable 了 i2c,因此只抓除了 i2c 部分,我們可以同時 enable 其他事件:

圖片

如果我們同時 enable i2c 和 irq ,我們將在 trace 中看到更詳細的內容,足夠分析 i2c 傳輸慢的問題。

責任編輯:武曉燕 來源: 嵌入式Linux系統開發
相關推薦

2021-01-20 10:18:48

MySQL服務器配置

2022-11-06 14:46:28

腳本windows文件

2025-02-26 10:31:35

2025-05-07 00:31:30

2021-07-14 09:00:00

JavaFX開發應用

2023-12-06 08:28:44

禮物系統用例圖

2022-12-07 08:42:35

2021-08-02 07:35:19

Nacos配置中心namespace

2011-05-03 15:59:00

黑盒打印機

2011-01-10 14:41:26

2021-03-12 10:01:24

JavaScript 前端表單驗證

2021-12-15 08:49:21

gpio 子系統pinctrl 子系統API

2020-05-15 08:07:33

JWT登錄單點

2022-07-22 12:45:39

GNU

2021-01-19 09:06:21

MysqlDjango數據庫

2011-02-22 13:46:27

微軟SQL.NET

2021-12-28 08:38:26

Linux 中斷喚醒系統Linux 系統

2021-02-26 11:54:38

MyBatis 插件接口

2023-04-26 12:46:43

DockerSpringKubernetes

2022-03-14 14:47:21

HarmonyOS操作系統鴻蒙
點贊
收藏

51CTO技術棧公眾號

国产精品福利av| 日韩午夜激情| 日韩一区二区三区四区| 特级西西人体www高清大胆| 亚洲成人777777| 国产精品最新自拍| 中文字幕日韩综合av| 日本高清免费在线视频| av影片在线| 亚洲国产电影在线观看| 91久久伊人青青碰碰婷婷| a v视频在线观看| 色婷婷色综合| 亚洲国产精久久久久久| 天天干在线影院| av电影在线免费| 国产精品色呦呦| 国产亚洲自拍偷拍| 97超碰国产在线| 亚洲一区二区免费看| 久久精品视频导航| mm131美女视频| 亚洲精品视频一二三区| 欧美系列在线观看| 黄页网站大全在线观看| 午夜在线视频播放| 久久日韩精品一区二区五区| 91天堂在线观看| 丰满人妻老熟妇伦人精品| 女人天堂亚洲aⅴ在线观看| 亚洲色图av在线| 波多野结衣加勒比| 国产精品99久久免费| 欧美性xxxxxxx| 性一交一乱一伧国产女士spa| 黄色软件在线观看| 99re视频这里只有精品| 3d动漫精品啪啪一区二区三区免费| 性无码专区无码| 伊人激情综合| 欧美日韩xxx| 日本在线观看网址| 欧美日韩伦理在线免费| 日韩精品久久久久久久玫瑰园| 香蕉视频xxxx| 国产精品1区| 911精品产国品一二三产区| 亚洲 中文字幕 日韩 无码| 爱啪啪综合导航| 亚洲国产一二三| 国产激情片在线观看| 国产激情在线| 亚洲欧洲无码一区二区三区| 婷婷四月色综合| 超碰在线国产| 国产精品电影一区二区三区| 日本一区免费看| 黄色小视频在线观看| 久久网站最新地址| 欧美日韩一区二| 国产永久免费高清在线观看视频| 久久综合久久鬼色中文字| 久精品国产欧美| 欧美拍拍视频| 国产亚洲精品aa午夜观看| 久久久久欧美| 国产女主播在线直播| 亚洲国产精品成人久久综合一区 | 国产精品一区二区三区av| 欧美日韩国产在线播放网站| 九色porny自拍| 国产成人免费视频网站视频社区| 日韩视频免费观看高清完整版在线观看| 蜜桃福利午夜精品一区| 成人亚洲精品| 精品少妇一区二区三区日产乱码| 人妖粗暴刺激videos呻吟| 免费福利视频一区| 亚洲图片欧美午夜| 萌白酱视频在线| 一区二区免费不卡在线| 久久久久久久久久久av| 精品人妻无码一区二区性色 | 天天干天天综合| 婷婷久久免费视频| 日韩欧美电影一二三| 手机在线成人av| 欧美日韩有码| 精品中文字幕视频| 日韩在线观看第一页| 日韩高清不卡一区| 99九九视频| 日本aaa在线观看| 中文字幕在线一区二区三区| 99久久99久久精品| 亚洲承认视频| 日韩一区二区三区四区五区六区| 波多野结衣先锋影音| 91偷拍一区二区三区精品| 欧美大尺度在线观看| 日韩 欧美 中文| 狠狠色丁香久久婷婷综合_中 | 久9久9色综合| 久久久av网站| 中文字幕视频网站| 国产精品自拍一区| 欧美一卡2卡3卡4卡无卡免费观看水多多| 搞黄网站在线观看| 色综合久久88色综合天天6| 亚洲综合在线一区二区| 一区二区三区视频免费观看| 久久香蕉国产线看观看网| 精品欧美一区二区三区免费观看| 精品无码三级在线观看视频| 久久精品99| 性欧美videoshd高清| 91成人在线观看喷潮| 国产又粗又猛又爽又黄| 成人同人动漫免费观看| 88国产精品欧美一区二区三区| 一道本在线视频| 久久久久久久久伊人| 国产日韩亚洲欧美在线| 日日夜夜亚洲| 尤物精品国产第一福利三区 | 成人在线一区二区| 激情小说 在线视频| 激情成人在线视频| 亚洲精品一二三四| 首页国产精品| 国产精品爽黄69天堂a| 你懂的在线观看视频网站| 亚洲一卡二卡三卡四卡| 国产成人美女视频| 精品日本12videosex| 日本sm极度另类视频| 少妇精品视频一区二区| 一卡二卡欧美日韩| 伊人精品视频在线观看| 日韩精品网站| 国产精品久久久久久久7电影| 日韩精品系列| 精品久久久久久国产91| 在线免费观看污视频| 伊人成人网在线看| 国产一区在线免费| www.51av欧美视频| 亚洲国产日韩欧美在线99| 久久亚洲成人av| 粉嫩aⅴ一区二区三区四区五区 | 国产精品三上| 久久99精品久久久久久水蜜桃| 大黄网站在线观看| 欧美精品一区在线观看| 香蕉视频一区二区| 99久久精品国产导航| 日韩中字在线观看| 欧美交a欧美精品喷水| 97成人在线视频| 亚洲三级黄色片| 一本大道综合伊人精品热热| 色噜噜日韩精品欧美一区二区| 玖玖精品视频| 亚洲精品一区二区三| 成人亚洲精品| 久久久欧美一区二区| 天堂v视频永久在线播放| 狠狠躁18三区二区一区| 四虎永久免费在线观看| 免费成人你懂的| 美女黄色片网站| 在线播放一区二区精品视频| 亚州av一区二区| 欧美亚洲另类激情另类| 亚洲欧洲综合网| 国产黑丝在线一区二区三区| 日本中文字幕在线视频观看| 久久国产精品免费精品3p| 日本高清不卡在线| 三区四区在线视频| 日韩欧美亚洲一区二区| 成人免费区一区二区三区| 久久精品视频在线看| 性欧美1819| 激情自拍一区| 日韩精品久久一区| 91麻豆精品| 7m第一福利500精品视频| av在线播放网站| 日韩美女一区二区三区| 国产精品免费精品一区| 中文字幕一区二区5566日韩| 在线观看免费视频黄| 日本一不卡视频| 日本阿v视频在线观看| 久久不见久久见中文字幕免费| 国产日韩在线观看av| av资源在线播放| 中文一区二区视频| 婷婷丁香一区二区三区| 欧美日韩精品一二三区| 久久精品视频9| 中文字幕亚洲区| 内射中出日韩无国产剧情| 狠狠色伊人亚洲综合成人| 欧美亚洲国产成人| 婷婷亚洲最大| 久久这里精品国产99丫e6| 国产激情精品一区二区三区| 日本一欧美一欧美一亚洲视频| gogogogo高清视频在线| 亚洲人成电影在线| 高清一区二区三区四区| 欧美精品一二三| 亚洲国产成人无码av在线| 亚洲精品老司机| 午夜国产福利视频| 91免费视频观看| 韩国三级hd中文字幕有哪些| 日韩国产在线一| 3d动漫一区二区三区| 在线成人直播| 一区二区免费在线观看| 国产91一区| 久久一区二区精品| 高清日韩中文字幕| 99中文字幕| 亚洲午夜剧场| 国产日韩欧美在线看| 亚洲a∨精品一区二区三区导航| 久久久久久久成人| 黄页网站大全在线免费观看| 日韩小视频网址| av免费在线一区二区三区| 亚洲欧美国产精品| 色婷婷在线视频| 欧美精品一区二区蜜臀亚洲| 国产xxxxxx| 欧美人xxxx| 亚洲视频一区二区三区四区| 色哟哟一区二区在线观看| 久久久国产高清| 精品国产福利视频| 久久97精品久久久久久久不卡| 亚洲国产www| 日韩欧美区一区二| 国内精品偷拍视频| 欧美一级生活片| 精品国产av鲁一鲁一区| 欧美一区二区三区在线观看视频 | av网站大全在线观看| 亚洲理论在线a中文字幕| 日产精品久久久久久久性色| 亚洲韩国日本中文字幕| 乱精品一区字幕二区| 精品国产成人在线影院 | 亚洲男人天堂2019| 男女污污视频在线观看| 亚洲人成网7777777国产| 国产午夜精品一区理论片| 在线激情影院一区| 在线观看黄色av| 欧美理论片在线观看| 久久免费电影| 78m国产成人精品视频| 日韩精品影院| 国产日韩欧美视频| 精品一区二区三区在线观看视频| 97超碰人人模人人爽人人看| 极品国产人妖chinesets亚洲人妖| 国产日韩欧美一区二区三区四区| 女同另类激情重口| 日韩精品久久久毛片一区二区| 99精品综合| 日韩精品视频在线观看视频| 国产精品尤物| www.成人黄色| 懂色av中文字幕一区二区三区| 手机在线成人av| 国产精品美女久久福利网站| 黄色a级片在线观看| 亚洲国产日韩综合久久精品| 超碰中文字幕在线| 欧美日产国产精品| 亚洲精品一区二区三区不卡| 亚洲人成在线免费观看| 九七久久人人| 91成人福利在线| 久久电影天堂| 精品一区久久久| 99精品视频在线观看免费播放| 岛国大片在线播放| 三级欧美在线一区| 国产又粗又猛大又黄又爽| 99国产精品久久久久久久久久 | 欧美成人激情视频| 成人短视频app| 国产主播精品在线| 欧美一区二区三区红桃小说| 亚洲一二区在线| 夜久久久久久| 午夜影院免费版| 国产亚洲欧美中文| 久草免费在线视频观看| 欧美影视一区在线| 天天舔天天干天天操| www.国产一区| 午夜无码国产理论在线| 国产经典一区二区三区| 91久久夜色精品国产按摩| 1024精品视频| 国产98色在线|日韩| 精品丰满少妇一区二区三区| 天天影视网天天综合色在线播放 | 人狥杂交一区欧美二区| 亚洲va电影大全| 精品国精品国产自在久国产应用 | 91精品久久久久久久久久久久| 亚洲一区二区视频在线| 一卡二卡三卡在线观看| 亚洲美女福利视频网站| 欧美性受ⅹ╳╳╳黑人a性爽| 国产精品亚洲精品| 亚洲动漫精品| 黄色免费观看视频网站| 成人在线一区二区三区| 欧美视频www| 欧美肥妇毛茸茸| 欧美精品hd| 国产精品一二三在线| 久久成人高清| 国产免费成人在线| 99视频精品在线| 日韩美女视频网站| 精品国一区二区三区| 特级毛片在线| 99视频免费观看| 欧美在线黄色| 人妻激情偷乱视频一区二区三区| 亚洲天堂网中文字| 911美女片黄在线观看游戏| 中文字幕亚洲精品| 欧美国产日韩电影| 亚洲精品一区二区三区樱花 | 性感美女视频一二三| 欧美精品www| 国产精品三p一区二区| 免费网站在线观看视频| 成人在线综合网| 91精品国产乱码在线观看| 亚洲国产精品视频在线观看| 678在线观看视频| 九九九九精品九九九九| 亚洲视频1区| 精品人妻一区二区三区视频| 色偷偷88欧美精品久久久| 久久久久久久久亚洲精品| 国产精品69久久久久| 色偷偷综合网| 亚洲成人福利视频| 亚洲午夜电影网| 日韩成人黄色| 国产精品久久久久高潮| 国产精品99久久精品| 日本55丰满熟妇厨房伦| 亚洲综合视频网| 奇米影视888狠狠狠777不卡| 国产精品成av人在线视午夜片| 色综合天天爱| 日本少妇一区二区三区| 亚洲va欧美va天堂v国产综合| 香蕉人妻av久久久久天天| 国产精品91在线观看| 久久理论电影| 99免费观看视频| 一本到一区二区三区| 二区三区在线观看| 高清国产一区| 丝袜美腿亚洲一区二区图片| 人与动物性xxxx| 亚洲精品一区二区三区影院 | 国产伊人精品| mm131美女视频| 91精品国产麻豆国产自产在线| 国产www视频在线观看| 欧美日韩另类综合| 精品一区二区影视| 日本网站在线免费观看| 伊人av综合网| 理论片一区二区在线| 美女喷白浆视频| 一区二区国产盗摄色噜噜| 国产精品一二三区视频| 国产99视频精品免费视频36| 手机精品视频在线观看| 黄色一级视频免费观看| 亚洲天天在线日亚洲洲精| 一区二区三区高清在线观看| 免费涩涩18网站入口| 亚洲成人动漫精品|