Kiểm tra hoạt động của CPU bằng Trình phân tích CPU

Việc tối ưu hoá mức sử dụng CPU của ứng dụng có nhiều ưu điểm, chẳng hạn như đem lại trải nghiệm người dùng nhanh và hiệu quả đồng thời duy trì tuổi thọ pin của thiết bị.

Bạn có thể sử dụng Trình phân tích CPU (CPU Profiler) để kiểm tra mức sử dụng CPU và hoạt động luồng của ứng dụng theo thời gian thực trong khi tương tác với ứng dụng, hoặc bạn có thể kiểm tra chi tiết trong các dấu vết phương thức, dấu vết hàm và dấu vết hệ thống đã được ghi lại.

Thông tin chi tiết mà Trình phân tích CPU ghi lại và cho thấy được xác định bằng cấu hình bản ghi bạn chọn:

  • System Trace (Theo dõi hệ thống): Ghi lại từng chi tiết nhỏ, cho phép bạn kiểm tra cách ứng dụng tương tác với tài nguyên hệ thống.
  • Method and function traces (Theo dõi chức năng và phương thức): Đối với mỗi luồng trong quá trình của ứng dụng, bạn có thể tìm phương thức (Java) hoặc hàm (C/C++) đã được thực thi trong một khoảng thời gian cũng như tài nguyên CPU mà mỗi phương thức hoặc hàm sử dụng trong quá trình thực thi. Bạn cũng có thể sử dụng dấu vết phương thức và hàm để xác định phương thức gọi (caller) và hàm được gọi (callee). Phương thức gọi là một phương thức hoặc hàm có khả năng gọi một phương thức hoặc hàm khác. Ngược lại, hàm được gọi là một phương thức hoặc hàm được gọi qua một phương thức hoặc hàm khác. Bạn có thể sử dụng thông tin này để xác định phương thức hoặc hàm có trách nhiệm gọi các nhiệm vụ tốn nhiều tài nguyên quá thường xuyên và tối ưu hoá mã của ứng dụng để tránh thực hiện các công việc không cần thiết.

    Khi ghi lại dấu vết phương thức, bạn có thể chọn bản ghi được lấy mẫu hoặc được đo lường. Khi ghi lại dấu vết hàm, bạn chỉ có thể sử dụng bản ghi được lấy mẫu.

Để tìm hiểu thêm về cách sử dụng và lựa chọn phương pháp ghi lại dấu vết, hãy xem bài viết Chọn cấu hình bản ghi.

Tổng quan về Trình phân tích CPU

Để mở Trình phân tích CPU, hãy làm theo các bước sau:

  1. Chọn View (Xem) > Tool Windows (Cửa sổ công cụ) > Profiler (Trình phân tích tài nguyên) hoặc nhấp vào biểu tượng Profile (Tài nguyên) trên thanh công cụ.

    Nếu hộp thoại Select Deployment Target (Chọn đối tượng triển khai) cho thấy lời nhắc, hãy chọn thiết bị nơi bạn muốn triển khai ứng dụng để phân tích. Nếu bạn đã kết nối thiết bị qua USB nhưng không thấy thiết bị đó trong danh sách, hãy đảm bảo rằng bạn đã bật tính năng gỡ lỗi USB.

  2. Nhấp vào nơi bất kỳ trong tiến trình CPU để mở Trình phân tích CPU (CPU Profiler).

Khi bạn mở Trình phân tích CPU, công cụ này sẽ bắt đầu cho thấy mức sử dụng CPU và hoạt động theo luồng ứng dụng ngay lập tức. Bạn sẽ thấy kết quả tương tự như Hình 1.

Hình 1. Tiến trình trong Trình phân tích CPU.

Như đã chỉ ra trong Hình 1, khung nhìn mặc định cho Trình phân tích CPU bao gồm các tiến trình sau:

  1. Event timeline (Tiến trình sự kiện): Hiển thị các hoạt động trong ứng dụng khi các hoạt động đó chuyển đổi qua nhiều trạng thái trong vòng đời và chỉ báo hoạt động tương tác của người dùng với thiết bị, bao gồm cả sự kiện xoay màn hình. Để biết thông tin về cách bật tính năng tiến trình sự kiện trên các thiết bị chạy Android 7.1 (API cấp 25) trở xuống, hãy xem nội dung Bật trình phân tích nâng cao.
  2. CPU timeline (Tiến trình CPU): Cho thấy mức sử dụng CPU của ứng dụng theo thời gian thực – dưới dạng phần trăm tổng thời gian có sẵn của CPU– và tổng số luồng mà ứng dụng của bạn đang sử dụng. Tiến trình cũng cho thấy mức sử dụng CPU của các quá trình khác (chẳng hạn như quá trình của hệ thống hoặc các ứng dụng khác), nhờ đó bạn có thể so sánh với mức sử dụng của ứng dụng của mình. Bạn có thể kiểm tra dữ liệu mức sử dụng CPU theo thời gian bằng cách di chuyển chuột dọc theo trục hoành của tiến trình.
  3. Thread activity timeline (Tiến trình hoạt động theo luồng): Liệt kê từng luồng thuộc quá trình của ứng dụng và cho biết hoạt động của luồng đó theo tiến trình bằng cách sử dụng các màu liệt kê dưới đây. Sau khi ghi lại dấu vết, bạn có thể chọn một luồng trong tiến trình này để kiểm tra dữ liệu của luồng đó trong ngăn theo dõi.
    • Xanh lục: Luồng đang hoạt động hoặc đã sẵn sàng để sử dụng CPU. Như vậy tức là luồng đang ở trạng thái đang chạy hoặc có thể chạy.
    • Vàng: Luồng đang hoạt động nhưng đang chờ thao tác vận hành I/O (ví dụ: ổ đĩa hoặc I/O mạng) trước khi có thể hoàn tất công việc.
    • Xám: Luồng đang ở chế độ ngủ và không tiêu tốn thời gian của CPU. Hiện tượng này đôi lúc xảy ra khi một luồng yêu cầu quyền truy cập vào tài nguyên chưa hoạt động. Vì vậy, luồng này có thể sẽ chuyển sang chế độ ngủ tự nguyện hoặc nhân hệ điều hành sẽ chuyển luồng vào chế độ ngủ cho đến khi tài nguyên hoạt động.

    Trình phân tích CPU cũng báo cáo mức sử dụng CPU của các luồng mà Android Studio và nền tảng Android bổ sung vào quá trình của ứng dụng —chẳng hạn như JDWP, Profile Saver, Studio:VMStats, Studio:PerfaStudio:Heartbeat (mặc dù, tên chính xác hiện trong tiến trình hoạt động theo luồng có thể khác nhau). Android Studio báo cáo dữ liệu này để bạn có thể xác định thời điểm hoạt động của luồng và mức sử dụng CPU do chính mã nguồn của ứng dụng gây ra.