Dịch vụ gốc của bộ kiểm soát ghi lại dữ liệu hiệu suất I/O kể từ khi khởi tạo sớm trong khoảng thời gian khởi động hệ thống. Dịch vụ gốc kết xuất dữ liệu hiệu suất đã thu thập vào báo cáo lỗi. Nhà cung cấp có thể truy vấn dịch vụ gốc thông qua dumpsys để kết xuất hoặc bắt đầu một phiên thu thập tuỳ chỉnh để gỡ lỗi.
Tần suất thu thập dữ liệu
Tần suất thu thập dữ liệu hiệu suất sẽ khác nhau tuỳ theo bản dựng loại.
- Trên bản dựng userdebug hoặc eng, Watchdog thu thập dữ liệu hiệu suất một lần mỗi một (1) giây trong khi khởi động hệ thống và cứ sau mỗi một (1) phút sau khi khởi động xong.
- Trên các bản dựng của người dùng, Watchdog thu thập dữ liệu hiệu suất 20 giây một lần trong khi khởi động hệ thống và cứ hai (2) phút một lần sau khi khởi động xong.
Sự kiện thu thập dữ liệu
Việc phân tích tài nguyên dựa trên mẫu được thực hiện trong các sự kiện hệ thống khác nhau (chẳng hạn như khởi động hệ thống, đánh thức hệ thống và chuyển đổi người dùng) và trong khoảng thời gian N phút vừa qua.
- Sự kiện N phút trước trước khi tạo báo cáo lỗi: Được tạo trong một cửa sổ cuốn chiếu là 30 phút.
- Sự kiện thời gian khởi động: Được tạo sau khi khởi động.
- Sự kiện chuyển đổi người dùng: Được tạo sau khi một lượt chuyển đổi của người dùng bắt đầu.
- Sự kiện thu thập tuỳ chỉnh: Có thể chỉ định thời gian thăm dò ý kiến, thời lượng tối đa và có thể lọc theo gói.
Kết xuất dữ liệu hiệu suất
Khi ghi lại một báo cáo lỗi, dịch vụ gốc của Bộ theo dõi sẽ kết xuất dữ liệu đã thu thập trong báo cáo lỗi. Nhà cung cấp có thể truy vấn dịch vụ gốc thông qua bên dưới lệnh dumpsys để kết xuất dữ liệu hiệu suất đã thu thập. Xem phần Hiểu hiệu suất để biết thông tin chi tiết về báo cáo.
adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default > /tmp/carwatchdog_dump.txt
Thu thập dữ liệu hiệu suất để gỡ lỗi
Nhà cung cấp có thể sử dụng dịch vụ gốc của Watchdog để tuỳ chỉnh thu thập hiệu suất cho mục đích gỡ lỗi. Ví dụ: để hiểu cách sử dụng I/O của một ứng dụng hoặc dịch vụ nào đó, nhà cung cấp có thể thực hiện việc thu thập dữ liệu tuỳ chỉnh về hiệu suất để lập hồ sơ hoạt động sử dụng I/O của một danh sách các gói cụ thể hoặc toàn bộ hệ thống.
Bắt đầu phiên thu thập tuỳ chỉnh
Dưới đây là lệnh để bắt đầu một hoạt động thu thập dữ liệu tuỳ chỉnh về hiệu suất phiên:
adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --start_perf [--interval <seconds>] [--max_duration <seconds>] [--filter_packages <package_name>,<package_name>,...]
--start_perf
Bắt đầu một phiên thu thập dữ liệu hiệu suất tuỳ chỉnh.--interval <seconds>
Chỉ định khoảng thời gian lập hồ sơ. Theo mặc định, khoảng thời gian là 30 giây.--max_duration <seconds>
Chỉ định thời lượng tối đa của phiên thu thập dữ liệu hiệu suất tuỳ chỉnh. Nếu phiên chưa dừng theo cách thủ công, phiên sẽ dừng lại và dữ liệu đã thu thập sẽ bị loại bỏ sau khoảng thời gian này. Theo mặc định, thời lượng tối đa là 30 phút.--filter_packages <package_name>,<package_name>...
Chỉ định danh sách tên gói được phân tách bằng dấu phẩy cho hồ sơ. Khi được cung cấp, việc thu thập dữ liệu hiệu suất chỉ giới hạn trong các gói này. Nếu không, giá trị việc thu thập dữ liệu về hiệu suất được thực hiện cho tất cả các gói trong hệ thống.
Ví dụ: lệnh bên dưới bắt đầu một quá trình thu thập dữ liệu hiệu suất tuỳ chỉnh
với khoảng thời gian lập hồ sơ là 10 giây, thời gian thu thập tối đa
là 1 giờ và giới hạn việc phân tích tài nguyên ở
com.google.android.car.kitchensink
và
Gói com.google.android.apps.maps
.
adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --start_perf --interval 10 --max_duration 3600 --filter_packages com.google.android.car.kitchensink,com.google.android.apps.maps
Dừng và kết xuất phiên thu thập tuỳ chỉnh
Sau khi ghi lại hoạt động sử dụng I/O của một ứng dụng hoặc dịch vụ mà họ quan tâm, nhà cung cấp phải ngừng
phiên thu thập dữ liệu hiệu suất tuỳ chỉnh để kết xuất dữ liệu đã thu thập. Lệnh này sẽ dừng
thu thập dữ liệu hiệu suất tuỳ chỉnh và chuyển dữ liệu đã thu thập vào
/tmp/carwatchdog_dump.txt
:
adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --stop-perf > /tmp/carwatchdog_custom_dump.txt
Trợ giúp về Dumpsys
Cách nhận trợ giúp dumpsys:
adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --help
Kết xuất sang định dạng proto
Bạn có thể kết xuất dữ liệu dumpsys ở định dạng proto nếu muốn:
adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --proto
Tìm hiểu báo cáo dữ liệu hiệu suất
Để tìm hiểu thêm, hãy xem báo cáo dữ liệu hiệu suất mẫu sau đây:
adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --------------------------------- WatchdogPerfService report: --------------------------------- Boot-time collection information: ================================= Event polling interval: 1 second Wake-up collection information: =============================== Event polling interval: 1 second User-switch collection information: =================================== Event polling interval: 1 second Periodic collection information: ================================ Event polling interval: 60 seconds --------------------------------------------------------------------------- Boot-time performance report: ================================= No collection recorded --------------------------------------------------------------------------- Wake-up performance report: =========================== No collection recorded --------------------------------------------------------------------------- User-switch events performance report: ====================================== No collection recorded --------------------------------------------------------------------------- Last N minutes performance report: ====================================== Collection duration: 10800 seconds Number of collections: 181 Collection 0: <Mon Oct 2 18:36:06 2023 GMT> ============================================= Total CPU time (ms): 473210 Total CPU cycles: 39553152000 Total idle CPU time (ms)/percent: 435860 / 92.11% CPU I/O wait time (ms)/percent: 0 / 0.00% Number of context switches: 13723415093 Number of I/O blocked processes/percent: 0 / 0.00% Top N CPU Times: ---------------- Android User ID, Package Name, CPU Time (ms), Percentage of total CPU time, CPU Cycles Command, CPU Time (ms), Percentage of UID's CPU Time, CPU Cycles 10, com.google.android.carassistant, 13357, 2.82%, 16409088000 assistant:interactor, 13360, 100.02%, 16409088000 0, system, 9097, 1.92%, 9640512000 sensors@1.0-ser, 3790, 41.66%, 3773184000 system_server, 2760, 30.34%, 3135936000 com.android.car, 1150, 12.64%, 1099584000 binder:621_4, 1000, 10.99%, 1281024000 surfaceflinger, 230, 2.53%, 245376000 0, audioserver, 4383, 0.93%, 4597248000 Main, 2690, 61.37%, 2980416000 binder:916_2, 950, 21.67%, 925056000 audioserver, 720, 16.43%, 691776000 0, root, 4357, 0.92%, 3727872000 irq/311-iam2068, 2630, 60.36%, 2471616000 irq/26-90b6400., 370, 8.49%, 561024000 kworker/u16:4-bwmon_wq, 290, 6.66%, 48960000 kworker/u16:1-memlat_wq, 270, 6.20%, 0 ipcdaemon, 220, 5.05%, 218304000 10, com.google.android.apps.geo.automotive.adas, 1509, 0.32%, 1756416000 adas:publishing, 1490, 98.74%, 1735680000 as:clientparams, 10, 0.66%, 20736000 0, com.android.vending, 796, 0.17%, 765504000 android.vending, 790, 99.25%, 765504000 0, shared:com.google.uid.shared, 581, 0.12%, 481152000 google.android.gms, 340, 58.52%, 237312000 .gms.persistent, 190, 32.70%, 184512000 process.gservices, 50, 8.61%, 59328000 0, gps, 507, 0.11%, 659136000 binder:920_2, 500, 98.62%, 659136000 10, com.android.vending, 489, 0.10%, 372288000 android.vending, 480, 98.16%, 372288000 0, shared:android.uid.systemui, 438, 0.09%, 449856000 android.systemui, 440, 100.46%, 449856000 Top N Storage I/O Reads: ------------- Android User ID, Package Name, Foreground Bytes, Foreground Bytes %, Foreground Fsync, Foreground Fsync %, Background Bytes, Background Bytes %, Background Fsync, Background Fsync % 0, root, 56123392, 81.95%, 1, 100.00%, 0, 0.00%, 0, 0.00% 0, system, 12333056, 18.01%, 0, 0.00%, 0, 0.00%, 0, 0.00% Top N Storage I/O Writes: ------------------------- Android User ID, Package Name, Foreground Bytes, Foreground Bytes %, Foreground Fsync, Foreground Fsync %, Background Bytes, Background Bytes %, Background Fsync, Background Fsync % 0, com.android.vending, 0, 0.00%, 0, 0.00%, 520192, 46.35%, 20, 47.62% 10, com.android.vending, 0, 0.00%, 0, 0.00%, 520192, 46.35%, 20, 47.62% 10, shared:com.google.uid.shared, 0, 0.00%, 0, 0.00%, 45056, 4.01%, 0, 0.00% 0, shared:com.google.uid.shared, 0, 0.00%, 0, 0.00%, 36864, 3.28%, 2, 4.76% 0, logd, 24576, 40.00%, 0, 0.00%, 0, 0.00%, 0, 0.00% 0, root, 20480, 33.33%, 0, 0.00%, 0, 0.00%, 0, 0.00% 0, system, 16384, 26.67%, 0, 0.00%, 0, 0.00%, 0, 0.00% Top N I/O waiting UIDs: ----------------------- Android User ID, Package Name, Number of owned tasks waiting for I/O, Percentage of owned tasks waiting for I/O Command, Number of I/O waiting tasks, Percentage of UID's tasks waiting for I/O 0, root, 2, 0.39% dp_hdcp2p2, 1, 50.00% hdcp_2x, 1, 50.00% Top N major page faults: ------------------------ Android User ID, Package Name, Number of major page faults, Percentage of total major page faults Command, Number of major page faults, Percentage of UID's major page faults 0, com.android.vending, 104, 48.83% android.vending, 104, 100.00% 10, com.android.vending, 104, 48.83% android.vending, 104, 100.00% 0, shared:com.google.uid.shared, 4, 1.88% .gms.persistent, 4, 100.00% 10, shared:com.google.uid.shared, 1, 0.47% .gms.persistent, 1, 100.00% Number of major page faults since last collection: 213 Percentage of change in major page faults since last collection: 0.00%
Khi ghi lại báo cáo lỗi, chạy lệnh Watchdog dumpsys mà không có đối số hoặc dừng một phiên thu thập tuỳ chỉnh, dịch vụ gốc của Watchdog kết xuất một báo cáo dữ liệu hiệu suất tương tự như báo cáo ở trên.
Báo cáo này chứa dữ liệu được thu thập trong quá trình khởi động hệ thống và N phút cuối cùng trước khi tạo báo cáo.
Mặt hàng | Mô tả |
---|---|
Thông tin về tính năng thu thập thông tin vào thời gian khởi động | Cung cấp thông tin về phiên thu thập dữ liệu hiệu suất tại thời gian khởi động. |
Thông tin về bộ sưu tập đánh thức | Cung cấp thông tin về phiên thu thập dữ liệu hiệu suất đánh thức khi hệ thống được đánh thức sau khi tạm ngưng. |
Thông tin về việc thu thập lượt chuyển đổi người dùng | Cung cấp thông tin về phiên thu thập dữ liệu hiệu suất chuyển đổi người dùng khi có là chuyển đổi người dùng. |
Thông tin về hoạt động thu thập định kỳ | Cung cấp thông tin về phiên thu thập hiệu suất định kỳ bắt đầu đăng khởi động xong. |
Báo cáo hiệu suất thời gian khởi động | Chứa dữ liệu hiệu suất được thu thập trong quá trình khởi động hệ thống. Dữ liệu này vẫn còn trong bộ nhớ cho đến khi hệ thống tắt, nên dữ liệu sẽ được kết xuất vào tất cả báo cáo. |
Báo cáo hiệu suất sau khi bật | Chứa dữ liệu hiệu suất được thu thập trong khi đánh thức. Dữ liệu này là dữ liệu liên tục trong bộ nhớ cho đến hệ thống tắt, nên dữ liệu được kết xuất vào mọi báo cáo. |
Báo cáo hiệu suất chuyển đổi người dùng | Chứa dữ liệu hiệu suất được thu thập trong quá trình chuyển đổi người dùng. Dữ liệu này vẫn nằm trong bộ nhớ cho đến hệ thống tắt, nên dữ liệu được kết xuất vào mọi báo cáo. |
Báo cáo hiệu suất I/O trong N phút vừa qua | Chứa dữ liệu hiệu suất được thu thập (theo phiên thu thập định kỳ) trong thời gian qua N phút trước khi tạo báo cáo. |
Thời lượng thu thập | Tổng thời lượng của quá trình thu thập dữ liệu hiệu suất. |
Số lượng bộ sưu tập | Tổng số bộ sưu tập được báo cáo trong một báo cáo. |
Mỗi bộ sưu tập được báo cáo trong báo cáo có thể chứa tất cả hoặc một số nội dung dưới đây . Số liệu thống kê được báo cáo trong mỗi tập hợp là delta kể từ ngoại trừ số liệu thống kê tức thời (ví dụ: không được tổng hợp kể từ khởi động hệ thống).
Mặt hàng | Mô tả |
---|---|
Thời gian/phần trăm chờ I/O của CPU | Thời gian tuyệt đối của CPU và tỷ lệ phần trăm tổng thời gian CPU dành cho việc chuyển đổi ngữ cảnh hoặc đang chờ do các thao tác I/O kể từ lần thu thập gần nhất. |
Tổng thời gian của CPU | Tổng thời gian của CPU tính bằng mili giây. |
Tổng thời gian CPU ở trạng thái rảnh | Tổng thời gian CPU ở trạng thái rảnh. |
Thời gian chờ I/O CPU | Tổng thời gian CPU chờ các thao tác I/O. |
Số lượng nút chuyển đổi ngữ cảnh | Số lần chuyển đổi CPU từ một quy trình hoặc luồng sang một quy trình hoặc luồng khác. |
Số phần trăm quy trình I/O bị chặn | Tổng số quy trình bị chặn đang chờ I/O và tỷ lệ phần trăm quy trình bị chặn đang chờ I/O kể từ lần thu thập trước. |
Thời gian N CPU hàng đầu |
N gói hàng đầu tiêu thụ nhiều thời gian CPU nhất kể từ bộ sưu tập gần đây nhất:
|
Chỉ số I/O bộ nhớ N hàng đầu |
N gói hàng đầu đọc nhiều dữ liệu nhất từ ổ đĩa kể từ lần thu thập gần đây nhất. Mỗi dòng chứa mã nhận dạng người dùng, tên gói, tổng số byte được đọc ở nền trước
chế độ so với chế độ nền, tỷ lệ phần trăm byte trên tất cả chế độ nền trước so với chế độ nền trước
chế độ nền đọc dữ liệu trong hệ thống, tổng số lệnh gọi |
Số lượt ghi I/O bộ nhớ hàng đầu | N gói hàng đầu đã ghi nhiều dữ liệu nhất vào ổ đĩa kể từ lần thu thập gần đây nhất. Mỗi dòng chứa trường tương tự như trường N lượt đọc hàng đầu. |
Các UID đang chờ N I/O hàng đầu | N gói hàng đầu có nhiều thao tác chờ I/O nhất.
|
Lỗi N nghiêm trọng hàng đầu trên trang | N gói hàng đầu có các lỗi trang nghiêm trọng nhất kể từ bộ sưu tập gần đây nhất. |