perfetto

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

  • ftrace để biết thông tin về 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 cũng như cách định cấu hình để tạo đầu ra mong muốn. Để biết thêm thông tin, hãy tham khảo tài liệu về perfetto.

Cú pháp

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

Chọn nguồn dữ liệu

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

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

Tuỳ chọn chung

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

Bảng 1. Danh sách các tuỳ chọn chung hiện có cho công cụ perfetto.

Tuỳ chọn Nội dung mô tả
--background |
-d
perfetto thoát ngay khỏi giao diện dòng lệnh và tiếp tục ghi lại dấu vết của bạn ở chế độ nền.
--background-wait | -D Giống như --background, nhưng chờ (tối đa 30 giây) để tất cả các nguồn dữ liệu bắt đầu trước khi thoát. Mã thoát sẽ bằng 0 nếu xác nhận thành công và khác 0 (lỗi hoặc hết thời gian chờ).
--alert-id Mã của cảnh báo kích hoạt dấu vết này.
--config-id Mã của cấu hình kích hoạt.
--config-uid UID của ứng dụng đăng ký cấu hình.
--subscription-id Mã của gói thuê bao kích hoạt dấu vết này.
--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 được mô tả trong các cờ trước. Định dạng đầu ra biên dịch với định dạng được xác định trong AOSP trace.proto.

Lưu ý: Bạn phải chỉ định tên đường dẫn đầy đủ của tệp đầu ra. Thông thường, các tệp phải được ghi vào thư mục /data/misc/perfetto-traces.

--upload Sau khi hoàn thành, hãy chuyển dấu vết đến gói đượ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 kiểm thử.
--reset-guardrails Đặt lại trạng thái cố định của các quy định và thoát để kiểm thử.
--rsave-for-bugreport Nếu một dấu vết có bugreport_score > 0 đang chạy, hãy lưu dấu vết đó vào một tệp. Xuất ra đường dẫn khi hoàn tất.
--query Truy vấn trạng thái dịch vụ và in dưới dạng văn bản mà con người có thể đọc được.
--query-raw Tương tự như --query, nhưng in byte được mã hoá 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 perfetto ở chế độ 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 tuỳ chọn có sẵn khi sử dụng perfetto ở chế độ sáng.

Bảng 2. Danh sách các tuỳ chọn có sẵn cho công cụ perfetto khi sử dụng chế độ sáng.

Tuỳ 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 vòng trong bộ nhớ.
--app | -a Tên ứng dụng Android (atrace)

Các tuỳ chọn sau đây được liệt kê theo danh sách các thông số sự kiện:

Bảng 3. Danh sách thông số sự kiện cho chế độ sáng.

Sự kiện Nội dung mô tả
ATRACE_CAT Chỉ định danh mục atrace 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 atrace:

    adb shell perfetto --out FILE wm
    

Để ghi lại các danh mục khác, hãy xem danh sách danh mục atrace.

FTRACE_GROUP/FTRACE_NAME Chỉ định các sự kiện ftrace mà bạn muốn ghi lại dấu vết. Ví dụ: lệnh sau đây theo dõi các sự kiện sched/sched_switch:

      adb shell perfetto --out FILE sched/sched_switch
      

Chế độ thông thường

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

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

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

Bảng 4. Danh sách các tuỳ chọn có sẵn cho công cụ perfetto khi sử dụng chế độ thông thường.

Tuỳ 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 được xác định trong AOSP trace_config.proto.

Chọn và định cấu hình nguồn dữ liệu bằng thành phần DataSourceConfig của TraceConfig, như 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 kiểm thử cục bộ và bạn không nên bật tính năng này cho quá trình sản xuất.

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

Phần này mô tả các nguồn 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 sự kiện từ kernel.

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 atrace

Tuỳ thuộc vào thiết bị, phiên bản hệ điều hành hoặc kernel, có thể hiển thị thêm nhiều sự kiện. Để biết thêm thông tin, hãy tham khảo phần 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ậ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:

Tuỳ thuộc vào thiết bị, phiên bản hệ điều hành và kernel, có thể hiển thị thêm nhiều sự kiện. Để tìm hiểu thêm, hãy tham khảo các giao thức cấu hình cho sys_statsprocess_stats.

heapprofd

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

Bật nguồn này bằng cách đặt heapprofd_config trong DataSourceConfig. Chế độ cài đặt này tạo ra ProfilePackets, bao gồm 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

Tuỳ thuộc vào thiết bị, phiên bản hệ điều hành và kernel, có thể hiển thị thêm nhiều nguồn dữ liệu. Để tìm hiểu thêm, hãy tham khảo phần 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.