Phân tích hồ sơ bằng AI

Vì hồ sơ ProfilingManager sử dụng định dạng Perfetto tiêu chuẩn và có thể truy vấn bằng PerfettoSQL, nên bạn có thể ghép nối tác nhân lập trình AI với kỹ năng AI của Perfetto để tự động hoá quy trình phân tích nguyên nhân gốc ngay trong không gian làm việc của mình, thay vì phải di chuyển theo cách thủ công qua các dòng thời gian trong giao diện người dùng Perfetto hoặc viết truy vấn tuỳ chỉnh cho Thư viện tiêu chuẩn Perfetto:

  1. Tải hồ sơ: Tác nhân mở hồ sơ đã thu thập bằng trace_processor của Perfetto.
  2. Thực thi truy vấn chẩn đoán: Được hướng dẫn bởi kỹ năng AI của Perfetto, tác nhân sẽ truy vấn các mô-đun thư viện chuẩn (chẳng hạn như android.frames.timeline cho hiện tượng giật hoặc android.memory.heap_graph.dominator_tree cho rò rỉ bộ nhớ) và tinh chỉnh các truy vấn của mình theo cách lặp lại.
  3. Tương quan với mã nguồn: Tác nhân liên kết các lát cắt dấu vết tuỳ chỉnh, ngăn xếp lệnh gọi được lấy mẫu hoặc tên lớp giữ lại trong hồ sơ trực tiếp với tệp nguồn Kotlin hoặc Java của bạn và đề xuất cách khắc phục.

Thiết lập kỹ năng Perfetto AI

Kỹ năng AI của Perfetto nguồn mở hướng dẫn các tác nhân lập trình cách chạy trace_processor, viết PerfettoSQL và làm theo quy trình công việc có hướng dẫn để phân tích bộ nhớ và CPU của Android. Mỗi bản cài đặt đều tích hợp một trình bao bọc trace_processor, vì vậy, bạn không cần cài đặt riêng trace_processor:

  • Cài đặt bằng AI: Chạy câu lệnh sau trong bất kỳ tác nhân lập trình AI nào:

    Following instructions from https://perfetto.dev/docs/getting-started/using-ai set up the Perfetto AI skill to be usable by any agent
    
  • Cài đặt theo cách thủ công: Làm theo hướng dẫn thiết lập trong phần Sử dụng AI với Perfetto cho tác nhân của bạn (chẳng hạn như Claude Code, Codex, Cursor, Antigravity hoặc OpenCode).

Ví dụ về quy trình công việc

Đặt một hoặc nhiều hồ sơ đã thu thập vào không gian làm việc của bạn và yêu cầu tác nhân AI điều tra. Bạn có thể phân tích một hồ sơ để chẩn đoán một vấn đề riêng lẻ hoặc truyền nhiều hồ sơ để so sánh các mẫu và hồi quy hàng loạt.

Phân tích tệp báo lỗi Java và lỗi hết bộ nhớ (OOM)

Khi bạn cung cấp tệp báo lỗi khối xếp Java được thu thập trực tiếp bằng PROFILING_TYPE_JAVA_HEAP_DUMP hoặc tự động thông qua điều kiện kích hoạt TRIGGER_TYPE_OOM, một tác nhân AI sử dụng kỹ năng AI của Perfetto có thể giúp bạn xác định:

  • Rò rỉ bộ nhớ: Các đối tượng (chẳng hạn như các thực thể Activity hoặc Fragment đã bị huỷ) vẫn có thể truy cập được từ gốc GC khi lẽ ra chúng phải được thu hồi.
  • Đối tượng bị trùng lặp nhiều: Các lớp có số lượng thực thể cao bất ngờ, cùng nhau tiêu thụ một phần lớn vùng nhớ khối xếp.
  • Bộ nhớ không hiệu quả: Bộ nhớ đệm quá lớn, cấu trúc dữ liệu dư thừa hoặc các đối tượng chi phối đơn lẻ giữ lại một lượng bộ nhớ không cân xứng.

Để điều tra tệp báo lỗi vùng nhớ khối xếp OutOfMemoryError và liên kết tệp đó với mã nguồn của ứng dụng, hãy chạy một câu lệnh như sau:

Analyze the Perfetto OOM heap dump at </path/to/profile>, which corresponds to
the codebase located at </path/to/codebase> using the Perfetto AI skill and find
the root cause of the OutOfMemoryError.

Để xem ví dụ hoàn chỉnh về báo cáo mà câu lệnh này tạo ra, bao gồm cả đường dẫn giữ lại cây thống trị, nguyên nhân gốc trong mã nguồn và cách khắc phục được đề xuất, hãy xem phần Tự động hoá quy trình điều tra lỗi OOM bằng tác nhân AI trong Nghiên cứu điển hình: Gỡ lỗi sự cố OOM.

Phân tích dấu vết hệ thống và lỗi ANR

Khi bạn cung cấp dấu vết hệ thống được ghi lại trực tiếp bằng PROFILING_TYPE_SYSTEM_TRACE hoặc tự động thông qua trình kích hoạt TRIGGER_TYPE_ANR, một tác nhân AI sử dụng kỹ năng AI của Perfetto có thể giúp bạn xác định:

  • Chặn các thao tác trên luồng chính: Các lát cắt theo dõi chạy trong thời gian dài hoặc các lệnh gọi đồng bộ ngăn luồng giao diện người dùng xử lý các sự kiện đầu vào hoặc vẽ khung hình trước ngưỡng ANR.
  • Điểm tắc nghẽn trạng thái luồng: Khoảng thời gian luồng chính bị kẹt ở trạng thái Sleeping (chẳng hạn như chặn I/O mạng hoặc hết thời gian chờ Thread.sleep), Blocked (tranh chấp khoá) hoặc Runnable (trì hoãn lập lịch CPU).
  • Mức tăng đột biến về mức sử dụng CPU của luồng chính: Các phép tính tốn kém hoặc vòng lặp chặt chẽ thực thi trực tiếp trên luồng giao diện người dùng thay vì luồng nền.

Để điều tra dấu vết hệ thống của lỗi ANR và liên kết dấu vết đó với mã nguồn của ứng dụng, hãy chạy một câu lệnh như sau:

Analyze the Perfetto system trace at </path/to/trace.perfetto-trace>, which
corresponds to an ANR trace, and find the root cause of the ANR using the
Perfetto AI skill. The codebase is located at </path/to/codebase>.

Để xem ví dụ hoàn chỉnh về báo cáo mà câu lệnh này tạo ra, bao gồm cả thông tin chi tiết về lát cắt luồng chính, quá trình tái cấu trúc khoảng thời gian thread_state và việc liên kết mã nguồn, hãy xem phần Tự động hoá quy trình điều tra lỗi ANR bằng tác nhân AI trong Nghiên cứu điển hình: Gỡ lỗi ANR.