Quản lý Hiệu suất

Quản lý sức mạnh và hiệu suất của thiết bị Android có thể giúp đảm bảo các ứng dụng chạy ổn định và mượt mà trên nhiều loại phần cứng. Trong Android 7.0 trở lên, OEM có thể triển khai hỗ trợ cho các gợi ý về hiệu suất bền vững cho phép ứng dụng duy trì hiệu suất thiết bị ổn định và chỉ định một lõi độc quyền để cải thiện hiệu suất cho các ứng dụng nền trước, sử dụng nhiều CPU.

Hiệu suất bền vững

Đối với các ứng dụng chạy trong thời gian dài (trò chơi, máy ảnh, RenderScript , xử lý âm thanh), hiệu suất có thể thay đổi đáng kể khi đạt đến giới hạn nhiệt độ thiết bị và hệ thống trên động cơ chip (SoC) bị điều chỉnh. Các nhà phát triển ứng dụng tạo ra các ứng dụng có hiệu suất cao, chạy lâu bị hạn chế vì khả năng của nền tảng cơ bản là mục tiêu di động khi thiết bị bắt đầu nóng lên.

Để giải quyết những hạn chế này, Android 7.0 đã giới thiệu hỗ trợ duy trì hiệu suất, cho phép các OEM cung cấp gợi ý về khả năng hiệu suất của thiết bị cho các ứng dụng chạy lâu. Các nhà phát triển ứng dụng có thể sử dụng những gợi ý này để điều chỉnh ứng dụng nhằm đạt được mức hiệu suất thiết bị nhất quán và có thể dự đoán được trong thời gian dài.

Ngành kiến ​​​​trúc

Ứng dụng Android có thể yêu cầu nền tảng chuyển sang chế độ hiệu suất bền vững trong đó thiết bị Android có thể duy trì mức hiệu suất ổn định trong thời gian dài.

Hình 1. Kiến trúc chế độ hiệu suất bền vững

Thực hiện

Để hỗ trợ hiệu suất bền vững trong Android 7.0 trở lên, OEM phải:

  • Thực hiện các thay đổi dành riêng cho thiết bị đối với HAL nguồn để khóa tần số CPU/GPU tối đa hoặc thực hiện các tối ưu hóa khác nhằm ngăn chặn hiện tượng tiết lưu nhiệt.
  • Triển khai gợi ý mới POWER_HINT_SUSTAINED_PERFORMANCE trong power HAL.
  • Khai báo hỗ trợ bằng cách trả về TRUE thông qua API isSustainedPerformanceModeSupported() .
  • Triển khai Window.setSustainedPerformanceMode .

Trong quá trình triển khai tham chiếu Nexus, gợi ý nguồn sẽ giới hạn tần số tối đa của CPU và GPU ở mức bền vững cao nhất. Hãy nhớ rằng việc giảm thanh MAX ở tần số CPU/GPU sẽ làm giảm tốc độ khung hình, nhưng tốc độ thấp hơn này được ưu tiên ở chế độ này do tính bền vững của nó. Ví dụ: một thiết bị sử dụng xung nhịp tối đa bình thường có thể hiển thị ở tốc độ 60 FPS trong vài phút nhưng sau khi thiết bị nóng lên, thiết bị có thể tăng tốc lên 30 FPS vào cuối 30 phút. Ví dụ: khi sử dụng chế độ duy trì, thiết bị có thể hiển thị ổn định ở tốc độ 45 FPS trong toàn bộ 30 phút. Mục tiêu là tốc độ khung hình khi sử dụng chế độ cao (hoặc cao hơn) tốc độ khung hình khi không sử dụng chế độ đó và nhất quán theo thời gian để các nhà phát triển không phải đuổi theo mục tiêu đang di chuyển.

Chúng tôi thực sự khuyên bạn nên triển khai chế độ duy trì sao cho thiết bị đạt được hiệu suất duy trì cao nhất có thể—chứ không chỉ các giá trị tối thiểu cần thiết để vượt qua thử nghiệm (ví dụ: chọn giới hạn tần số MAX cao nhất có thể để không khiến thiết bị giảm nhiệt theo thời gian).

Lưu ý : Không cần phải giới hạn tốc độ xung nhịp MAX để triển khai chế độ duy trì.

Thẩm định

OEM có thể sử dụng thử nghiệm CTS (Android 7.0 trở lên) để xác minh việc triển khai API hiệu suất bền vững của họ. Bài kiểm tra chạy một khối lượng công việc trong khoảng 30 phút và đánh giá hiệu suất khi bật và không bật chế độ duy trì:

  • Khi bật chế độ duy trì, tốc độ khung hình phải duy trì tương đối ổn định (kiểm tra đo phần trăm thay đổi về tốc độ khung hình theo thời gian và yêu cầu thay đổi <5%).
  • Khi bật chế độ duy trì, tốc độ khung hình không được thấp hơn tốc độ khung hình ở cuối 30 phút khi chế độ bị tắt.

Ngoài ra, bạn có thể kiểm tra thủ công quá trình triển khai của mình với một số khối lượng công việc sử dụng nhiều CPU và GPU để đảm bảo thiết bị không tăng giảm nhiệt sau 30 phút sử dụng. Trong thử nghiệm nội bộ, chúng tôi đã sử dụng khối lượng công việc mẫu bao gồm trò chơi và ứng dụng đo điểm chuẩn (ví dụ: gfxbench ).

Lõi độc quyền

Đối với khối lượng công việc đòi hỏi nhiều CPU và nhạy cảm với thời gian, việc được ưu tiên bởi một luồng khác có thể là sự khác biệt giữa việc đưa ra thời hạn khung hay không. Đối với các ứng dụng có yêu cầu nghiêm ngặt về độ trễ và tốc độ khung hình (chẳng hạn như ứng dụng âm thanh hoặc thực tế ảo), việc có lõi CPU độc quyền có thể đảm bảo mức hiệu suất có thể chấp nhận được.

Các thiết bị chạy Android 7.0 trở lên hiện có thể dành riêng một lõi rõ ràng cho ứng dụng nền trước hàng đầu, cải thiện hiệu suất cho tất cả các ứng dụng nền trước và cung cấp cho các ứng dụng có khối lượng công việc cường độ cao nhiều quyền kiểm soát hơn đối với cách phân bổ công việc của chúng trên các lõi CPU.

Để hỗ trợ lõi độc quyền trên thiết bị:

  • Kích hoạt cpusets và định cấu cpuset chỉ chứa ứng dụng nền trước hàng đầu.
  • Đảm bảo một lõi (đây là lõi độc quyền) được dành riêng cho các luồng từ cpuset này.
  • Triển khai API getExclusiveCores để trả về số lõi của lõi độc quyền.

Để xác định quy trình nào được lên lịch trên lõi nào, hãy sử dụng systrace trong khi chạy bất kỳ khối lượng công việc nào và xác minh rằng không có luồng không gian người dùng nào từ các ứng dụng ngoài ứng dụng nền trước hàng đầu được lên lịch trên lõi độc quyền.

Để xem cách triển khai tham chiếu cho Nexus 6P, hãy tham khảo android//device/huawei/angler/power/power.c .