Di chuyển trong một báo cáo của Systrace

Hướng dẫn này giải thích cách di chuyển và diễn giải báo cáo Systrace. Để diễn giải báo cáo Perfetto, vui lòng xem tài liệu Bộ xử lý theo dõi.

Các yếu tố của một báo cáo thông thường

Systrace tạo một tệp HTML đầu ra chứa một loạt các mục. Báo cáo này liệt kê các luồng của mỗi quy trình. Nếu một luồng nhất định hiển thị khung giao diện người dùng, báo cáo cũng cho biết các khung hình đã kết xuất dọc theo dòng thời gian. Thời gian trôi qua theo hướng tiến khi bạn di chuyển từ trái sang phải trên báo cáo.

Từ trên xuống dưới, báo cáo chứa các phần sau.

Các tương tác của người dùng

Phần đầu tiên chứa các thanh đại diện cho những tương tác cụ thể của người dùng trong ứng dụng hoặc trò chơi của bạn, chẳng hạn như nhấn vào màn hình của thiết bị. Những lần tương tác này đóng vai trò là điểm đánh dấu thời gian hữu ích.

Hoạt động của CPU

Phần tiếp theo sẽ hiển thị các thanh đại diện cho hoạt động của luồng trong mỗi CPU. Các thanh hiển thị hoạt động của CPU trên tất cả ứng dụng, bao gồm ứng dụng hoặc trò chơi của bạn.

Phần hoạt động của CPU có thể mở rộng để bạn có thể xem tần suất đồng hồ cho từng CPU. Hình 1 minh họa ví dụ về phần hoạt động của CPU đã thu gọn, còn Hình 2 cho thấy phiên bản mở rộng hiển thị tần số đồng hồ:

Ảnh chụp màn hình báo cáo Systrace
Hình 1. Hoạt động CPU mẫu (chế độ xem thu gọn) trong báo cáo Systrace

Ảnh chụp màn hình báo cáo Systrace
Hình 2. Hoạt động CPU mẫu (chế độ xem mở rộng) cho biết tần suất đồng hồ CPU trong báo cáo Systrace

các sự kiện hệ thống

Các biểu đồ trong phần này cho thấy các sự kiện cụ thể ở cấp hệ thống, chẳng hạn như số lượng văn bản và tổng kích thước của các đối tượng cụ thể.

Một biểu đồ cần kiểm tra kỹ hơn là biểu đồ có nhãn SurfaceView. Số đại diện cho số lượng bộ đệm khung đã soạn đã được truyền vào quy trình hiển thị và đang chờ hiển thị trên màn hình của thiết bị. Vì hầu hết các thiết bị đều được lưu vào bộ đệm gấp đôi hoặc ba lần, nên số lượng này hầu như luôn bằng 0, 1 hoặc 2.

Các biểu đồ khác mô tả quá trình Surface Flinger, bao gồm cả các sự kiện VSync và tác vụ hoán đổi giao diện người dùng, xuất hiện trong Hình 3:

Ảnh chụp màn hình báo cáo Systrace
Hình 3. Ví dụ về biểu đồ Surface Flinger trong báo cáo Systrace

Khung hiển thị

Phần này, thường là phần cao nhất trong báo cáo, mô tả một đường thẳng nhiều màu theo sau là các chồng thanh. Các hình dạng này thể hiện trạng thái và ngăn xếp khung của một luồng cụ thể đã được tạo. Mỗi cấp của ngăn xếp đại diện cho một lệnh gọi đến beginSection() hoặc điểm bắt đầu của sự kiện theo dõi tùy chỉnh mà bạn đã xác định cho ứng dụng hoặc trò chơi của mình.

Dòng nhiều màu phía trên ngăn xếp của các thanh đại diện cho tập hợp trạng thái của một luồng cụ thể theo thời gian. Mỗi đoạn của dòng có thể có một trong các màu sau:

Xanh lục: Đang chạy
Luồng đang hoàn thành công việc có liên quan đến một quy trình hoặc đang phản hồi với một thông báo gây gián đoạn.
Xanh dương: Có thể chạy
Luồng có thể chạy nhưng hiện chưa được lên lịch.
Màu trắng: Đang ngủ
Luồng không có tác vụ nào để thực hiện, có thể là do luồng bị chặn trên một khóa mutex.
Màu cam: Ngủ không gián đoạn
Luồng đã bị chặn trên I/O hoặc đang chờ thao tác ổ đĩa hoàn tất.
Màu tím: Ngủ gián đoạn
Luồng bị chặn trên một thao tác kernel khác, thường là quản lý bộ nhớ.

Phím tắt

Bảng sau đây liệt kê các phím tắt có sẵn trong khi xem báo cáo Systrace:

Khóa Mô tả
W Phóng to dòng thời gian theo dõi.
A Xoay trái trên dòng thời gian theo dõi.
CN Thu nhỏ dòng thời gian theo dõi.
D Xoay phải trên dòng thời gian theo dõi.
E Căn giữa dòng thời gian theo dõi ở vị trí hiện tại của chuột.
M Tạo khung cho lựa chọn hiện tại.
1 Thay đổi mô hình lựa chọn hiện đang hoạt động thành chế độ "chọn". Tương ứng với nút đầu tiên xuất hiện trên thanh công cụ bộ chọn chuột (xem hình ảnh ở bên phải). Ảnh chụp màn hình thanh công cụ bộ chọn chuột trong báo cáo Systrace
2 Thay đổi mô hình lựa chọn hiện đang hoạt động thành chế độ "kéo". Tương ứng với nút thứ 2 xuất hiện trên thanh công cụ bộ chọn chuột (xem hình ảnh ở bên phải). Ảnh chụp màn hình thanh công cụ bộ chọn chuột trong báo cáo Systrace
3 Thay đổi mô hình lựa chọn hiện đang hoạt động thành chế độ "thu phóng". Tương ứng với nút thứ 3 xuất hiện trên thanh công cụ bộ chọn chuột (xem hình ảnh ở bên phải). Ảnh chụp màn hình thanh công cụ bộ chọn chuột trong báo cáo Systrace
4 Thay đổi mô hình lựa chọn hiện đang hoạt động thành chế độ "đặt giờ". Tương ứng với nút thứ 4 xuất hiện trên thanh công cụ bộ chọn chuột (xem hình ảnh ở bên phải). Ảnh chụp màn hình thanh công cụ bộ chọn chuột trong báo cáo Systrace
G Hiển thị lưới ở đầu việc cần làm đang được chọn.
Shift + G Hiển thị lưới ở cuối việc cần làm đang được chọn.
Mũi tên trái Chọn sự kiện trước đó trên dòng thời gian hiện được chọn.
Mũi tên phải Chọn sự kiện tiếp theo trên dòng thời gian hiện được chọn.

Điều tra các vấn đề về hiệu suất

Khi tương tác với báo cáo Systrace, bạn có thể kiểm tra mức sử dụng CPU của thiết bị trong suốt thời gian ghi. Để được hỗ trợ trong việc điều hướng báo cáo HTML, hãy xem phần phím tắt hoặc nhấp vào ? ở góc trên cùng bên phải của báo cáo.

Các phần dưới đây giải thích cách kiểm tra thông tin trong báo cáo để tìm và khắc phục vấn đề về hiệu suất.

Xác định mối lo ngại về hiệu suất

Khi di chuyển trong một báo cáo Systrace, bạn có thể xác định mối lo ngại về hiệu suất dễ dàng hơn bằng cách thực hiện một hoặc nhiều việc sau:

  • Chọn một khoảng thời gian mà bạn quan tâm bằng cách vẽ một hình chữ nhật xung quanh khoảng thời gian đó.
  • Dùng công cụ thước kẻ để đánh dấu hoặc làm nổi bật một khu vực có sự cố.
  • Cho thấy từng hoạt động làm mới hiển thị bằng cách nhấp vào Xem các tùy chọn > Đánh dấu VSync.

Kiểm tra cảnh báo và khung giao diện người dùng

Như hình 4, báo cáo Systrace liệt kê từng quy trình hiển thị khung giao diện người dùng, đồng thời cho biết từng khung hình được hiển thị dọc theo tiến trình. Khung hình kết xuất trong vòng 16,6 mili giây cần thiết để duy trì khung hình 60 khung hình/giây ổn định được biểu thị bằng các vòng tròn khung màu xanh lục. Khung có thời gian kết xuất lâu hơn 16,6 giây được biểu thị bằng các vòng tròn khung màu vàng hoặc màu đỏ.

Phóng to trong khung hình
Hình 4. Systrace hiển thị sau khi phóng to trên một khung chạy trong thời gian dài

Khi nhấp vào một vòng tròn khung, khung hình đó sẽ làm nổi bật và cung cấp thêm thông tin về công việc mà hệ thống thực hiện để hiển thị khung đó, bao gồm cả các thông báo. Báo cáo này cũng cho bạn biết các phương thức mà hệ thống đang thực thi trong khi hiển thị khung đó. Bạn có thể điều tra các phương thức này để xác định nguyên nhân có thể khiến giao diện người dùng bị giật.

Đã chọn khung có vấn đề
Hình 5. Nếu bạn chọn khung có vấn đề, một cảnh báo sẽ xuất hiện bên dưới báo cáo theo dõi xác định vấn đề

Sau khi chọn một khung hình kết xuất chậm, bạn có thể thấy một cảnh báo trong ngăn dưới cùng của báo cáo. Cảnh báo trong Hình 5 cho thấy vấn đề chính của khung là quá nhiều thời gian dành cho việc tái chế và liên kết lại ListView. Có các đường liên kết đến sự kiện liên quan trong dấu vết để giải thích thêm về hoạt động của hệ thống trong thời gian này.

Để xem mỗi cảnh báo mà công cụ phát hiện được trong dấu vết của bạn, cũng như số lần thiết bị kích hoạt mỗi cảnh báo, hãy nhấp vào thẻ Cảnh báo ở ngoài cùng bên phải của cửa sổ, như được minh họa trong Hình 6. Bảng Cảnh báo giúp bạn biết được những vấn đề xảy ra trong quá trình theo dõi và tần suất các vấn đề này gây ra tình trạng giật. Bạn có thể xem bảng điều khiển này là một danh sách các lỗi cần khắc phục. Thông thường, một thay đổi nhỏ hoặc cải tiến trong một khu vực có thể loại bỏ toàn bộ một cảnh báo.

Đã hiện thẻ cảnh báo
Hình 6. Nhấp vào nút Cảnh báo sẽ hiển thị thẻ thông báo

Nếu bạn thấy có quá nhiều việc cần làm trên luồng giao diện người dùng, hãy dùng một trong những phương pháp sau để giúp xác định phương thức nào đang tiêu tốn quá nhiều thời gian của CPU:

  • Nếu bạn biết phương thức nào có thể gây ra nút thắt cổ chai, hãy thêm điểm đánh dấu theo dõi vào các phương thức này. Để tìm hiểu thêm, hãy xem hướng dẫn về cách xác định các sự kiện tùy chỉnh trong mã của bạn.
  • Nếu bạn không chắc chắn về nguồn nút thắt cổ chai của giao diện người dùng, hãy dùng Trình phân tích CPU có trong Android Studio. Bạn có thể tạo nhật ký theo dõi, sau đó nhập và kiểm tra chúng bằng Trình phân tích tài nguyên CPU.