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 thay đổi tuỳ theo loại bản dựng.
- 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
Phân tích tài nguyên dựa trên mẫu được thực hiện trong nhiều sự kiện hệ thống (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 qua.
- Sự kiện trong N phút gần nhất trước khi tạo báo cáo lỗi: Được tạo trong khoảng thời gian 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 của người dùng: Được tạo sau khi người dùng bắt đầu chuyển đổi.
- Sự kiện thu thập tuỳ chỉnh: Có thể chỉ định khoảng 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 báo cáo lỗi được ghi lại, dịch vụ gốc của Bộ theo dõi sẽ 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 lệnh dumpsys bên dưới để kết xuất dữ liệu hiệu suất đã thu thập. Hãy xem phần Tìm hiểu báo cáo dữ liệu hiệu suất để biết thông tin chi tiết về báo cáo này.
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 Watchdog để thu thập dữ liệu hiệu suất tuỳ chỉnh 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ụ, nhà cung cấp có thể thực hiện việc thu thập dữ liệu hiệu suất tuỳ chỉnh, trong đó lập hồ sơ hoạt động sử dụng I/O của một danh sách 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 phiên thu thập dữ liệu hiệu suất tuỳ chỉnh:
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 phân tích tài nguyên. 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 để lập hồ sơ. Khi được cung cấp, việc thu thập dữ liệu hiệu suất sẽ chỉ giới hạn ở các gói này. Nếu không, hệ thống sẽ thu thập dữ liệu hiệu suất cho tất cả các gói.
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à bạn quan tâm, nhà cung cấp nên dừ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 dừng quá trình 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 (không bắt buộc):
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:
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 cuối cùng trước khi tạo báo cáo.
Mục | Mô tả |
---|---|
Thông tin thu thập trong 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 của người dùng chuyển đổi khi có người dùng chuyển đổi. |
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 sau khi 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 khi đá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 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 của lượ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 qua | Chứa dữ liệu hiệu suất được thu thập (bằng phiên thu thập định kỳ) trong N phút cuối cùng 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ố 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ục | Mô tả |
---|---|
Thời gian chờ/phần trăm I/O của CPU | Thời gian CPU tuyệt đối 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 chờ do các hoạt động I/O kể từ lần thu thập gần đây nhất. |
Tổng thời gian của CPU | Tổng thời gian 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 dành để chờ các thao tác I/O. |
Số lần 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/phần trăm quá trình bị chặn I/O | 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ừ lần thu thập gần đây nhất:
|
Số lượt đọc I/O trên 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 ở 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 |
Nội dung 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 thao tác chờ I/O nhất.
|
N lỗi trang chính hàng đầu | 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. |