成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

手把手教你分析 Trace,你學(xué)會了嗎?

開發(fā) 前端
為了方便大家抓 trace,博主寫了一個 bat 腳本,大家在 windows 環(huán)境下,直接雙擊運(yùn)行,按照提示三次回車即可,抓到的 trace 會輸出在當(dāng)前文件,名字是 SYS_TRACE。

博主示例用的 RK3399,跑的 Android 8.1。

為了方便大家抓 trace,博主寫了一個 bat 腳本,大家在 windows 環(huán)境下,直接雙擊運(yùn)行,按照提示三次回車即可,抓到的 trace 會輸出在當(dāng)前文件,名字是 SYS_TRACE。

my_trace.bat

@echo off

rem in /sys/kernel/debug/tracing/ or /sys/kernel/tracing/ , please confirm by yourself

adb root

adb shell "echo 65536 > /sys/kernel/debug/tracing/buffer_size_kb"
echo "buffer_size_kb(per cpu): "
adb shell "cat /sys/kernel/debug/tracing/buffer_size_kb"

adb shell "echo nop > /sys/kernel/debug/tracing/current_tracer" >nul 2>&1
adb shell "echo 'noprint-tgid' > /sys/kernel/tracing/trace_options" >nul 2>&1

rem clear ftrace events
adb shell "echo > /sys/kernel/debug/tracing/set_event"

rem enable profiling events here,with loop
for %%x in (
sched_switch
sched_wakeup
sched_wakeup_new
sched_migrate_task
softirq_raise
softirq_entry
softirq_exit
ipi
irq
irq_handler_entry
irq_handler_exit
cpu_frequency
workqueue_execute_start
workqueue_execute_end
timer
clk
suspend_resume
device_pm_callback_start
device_pm_callback_end
cpu_idle
pm_qos_update_request
i2c
f2fs
suspend_resume
) do (
adb shell "echo %%x >> /sys/kernel/debug/tracing/set_event"
)

rem just in case tracing_enabled is disabled by user or other debugging tool
adb shell "echo 1 > /sys/kernel/debug/tracing/tracing_enabled" >nul 2>&1
adb shell "echo 0 > /sys/kernel/debug/tracing/tracing_on"

rem erase previous recorded trace
adb shell "echo > /sys/kernel/debug/tracing/trace"
echo press any key to start capturing...
pause

adb shell "echo 1 > /sys/kernel/debug/tracing/tracing_on"
echo "Start recordng ftrace data"
echo "Press any key to stop..."
pause

adb wait-for-device
adb shell "echo 0 > /sys/kernel/debug/tracing/tracing_on"
echo "Recording stopped..."

adb shell "ps -AT" > ps_1.txt
adb shell cat /sys/kernel/debug/tracing/trace > SYS_FTRACE
adb shell "ps -AT" > ps_2.txt
adb shell "echo noprint-tgid > /sys/kernel/debug/tracing/trace_options" >nul 2>&1

rem default size
adb shell "echo 4096 > /sys/kernel/debug/tracing/buffer_size_kb"
pause

這個腳本重要的地方都有注釋,rem 開頭的都是注釋,請注意看第一個注釋。

大概框架就是先把每個 CPU 的 buffer 設(shè)置為 65536,然后把想要抓取的 events 通過 for 循環(huán)設(shè)置進(jìn)去,然后開啟抓取,這時候你可以在設(shè)備上操作,復(fù)現(xiàn)問題,復(fù)現(xiàn)出來后,再停止抓取,并且把抓到的 trace 拉出來。

運(yùn)行完畢后目錄如下:

圖片

SYS_TRACE 如下:

圖片

本次我們只分析 i2c 問題,因此通過 grep 工具把 i2c 相關(guān)的提取出來。博主在 i2c4 上掛載了三個設(shè)備,通過 cat /proc/interrputs 確認(rèn) i2c4 的軟件中斷號是 41,則提取命令如下:

grep -e "irq=41" -e "i2c-4" SYS_FTRACE > i2c4-20221106.txt

則提取出來的內(nèi)容只包含 i2c4 部分,截取一部分分析:

圖片

i2c_read 到 irq_handler_entry 慢:

該路 I2C4 掛載設(shè)備過多,同時發(fā)起通信會搶占。

發(fā)起 i2c 傳輸?shù)?user 線程優(yōu)先級低,當(dāng)多個設(shè)備同時發(fā)起 i2c 傳輸,或者前面已經(jīng)有幾個設(shè)備在等待,你的設(shè)備就拿不到鎖,就一直排在后面。

硬件傳輸耗時久:比如從機(jī)有問題,或者 i2c 速率設(shè)置不對,用示波器可以抓到。

irq_handler_exit 到 i2c_reply 慢:

  1. 發(fā)起 i2c 傳輸?shù)?user 線程優(yōu)先級低,i2c 中斷來了以后叫起 user 線程,但是被高優(yōu)先級線程搶占,user 線程一直得不到 CPU 調(diào)度。
  2. 很多時候?yàn)榱斯?,會設(shè)置 i2c 中斷無法打醒 CPU。比如在 CPU0 發(fā)起一次 i2c 通信,CPU0 并沒有等其返回,沒事做就進(jìn)入了 idle 狀態(tài),i2c 中斷來了以后喚醒不了 CPU0,導(dǎo)致慢?!驹撛蚝驼{(diào)度策略也有關(guān)系,當(dāng)其他 CPU 空閑時候,user 線程應(yīng)該調(diào)度到其他 CPU 處理才對】

總結(jié)來講:

  1. 如果是 user 線程優(yōu)先級低,則你觀察到的 i2c 傳輸耗時是整體慢。
  2. 如果是 CPU 進(jìn)入 idle 導(dǎo)致你的 i2c 傳輸耗時,則是概率性出現(xiàn),并且耗時偶爾會出現(xiàn) 15-25ms 這種級別,無法忍受。
責(zé)任編輯:武曉燕 來源: 嵌入式Linux系統(tǒng)開發(fā)
相關(guān)推薦

2021-01-20 10:18:48

MySQL服務(wù)器配置

2022-10-30 10:31:42

i2ccpuftrace

2025-02-26 10:31:35

2009-07-03 17:15:31

jsp上傳文件

2010-08-09 09:25:23

SQL Server鏡

2023-12-06 08:28:44

禮物系統(tǒng)用例圖

2020-04-14 10:20:12

MySQL數(shù)據(jù)庫死鎖

2024-10-16 11:40:47

2021-09-18 14:26:49

Linux Linux 啟動流程Linux 系統(tǒng)

2023-08-26 21:34:28

Spring源碼自定義

2011-01-10 14:41:26

2025-05-07 00:31:30

2011-05-03 15:59:00

黑盒打印機(jī)

2017-05-18 12:45:35

數(shù)據(jù)分析數(shù)據(jù)理解數(shù)據(jù)

2022-10-18 17:59:46

Bootstrap源碼父類

2023-03-08 08:42:55

MySQLcost量化

2021-07-14 09:00:00

JavaFX開發(fā)應(yīng)用

2025-02-26 07:40:25

運(yùn)營分析體系運(yùn)營策略

2011-02-22 13:46:27

微軟SQL.NET

2021-02-26 11:54:38

MyBatis 插件接口
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 91免费视频 | 精品国产一区一区二区三亚瑟 | 国产欧美精品一区二区 | 一级免费毛片 | 久久不卡 | 精品久久香蕉国产线看观看亚洲 | 亚洲欧美激情视频 | 国产精品久久久久无码av | 久久久精品视频一区二区三区 | 国产三区视频在线观看 | 国产xxxx搡xxxxx搡麻豆 | av资源在线看 | 天天天操操操 | 欧美影院| 日日艹夜夜艹 | 免费看av大片| 狠狠干天天干 | 国产成人在线视频 | 激情六月丁香婷婷 | 一区二区久久精品 | 蜜桃一区二区三区在线 | 国产精品亚洲视频 | 日本天堂视频在线观看 | 免费亚洲视频 | 国产成人综合在线 | 成人一区二区三区视频 | 中文字幕久久精品 | 狠狠干综合视频 | 男人天堂久久久 | 特a毛片 | 中文字幕av一区二区三区 | 亚洲欧美日韩精品久久亚洲区 | 欧美激情a∨在线视频播放 成人免费共享视频 | 蜜臀久久99精品久久久久久宅男 | 欧美精品久久久 | 91久久精品视频 | 亚洲视频免费在线观看 | 国产视频福利在线观看 | 久久久国产精品 | 九色国产| 中文字幕在线观看第一页 |