Chúng tôi là nhóm chuỗi công cụ LLVM của Android. Một trong những ưu tiên hàng đầu của chúng tôi là cải thiện hiệu suất Android thông qua các kỹ thuật tối ưu hoá trong hệ sinh thái LLVM. Chúng tôi không ngừng tìm cách giúp Android hoạt động nhanh hơn, mượt mà hơn và hiệu quả hơn.Mặc dù phần lớn công việc tối ưu hoá của chúng tôi diễn ra trong không gian người dùng, nhưng nhân hệ điều hành vẫn là cốt lõi của hệ thống. Hôm nay, chúng tôi rất vui mừng được chia sẻ cách chúng tôi đưa Tính năng tối ưu hoá tự động dựa trên ý kiến phản hồi (AutoFDO) vào nhân hệ điều hành Android để mang lại hiệu quả vượt trội cho người dùng.
AutoFDO là gì?
Trong quá trình tạo bản dựng phần mềm tiêu chuẩn, trình biên dịch đưa ra hàng nghìn quyết định nhỏ, chẳng hạn như có nên nội tuyến một hàm hay không và nhánh nào của điều kiện có khả năng được thực thi, dựa trên các gợi ý về mã tĩnh.Mặc dù các phương pháp phỏng đoán này rất hữu ích, nhưng không phải lúc nào chúng cũng dự đoán chính xác quá trình thực thi mã trong quá trình sử dụng điện thoại thực tế.
AutoFDO thay đổi điều này bằng cách sử dụng các mẫu thực thi thực tế để hướng dẫn trình biên dịch. Những mẫu này thể hiện các đường dẫn thực thi lệnh phổ biến nhất mà mã thực hiện trong quá trình sử dụng thực tế, được ghi lại bằng cách ghi lại nhật ký phân nhánh của CPU. Mặc dù dữ liệu này có thể được thu thập từ các thiết bị trong đội xe, nhưng đối với nhân, chúng tôi tổng hợp dữ liệu này trong môi trường phòng thí nghiệm bằng cách sử dụng các khối lượng công việc đại diện, chẳng hạn như chạy 100 ứng dụng phổ biến nhất. Chúng tôi sử dụng một trình phân tích tài nguyên lấy mẫu để thu thập dữ liệu này, xác định những phần nào của mã là "nóng" (thường được sử dụng) và những phần nào là "lạnh". Khi chúng tôi tạo lại nhân bằng các hồ sơ này, trình biên dịch có thể đưa ra các quyết định tối ưu hoá thông minh hơn nhiều, phù hợp với khối lượng công việc thực tế của Android.
Để hiểu rõ tác động của việc tối ưu hoá này, hãy xem xét những điểm chính sau:
- Trên Android, nhân hệ điều hành chiếm khoảng 40% thời gian CPU.
- Chúng tôi đã sử dụng AutoFDO để tối ưu hoá các tệp thực thi và thư viện gốc trong không gian người dùng, giúp cải thiện khoảng 4% thời gian khởi chạy ứng dụng khi chưa có dữ liệu và giảm 1% thời gian khởi động.
Hiệu suất thực tế
Chúng tôi nhận thấy những điểm cải thiện đáng kể về các chỉ số chính của Android nhờ tận dụng hồ sơ từ môi trường phòng thí nghiệm có kiểm soát. Các hồ sơ này được thu thập bằng cách sử dụng tính năng thu thập dữ liệu và khởi chạy ứng dụng, đồng thời được đo lường trên các thiết bị Pixel trên các nhân 6.1, 6.6 và 6.12.
Những điểm cải tiến đáng chú ý nhất được liệt kê dưới đây. Bạn có thể tìm thấy thông tin chi tiết về hồ sơ AutoFDO cho các phiên bản kernel này trong kho lưu trữ kernel Android tương ứng cho các kernel android16-6.12 và android15-6.6.
Đây không chỉ là những con số lý thuyết. Điều này giúp giao diện mượt mà hơn, chuyển đổi ứng dụng nhanh hơn, thời lượng pin dài hơn và thiết bị phản hồi nhanh hơn cho người dùng cuối.
Cách hoạt động: Đường ống
Chiến lược triển khai của chúng tôi bao gồm một pipeline phức tạp để đảm bảo hồ sơ luôn phù hợp và hiệu suất luôn ổn định.
Bước 1: Thu thập hồ sơ
Mặc dù chúng tôi dựa vào nhóm thử nghiệm nội bộ để lập hồ sơ các tệp nhị phân không gian người dùng, nhưng chúng tôi đã chuyển sang môi trường phòng thí nghiệm có kiểm soát cho Hình ảnh hạt nhân chung (GKI). Việc tách quy trình lập hồ sơ khỏi chu kỳ phát hành thiết bị cho phép cập nhật linh hoạt, tức thì mà không phụ thuộc vào các phiên bản hạt nhân đã triển khai. Điều quan trọng là các thử nghiệm xác nhận rằng dữ liệu dựa trên phòng thí nghiệm này mang lại mức tăng hiệu suất tương đương với mức tăng hiệu suất của các đội xe trong thực tế.
- Công cụ và môi trường: Chúng tôi cài đặt ROM hình ảnh nhân mới nhất vào các thiết bị thử nghiệm và sử dụng simpleperf để ghi lại các luồng thực thi lệnh. Quy trình này dựa vào các chức năng phần cứng để ghi lại lịch sử phân nhánh, cụ thể là sử dụng Tiện ích theo dõi nhúng (ETE) của ARM và Tiện ích bộ đệm theo dõi (TRBE) của ARM trên các thiết bị Pixel.
-
Tải: Chúng tôi tạo ra một tải đại diện bằng cách sử dụng 100 ứng dụng phổ biến nhất trong Bộ kiểm tra tính tương thích của ứng dụng Android (C-Suite). Để thu thập dữ liệu chính xác nhất, chúng tôi tập trung vào:
- Khởi chạy ứng dụng: Tối ưu hoá cho độ trễ của người dùng dễ thấy nhất
- Thu thập dữ liệu ứng dụng dựa trên AI: Mô phỏng các hoạt động tương tác liên tục và không ngừng phát triển của người dùng
- Giám sát trên toàn hệ thống: Ghi lại không chỉ các hoạt động của ứng dụng trên nền trước mà còn cả các khối lượng công việc quan trọng ở nền sau và hoạt động giao tiếp giữa các quy trình
- Xác thực: Tải công việc được tổng hợp này cho thấy 85% mức độ tương đồng với các mẫu thực thi được thu thập từ nhóm máy chủ nội bộ của chúng tôi.
- Dữ liệu được nhắm đến: Bằng cách lặp lại các kiểm thử này một cách đầy đủ, chúng tôi ghi lại các mẫu thực thi có độ trung thực cao, thể hiện chính xác lượt tương tác của người dùng trong thế giới thực với các ứng dụng phổ biến nhất. Hơn nữa, khung có thể mở rộng này cho phép chúng tôi tích hợp liền mạch các khối lượng công việc và điểm chuẩn bổ sung để mở rộng phạm vi của mình.
Bước 2: Xử lý hồ sơ
Chúng tôi xử lý dữ liệu dấu vết thô sau khi thu thập để đảm bảo dữ liệu đó sạch, hiệu quả và sẵn sàng cho trình biên dịch.
- Tổng hợp: Chúng tôi hợp nhất dữ liệu từ nhiều lần chạy thử và thiết bị vào một chế độ xem hệ thống duy nhất.
- Chuyển đổi: Chúng tôi chuyển đổi các dấu vết thô thành định dạng hồ sơ AutoFDO, lọc bỏ các biểu tượng không mong muốn nếu cần.
- Cắt bớt hồ sơ: Chúng tôi cắt bớt hồ sơ để xoá dữ liệu cho các chức năng "không hoạt động", cho phép các chức năng này sử dụng chế độ tối ưu hoá tiêu chuẩn. Điều này giúp ngăn chặn các hồi quy trong mã hiếm khi được dùng và tránh làm tăng kích thước nhị phân một cách không cần thiết.
Bước 3: Kiểm thử hồ sơ
Trước khi triển khai, các hồ sơ sẽ trải qua quy trình xác minh nghiêm ngặt để đảm bảo mang lại hiệu suất ổn định mà không gặp rủi ro về độ ổn định.
- Phân tích hồ sơ và tệp nhị phân: Chúng tôi so sánh nghiêm ngặt nội dung của hồ sơ mới (bao gồm cả các hàm nóng, số lượng mẫu và kích thước hồ sơ) với các phiên bản trước. Chúng tôi cũng sử dụng hồ sơ này để tạo một hình ảnh kernel mới, phân tích các tệp nhị phân để đảm bảo rằng các thay đổi đối với phần văn bản nhất quán với những gì mong đợi.
- Xác minh hiệu suất: Chúng tôi chạy các điểm chuẩn có mục tiêu trên hình ảnh nhân mới. Điều này xác nhận rằng bản phát hành duy trì những điểm cải thiện hiệu suất do các đường cơ sở trước đó thiết lập.
Thông tin cập nhật liên tục
Mã tự nhiên "trôi" theo thời gian, vì vậy, một hồ sơ tĩnh cuối cùng sẽ mất đi hiệu quả. Để duy trì hiệu suất cao nhất, chúng tôi liên tục chạy quy trình này để cung cấp các bản cập nhật thường xuyên:
- Làm mới thường xuyên: Chúng tôi làm mới hồ sơ trong các nhánh LTS của nhân Android trước mỗi bản phát hành GKI, đảm bảo mọi bản dựng đều có dữ liệu hồ sơ mới nhất.
-
Mở rộng trong tương lai: Hiện tại, chúng tôi đang cung cấp những bản cập nhật này cho các nhánh
android16-6.12vàandroid15-6.6, đồng thời sẽ mở rộng phạm vi hỗ trợ cho các phiên bản GKI mới hơn, chẳng hạn nhưandroid17-6.18sắp ra mắt.
Đảm bảo tính ổn định
Một câu hỏi thường gặp về tính năng tối ưu hoá theo cấu hình là liệu tính năng này có gây ra rủi ro về độ ổn định hay không. Vì AutoFDO chủ yếu ảnh hưởng đến các phương pháp phỏng đoán của trình biên dịch, chẳng hạn như nội tuyến hàm và bố cục mã, thay vì làm thay đổi logic của mã nguồn, nên AutoFDO vẫn duy trì tính toàn vẹn chức năng của nhân. Công nghệ này đã được chứng minh ở quy mô lớn, đóng vai trò là một phương pháp tối ưu hoá tiêu chuẩn cho các thư viện nền tảng Android, ChromeOS và cơ sở hạ tầng máy chủ của Google trong nhiều năm.
Để đảm bảo hơn nữa hành vi nhất quán, chúng tôi áp dụng chiến lược "thận trọng theo mặc định". Các hàm không được ghi lại trong hồ sơ có độ trung thực cao sẽ được tối ưu hoá bằng các phương thức trình biên dịch tiêu chuẩn. Điều này đảm bảo rằng các phần "lạnh" hoặc hiếm khi được thực thi của nhân hệ điều hành hoạt động chính xác như trong bản dựng tiêu chuẩn, ngăn chặn tình trạng giảm hiệu suất hoặc hành vi không mong muốn trong các trường hợp đặc biệt.
Hướng đến tương lai
Chúng tôi hiện đang triển khai AutoFDO trên các nhánh android16-6.12 và android15-6.6. Ngoài lần triển khai ban đầu này, chúng tôi nhận thấy có một số hướng đi đầy hứa hẹn để tiếp tục nâng cao công nghệ này:
-
Mở rộng phạm vi tiếp cận: Chúng tôi mong muốn triển khai hồ sơ AutoFDO cho các phiên bản nhân GKI mới hơn và các mục tiêu bản dựng bổ sung ngoài phạm vi hỗ trợ
aarch64hiện tại. -
Tối ưu hoá mô-đun GKI: Hiện tại, hoạt động tối ưu hoá của chúng tôi tập trung vào tệp nhị phân nhân hệ điều hành chính (
vmlinux). Việc mở rộng AutoFDO sang các mô-đun GKI có thể mang lại lợi ích về hiệu suất cho phần lớn hệ thống con nhân hệ điều hành. - Hỗ trợ mô-đun của nhà cung cấp: Chúng tôi cũng quan tâm đến việc hỗ trợ AutoFDO cho các mô-đun của nhà cung cấp được tạo bằng Bộ phát triển trình điều khiển (DDK). Với sự hỗ trợ đã có trong hệ thống xây dựng (Kleaf) và các công cụ lập hồ sơ (simpleperf), các nhà cung cấp có thể áp dụng những kỹ thuật tối ưu hoá tương tự cho trình điều khiển phần cứng cụ thể của họ.
- Phạm vi hồ sơ rộng hơn: Có khả năng thu thập hồ sơ từ nhiều Hành trình trọng yếu của người dùng (CUJ) hơn để tối ưu hoá các hồ sơ đó.
Bằng cách đưa AutoFDO vào nhân Android, chúng tôi đảm bảo rằng nền tảng của hệ điều hành được tối ưu hoá cho cách bạn sử dụng thiết bị mỗi ngày.
Tiếp tục đọc
-
Tin tức về sản phẩm
Android Studio Panda 4 hiện đã ổn định và sẵn sàng để bạn sử dụng trong bản phát hành chính thức. Bản phát hành này có Chế độ lập kế hoạch, tính năng Dự đoán nội dung chỉnh sửa tiếp theo và nhiều tính năng khác, giúp bạn dễ dàng tạo ứng dụng Android chất lượng cao hơn bao giờ hết.
Matt Dyor • Đọc trong 5 phút
-
Tin tức về sản phẩm
Nếu là nhà phát triển Android và muốn triển khai các tính năng AI cải tiến vào ứng dụng của mình, thì bạn có thể tham khảo những nội dung cập nhật mới và mạnh mẽ mà chúng tôi mới ra mắt gần đây.
Thomas Ezan • Đọc trong 3 phút
-
Tin tức về sản phẩm
Android 17 đã đạt đến bản beta 4, bản beta theo lịch trình cuối cùng của chu kỳ phát hành này, một cột mốc quan trọng đối với khả năng tương thích của ứng dụng và độ ổn định của nền tảng.
Daniel Galpin • Đọc trong 4 phút
Nhận thông tin cập nhật
Nhận thông tin chi tiết mới nhất về hoạt động phát triển trên Android trong hộp thư đến của bạn mỗi tuần.