Được giới thiệu trong Android 12, hệ thống xây dựng Android hỗ trợ tối ưu hoá các mô-đun Android gốc có quy tắc xây dựng bản thiết kế bằng cách sử dụng Tính năng Tối ưu hoá tự động dựa trên phản hồi (AutoFDO). AutoFDO là một kỹ thuật tối ưu hoá dựa trên việc lấy mẫu. AutoFDO ghi lại hành vi thời gian chạy của các tệp nhị phân hệ thống, cho phép trình biên dịch tối ưu hoá hiệu suất tốt hơn trong khi cũng giảm kích thước tệp nhị phân. Android hỗ trợ thu thập hồ sơ từ các thiết bị X86, X86_64, ARM và ARM64, mặc dù bạn có thể sử dụng hồ sơ trên nhiều cấu trúc.
AutoFDO là phiên bản kế nhiệm của tính năng Tối ưu hoá theo hướng dẫn của hồ sơ (PGO) dựa trên đo lường.
So với các hồ sơ dựa trên hoạt động đo lường khác, AutoFDO có những lợi ích bổ sung sau:
Thu thập dữ liệu không xâm nhập: Bạn có thể thu thập hồ sơ AutoFDO từ các thiết bị phát triển hoặc thiết bị của người dùng mà không cần sửa đổi quy tắc xây dựng.
Đại diện cho mức sử dụng trong thực tế: AutoFDO đại diện cho hành vi sử dụng trong thực tế giả định rằng hồ sơ được thu thập từ các thiết bị của người dùng, trong khi PGO đo lường chỉ đại diện cho khối lượng công việc thu thập tổng hợp. Việc tạo một khối lượng công việc thu thập dữ liệu hoàn toàn phù hợp với mức sử dụng trong thế giới thực thường không đơn giản.
AOSP đi kèm với các hồ sơ AutoFDO cho hầu hết các dự án quan trọng về hiệu suất. Các hồ sơ này được thu thập từ các thiết bị điện thoại và máy tính bảng, đồng thời thể hiện các mẫu sử dụng chung của các thiết bị này. Các hồ sơ nằm trong toolchain/pgo-profiles/sampling
. AFDO được bật theo mặc định trên AOSP.
Bật AutoFDO cho quy tắc bản dựng bản thiết kế
Để bật AutoFDO cho các quy tắc tạo bản thiết kế, hãy thêm afdo: true
vào quy tắc thư viện hoặc quy tắc nhị phân dùng chung.
Thu thập hồ sơ
Hồ sơ đi kèm được cung cấp cùng với AOSP không hỗ trợ những trường hợp cụ thể sau:
- Bao gồm các dự án AutoFDO bổ sung
- Sự hiện diện của mã được sửa đổi cục bộ
- Các mẫu sử dụng riêng biệt liên kết với hệ thống của bạn
Nếu gặp một trong những trường hợp này, bạn phải thu thập hồ sơ trực tiếp từ các thiết bị phát triển hoặc thiết bị của người dùng.
Để biết hướng dẫn chi tiết về cách chuẩn bị thiết bị ARM để thu thập hồ sơ AutoFDO, hãy tham khảo bài viết Thu thập dữ liệu ETM cho AutoFDO.
Để biết hướng dẫn chi tiết về cách chuẩn bị thiết bị X86 để thu thập hồ sơ AutoFDO, hãy tham khảo bài viết Thu thập dữ liệu LBR cho AutoFDO.
Để biết thông tin về cách bật tính năng tự động thu thập, xử lý và tải hồ sơ lên ở chế độ nền, hãy xem phần Profcollect.
Phân tích hồ sơ AutoFDO
Android sử dụng các hồ sơ AutoFDO LLVM tiêu chuẩn. Bạn có thể đọc các hồ sơ AFDO bằng công cụ llvm-profdata
của LLVM. Tập lệnh afdo_summary.sh
(toolchain/pgo-profiles/scripts/afdo_summary.sh
) sẽ tự động tạo các hàm được thực thi thường xuyên nhất theo hồ sơ AutoFDO.