āĻĒāĻžāϰāĻĢ⧇āĻŸā§‹

perfetto āĻšāϞ āĻāĻ•āϟāĻŋ āϟ⧁āϞ āϝāĻž āφāĻĒāύāĻžāϕ⧇ Android Debug Bridge (ADB) āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ Android āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāĻ¨ā§āϏ āϤāĻĨā§āϝ āϏāĻ‚āĻ—ā§āϰāĻš āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧāĨ¤ adb shell perfetto ... āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ perfetto āϟ⧁āϞ āϚāĻžāϞ⧁ āĻ•āϰ⧁āύāĨ¤ perfetto āφāĻĒāύāĻžāϰ āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āĻ•āĻ°ā§āĻŽāĻ•ā§āώāĻŽāϤāĻž āĻŸā§āϰ⧇āϏ āϏāĻ‚āĻ—ā§āϰāĻš āĻ•āϰāϤ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āωāĻ¤ā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, āϝ⧇āĻŽāύ:

  • āĻ•āĻžāĻ°ā§āύ⧇āϞ āĻĨ⧇āϕ⧇ āϤāĻĨā§āϝ⧇āϰ āϜāĻ¨ā§āϝ ftrace
  • āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻāĻŦāĻ‚ āĻ…ā§āϝāĻžāĻĒ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀-āĻ¸ā§āĻĨāĻžāύ āĻŸā§€āĻ•āĻž āϜāĻ¨ā§āϝ atrace
  • āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻāĻŦāĻ‚ āĻ…ā§āϝāĻžāĻĒ⧇āϰ āύ⧇āϟāĻŋāĻ­ āĻŽā§‡āĻŽāϰāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āϤāĻĨā§āϝ⧇āϰ āϜāĻ¨ā§āϝ heapprofd

āĻāχ āĻĒ⧃āĻˇā§āĻ āĻžāϟāĻŋ āĻŦāĻ°ā§āĻŖāύāĻž āĻ•āϰ⧇ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ perfetto āĻ•āϞ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻĒāĻ›āĻ¨ā§āĻĻāϏāχ āφāωāϟāĻĒ⧁āϟ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāϤ⧇ āĻšāϝāĻŧāĨ¤ āφāϰāĻ“ āϤāĻĨā§āϝ⧇āϰ āϜāĻ¨ā§āϝ, perfetto āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻĒāĻĄāĻŧ⧁āύāĨ¤

āϏāĻŋāύāĻŸā§āϝāĻžāĻ•ā§āϏ

āĻāχ āĻŦāĻŋāĻ­āĻžāĻ—āϟāĻŋ āĻŦāĻ°ā§āĻŖāύāĻž āĻ•āϰ⧇ āϝ⧇ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ ADB āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻŽā§‹āĻĄā§‡āϰ āϜāĻ¨ā§āϝ perfetto āĻ•āϞ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻŸā§āϰ⧇āϏ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻšāϝāĻŧāĨ¤

āĻĄā§‡āϟāĻž āĻ‰ā§ŽāϏ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ

perfetto āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻĻ⧁āϟāĻŋ āĻŽā§‹āĻĄ āϰāϝāĻŧ⧇āϛ⧇ āϝāĻž āφāĻĒāύāĻžāϰ āĻŸā§āϰ⧇āϏ āϰ⧇āĻ•āĻ°ā§āĻĄ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĄā§‡āϟāĻž āωāĻ¤ā§āϏ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰ⧇:

  • āϞāĻžāχāϟ āĻŽā§‹āĻĄ : āĻĄā§‡āϟāĻž āωāĻ¤ā§āϏ⧇āϰ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āϟāĻŋ āωāĻĒāϏ⧇āϟ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇, āĻŦāĻŋāĻļ⧇āώāϤ atrace āĻāĻŦāĻ‚ ftrace āĨ¤ āϝāĻžāχāĻšā§‹āĻ•, āĻāχ āĻŽā§‹āĻĄāϟāĻŋ systrace āĻāϰ āĻŽāϤ āĻāĻ•āϟāĻŋ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤
  • āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āĻŽā§‹āĻĄ : āĻāĻ•āϟāĻŋ āĻĒā§āϰ⧋āĻŸā§‹āĻ•āϞ āĻŦāĻžāĻĢāĻžāϰ⧇ āĻāϰ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĒāĻžāϝāĻŧ āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϕ⧇ atrace āĻāĻŦāĻ‚ ftrace āĻĨ⧇āϕ⧇ āφāϞāĻžāĻĻāĻž āĻĄā§‡āϟāĻž āωāĻ¤ā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ perfetto āĻ•āĻžāĻ°ā§āϝāĻ•āĻžāϰāĻŋāϤāĻž āφāϰāĻ“ āĻŦ⧇āĻļāĻŋ āϞāĻžāĻ­ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧāĨ¤

āϏāĻžāϧāĻžāϰāĻŖ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ

āωāĻ­āϝāĻŧ āĻŽā§‹āĻĄā§‡ perfetto āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āϏāĻžāϰāĻŖā§€ āωāĻĒāϞāĻŦā§āϧ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāϗ⧁āϞāĻŋ āϤāĻžāϞāĻŋāĻ•āĻžāϭ⧁āĻ•ā§āϤ āĻ•āϰ⧇:

āϏāĻžāϰāĻŖāĻŋ 1. āωāĻĒāϞāĻŦā§āϧ āϏāĻžāϧāĻžāϰāĻŖ āĻĒāĻžāϰāĻĢ⧇āĻŸā§‹ āϟ⧁āϞ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ⧇āϰ āϤāĻžāϞāĻŋāĻ•āĻžāĨ¤

āĻ…āĻĒāĻļāύ āĻŦāĻ°ā§āĻŖāύāĻž
--background |
-d
perfetto āĻ…āĻŦāĻŋāϞāĻŽā§āĻŦ⧇ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ-āϞāĻžāχāύ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āĻĨ⧇āϕ⧇ āĻĒā§āϰāĻ¸ā§āĻĨāĻžāύ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻĒāϟāĻ­ā§‚āĻŽāĻŋāϤ⧇ āφāĻĒāύāĻžāϰ āĻŸā§āϰ⧇āϏ āϰ⧇āĻ•āĻ°ā§āĻĄ āĻ•āϰāĻž āϚāĻžāϞāĻŋāϝāĻŧ⧇ āϝāĻžāϝāĻŧāĨ¤
--background-wait | -D --background āĻŽāϤ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻĒā§āϰāĻ¸ā§āĻĨāĻžāύ āĻ•āϰāĻžāϰ āφāϗ⧇ āϏāĻŽāĻ¸ā§āϤ āĻĄā§‡āϟāĻž āĻ‰ā§ŽāϏ⧇āϰ āϜāĻ¨ā§āϝ āĻ…āĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰ⧇ (30s āĻĒāĻ°ā§āϝāĻ¨ā§āϤ)āĨ¤ āĻāĻ•āϟāĻŋ āϏāĻĢāϞ āĻ¸ā§āĻŦā§€āĻ•ā§ƒāϤāĻŋ āĻĒā§āϰāĻžāĻĒā§āϤ āĻšāϞ⧇ āĻĒā§āϰāĻ¸ā§āĻĨāĻžāύ āϕ⧋āĻĄ āĻļā§‚āĻ¨ā§āϝ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝāĻĨāĻžāϝāĻŧ āĻļā§‚āĻ¨ā§āϝ āύāϝāĻŧ (āĻ¤ā§āϰ⧁āϟāĻŋ āĻŦāĻž āϏāĻŽāϝāĻŧ āĻļ⧇āώ)āĨ¤
--alert-id āϏāϤāĻ°ā§āĻ•āϤāĻžāϰ āφāχāĻĄāĻŋ āϝāĻž āĻāχ āĻŸā§āϰ⧇āϏāϟāĻŋ āĻŸā§āϰāĻŋāĻ—āĻžāϰ āĻ•āϰ⧇āϛ⧇⧎
--config-id āĻŸā§āϰāĻŋāĻ—āĻžāϰāĻŋāĻ‚ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ⧇āϰ āφāχāĻĄāĻŋāĨ¤
--config-uid āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āύāĻŋāĻŦāĻ¨ā§āϧāĻŋāϤ āĻ…ā§āϝāĻžāĻĒ⧇āϰ UIDāĨ¤
--subscription-id āϏāĻĻāĻ¸ā§āϝāϤāĻžāϰ āφāχāĻĄāĻŋ āϝāĻž āĻāχ āĻŸā§āϰ⧇āϏāϟāĻŋ āĻŸā§āϰāĻŋāĻ—āĻžāϰ āĻ•āϰ⧇āϛ⧇⧎
--out OUT_FILE |
-o OUT_FILE

āφāωāϟāĻĒ⧁āϟ āĻŸā§āϰ⧇āϏ āĻĢāĻžāχāϞ āĻŦāĻž - stdout āĻāϰ āϜāĻ¨ā§āϝ āĻĒāĻ›āĻ¨ā§āĻĻāϏāχ āĻĒāĻĨ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰ⧇āĨ¤ perfetto āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āĻĢā§āĻ˛ā§āϝāĻžāϗ⧇ āĻŦāĻ°ā§āĻŖāĻŋāϤ āĻĢāĻžāχāϞ⧇ āφāωāϟāĻĒ⧁āϟ āϞ⧇āϖ⧇āĨ¤ āφāωāϟāĻĒ⧁āϟ āĻŦāĻŋāĻ¨ā§āϝāĻžāϏ AOSP trace.proto āϤ⧇ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻŦāĻŋāĻ¨ā§āϝāĻžāϏ⧇āϰ āϏāĻžāĻĨ⧇ āĻ•āĻŽā§āĻĒāĻžāχāϞ āĻ•āϰ⧇āĨ¤

āĻĻā§āϰāĻˇā§āϟāĻŦā§āϝ: āφāĻĒāύāĻžāϕ⧇ āĻ…āĻŦāĻļā§āϝāχ āφāωāϟāĻĒ⧁āϟ āĻĢāĻžāχāϞ⧇āϰ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻĒāĻžāĻĨāύāĻžāĻŽ āωāĻ˛ā§āϞ⧇āĻ– āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻĢāĻžāχāϞāϗ⧁āϞāĻŋ /data/misc/perfetto-traces āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇ āϞ⧇āĻ–āĻž āωāϚāĻŋāϤāĨ¤

--upload āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻšāϞ⧇, āĻĒā§āϰ⧋āĻŸā§‹ āĻŸā§āϰ⧇āϏ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ⧇ IncidentReportConfig āĻŦāĻžāĻ°ā§āϤāĻž āĻĻā§āĻŦāĻžāϰāĻž āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĒā§āϝāĻžāϕ⧇āĻœā§‡ āĻŸā§āϰ⧇āϏ āĻĒāĻžāϏ āĻ•āϰ⧇āĨ¤
--no-guardrails āĻĒāϰ⧀āĻ•ā§āώāĻžāϰ āϏāĻŽāϝāĻŧ --upload āĻĒāϤāĻžāĻ•āĻž āϏāĻ•ā§āώāĻŽ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻ…āĻ¤ā§āϝāϧāĻŋāĻ• āϏāĻŽā§āĻĒāĻĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āϏ⧁āϰāĻ•ā§āώāĻž āύāĻŋāĻˇā§āĻ•ā§āϰāĻŋāϝāĻŧ āĻ•āϰ⧇āĨ¤
--reset-guardrails āĻ—āĻžāĻ°ā§āĻĄā§‡āϞ⧇āϰ āĻ¸ā§āĻĨāĻžāϝāĻŧā§€ āĻ…āĻŦāĻ¸ā§āĻĨāĻž āĻĒ⧁āύāϰāĻžāϝāĻŧ āϏ⧇āϟ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻĒāϰ⧀āĻ•ā§āώāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāĻ¸ā§āĻĨāĻžāύ āĻ•āϰ⧇āĨ¤
--rsave-for-bugreport bugreport_score > 0 āϏāĻš āĻāĻ•āϟāĻŋ āĻŸā§āϰ⧇āϏ āϚāϞāĻŽāĻžāύ āĻĨāĻžāĻ•āϞ⧇, āĻāĻ•āϟāĻŋ āĻĢāĻžāχāϞ⧇ āĻŸā§āϰ⧇āϏ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧇āĨ¤ āϏāĻŽā§āĻĒāĻ¨ā§āύ āĻšāϞ⧇ āĻĒāĻžāĻĨ āφāωāϟāĻĒ⧁āϟ āĻ•āϰ⧇āĨ¤
--query āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϰ āĻ…āĻŦāĻ¸ā§āĻĨāĻž āϜāĻŋāĻœā§āĻžāĻžāϏāĻž āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻāϟāĻŋ āĻŽāĻžāύāĻŦ-āĻĒāĻžāĻ āϝ⧋āĻ—ā§āϝ āĻĒāĻžāĻ ā§āϝ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŽā§āĻĻā§āϰāĻŖ āĻ•āϰ⧇āĨ¤
--query-raw --query āĻāϰ āĻŽāϤ⧋, āĻ•āĻŋāĻ¨ā§āϤ⧁ tracing_service_state.proto.
--help | -h perfetto āϟ⧁āϞ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻĒāĻžāĻ ā§āϝ āĻĒā§āϰāĻŋāĻ¨ā§āϟ āĻ•āϰ⧇āĨ¤

āĻšāĻžāϞāĻ•āĻž āĻŽā§‹āĻĄ

āĻšāĻžāϞāĻ•āĻž āĻŽā§‹āĻĄā§‡ perfetto āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϏāĻžāϧāĻžāϰāĻŖ āϏāĻŋāύāĻŸā§āϝāĻžāĻ•ā§āϏ āύāĻŋāĻŽā§āύāϰ⧂āĻĒ:

 adb shell perfetto [ --time TIMESPEC ] [ --buffer SIZE ] [ --size SIZE ]
             [ ATRACE_CAT | FTRACE_GROUP/FTRACE_NAME | FTRACE_GROUP/* ]...
             --out FILE

āĻšāĻžāϞāĻ•āĻž āĻŽā§‹āĻĄā§‡ perfetto āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āϏāĻžāϰāĻŖā§€ āωāĻĒāϞāĻŦā§āϧ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāϗ⧁āϞāĻŋ āϤāĻžāϞāĻŋāĻ•āĻžāϭ⧁āĻ•ā§āϤ āĻ•āϰ⧇:

āϏāĻžāϰāĻŖāĻŋ 2. āĻšāĻžāϞāĻ•āĻž āĻŽā§‹āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āωāĻĒāϞāĻŦā§āϧ perfetto āϟ⧁āϞ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ⧇āϰ āϤāĻžāϞāĻŋāĻ•āĻžāĨ¤

āĻ…āĻĒāĻļāύ āĻŦāĻ°ā§āĻŖāύāĻž
--time TIME [s|m|h] |
-t TIME [s|m|h]
āϏ⧇āϕ⧇āĻ¨ā§āĻĄ, āĻŽāĻŋāύāĻŋāϟ āĻŦāĻž āϘāĻ¨ā§āϟāĻžāϰ āĻŽāĻ§ā§āϝ⧇ āĻŸā§āϰ⧇āϏ āϏāĻŽāϝāĻŧāĻ•āĻžāϞ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰ⧇āĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, --time 1m 1 āĻŽāĻŋāύāĻŋāĻŸā§‡āϰ āĻāĻ•āϟāĻŋ āĻŸā§āϰ⧇āϏ āϏāĻŽāϝāĻŧāĻ•āĻžāϞ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰ⧇⧎ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āϏāĻŽāϝāĻŧāĻ•āĻžāϞ 10 āϏ⧇āϕ⧇āĻ¨ā§āĻĄāĨ¤
--buffer SIZE [mb|gb] |
-b SIZE [mb|gb]
āĻŽā§‡āĻ—āĻžāĻŦāĻžāχāϟ (mb) āĻŦāĻž āĻ—āĻŋāĻ—āĻžāĻŦāĻžāχāϟ (gb) āĻ āϰāĻŋāĻ‚ āĻŦāĻžāĻĢāĻžāϰ⧇āϰ āφāĻ•āĻžāϰ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰ⧇āĨ¤ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻšāϞ --buffer 32mb āĨ¤
--size SIZE [mb|gb] |
-s SIZE [mb|gb]
āĻŽā§‡āĻ—āĻžāĻŦāĻžāχāϟ (mb) āĻŦāĻž āĻ—āĻŋāĻ—āĻžāĻŦāĻžāχāĻŸā§‡ (gb) āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ āĻĢāĻžāχāϞ⧇āϰ āφāĻ•āĻžāϰ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰ⧇āĨ¤ āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇, perfetto āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āχāύ-āĻŽā§‡āĻŽāϰāĻŋ āϰāĻŋāĻ‚-āĻŦāĻžāĻĢāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤
--app | -a āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ (āĻ…ā§āϝāĻžāĻŸā§āϰ⧇āϏ) āĻ…ā§āϝāĻžāĻĒ⧇āϰ āύāĻžāĻŽ

āĻāχ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāϗ⧁āϞāĻŋ āχāϭ⧇āĻ¨ā§āϟ āĻ¸ā§āĻĒ⧇āϏāĻŋāĻĢāĻžāϝāĻŧāĻžāϰāϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ āϤāĻžāϞāĻŋāĻ•āĻž āĻĻā§āĻŦāĻžāϰāĻž āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ:

āϏāĻžāϰāĻŖāĻŋ 3. āϞāĻžāχāϟ āĻŽā§‹āĻĄā§‡āϰ āϜāĻ¨ā§āϝ āχāϭ⧇āĻ¨ā§āϟ āĻ¸ā§āĻĒ⧇āϏāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ⧇āϰ āϤāĻžāϞāĻŋāĻ•āĻžāĨ¤

āϘāϟāύāĻž āĻŦāĻ°ā§āĻŖāύāĻž
ATRACE_CAT āφāĻĒāύāĻŋ āϝ⧇ atrace āĻŦāĻŋāĻ­āĻžāĻ—āϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻŸā§āϰ⧇āϏ āϰ⧇āĻ•āĻ°ā§āĻĄ āĻ•āϰāϤ⧇ āϚāĻžāύ āϤāĻž āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰ⧇⧎ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϟāĻŋ atrace āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āωāχāĻ¨ā§āĻĄā§‹ āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰāϕ⧇ āϚāĻŋāĻšā§āύāĻŋāϤ āĻ•āϰ⧇:
    adb shell perfetto --out FILE wm
    

āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻŦāĻŋāĻ­āĻžāĻ— āϰ⧇āĻ•āĻ°ā§āĻĄ āĻ•āϰāϤ⧇, atrace āĻŦāĻŋāĻ­āĻžāϗ⧇āϰ āĻāχ āϤāĻžāϞāĻŋāĻ•āĻžāϟāĻŋ āĻĻ⧇āϖ⧁āύāĨ¤

FTRACE_GROUP/FTRACE_NAME āφāĻĒāύāĻŋ āϝ⧇ ftrace āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻŸā§āϰ⧇āϏ āϰ⧇āĻ•āĻ°ā§āĻĄ āĻ•āϰāϤ⧇ āϚāĻžāύ āϤāĻž āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰ⧇⧎ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϟāĻŋ sched/sched_switch āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋ āĻŸā§āϰ⧇āϏ āĻ•āϰ⧇:
      adb shell perfetto --out FILE sched/sched_switch
      

āϏāĻžāϧāĻžāϰāĻŖ āĻŽā§‹āĻĄ

āϏāĻžāϧāĻžāϰāĻŖ āĻŽā§‹āĻĄā§‡ perfetto āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϏāĻžāϧāĻžāϰāĻŖ āϏāĻŋāύāĻŸā§āϝāĻžāĻ•ā§āϏ āύāĻŋāĻŽā§āύāϰ⧂āĻĒ:

 adb shell perfetto [ --txt ] --config CONFIG_FILE --out FILE

āϏāĻžāϧāĻžāϰāĻŖ āĻŽā§‹āĻĄā§‡ perfetto āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āϏāĻžāϰāĻŖā§€ āωāĻĒāϞāĻŦā§āϧ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāϗ⧁āϞāĻŋ āϤāĻžāϞāĻŋāĻ•āĻžāϭ⧁āĻ•ā§āϤ āĻ•āϰ⧇:

āϏāĻžāϰāĻŖāĻŋ 4. āϏāĻžāϧāĻžāϰāĻŖ āĻŽā§‹āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āωāĻĒāϞāĻŦā§āϧ perfetto āϟ⧁āϞ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ⧇āϰ āϤāĻžāϞāĻŋāĻ•āĻžāĨ¤

āĻ…āĻĒāĻļāύ āĻŦāĻ°ā§āĻŖāύāĻž
--config CONFIG_FILE | -c CONFIG_FILE āĻāĻ•āϟāĻŋ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĢāĻžāχāϞ⧇āϰ āĻĒāĻĨ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰ⧇āĨ¤ āϏāĻžāϧāĻžāϰāĻŖ āĻŽā§‹āĻĄā§‡, āĻ•āĻŋāϛ⧁ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻāĻ•āϟāĻŋ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĒā§āϰ⧋āĻŸā§‹āĻ•āϞ āĻŦāĻžāĻĢāĻžāϰ⧇ āĻāύāϕ⧋āĻĄ āĻ•āϰāĻž āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻāχ āĻĢāĻžāχāϞāϟāĻŋāϕ⧇ āĻ…āĻŦāĻļā§āϝāχ AOSP trace_config.proto āĻ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻĒā§āϰ⧋āĻŸā§‹āĻ•āϞ āĻŦāĻžāĻĢāĻžāϰ āĻ¸ā§āĻ•āĻŋāĻŽāĻž āĻŽā§‡āύ⧇ āϚāϞāϤ⧇ āĻšāĻŦ⧇āĨ¤

AOSP data_source_config.proto āϤ⧇ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ TraceConfig āĻāϰ DataSourceConfig āϏāĻĻāĻ¸ā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĄā§‡āϟāĻž āĻ‰ā§ŽāϏ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻāĻŦāĻ‚ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰ⧁āύāĨ¤

--txt āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻĢāĻžāχāϞāϟāĻŋāϕ⧇ pbtxt āĻšāĻŋāϏāĻžāĻŦ⧇ āĻĒāĻžāĻ°ā§āϏ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ perfetto āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻĻ⧇āϝāĻŧāĨ¤ āĻāχ āĻĒāϤāĻžāĻ•āĻž āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻĒāϰ⧀āĻ•ā§āώāĻžāϰ āϜāĻ¨ā§āϝ āωāĻĻā§āĻĻāĻŋāĻˇā§āϟ, āĻāĻŦāĻ‚ āĻāϟāĻž āϏ⧁āĻĒāĻžāϰāĻŋāĻļ āĻ•āϰāĻž āĻšāϝāĻŧ āύāĻž āϝ⧇ āφāĻĒāύāĻŋ āĻāϟāĻŋ āĻ‰ā§ŽāĻĒāĻžāĻĻāύ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻ•ā§āώāĻŽ āĻ•āϰ⧁āύ⧎

āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ āϤāĻĨā§āϝ āωāĻ¤ā§āϏ

āĻāχ āĻŦāĻŋāĻ­āĻžāĻ—āϟāĻŋ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āωāĻ¤ā§āϏ āĻŦāĻ°ā§āĻŖāύāĻž āĻ•āϰ⧇ āϝāĻž perfetto āφāĻĒāύāĻžāϰ āĻŸā§āϰ⧇āϏ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤

ftrace

ftrace āĻĄā§‡āϟāĻž āϏ⧋āĻ°ā§āϏ perfetto āĻ•āĻžāĻ°ā§āύ⧇āϞ āĻĨ⧇āϕ⧇ āχāϭ⧇āĻ¨ā§āϟ āĻĒ⧇āϤ⧇ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧāĨ¤

DataSourceConfig-āĻ ftrace_config āϏ⧇āϟ āĻ•āϰ⧇ āĻāχ āĻ‰ā§ŽāϏāϟāĻŋ āϏāĻ•ā§āώāĻŽ āĻ•āϰ⧁āύāĨ¤

āϝ⧇ āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋ āϏāĻ•ā§āώāĻŽ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āϏ⧇āϗ⧁āϞāĻŋāϰ āĻŽāĻ§ā§āϝ⧇ āϰāϝāĻŧ⧇āϛ⧇:

āφāĻĒāύāĻžāϰ āĻĄāĻŋāĻ­āĻžāχāϏ, OS āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āĻŦāĻž āĻ•āĻžāĻ°ā§āύ⧇āϞ⧇āϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇, āφāϰāĻ“ āχāϭ⧇āĻ¨ā§āϟ āωāĻĒāϞāĻŦā§āϧ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āφāϰāĻ“ āϤāĻĨā§āϝ⧇āϰ āϜāĻ¨ā§āϝ, āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻĒā§āϰ⧋āĻŸā§‹āϗ⧁āϞāĻŋ āĻĒāĻĄāĻŧ⧁āύāĨ¤

āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻĒāϰāĻŋāϏāĻ‚āĻ–ā§āϝāĻžāύ

āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻĒāϰāĻŋāϏāĻ‚āĻ–ā§āϝāĻžāύ āĻĄā§‡āϟāĻž āωāĻ¤ā§āϏ āφāĻĒāύāĻžāϕ⧇ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻāĻŦāĻ‚ āĻĒ⧃āĻĨāĻ• āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻĒā§‹āϞ āĻ•āĻžāωāĻ¨ā§āϟāĻžāϰ āĻĒ⧇āϤ⧇ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧāĨ¤

DataSourceConfig-āĻ process_stats_config āĻāĻŦāĻ‚ sys_stats_config āϏ⧇āϟ āĻ•āϰ⧇ āĻāχ āĻ‰ā§ŽāϏāϟāĻŋ āϏāĻ•ā§āώāĻŽ āĻ•āϰ⧁āύāĨ¤

perfetto āϝ⧇ āĻĄā§‡āϟāĻž āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āϤāĻžāϰ āĻŽāĻ§ā§āϝ⧇ āϰāϝāĻŧ⧇āϛ⧇:

āφāĻĒāύāĻžāϰ āĻĄāĻŋāĻ­āĻžāχāϏ, OS āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āĻāĻŦāĻ‚ āĻ•āĻžāĻ°ā§āύ⧇āϞ⧇āϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇, āφāϰāĻ“ āχāϭ⧇āĻ¨ā§āϟ āωāĻĒāϞāĻŦā§āϧ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āφāϰāĻ“ āϜāĻžāύāϤ⧇, sys_stats āĻāĻŦāĻ‚ process_stats āĻāϰ āϜāĻ¨ā§āϝ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻĒā§āϰ⧋āĻŸā§‹āϗ⧁āϞāĻŋ āĻĒāĻĄāĻŧ⧁āύāĨ¤

heapprofd

heapprofd āφāĻĒāύāĻžāϕ⧇ āύ⧇āϟāĻŋāĻ­ āĻŽā§‡āĻŽāϰāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻ•āĻžāϰāϪ⧇āϰ āύāĻŽā§āύāĻž āĻĻāĻŋāϤ⧇ āĻĻ⧇āϝāĻŧāĨ¤

DataSourceConfig-āĻ heapprofd_config āϏ⧇āϟ āĻ•āϰ⧇ āĻāχ āĻ‰ā§ŽāϏāϟāĻŋ āϏāĻ•ā§āώāĻŽ āĻ•āϰ⧁āύāĨ¤ āĻāχ āϏ⧇āϟāĻŋāĻ‚ āĻ•āϞāĻ¸ā§āĻŸā§āϝāĻžāϕ⧇āϰ āϜāĻžāĻ­āĻž āĻĢā§āϰ⧇āĻŽ āϏāĻš ProfilePackets āϤ⧈āϰāĻŋ āĻ•āϰ⧇āĨ¤

heapprofd āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇āύ āϏ⧇ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āϤāĻĨā§āϝ perfetto.dev āĻ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāĻŦ⧇āĨ¤

āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āωāĻ¤ā§āϏ

āφāĻĒāύāĻžāϰ āĻĄāĻŋāĻ­āĻžāχāϏ, OS āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āĻāĻŦāĻ‚ āĻ•āĻžāĻ°ā§āύ⧇āϞ⧇āϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇, āφāϰāĻ“ āĻĄā§‡āϟāĻž āωāĻ¤ā§āϏ āωāĻĒāϞāĻŦā§āϧ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āφāϰāĻ“ āϜāĻžāύāϤ⧇, āĻĄā§‡āϟāĻž āωāĻ¤ā§āϏ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻĒā§āϰ⧋āĻŸā§‹āϗ⧁āϞāĻŋ āĻĒāĻĄāĻŧ⧁āύāĨ¤

perfetto āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āϤāĻĨā§āϝ perfetto.dev āĻ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāĻŦ⧇āĨ¤