Perfetto 翻譯第十九篇-數(shù)據(jù)來源-ATrace

前言:雖然有翻譯軟件,雖然有chatgpt,畢竟語言隔閡,對(duì)這個(gè)工具還是一知半解,因此想通過翻譯的方式和大家來一起學(xué)習(xí)下Perfetto這個(gè)強(qiáng)大的工具

目錄

#####################以下分割線#####################
英文原文在這里

ATrace:安卓系統(tǒng)和應(yīng)用跟蹤事件

在 Android 上,應(yīng)用可以將自定義切片和計(jì)數(shù)器跟蹤點(diǎn)注入trace。這可以通過以下方法實(shí)現(xiàn):

此 API 自 Android 4.3(API 級(jí)別 18)起可用,比 Perfetto更早。所有這些注解在內(nèi)部都是通過libcutils API路由的,現(xiàn)在和將來都將繼續(xù)得到Perfetto的支持。

有兩種類型的trace事件:系統(tǒng)和應(yīng)用事件。

系統(tǒng)事件: :僅由使用 libcutils 的 Android 內(nèi)部發(fā)出。這些事件按類別(也稱為標(biāo)簽)分組,例如“am”(ActivityManager),“pm”(PackageManager)。有關(guān)類別的完整列表,請(qǐng)參閱 Perfetto UI的“Record new trace page of the”頁。

這些類別可用于啟用跨多個(gè)進(jìn)程的事件組,而不必?fù)?dān)心哪個(gè)特定的系統(tǒng)進(jìn)程發(fā)出它們。

應(yīng)用事件: 具有相同的系統(tǒng)事件語義。但是,與系統(tǒng)事件不同的是,它們沒有任何標(biāo)記篩選功能(所有應(yīng)用事件共享同一標(biāo)記 ATRACE_TAG_APP ),但可以基于每個(gè)應(yīng)用啟用。

有關(guān)如何啟用系統(tǒng)和應(yīng)用事件的說明,請(qǐng)參閱下面的 TraceConfig 部分。

檢測開銷

ATrace 每個(gè)事件 1-10us 的不可忽視的成本。這是因?yàn)槊總€(gè)事件都涉及字符串化、JNI 調(diào)用(如果來自native運(yùn)行環(huán)境)以及用戶空間 < >內(nèi)核空間之前的調(diào)用,以將標(biāo)記寫入其中 /sys/kernel/debug/tracing/trace_marker (這是最耗時(shí)的部分)。

我們的團(tuán)隊(duì)專門針對(duì)android,移植一個(gè)輕量版的 Tracing SDK 。但目前,建議繼續(xù)在Android上使用現(xiàn)有的ATrace API。

UI

在 UI 級(jí)別,這些函數(shù)在進(jìn)程組的范圍內(nèi)創(chuàng)建切片和計(jì)數(shù)器,如下所示:


atrace-slices.png
SQL

在 SQL 級(jí)別,ATrace 事件在標(biāo)準(zhǔn) slice 和計(jì)數(shù)表中可用,以及來自其他數(shù)據(jù)源的其他計(jì)數(shù)器和 counter 切片。

切片
select s.ts, t.name as thread_name, t.tid, s.name as slice_name, s.dur
from slice as s left join thread_track as trk on s.track_id = trk.id
left join thread as t on trk.utid = t.utid
企業(yè)微信20231016-103402@2x.png
計(jì)數(shù)器
select ts, p.name as process_name, p.pid, t.name as counter_name, c.value
from counter as c left join process_counter_track as t on c.track_id = t.id
left join process as p on t.upid = p.upid
企業(yè)微信20231016-103429@2x.png
跟蹤配置
buffers {
  size_kb: 102400
  fill_policy: RING_BUFFER
}

data_sources {
  config {
    name: "linux.ftrace"
    ftrace_config {
      # Enables specific system events tags.
      atrace_categories: "am"
      atrace_categories: "pm"

      # Enables events for a specific app.
      atrace_apps: "com.google.android.apps.docs"

      # Enables all events for all apps.
      atrace_apps: "*"
    }
  }
}

#####################以上分割線#####################

后記:
1 本次主要使用百度翻譯,雖然被罵,但至少翻譯這個(gè)工具降低了門檻。
2 英文文檔中的長難句真的是又長又難,基于百度的翻譯,然后自己再調(diào)整下,水平實(shí)在有限。
3 技術(shù)背景知識(shí)不夠,有些專有名詞不知道怎么翻譯,也不知道百度翻譯的是否準(zhǔn)確,功夫在詩外。
4 萬事開頭難,中間難不難,還不知道。中間的事后面再說,正確一天翻譯一篇。
5 雖然可能會(huì)有人不屑,但總要有人去做不起眼的小事。
6 google 厲害,這個(gè)perfetto 工具也很厲害。君子善假于物也。
7 工具的使用是最簡單的入門,背后還有更多的東西值得學(xué)習(xí)。
8 水平實(shí)在有限,聞過則喜,希望有更多的人反饋,期待更好的建議

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容