Dịch vụ gốc của Watchdog ghi lại dữ liệu hiệu suất I/O kể từ khi khởi động sớm trong quá trình khởi động hệ thống. Dịch vụ gốc sẽ kết xuất dữ liệu hiệu suất đã 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 dumpsys để kết xuất dữ liệu đã thu thập 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 các 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 (1) giây trong quá trình khởi động hệ thống và một lần mỗi (1) phút sau khi khởi động xong.
- Trên các bản dựng dành cho người dùng, Watchdog thu thập dữ liệu hiệu suất mỗi 20 giây trong quá trình khởi động hệ thống và mỗi 2 phút sau khi khởi động xong.
Sự kiện thu thập dữ liệu
Việc lập hồ sơ 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 một báo cáo lỗi được ghi lại, dịch vụ gốc Watchdog sẽ kết xuất dữ liệu hiệu suất đã 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 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 dữ liệu 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 bạn không dừng phiên theo cách thủ công, thì phiên sẽ bị dừng 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, thì việc thu thập dữ liệu hiệu suất chỉ giới hạn ở 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 dưới đây bắt đầu một hoạt động 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 lượng thu thập tối đa là 1 giờ và giới hạn hoạt động lập hồ sơ ở các gói com.google.android.car.kitchensink
và 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à kết xuất 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 yêu cầu trợ giúp về 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 chụp một báo cáo lỗi, chạy lệnh dumpsys của Watchdog mà không có đối số nào hoặc dừng phiên thu thập tuỳ chỉnh, dịch vụ gốc Watchdog sẽ 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 gần nhất 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 trong thời gian khởi động. |
Thông tin thu thập khi đánh thức | Cung cấp thông tin về phiên thu thập dữ liệu hiệu suất khi thức khi hệ thống thức dậy từ trạng thái tạm ngưng. |
Thông tin thu thập được từ nút chuyển 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 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 tồn tại trong bộ nhớ cho đến khi hệ thống tắt, vì vậy, dữ liệu này sẽ được kết xuất vào tất cả báo cáo. |
Báo cáo hiệu suất đánh thức | Chứa dữ liệu hiệu suất được thu thập trong quá trình đá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 tồn tại trong bộ nhớ cho đến khi hệ thống tắt, vì vậy, dữ liệu sẽ được kết xuất trên tất cả 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 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ố phần sau. Số liệu thống kê được báo cáo trong mỗi lần thu thập là delta kể từ lần thu thập gần nhất, ngoại trừ số liệu thống kê tức thì (ví dụ: không được tổng hợp kể từ khi 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 của CPU ở trạng thái rảnh. |
Thời gian chờ I/O của CPU | Tổng thời gian CPU dành để 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ố lượng quá trình I/O bị chặn/phần trăm | 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 gần đây nhất. |
Thời gian CPU hàng đầu N |
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:
|
Số lượt đọc I/O bộ nhớ hàng đầu N |
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 ở chế độ nền trước so với chế độ nền, tỷ lệ phần trăm byte trên tất cả các chế độ nền trước so với chế độ nền được đọc 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 hầu hết dữ liệu vào ổ đĩa kể từ lần thu thập gần đây nhất. Mỗi dòng chứa các trường tương tự như của Top N Reads. |
N mã UID hàng đầu đang chờ I/O | N gói hàng đầu có nhiều tác vụ 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ó lỗi trang lớn nhất kể từ lần thu thập dữ liệu gần đây nhất. |