Trong thế giới gỡ lỗi hiệu suất, các công cụ thường chỉ giới hạn trong hệ sinh thái ban đầu của chúng. Thế nhưng Perfetto của Google, được thiết kế như một giải pháp theo dõi toàn diện cho các hệ thống Linux và Android, đã đạt được một điều đáng chú ý - nó đã trở thành công cụ hiển thị dữ liệu hiệu suất hàng đầu trên vô số ngôn ngữ lập trình và nền tảng, nhờ vào định dạng nhập JSON cực kỳ đơn giản mà các nhà phát triển có thể triển khai chỉ trong vài phút.
Tài liệu chính thức của công cụ định vị nó như một Dao quân đội Thụy Sĩ cho Theo dõi Linux Client/Embedded, tập trung vào phân tích hiệu suất cấp hệ thống cho đường ống đồ họa Android, lập lịch CPU và sự kiện kernel. Nhưng như các cuộc thảo luận cộng đồng tiết lộ, tác động thực sự của Perfetto mở rộng xa hơn nhiều so với phạm vi thiết kế ban đầu, tạo ra một sự căng thẳng thú vị giữa mục đích dự định và các mẫu sử dụng thực tế.
![]()  | 
|---|
| Sơ đồ minh họa kiến trúc và chức năng của Perfetto, thể hiện ứng dụng của nó trong việc gỡ lỗi hiệu suất trên các hệ thống | 
Trình Xem Dấu Vết Phổ Quát Ngẫu Nhiên
Thứ bắt đầu như nền tảng theo dõi Android thế hệ tiếp theo của Google đã phát triển thành một thứ gì đó rộng lớn hơn nhiều. Các nhà phát triển làm việc với Rust, Python, các hệ thống lập lịch tùy chỉnh, và thậm chí cả tự động hóa phòng thí nghiệm y tế đã chấp nhận Perfetto không phải vì khả năng tích hợp hệ thống sâu của nó, mà vì khả năng hiển thị mạnh mẽ và định dạng dấu vết JSON đơn giản, thẳng tiến của nó.
Perfetto là một công cụ hơi kỳ lạ bởi vì nó dường như được thiết kế xung quanh việc theo dõi Linux và Android nhưng phần lớn nó được sử dụng vì sự tích hợp của họ với định dạng theo dõi JSON cực kỳ đơn giản mà chỉ mất khoảng 2 giây để triển khai trong bất kỳ công cụ nào bạn đang sử dụng.
Mẫu hình áp dụng bất ngờ này đã tạo ra một động lực thú vị. Trong khi các nhóm nội bộ của Google sử dụng Perfetto rộng rãi để gỡ lỗi hệ thống Android, cộng đồng mã nguồn mở đã chấp nhận nó như một công cụ đa năng hiển thị hiệu suất tổng quát. Khả năng của công cụ xử lý các dấu vết hàng gigabyte hoàn toàn ở phía máy khách trong trình duyệt, mà không gửi dữ liệu nhạy cảm đến các máy chủ bên ngoài, làm cho nó đặc biệt hấp dẫn cho nhiều trường hợp sử dụng khác nhau.
Ví dụ về Cộng đồng Áp dụng:
- Rust language CI cho giám sát hiệu suất
 - Tích hợp công cụ phát triển Flutter
 - Trực quan hóa lịch trình phòng thí nghiệm y tế
 - Phân tích hiệu suất Python thông qua Viztracer
 - Gỡ lỗi kernel và filesystem tùy chỉnh
 
![]()  | 
|---|
| Slide trình bày chi tiết các tính năng và khả năng của Perfetto UI, minh họa việc được áp dụng rộng rãi vượt ra ngoài Android và Linux | 
Thu Hẹp Khoảng Cách Giữa Thiết Kế và Thực Tế
Những người bảo trì Perfetto thừa nhận sự khác biệt này giữa cách sử dụng dự định và thực tế. Công cụ được xây dựng với các nguồn dữ liệu tinh vi trong tâm trí - từ bộ đếm hiệu suất GPU và sự kiện lập lịch CPU đến các giao dịch Android binder và số liệu sử dụng bộ nhớ. Thế nhưng nhiều người dùng đơn giản chỉ muốn hiển thị dữ liệu hiệu suất tùy chỉnh từ ứng dụng của họ.
Nhóm dự án đã làm việc để giải quyết điều này thông qua việc mô-đun hóa ngày càng tăng. Các nỗ lực gần đây tập trung vào việc tạo plugin cho giao diện người dùng, tách các thành phần hiển thị lõi khỏi các tính năng cụ thể của Android. Điều này cho phép người dùng loại bỏ các thành phần không cần thiết và tạo ra trải nghiệm sạch hơn cho các kịch bản theo dõi không phải Android. Sự phát triển của khả năng nhúng thông qua iframe và API postMessage càng chứng tỏ sự công nhận của nhóm về các trường hợp sử dụng rộng hơn.
SQL: Tính Năng Mạnh Mẽ Bị Ẩn Giấu
Trong khi khả năng hiển thị nhận được nhiều sự chú ý nhất, giao diện SQL của Perfetto đại diện cho một trong những tính năng mạnh mẽ nhất nhưng ít được đánh giá cao. Khả năng chạy các truy vấn SQL trực tiếp trên dữ liệu dấu vết cho phép phân tích tinh vi vượt ra ngoài việc kiểm tra dòng thời gian đơn giản. Các nhà phát triển có thể tổng hợp các sự kiện, tính toán các số liệu tùy chỉnh và rút ra những hiểu biết mà sẽ khó có được thông qua việc kiểm tra dấu vết thủ công.
Khả năng này đã chứng minh là vô giá cho mọi thứ, từ việc phân tích hiệu suất trình biên dịch Rust đến gỡ lỗi các hệ thống lập lịch phức tạp trong tự động hóa phòng thí nghiệm y tế. Giao diện SQL biến Perfetto từ một công cụ hiển thị đơn giản thành một nền tảng phân tích hiệu suất toàn diện, cho phép các nhóm trả lời các câu hỏi cụ thể về hành vi hệ thống của họ thay vì chỉ duyệt qua dữ liệu dòng thời gian.
![]()  | 
|---|
| Hướng dẫn sử dụng các công cụ ghi âm tiêu chuẩn để phân tích hiệu suất, bao gồm các lệnh để ghi lại và báo cáo các dấu vết nhằm có được cái nhìn sâu sắc hơn | 
Cuộc Cách Mạng Nhúng
Một trong những phát triển quan trọng nhất trong quá trình tiến hóa của Perfetto là hệ sinh thái ngày càng phát triển của việc sử dụng được nhúng. Các dự án như hệ thống tích hợp liên tục của Rust để giám sát hiệu suất và công cụ dành cho nhà phát triển của Flutter đã tích hợp Perfetto trực tiếp vào quy trình làm việc của họ. Khả năng nhúng này cho phép các nhóm cung cấp phân tích hiệu suất như một phần liền mạch của các công cụ hiện có của họ thay vì yêu cầu người dùng xuất và nhập các tệp dấu vết một cách thủ công.
Công ty tự động hóa phòng thí nghiệm y tế được đề cập trong các cuộc thảo luận đại diện cho một trường hợp sử dụng đặc biệt thú vị. Hệ thống của họ mô hình hóa các vấn đề lập lịch phức tạp với các ràng buộc sinh học, sau đó hiển thị kết quả bằng cách sử dụng giao diện dòng thời gian của Perfetto. Khả năng xử lý các dấu vết thời gian dài kéo dài hàng giờ hoặc hàng ngày - thay vì micro giây điển hình của việc theo dõi hệ thống - chứng minh tính linh hoạt của công cụ trên các lĩnh vực khác nhau một cách đáng kể.
Các Tính Năng Chính của Perfetto:
- Xử lý phía client trong trình duyệt (không cần server)
 - Hỗ trợ các tệp trace có dung lượng nhiều gigabyte
 - Giao diện SQL để phân tích trace nâng cao
 - Giao diện người dùng modular với hệ thống plugin
 - Hỗ trợ nhúng qua iframe/postMessage
 - Định dạng trace JSON chuẩn để tích hợp dễ dàng
 
Hướng Tới Tương Lai: Thông Minh vs Linh Hoạt
Thách thức đang diễn ra đối với nhóm phát triển Perfetto nằm ở việc cân bằng giữa phân tích tự động, thông minh với việc hiển thị linh hoạt, tổng quát. Các công cụ như Instruments của Apple xuất sắc trong việc hướng dẫn người dùng đến các vấn đề hiệu suất phổ biến thông qua chuyên môn được tích hợp sẵn, nhưng đạt được điều này thông qua tích hợp nền tảng chặt chẽ. Ngược lại, Perfetto nhắm đến việc hỗ trợ mọi thứ từ theo dõi cấp kernel đến các số liệu ứng dụng tùy chỉnh trên nhiều nền tảng.
Sự phát triển trong tương lai dường như tập trung vào việc làm cho công cụ thông minh hơn cho các dấu vết tổng hợp trong khi vẫn duy trì bản chất tổng quát của nó. Các tính năng như tạo bản nhạc tự động từ các truy vấn SQL và điều hướng thu phóng được cải thiện cho thấy cam kết của nhóm trong việc thu hẹp khoảng cách này. Cuộc thảo luận xung quanh việc thêm hỗ trợ macro và tự động hóa giao diện người dùng thông qua API nhúng gợi ý về một tương lai nơi Perfetto có thể cung cấp phân tích có hướng dẫn nhiều hơn ngay cả đối với các định dạng dấu vết tùy chỉnh.
Hành trình của Perfetto từ trình theo dõi cụ thể cho Android đến trình gỡ lỗi hiệu suất phổ quát chứng minh cách các công cụ dành cho nhà phát triển có thể phát triển vượt ra ngoài phạm vi ban đầu của chúng khi chúng giải quyết tốt các vấn đề cơ bản. Khả năng xử lý phía máy khách, khả năng phân tích SQL và định dạng dữ liệu đơn giản của công cụ đã chứng minh là có giá trị vượt xa các hệ sinh thái Linux và Android nơi nó bắt đầu. Khi việc nhúng trở nên tinh vi hơn và giao diện người dùng trở nên mô-đun hơn, Perfetto dường như đã sẵn sàng để trở nên trung tâm hơn nữa đối với quy trình làm việc gỡ lỗi hiệu suất trên toàn bộ bối cảnh phát triển phần mềm.
Tham khảo: Perfetto: The Swiss Army Knife for Linux Client/Embedded Tracing



