perfetto

perfetto là một công cụ cho phép bạn thu thập thông tin về hiệu suất từ các thiết bị Android của mình thông qua Cầu gỡ lỗi Android (ADB). perfetto sử dụng nhiều nguồn để thu thập dữ liệu về hiệu suất của thiết bị, chẳng hạn như sau:

  • ftrace để biết thông tin từ kernel
  • atrace chú thích cho không gian người dùng trong các dịch vụ và ứng dụng
  • heapprofd để biết thông tin về mức sử dụng bộ nhớ gốc của các dịch vụ và ứng dụng

Trang này mô tả cách gọi perfetto và định cấu hình trang để tạo ra đầu ra mong muốn.

Cú pháp

Phần này mô tả cách dùng ADB để gọi perfetto và tạo dấu vết.

Chọn nguồn dữ liệu

perfetto bao gồm hai chế độ xác định nguồn dữ liệu sau đây để ghi lại dấu vết của bạn:

  • chế độ ánh sáng: chỉ có thể chọn một nhóm nhỏ các nguồn dữ liệu, cụ thể là trên giao diện người dùng và phân đoạn. Tuy nhiên, nội dung này cung cấp giao diện tương tự như systrace.
  • chế độ bình thường: nhận cấu hình của bộ đệm trong bộ đệm giao thức và cho phép bạn tận dụng tối đa sức mạnh của perfetto bằng cách sử dụng các nguồn dữ liệu khác nhau đến chương trình.

Phần này mô tả cú pháp mà perfetto yêu cầu để tạo dấu vết bằng cách sử dụng mỗi chế độ được mô tả ở trên.

Tuỳ chọn chung

Bảng sau đây liệt kê các tùy chọn có sẵn khi sử dụng perfetto ở một trong hai chế độ.

Lựa chọn Mô tả
--background | -d Perfetto thoát ngay giao diện dòng lệnh và tiếp tục ghi lại dấu vết của bạn trong nền.
--out OUT_FILE | -o OUT_FILE Chỉ định đường dẫn mong muốn đến tệp theo dõi đầu ra hoặc - cho stdout. perfetto ghi đầu ra vào tệp mô tả trong cờ ở trên. Định dạng đầu ra tổng hợp với định dạng được xác định trong AOSP trace.proto.
--upload Sau khi hoàn thành, hãy chuyển dấu vết đó đến gói hàng được chỉ định bằng thông báo IncidentReportConfig trong cấu hình truy vết proto.
--no-guardrails Tắt các biện pháp bảo vệ chống lại việc sử dụng tài nguyên quá mức khi bật cờ --upload trong quá trình thử nghiệm.
--reset-guardrails Đặt lại trạng thái cố định của lan can và lối ra (để thử nghiệm).
--query Truy vấn trạng thái dịch vụ và in dưới dạng văn bản có thể đọc được.
--query-raw Tương tự như --query, nhưng in byte được mã hóa nguyên bản của tracing_service_state.proto.
--help | -h In văn bản trợ giúp cho công cụ perfetto.

Chế độ sáng

Cú pháp chung để sử dụng perfettochế độ sáng như sau:

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

Bảng sau đây liệt kê các tùy chọn có sẵn khi sử dụng perfettochế độ sáng.

Lựa chọn Mô tả
--time TIME[s|m|h] | -t TIME[s|m|h] Chỉ định thời lượng theo dõi bằng giây, phút hoặc giờ. Ví dụ: --time 1m chỉ định thời lượng theo dõi là 1 phút. Thời lượng mặc định là 10 giây.
--buffer SIZE[mb|gb] | -b SIZE[mb|gb] Chỉ định kích thước vùng đệm đổ chuông theo megabyte (mb) hoặc gigabyte (gb). Thông số mặc định là --buffer 32mb.
--size SIZE[mb|gb] | -s SIZE[mb|gb] Chỉ định kích thước tệp tối đa tính bằng megabyte (mb) hoặc gigabyte (gb). Theo mặc định, perfetto chỉ sử dụng bộ đệm đổ chuông trong bộ nhớ.

Dưới đây là danh sách các thông số sự kiện

Sự kiện Mô tả
ATRACE_CAT Chỉ định danh mục trang web mà bạn muốn ghi lại dấu vết. Ví dụ: lệnh sau đây theo dõi Trình quản lý cửa sổ bằng cách sử dụng ký hiệu:

    adb shell perfetto --out FILE wm
    

Để ghi lại các danh mục khác, hãy xem danh sách các danh mục địa điểm này.

FTRACE_GROUP/FTRACE_NAME Chỉ định các sự kiện trả góp mà bạn muốn ghi lại dấu vết. Ví dụ: các lệnh sau đã theo dõi các sự kiện sped/sged_switch:

      adb shell perfetto --out FILE sched/sched_switch
      

Chế độ thông thường

Cú pháp chung để sử dụng perfettochế độ thông thường như sau:

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

Bảng sau đây liệt kê các tùy chọn có sẵn khi sử dụng perfetto ở chế độ thông thường.

Lựa chọn Mô tả
--config CONFIG_FILE | -c CONFIG_FILE Chỉ định đường dẫn đến tệp cấu hình. Ở chế độ thông thường, một số cấu hình có thể được mã hóa trong vùng đệm giao thức cấu hình. Tệp này phải tuân thủ giản đồ vùng đệm giao thức đã xác định trong AOSP trace_config.proto.

Bạn chọn và định cấu hình nguồn dữ liệu bằng cách sử dụng thành viên DataSourceConfig của TraceConfig, như được xác định trong AOSP data_source_config.proto.

--txt Hướng dẫn perfetto phân tích cú pháp tệp cấu hình dưới dạng pbtxt. Cờ này chỉ dành cho mục đích thử nghiệm địa phương và bạn không nên bật tính năng này cho sản xuất.

Các nguồn dữ liệu được hỗ trợ

Phần này mô tả các nguồn khác nhau mà perfetto sử dụng để tạo dấu vết của bạn.

FTrace

Nguồn dữ liệu ftrace cho phép perfetto nhận các sự kiện từ kernel.

Bạn có thể bật nguồn này bằng cách đặt ftrace_config trong DataSourceConfig.

Sau đây là các sự kiện mà bạn có thể bật:

  • Lập lịch hoạt động:

    • sched/sched_switch
    • sched/sched_wakeup
    • sched/sched_wakeup_new
    • sched/sched_process_exec
    • sched/sched_process_exit
    • sched/sched_process_fork
    • sched/sched_process_free
    • sched/sched_process_hang
    • sched/sched_process_wait
  • Sự kiện của hệ thống tệp:

  • Sự kiện ATT

Tùy thuộc vào thiết bị, phiên bản hệ điều hành và hạt nhân của bạn, có thể có nhiều sự kiện khác. Để biết thêm thông tin, hãy tham khảo giao thức cấu hình.

Số liệu thống kê về quy trình

Nguồn dữ liệu thống kê quy trình cho phép bạn nhận các bộ đếm được thăm dò ý kiến về các quy trình của hệ thống và từng quy trình riêng lẻ.

Bạn có thể bật nguồn này bằng cách đặt process_stats_configsys_stats_config trong DataSourceConfig.

Dữ liệu mà perfetto tạo ra bao gồm:

Tùy thuộc vào thiết bị, phiên bản hệ điều hành và hạt nhân của bạn, có thể có nhiều sự kiện khác. Để tìm hiểu thêm, hãy tham khảo các cơ chế cấu hình cho sys_statsprocess_stats.

Heapprofd

Heapprofd cho phép bạn lấy mẫu nguyên nhân của việc sử dụng bộ nhớ gốc.

Bạn có thể bật nguồn này bằng cách đặt heapprofd_config trong DataSourceConfig.

Thao tác này sẽ tạo ProfilePackets. Chúng bao gồm các khung Java của ngăn xếp lệnh gọi.

Bạn có thể tìm thêm thông tin về cách sử dụng heapprofd tại perfetto.dev.

Các nguồn khác

Tùy thuộc vào thiết bị, phiên bản hệ điều hành và hạt kernel, bạn có thể sử dụng nhiều nguồn dữ liệu hơn. Để tìm hiểu thêm, hãy tham khảo giao thức cấu hình nguồn dữ liệu.

Bạn có thể tìm thêm thông tin về perfetto tại perfetto.dev.