Đo công suất thành phần

Bạn có thể xác định mức tiêu thụ điện của từng thành phần bằng cách so sánh dòng điện do thiết bị rút ra khi thành phần đó ở trạng thái mong muốn (chẳng hạn như bật, hoạt động, quét) và khi thành phần đó tắt. Đo dòng điện tức thời trung bình được rút ra trên thiết bị ở điện áp danh định bằng cách sử dụng bộ theo dõi nguồn bên ngoài, chẳng hạn như nguồn điện dự phòng hoặc các công cụ giám sát pin chuyên dụng (như phần mềm Monsoon Solution Inc. Power Monitor và Power Tool).

Các nhà sản xuất thường cung cấp thông tin về dòng điện tiêu thụ của một bộ phận riêng lẻ. Hãy sử dụng thông tin này nếu nó thể hiện chính xác dòng điện lấy từ pin của thiết bị trong thực tế. Tuy nhiên, hãy xác thực các giá trị do nhà sản xuất cung cấp trước khi sử dụng các giá trị đó trong cấu hình nguồn thiết bị của bạn.

Kiểm soát mức tiêu thụ điện năng

Khi đo, hãy đảm bảo thiết bị không có kết nối với nguồn sạc bên ngoài, chẳng hạn như kết nối USB với máy chủ phát triển được sử dụng khi chạy Cầu gỡ lỗi Android (adb). Thiết bị được thử nghiệm có thể lấy dòng điện từ máy chủ, do đó làm giảm số đo ở pin. Tránh kết nối USB khi đang di chuyển (OTG), vì thiết bịOTG có thể lấy dòng điện từ thiết bị đang được thử nghiệm.

Ngoại trừ thành phần đang được đo, hệ thống phải chạy ở mức tiêu thụ điện năng không đổi để tránh các phép đo không chính xác do những thay đổi ở các thành phần khác gây ra. Các hoạt động của hệ thống có thể gây ra những thay đổi không mong muốn đối với phép đo công suất bao gồm:

  • Hoạt động nhận, truyền hoặc quét di động, Wi-Fi và Bluetooth . Khi không đo công suất sóng vô tuyến di động, hãy đặt thiết bị ở chế độ trên máy bay và bật Wi-Fi hoặc Bluetooth nếu thích hợp.
  • Bật/tắt màn hình . Màu sắc hiển thị khi màn hình bật có thể ảnh hưởng đến việc tiêu thụ điện năng trên một số công nghệ màn hình. Tắt màn hình khi đo giá trị cho các thành phần không phải màn hình.
  • Hệ thống tạm dừng/tiếp tục . Trạng thái tắt màn hình có thể kích hoạt hệ thống treo, khiến các bộ phận của thiết bị ở trạng thái nguồn điện thấp hoặc tắt. Điều này có thể ảnh hưởng đến mức tiêu thụ điện năng của bộ phận được đo và gây ra sự chênh lệch lớn trong chỉ số công suất khi hệ thống tiếp tục gửi cảnh báo theo định kỳ, v.v. Để biết chi tiết, hãy xem phần Tạm dừng hệ thống điều khiển .
  • CPU thay đổi tốc độ và vào/ra trạng thái không hoạt động của bộ lập lịch công suất thấp . Trong quá trình hoạt động bình thường, hệ thống thường xuyên điều chỉnh tốc độ CPU, số lượng lõi CPU trực tuyến và các trạng thái lõi hệ thống khác như tốc độ bus bộ nhớ và điện áp của các đường nguồn liên kết với CPU và bộ nhớ. Trong quá trình thử nghiệm, những điều chỉnh này ảnh hưởng đến các phép đo công suất:
    • Các hoạt động điều chỉnh tốc độ CPU có thể làm giảm mức tăng xung nhịp và điện áp của bus bộ nhớ và các thành phần lõi hệ thống khác.
    • Hoạt động lập lịch có thể ảnh hưởng đến tỷ lệ phần trăm thời gian CPU sử dụng ở trạng thái không hoạt động ở mức năng lượng thấp. Để biết chi tiết về cách ngăn chặn những điều chỉnh này xảy ra trong quá trình thử nghiệm, hãy xem Kiểm soát tốc độ CPU .

Ví dụ: Joe Droid muốn tính giá trị screen.on cho một thiết bị. Anh ta bật chế độ máy bay trên thiết bị, chạy thiết bị ở trạng thái hiện tại ổn định, giữ tốc độ CPU không đổi và sử dụng khóa chế độ thức một phần để ngăn hệ thống tạm dừng. Sau đó, Joe tắt màn hình thiết bị và thực hiện phép đo (200 mA). Tiếp theo, Joe bật màn hình thiết bị ở độ sáng tối thiểu và thực hiện một phép đo khác (300 mA). Giá trị screen.on là 100 mA (300 - 200).

Lưu ý : Đối với các thành phần không có dạng sóng phẳng của mức tiêu thụ dòng điện khi hoạt động (chẳng hạn như sóng di động hoặc Wi-Fi), hãy đo dòng điện trung bình theo thời gian bằng công cụ giám sát nguồn điện.

Khi sử dụng nguồn điện bên ngoài thay cho pin của thiết bị, hệ thống có thể gặp sự cố do nhiệt điện trở của pin không được kết nối hoặc chân đo nhiên liệu tích hợp (tức là kết quả đọc nhiệt độ pin không hợp lệ hoặc dung lượng pin còn lại có thể làm tắt nhân hoặc hệ thống Android) . Pin giả có thể cung cấp tín hiệu trên chân nhiệt điện trở hoặc đồng hồ đo nhiên liệu bắt chước nhiệt độ và trạng thái sạc của hệ thống bình thường, đồng thời cũng có thể cung cấp các dây dẫn thuận tiện để kết nối với nguồn điện bên ngoài. Ngoài ra, bạn có thể sửa đổi hệ thống để bỏ qua dữ liệu không hợp lệ từ pin bị thiếu.

Hệ thống điều khiển đình chỉ

Phần này mô tả cách tránh trạng thái tạm dừng hệ thống khi bạn không muốn nó ảnh hưởng đến các phép đo khác và cách đo mức tiêu thụ năng lượng của trạng thái tạm dừng hệ thống khi bạn muốn đo nó.

Ngăn chặn hệ thống đình chỉ

Việc tạm dừng hệ thống có thể gây ra sự khác biệt không mong muốn trong các phép đo công suất và đặt các thành phần hệ thống ở trạng thái công suất thấp không phù hợp để đo mức sử dụng công suất hoạt động. Để ngăn hệ thống tạm dừng khi màn hình tắt, hãy sử dụng khóa chế độ thức một phần tạm thời. Sử dụng cáp USB, kết nối thiết bị với máy chủ phát triển, sau đó đưa ra lệnh sau:

adb shell "echo temporary > /sys/power/wake_lock"

Khi ở wake_lock , trạng thái tắt màn hình không kích hoạt hệ thống tạm dừng. (Hãy nhớ ngắt kết nối cáp USB khỏi thiết bị trước khi đo mức tiêu thụ điện.)

Để loại bỏ khóa chế độ thức:

adb shell "echo temporary > /sys/power/wake_unlock"

Đo hệ thống đình chỉ

Để đo mức tiêu thụ điện trong trạng thái tạm dừng hệ thống, hãy đo giá trị của cpu.idle trong cấu hình nguồn. Trước khi đo:

  • Xóa các khóa chế độ thức hiện có (như được mô tả ở trên).
  • Đặt thiết bị ở chế độ trên máy bay để tránh hoạt động đồng thời của sóng vô tuyến di động, hoạt động này có thể chạy trên bộ xử lý tách biệt với các phần SoC do hệ thống treo điều khiển.
  • Đảm bảo hệ thống ở trạng thái tạm dừng bằng cách:
    • Xác nhận số đọc hiện tại ổn định ở giá trị ổn định. Số đọc phải nằm trong phạm vi dự kiến ​​đối với mức tiêu thụ điện năng ở trạng thái tạm dừng SoC cộng với mức tiêu thụ điện năng của các thành phần hệ thống vẫn được cấp nguồn (chẳng hạn như USB PHY).
    • Kiểm tra đầu ra của bảng điều khiển hệ thống.
    • Theo dõi các dấu hiệu bên ngoài về trạng thái hệ thống (chẳng hạn như đèn LED tắt khi không ở trạng thái treo).

Kiểm soát tốc độ CPU

Các CPU đang hoạt động có thể được đưa vào trực tuyến hoặc ngoại tuyến, thay đổi tốc độ xung nhịp và điện áp liên quan (cũng có thể ảnh hưởng đến tốc độ bus bộ nhớ và các trạng thái năng lượng lõi hệ thống khác) và có thể chuyển sang trạng thái không tải điện năng thấp hơn khi ở trong vòng lặp nhàn rỗi của nhân. Khi đo các trạng thái nguồn điện khác nhau của CPU cho cấu hình nguồn điện, hãy tránh chênh lệch mức tiêu thụ điện năng khi đo các thông số khác. Cấu hình nguồn giả định tất cả các CPU đều có cùng tốc độ và đặc tính nguồn sẵn có.

Trong khi đo công suất CPU hoặc trong khi giữ nguyên công suất CPU để thực hiện các phép đo khác, hãy giữ số lượng CPU được kết nối trực tuyến không đổi (chẳng hạn như có một CPU trực tuyến và phần còn lại ngoại tuyến/cắm nóng). Giữ tất cả các CPU ngoại trừ một CPU đang ở trạng thái không hoạt động có thể mang lại kết quả chấp nhận được. Việc dừng khung Android bằng adb shell stop có thể làm giảm hoạt động lập lịch của hệ thống.

Bạn phải chỉ định tốc độ CPU khả dụng cho thiết bị của mình trong mục nhập cpu.speeds cấu hình nguồn. Để có danh sách tốc độ CPU khả dụng, hãy chạy:

adb shell cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state

Các tốc độ này khớp với số đo công suất tương ứng trong giá trị cpu.active .

Đối với các nền tảng mà số lượng lõi được đưa trực tuyến ảnh hưởng đáng kể đến mức tiêu thụ điện năng, bạn có thể cần phải sửa đổi trình điều khiển hoặc bộ điều chỉnh cpufreq cho nền tảng đó. Hầu hết các nền tảng đều hỗ trợ kiểm soát tốc độ CPU bằng cách sử dụng bộ điều chỉnh cpufreq của không gian người dùng và sử dụng giao diện sysfs để đặt tốc độ. Ví dụ: để đặt tốc độ 200 MHz trên hệ thống chỉ có 1 CPU hoặc tất cả các CPU chia sẻ chính sách cpufreq chung, hãy sử dụng bảng điều khiển hệ thống hoặc adb shell để chạy các lệnh sau:

echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

Lưu ý : Các lệnh chính xác khác nhau tùy thuộc vào việc triển khai cpufreq trên nền tảng.

Các lệnh này đảm bảo tốc độ mới không nằm ngoài giới hạn cho phép, đặt tốc độ mới, sau đó in tốc độ mà CPU thực sự đang chạy (để xác minh). Nếu tốc độ tối thiểu hiện tại trước khi thực hiện cao hơn 200000, bạn có thể cần phải đảo ngược thứ tự của hai dòng đầu tiên hoặc thực hiện lại dòng đầu tiên để giảm tốc độ tối thiểu trước khi đặt tốc độ tối đa.

Để đo dòng điện tiêu thụ của CPU chạy ở nhiều tốc độ khác nhau, hãy sử dụng bảng điều khiển hệ thống để đặt CPU vào vòng lặp giới hạn CPU bằng lệnh:

# while true; do true; done

Thực hiện phép đo trong khi vòng lặp thực thi.

Một số thiết bị có thể giới hạn tốc độ CPU tối đa trong khi thực hiện điều chỉnh nhiệt do đo nhiệt độ cao (nghĩa là sau khi chạy CPU ở tốc độ cao trong thời gian dài). Hãy chú ý đến giới hạn đó bằng cách sử dụng đầu ra của bảng điều khiển hệ thống khi thực hiện các phép đo hoặc bằng cách kiểm tra nhật ký kernel sau khi đo.

Đối với giá trị cpu.awake , hãy đo lượng điện năng tiêu thụ khi hệ thống không ở trạng thái tạm dừng và không thực thi các tác vụ. CPU phải ở trong vòng lặp nhàn rỗi của bộ lập lịch công suất thấp, có thể thực thi lệnh Chờ sự kiện ARM hoặc ở trạng thái năng lượng thấp dành riêng cho SoC với độ trễ thoát nhanh phù hợp cho việc sử dụng nhàn rỗi.

Đối với giá trị cpu.active , hãy đo công suất khi hệ thống không ở chế độ tạm dừng và không thực thi tác vụ. Một CPU (thường là CPU chính) sẽ chạy tác vụ trong khi tất cả các CPU khác phải ở trạng thái không hoạt động.

Đo công suất màn hình

Khi đo màn hình khi bật nguồn, hãy đảm bảo rằng các thiết bị khác thường bật khi màn hình được bật cũng bật. Ví dụ: nếu màn hình cảm ứng và đèn nền màn hình thường bật khi màn hình bật, hãy đảm bảo các thiết bị này bật khi bạn đo để có ví dụ thực tế về màn hình khi sử dụng năng lượng.

Một số công nghệ hiển thị có mức tiêu thụ điện năng khác nhau tùy theo màu sắc hiển thị, khiến số đo công suất thay đổi đáng kể tùy thuộc vào nội dung hiển thị trên màn hình tại thời điểm đo. Khi đo, hãy đảm bảo màn hình đang hiển thị thứ gì đó có đặc tính công suất của màn hình thực tế. Hãy nhắm đến mức tối đa của màn hình toàn màu đen (tiêu thụ điện năng thấp nhất đối với một số công nghệ) và màn hình toàn màu trắng. Lựa chọn phổ biến là chế độ xem lịch trình trong ứng dụng lịch, có sự kết hợp giữa các thành phần nền trắng và không phải màu trắng.

Đo màn hình khi bật nguồn ở độ sáng màn hình/đèn nền tối thiểutối đa . Để đặt độ sáng tối thiểu:

  • Sử dụng giao diện người dùng Android (không được khuyến nghị). Đặt thanh trượt Cài đặt > Độ sáng màn hình thành độ sáng màn hình tối thiểu. Tuy nhiên, giao diện người dùng Android chỉ cho phép cài đặt độ sáng ở mức tối thiểu 10-20% độ sáng của bảng điều khiển hoặc đèn nền và không cho phép cài đặt độ sáng quá thấp đến mức có thể không nhìn thấy được màn hình nếu không nỗ lực nhiều.
  • Sử dụng tệp sysfs (được khuyến nghị). Nếu có, hãy sử dụng tệp sysfs để kiểm soát độ sáng của bảng điều khiển cho đến độ sáng tối thiểu được phần cứng hỗ trợ.

Ngoài ra, nếu tệp sysfs nền tảng cho phép bật và tắt bảng điều khiển LCD, đèn nền và màn hình cảm ứng, hãy sử dụng tệp để thực hiện các phép đo khi bật và tắt màn hình. Ngược lại, hãy đặt khóa chế độ thức một phần để hệ thống không bị treo, sau đó bật tắt màn hình bằng nút nguồn.

Đo công suất Wi-Fi

Thực hiện đo Wi-Fi trên mạng tương đối yên tĩnh. Tránh giới thiệu công việc bổ sung xử lý khối lượng lớn lưu lượng phát sóng không liên quan đến hoạt động đang được đo.

Giá trị wifi.on đo mức tiêu thụ điện năng khi Wi-Fi được bật nhưng không chủ động truyền hoặc nhận. Điều này thường được đo bằng khoảng cách giữa trạng thái tạm dừng (ngủ) của hệ thống hiện tại khi bật Wi-Fi và tắt Wi-Fi.

Giá trị wifi.scan đo mức tiêu thụ điện năng trong quá trình quét Wi-Fi để tìm điểm truy cập. Các ứng dụng có thể kích hoạt quét Wi-Fi bằng API startScan() của lớp WifiManager. Bạn cũng có thể mở Cài đặt > Wi-Fi để thực hiện quét điểm truy cập vài giây một lần với mức tiêu thụ điện năng tăng vọt rõ ràng nhưng bạn phải trừ đi công suất màn hình khỏi các phép đo này.

Lưu ý : Sử dụng thiết lập được kiểm soát (chẳng hạn như iperf ) để tạo lưu lượng nhận và truyền mạng.