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ừ kernelatrace
chú thích cho không gian người dùng trong các dịch vụ và ứng dụngheapprofd
để 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 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 tùy chọn có sẵn khi sử dụng perfetto
ở
chế độ 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 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 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 |
--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:
-
- 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:
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_config và sys_stats_config trong DataSourceConfig.
Dữ liệu mà perfetto
tạo ra bao gồm:
-
- /proc/meminfo
- /proc/vmstat
- /proc/stat
-
- /proc/<pid>/status
- /proc/<pid>/oom_score_adj
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_stats và process_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.