Xác định Jank liên quan đến năng lực

Dung lượng là tổng lượng tài nguyên (CPU, GPU, v.v.) mà thiết bị sở hữu trong một khoảng thời gian. Trang này mô tả cách xác định và giải quyết các vấn đề giật liên quan đến dung lượng.

Thống đốc phản ứng chậm

Để tránh hiện tượng giật, bộ điều chỉnh tần số CPU cần có khả năng phản hồi nhanh chóng với khối lượng công việc tăng vọt. Hầu hết các ứng dụng UI đều tuân theo cùng một mẫu cơ bản:

  1. Người dùng đang đọc màn hình.
  2. Người dùng chạm vào màn hình: chạm vào nút, cuộn, v.v.
  3. Cuộn màn hình, thay đổi hoạt động hoặc tạo hoạt ảnh theo cách nào đó để phản hồi đầu vào.
  4. Hệ thống ngừng hoạt động khi nội dung mới được hiển thị.
  5. Người dùng quay lại đọc màn hình.

Các thiết bị Pixel và Nexus triển khai tính năng tăng cường cảm ứng để sửa đổi hành vi của bộ điều chỉnh tần số CPU (và bộ lập lịch) khi chạm. Để tránh tăng tốc chậm đến tần số xung nhịp cao (có thể khiến thiết bị bị rớt khung hình khi chạm), tăng cường cảm ứng thường đặt mức sàn tần số trên CPU để đảm bảo có đủ dung lượng CPU khi chạm. Sàn tồn tại trong một khoảng thời gian sau khi chạm vào (thường là khoảng hai giây).

Pixel cũng sử dụng nhóm schedtune do Energy Aware Scheduling (EAS) cung cấp làm tín hiệu tăng cường cảm ứng bổ sung: Các ứng dụng hàng đầu nhận thêm trọng lượng thông qua schedtune để đảm bảo chúng có đủ dung lượng CPU để chạy nhanh. Nexus 5X và 6P có khoảng cách hiệu năng lớn hơn nhiều giữa cụm CPU nhỏ và lớn (tương ứng là A53 và A57) so với Pixel có CPU Kryo. Chúng tôi nhận thấy rằng cụm CPU nhỏ không phải lúc nào cũng đủ để hiển thị giao diện người dùng mượt mà, đặc biệt là với các nguồn gây giật khác trên thiết bị.

Theo đó, trên Nexus 5X và 6P, tính năng tăng cường cảm ứng sẽ sửa đổi hành vi của bộ lập lịch để giúp các ứng dụng nền trước có nhiều khả năng di chuyển đến các lõi lớn hơn (về mặt khái niệm, điều này tương tự như tần số sàn trên CPU). Nếu không có sự thay đổi bộ lập lịch để làm cho các ứng dụng trên nền trước có nhiều khả năng di chuyển đến cụm CPU lớn hơn thì các ứng dụng trên nền trước có thể không đủ dung lượng CPU để kết xuất cho đến khi bộ lập lịch quyết định cân bằng tải luồng vào lõi CPU lớn. Bằng cách thay đổi hành vi của bộ lập lịch trong khi tăng cường cảm ứng, nhiều khả năng luồng giao diện người dùng sẽ chạy ngay lập tức trên lõi lớn và tránh bị giật trong khi không buộc nó phải luôn chạy trên lõi lớn, điều này có thể ảnh hưởng nghiêm trọng đến mức tiêu thụ điện năng.

tiết lưu nhiệt

Điều tiết nhiệt xảy ra khi thiết bị phải giảm tổng lượng nhiệt tỏa ra, thường được thực hiện bằng cách giảm xung nhịp CPU, GPU và DRAM. Không có gì đáng ngạc nhiên, điều này thường dẫn đến hiện tượng giật vì hệ thống có thể không còn cung cấp đủ dung lượng để hiển thị trong một khoảng thời gian nhất định. Cách duy nhất để tránh hiện tượng tiết lưu nhiệt là sử dụng ít năng lượng hơn. Không có nhiều cách để thực hiện việc này, nhưng dựa trên kinh nghiệm của chúng tôi với các SOC trước đây, chúng tôi có một số đề xuất dành cho các nhà cung cấp hệ thống.

Đầu tiên, khi xây dựng SOC mới với kiến ​​trúc CPU không đồng nhất, hãy đảm bảo đường cong hiệu suất/W của các cụm CPU trùng nhau. Đường cong hiệu suất/W tổng thể cho toàn bộ bộ xử lý phải là một đường liên tục. Sự gián đoạn trong đường cong hiệu suất/W buộc bộ lập lịch và bộ điều chỉnh tần số phải đoán khối lượng công việc cần gì; Để ngăn chặn hiện tượng giật, bộ lập lịch và bộ điều chỉnh tần số đã sai lầm khi cung cấp cho khối lượng công việc nhiều dung lượng hơn mức yêu cầu. Điều này dẫn đến việc tiêu tốn quá nhiều năng lượng, góp phần điều tiết nhiệt.

Hãy tưởng tượng một SOC giả định có hai cụm CPU:

  • Cụm 1, cụm nhỏ, có thể tiêu thụ từ 100-300mW và đạt điểm chuẩn thông lượng 100-300 tùy thuộc vào đồng hồ.
  • Cụm 2, cụm lớn, có thể tiêu thụ từ 1000 đến 1600mW và đạt điểm từ 800 đến 1200 trong cùng một điểm chuẩn thông lượng tùy thuộc vào đồng hồ.

Trong điểm chuẩn này, điểm cao hơn sẽ nhanh hơn. Mặc dù không mong muốn hơn là chậm hơn, nhanh hơn == tiêu thụ điện năng lớn hơn.

Nếu người lên lịch cho rằng khối lượng công việc giao diện người dùng sẽ yêu cầu điểm tương đương 310 trên điểm chuẩn thông lượng đó thì lựa chọn tốt nhất để tránh hiện tượng giật là chạy cụm lớn ở tần suất thấp nhất, gây lãng phí điện năng đáng kể. (Điều này phụ thuộc vào hoạt động của CPUidle và tốc độ chạy không tải; SOC có đường cong hiệu suất/W liên tục sẽ dễ tối ưu hóa hơn.)

Thứ hai, sử dụng cpuset. Đảm bảo bạn đã kích hoạt bộ xử lý trong kernel và trong BoardConfig.mk của mình. Bạn cũng phải thiết lập các bài tập cpuset thực tế trong init.rc dành riêng cho thiết bị của mình. Một số nhà cung cấp để tính năng này bị vô hiệu hóa trong BSP của họ với hy vọng họ có thể sử dụng các gợi ý khác để tác động đến hành vi của người lập lịch trình; chúng tôi cảm thấy điều này không có ý nghĩa. CPUset rất hữu ích trong việc đảm bảo cân bằng tải giữa các CPU được thực hiện theo cách phản ánh những gì người dùng thực sự đang làm trên thiết bị.

Trình quản lý hoạt động chỉ định ứng dụng cho các bộ vi xử lý khác nhau dựa trên tầm quan trọng tương đối của các ứng dụng đó (trên cùng, nền trước, nền sau), với các ứng dụng quan trọng hơn sẽ có nhiều quyền truy cập hơn vào lõi CPU. Điều này giúp đảm bảo chất lượng dịch vụ cho các ứng dụng nền trước và ứng dụng hàng đầu.

cpuset rất hữu ích trên các cấu hình CPU đồng nhất, nhưng bạn không nên gửi thiết bị có cấu hình CPU không đồng nhất mà không kích hoạt cpuset. Nexus 6P là một mô hình tốt về cách sử dụng bộ xử lý trên các cấu hình CPU không đồng nhất; sử dụng nó làm cơ sở cho cấu hình thiết bị của riêng bạn.

CPUset cũng mang lại lợi thế về năng lượng bằng cách đảm bảo các luồng nền không quan trọng về hiệu năng sẽ không bao giờ được cân bằng tải cho các lõi CPU lớn, nơi chúng có thể tiêu tốn nhiều năng lượng hơn đáng kể mà không mang lại bất kỳ lợi ích nào mà người dùng nhận thấy. Điều này cũng có thể giúp tránh hiện tượng tiết lưu nhiệt. Mặc dù điều tiết nhiệt là một vấn đề về dung lượng nhưng những cải tiến về hiện tượng biến động có tác động rất lớn đến hiệu suất giao diện người dùng khi điều tiết nhiệt. Bởi vì hệ thống sẽ chạy gần hơn đến khả năng hiển thị 60FPS nên sẽ ít bị giật hơn để gây ra hiện tượng rớt khung hình.