Ghi lại dấu vết

Để bắt đầu ghi lại dấu vết, hãy chọn cấu hình bản ghi từ một trong hai trình đơn thả xuống ở phía trên hoặc phía dưới Trình phân tích CPU và nhấp vào Record (Ghi).

Hình 1. Trình phân tích CPU sẽ hiển thị trạng thái, thời lượng và loại bản ghi đang được thực hiện.

Tương tác với ứng dụng của bạn rồi nhấp vào Stop (Dừng) khi bạn hoàn tất. Trình phân tích tài nguyên tự động hiển thị thông tin theo dõi trong ngăn theo dõi, như minh hoạ trong Hình 2.

Hình 2. Trình phân tích CPU sau khi ghi lại một dấu vết phương thức.

  1. Phạm vi đã chọn: Xác định phần thời gian đã ghi để kiểm tra trong ngăn theo dõi. Khi bạn ghi lại một dấu vết lần đầu tiên, Trình phân tích CPU sẽ tự động chọn toàn bộ thời lượng của bản ghi trong tiến trình của CPU. Để kiểm tra dữ liệu theo dõi chỉ trong một phần phạm vi thời gian đã ghi, hãy kéo các cạnh của khu vực đã làm nổi bật.
  2. Phần Interaction (Tương tác): Hiển thị sự kiện tương tác của người dùng và sự kiện trong vòng đời ứng dụng trong suốt tiến trình.
  3. Phần Threads (Luồng): Hiển thị hoạt động trạng thái luồng (chẳng hạn như chạy, ngủ, v.v.) và Biểu đồ lệnh gọi (hoặc biểu đồ sự kiện theo dõi trong Theo dõi hệ thống) cho mọi luồng trong suốt một tiến trình.
    • Sử dụng phím tắt và chuột để di chuyển trong tiến trình.
    • Nhấp đúp vào tên luồng hoặc nhấn phím Enter trong khi chọn một luồng để mở rộng hoặc thu gọn một luồng.
    • Chọn một luồng để xem thêm thông tin trong ngăn Phân tích. Giữ phím Shift hoặc Ctrl (phím Command trên Mac) để chọn nhiều luồng.
    • Chọn một lệnh gọi phương thức (hoặc sự kiện theo dõi trong Theo dõi hệ thống) để xem thêm thông tin trong ngăn Phân tích.
  4. Ngăn phân tích: Hiển thị dữ liệu theo dõi cho phạm vi thời gian và luồng hoặc lệnh gọi phương thức mà bạn đã chọn. Trong ngăn này, bạn có thể chọn cách xem từng dấu vết ngăn xếp (bằng thẻ phân tích) và cách đo thời gian thực thi (bằng trình đơn thả xuống tham chiếu thời gian).
  5. Các thẻ trong ngăn Analysis (Phân tích): Chọn cách hiển thị thông tin theo dõi. Để biết thông tin chi tiết về từng tuỳ chọn, hãy xem phần Kiểm tra dấu vết.
  6. Trình đơn tham chiếu thời gian: Chọn một trong các mục sau để xác định cách đo lường thông tin thời gian cho mỗi lệnh gọi (chỉ được hỗ trợ trong Phương thức mẫu/Phương thức theo dõi Java):
    • Thời gian theo đồng hồ báo: Thông tin thời gian thể hiện thời gian thực tế đã trôi qua.
    • Thời gian luồng: Thông tin thời gian thể hiện thời gian thực tế đã trôi qua trừ đi bất kỳ phần nào trong thời gian đó khi luồng không tiêu thụ tài nguyên CPU. Đối với một lệnh gọi nhất định, thời gian luồng của lệnh gọi đó luôn nhỏ hơn hoặc bằng thời gian của đồng hồ báo. Khi sử dụng thời gian luồng, bạn có thể hiểu rõ hơn về mức sử dụng CPU thực tế của luồng bằng một phương thức hoặc hàm cụ thể.
  7. Lọc: Lọc dữ liệu theo dõi theo hàm, phương thức, lớp hoặc tên gói. Ví dụ: nếu bạn muốn xác định nhanh dữ liệu theo dõi liên quan đến một lệnh gọi cụ thể, hãy nhập tên vào trường tìm kiếm. Trong thẻ Biểu đồ hình ngọn lửa, các ngăn xếp lệnh gọi bao gồm một lệnh gọi, gói hoặc lớp khớp với cụm từ tìm kiếm sẽ được nhấn mạnh. Trong các thẻ Top down (Từ trên xuống) và Bottom up (Từ dưới lên), các ngăn xếp lệnh gọi đó sẽ được ưu tiên hơn các kết quả theo dõi khác. Bạn cũng có thể bật các tuỳ chọn sau đây bằng cách đánh dấu vào hộp thích hợp bên cạnh trường tìm kiếm:
    • Regex (Biểu thức chính quy): Để đưa những biểu thức chính quy vào cụm từ tìm kiếm của bạn, hãy sử dụng tuỳ chọn này.
    • Match case (Khớp chữ hoa chữ thường): Nếu cụm từ tìm kiếm của bạn có phân biệt chữ hoa chữ thường, hãy sử dụng tuỳ chọn này.
Mẹo: Khi kiểm tra tiến trình của Luồng, bạn có thể dùng các phím tắt sau:
  • Phóng to: Nhấn phím W hoặc cuộn con lăn chuột trong khi giữ phím Ctrl (phím Command trên máy Mac).
  • Thu nhỏ: Nhấn S hoặc cuộn con lăn chuột về phía sau trong khi giữ phím Ctrl (phím Command trên máy Mac).
  • Kéo sang trái: Nhấn phím A hoặc kéo chuột sang phải khi giữ phím dấu cách.
  • Kéo sang phải: Nhấn phím D hoặc kéo chuột sang trái trong khi giữ phím dấu cách.
  • Mở rộng hoặc thu gọn luồng: Nhấp đúp vào tên luồng hoặc nhấn phím Enter khi chọn luồng.

Chọn một cấu hình bản ghi

Trước khi bạn bắt đầu ghi lại thông tin theo dõi, hãy chọn cấu hình ghi phù hợp cho thông tin phân tích tài nguyên mà bạn muốn thu thập:

  • Phương thức Java mẫu: Thu thập ngăn xếp lệnh gọi trong ứng dụng của bạn một cách thường xuyên trong khoảng thời gian thực thi mã dựa trên Java của ứng dụng. Trình phân tích tài nguyên so sánh các tập dữ liệu đã thu thập để lấy thông tin thời gian và mức sử dụng tài nguyên về cách thực thi mã dựa trên Java của ứng dụng.

    Một vấn đề vốn có của hoạt động theo dõi được lấy mẫu là nếu ứng dụng của bạn vào một phương thức sau khi thu thập ngăn xếp lệnh gọi và thoát khỏi phương thức đó trước lần thu thập tiếp theo, thì lệnh gọi phương thức đó sẽ không được trình phân tích tài nguyên ghi lại. Nếu muốn sử dụng phương thức theo dõi có vòng đời ngắn như vậy, bạn nên sử dụng tính năng theo dõi đo lường.

  • Phương thức theo dõi Java: Thiết lập ứng dụng của bạn trong thời gian chạy để ghi lại dấu thời gian ở đầu và cuối của mỗi lệnh gọi phương thức. Dấu thời gian được thu thập và so sánh để tạo dữ liệu tìm dấu vết phương thức, bao gồm thông tin về thời gian và mức sử dụng CPU.

    Lưu ý rằng mức hao tổn liên quan đến việc đo lường từng phương pháp sẽ ảnh hưởng đến hiệu suất trong thời gian chạy và có thể ảnh hưởng đến việc tạo dữ liệu hồ sơ; điều này càng dễ nhận thấy hơn đối với các phương thức có vòng đời tương đối ngắn. Ngoài ra, nếu ứng dụng của bạn thực thi một số lượng lớn các phương thức trong một thời gian ngắn, thì trình phân tích tài nguyên có thể nhanh chóng vượt quá giới hạn kích thước tệp và có thể không ghi lại được thêm dữ liệu theo dõi nào.

  • Hàm C/C++ mẫu: Ghi lại dấu vết mẫu của các luồng gốc trong ứng dụng. Để sử dụng cấu hình này, bạn phải triển khai ứng dụng của mình trên một thiết bị chạy Android 8.0 (API cấp 26) trở lên.

    Trong nội bộ, cấu hình này sử dụng simpleperf để theo dõi mã gốc của ứng dụng. Nếu muốn chỉ định các tuỳ chọn khác cho simpleperf, chẳng hạn như lấy mẫu các CPU cụ thể trong thiết bị hoặc chỉ định thời lượng lấy mẫu ở độ chính xác cao, bạn có thể sử dụng simpleperf từ dòng lệnh.

  • Theo dõi lệnh gọi hệ thống: Ghi lại các thông tin chi tiết để bạn có thể kiểm tra cách ứng dụng tương tác với tài nguyên hệ thống. Bạn có thể kiểm tra thời gian và thời lượng chính xác của trạng thái luồng, hình ảnh hoá nút thắt cổ chai của CPU trên tất cả các lõi và thêm các sự kiện theo dõi tuỳ chỉnh để phân tích. Những thông tin như vậy có thể rất quan trọng khi bạn khắc phục sự cố về hiệu suất. Để sử dụng cấu hình này, bạn phải triển khai ứng dụng của mình trên một thiết bị chạy Android 7.0 (API cấp 24) trở lên.

    Trong khi sử dụng cấu hình theo dõi này, bạn có thể đánh dấu các quy trình quan trọng của mã trong tiến trình của trình phân tích tài nguyên bằng cách đo lường mã của bạn. Để hỗ trợ mã C/C++, hãy sử dụng API theo dõi gốc do trace.h cung cấp. Để đo lường mã Java, hãy sử dụng lớp Trace. Để biết thêm thông tin, hãy xem bài viết Đo lường mã ứng dụng.

    Cấu hình theo dõi này được xây dựng trên systrace. Bạn có thể sử dụng systrace tiện ích dòng lệnh để chỉ định các tuỳ chọn ngoài những tuỳ chọn được cung cấp trong Trình phân tích CPU. Dữ liệu bổ sung ở cấp hệ thống do systrace cung cấp có thể giúp bạn kiểm tra các quy trình hệ thống gốc, đồng thời khắc phục sự cố khung hình bị bỏ qua hoặc bị trễ.

    Trên các thiết bị chạy Android 9 (API cấp 28) trở lên, bạn có thể sử dụng ứng dụng hệ thống có tên là Theo dõi hệ thống để ghi lại các dấu vết hệ thống trên một thiết bị.

Tạo, chỉnh sửa hoặc xem một cấu hình bản ghi

Trong trình đơn thả xuống về cấu hình bản ghi ở phần đầu của Trình phân tích CPU, hãy chọn Edit configurations (Chỉnh sửa cấu hình) rồi mở hộp thoại CPU Recording Configurations (Cấu hình bản ghi CPU), sau đó tạo, chỉnh sửa và xem các cấu hình bản ghi trong hộp thoại này.

Để xem các chế độ cài đặt của cấu hình ghi hiện có, hãy chọn cấu hình đó trong ngăn bên trái của hộp thoại CPU Recording Configurations (Cấu hình bản ghi CPU).

Để tạo cấu hình bản ghi mới, hãy làm như sau:

  1. Nhấp vào biểu tượng Thêm ở góc trên cùng bên trái của hộp thoại. Thao tác này sẽ tạo một cấu hình mới với một số chế độ cài đặt mặc định.
  2. Đặt tên cho cấu hình.
  3. Chọn một Công nghệ theo dõi.
  4. Đối với các cấu hình bản ghi được lấy mẫu, hãy chỉ định Khoảng thời gian lấy mẫu tính bằng micrô giây (μs). Giá trị này thể hiện thời gian giữa mỗi mẫu ngăn xếp lệnh gọi của ứng dụng. Khoảng thời gian bạn chỉ định càng ngắn thì bạn càng nhanh đạt được giới hạn kích thước tệp cho dữ liệu được ghi lại.
  5. Hãy chỉ định Giới hạn kích thước tệp, tính bằng megabyte (MB), cho dữ liệu được ghi lại được ghi vào thiết bị đã kết nối. Khi bạn dừng ghi, Android Studio sẽ phân tích cú pháp dữ liệu này và hiển thị dữ liệu trong cửa sổ trình phân tích tài nguyên. Vì vậy, nếu bạn tăng giới hạn và ghi lại một lượng lớn dữ liệu, Android Studio sẽ mất nhiều thời gian hơn để phân tích cú pháp tệp và có thể không phản hồi.

    Lưu ý: Nếu bạn sử dụng thiết bị được kết nối chạy Android 8.0 (API cấp 26) trở lên, thì sẽ không có giới hạn về kích thước tệp của dữ liệu theo dõi và giá trị này sẽ bị bỏ qua. Tuy nhiên, bạn vẫn cần cẩn thận với lượng dữ liệu mà thiết bị thu thập sau mỗi lần ghi. Android Studio có thể sẽ gặp khó khăn khi phân tích cú pháp các tệp theo dõi lớn. Ví dụ: nếu bạn đang ghi lại một dấu vết mẫu với khoảng thời gian lấy mẫu ngắn hoặc một dấu vết được đo lường trong khi ứng dụng của bạn gọi nhiều phương thức trong một thời gian ngắn, thì bạn sẽ nhanh chóng tạo được các tệp theo dõi lớn.

  6. Để chấp nhận các thay đổi và tiếp tục sửa đổi các cấu hình khác, hãy nhấp vào Apply (Áp dụng). Để chấp nhận tất cả các thay đổi đã áp dụng và đóng hộp thoại, hãy nhấp vào OK.

Ghi lại hoạt động của CPU bằng Debug API

Bạn có thể sử dụng API Debug để cho phép ứng dụng của bạn bắt đầu và dừng ghi lại hoạt động của CPU trong Trình phân tích CPU.

Trình phân tích CPU bắt đầu ghi khi ứng dụng của bạn gọi startMethodTracing(String tracePath), và Trình phân tích CPU sẽ ngừng ghi khi ứng dụng của bạn gọi stopMethodTracing(). Trong khi việc ghi lại hoạt động của CPU được kích hoạt bằng API này, Trình phân tích CPU sẽ hiển thị Debug API ở dạng cấu hình ghi CPU đang hoạt động.

Để kiểm soát việc ghi lại hoạt động của CPU bằng API Debug, hãy triển khai ứng dụng được đo lường của bạn cho một thiết bị chạy Android 8.0 (API cấp 26) trở lên. Quá trình ghi do API khởi tạo được hỗ trợ trong các ứng dụng có thể lập cấu hình, tuy nhiên, trình phân tích tài nguyên Android Studio yêu cầu ứng dụng có thể gỡ lỗi để hiển thị trạng thái ghi trong giao diện người dùng.

Lưu ý quan trọng: API Debug được dùng riêng biệt với các phương thức khác để bắt đầu và dừng ghi hoạt động của CPU, chẳng hạn như các nút trong giao diện người dùng đồ hoạ của Trình phân tích CPU và chế độ cài đặt trong cấu hình ghi để tự động ghi khi khởi động ứng dụng.

Do giới hạn dung lượng bộ nhớ đệm là 8 MB, nên phương thức startMethodTracing(String tracePath) trong API Debug được thiết kế trong những khoảng thời gian ngắn hoặc những trường hợp khó bắt đầu/dừng ghi theo cách thủ công. Để có thời gian ghi hình lâu hơn, hãy sử dụng giao diện người dùng trình phân tích tài nguyên trong Android Studio.

Để biết thêm thông tin, hãy xem phần Tạo nhật ký theo dõi bằng cách tích hợp vào ứng dụng.

Ghi lại hoạt động của CPU trong khi khởi động ứng dụng

Để tự động bắt đầu ghi lại hoạt động của CPU trong quá trình khởi động ứng dụng, hãy làm như sau:

  1. Chọn Run > Edit Configuration (Chạy > Chỉnh sửa cấu hình)
  2. Trong thẻ Profiling (Phân tích), hãy đánh dấu vào hộp bên cạnh Start recording a method trace on startup (Bắt đầu ghi hoạt động tìm dấu vết phương thức khi khởi động).
  3. Chọn một cấu hình ghi CPU trong trình đơn.
  4. Nhấp vào Áp dụng.
  5. Triển khai ứng dụng cho một thiết bị chạy Android 8.0 (API cấp 26) trở lên bằng cách chọn Run > Profile (Chạy > Phân tích).