Bạn có thể xác định mức tiêu thụ điện năng của từng thành phần bằng cách so sánh dòng điện được vẽ thiết bị khi thành phần ở trạng thái mong muốn (chẳng hạn như bật, đang hoạt động, quét) và khi tắt. Đo dòng điện tức thời trung bình vẽ trên thiết bị tại điện áp danh định sử dụng màn hình điện bên ngoài, chẳng hạn như nguồn điện để bàn hoặc thiết bị chuyên dụng công cụ theo dõi pin (chẳng hạn 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ề mức tiêu thụ hiện tại của từng thành phần. Hãy sử dụng thông tin này nếu thông tin này thể hiện chính xác dòng điện được rút ra từ pin của thiết bị trong thực hành. 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 thiết bị của bạn cấu hình nguồ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ư làm kết nối USB với máy chủ phát triển được dùng khi chạy Cầu gỡ lỗi Android (adb). Thiết bị khi quá trình kiểm thử có thể lấy dòng điện từ máy chủ, từ đó làm giảm kết quả đo của pin. Tránh dùng USB Kết nối Đ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.
Không bao gồm thành phần đang được đo, hệ thống sẽ chạy ở mức năng lượng không đổi để tránh việc đo lường không chính xác do những thay đổi trong các thành phần khác. Hệ thống các hoạt độ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 dữ liệu với mạng di động, Wi-Fi và Bluetooth. Thời gian đang không đo công suất sóng vô tuyến của di động, hãy đặt thiết bị ở chế độ trên máy bay và bật Wi-Fi hoặc Bluetooth là phù hợp.
- Bật/tắt màn hình. Các màu hiển thị khi màn hình đang bật có thể ảnh hưởng đến mức vẽ nguồn trên một số công nghệ màn hình. Tắt màn hình khi đo lường giá trị cho các thành phần không phải màn hình.
- Tạm ngưng/Tiếp tục hệ thống. Trạng thái tắt màn hình có thể kích hoạt việc tạm ngưng hệ thống, đặt các linh kiện của thiết bị ở trạng thái tiết kiệm pin hoặc đang tắt. Điều này có thể ảnh hưởng đến mức tiêu thụ điện năng của thành phần được đo và đưa ra phương sai lớn trong các chỉ số công suất dưới dạng hệ thống định kỳ tiếp tục gửi báo thức, v.v. Để biết chi tiết, hãy xem phần Điều khiển hệ thống tạm ngưng.
- CPU thay đổi tốc độ và vào/thoát trạng thái rảnh của trình lập lịch biểu 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 người dùng
Lõi CPU và các trạng thái khác của lõi hệ thống, chẳng hạn như tốc độ bus bộ nhớ và điện áp của đường dẫn năng lượng
được liên kết với CPU và bộ nhớ. Trong quá trình thử nghiệm, những điều chỉnh sau sẽ ảnh hưởng đến việc đo lường công suất:
- Các thao tác điều chỉnh tỷ lệ tốc độ CPU có thể làm giảm tần suất xung nhịp và điện áp của bus bộ nhớ và các thành phần cốt lõi khác của hệ thống.
- Việc lên lịch hoạt động có thể ảnh hưởng đến tỷ lệ phần trăm thời gian mà CPU sử dụng ở trạng thái rảnh tiết kiệm pin. Để biết thông tin chi tiết về cách ngă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 toán giá trị screen.on
cho một thiết bị. Anh ấy
bật chế độ trên máy bay trên thiết bị, chạy thiết bị ở trạng thái hiện tại ổn định, giữ CPU
hằng số tốc độ và sử dụng khoá chế độ thức một phần để ngăn việc hệ thống tạm ngưng hoạt động. Sau đó Joe xoay thiết bị
màn hình tắt và đo (200 mA). Tiếp theo, Joe bật tối thiểu màn hình thiết bị
và đo độ sáng 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 về mức tiêu thụ dòng điện khi đang hoạt động (chẳng hạn như radio di động hoặc Wi-Fi), đo dòng điện trung bình theo thời gian bằng cách sử dụng nguồn điện công cụ giám sát.
Khi sử dụng nguồn điện bên ngoài thay cho pin thiết bị, hệ thống có thể gặp phải sự cố do nhiệt điện trở ắc quy chưa được kết nối hoặc chân cắm của đồng hồ đo nhiên liệu tích hợp (ví dụ: mã không hợp lệ việc đọc nhiệt độ pin hoặc dung lượng pin còn lại có thể làm tắt nhân hệ điều hành hoặc Android ). Pin giả có thể cung cấp tín hiệu trên chân điện trở hoặc chân của đồng hồ đo nhiên liệu bắt chước nhiệt độ và trạng thái tính phí cho một hệ thống thông thường, đồng thời cũng có thể cung cấp thông tin khách hàng tiềm năng thuận tiện cho 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.
Kiểm soát việc tạm ngưng hệ thống
Phần này mô tả cách tránh trạng thái tạm ngưng hệ thống khi bạn không muốn hệ thống can thiệp với các phép đo khác cũng như cách đo công suất của trạng thái tạm ngưng hệ thống khi bạn thực hiện muốn đo lường.
Ngăn việc tạm ngưng hệ thống
Tạm ngưng hệ thống có thể tạo ra phương sai không mong muốn trong kết quả đo công suất và đặt các thành phần của hệ thống ở trạng thái tiết kiệm pin không phù hợp để đo mức sử dụng điện năng đang hoạt động. Để ngăn hệ thống tạm ngưng khi màn hình đang tắt, hãy sử dụng tính năng khoá chế độ thức một phần. Kết nối bằng cáp USB thiết bị đến một máy chủ phát triển, sau đó phát lệnh sau:
adb shell "echo temporary > /sys/power/wake_lock"
Khi ở trong wake_lock
, trạng thái tắt màn hình không kích hoạt việc tạm ngưng hệ thố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 năng.)
Cách loại bỏ khoá ở chế độ thức:
adb shell "echo temporary > /sys/power/wake_unlock"
Đo lường hệ thống tạm ngưng
Để đo mức tiêu thụ công suất trong trạng thái tạm ngưng hệ thống, hãy đo giá trị của
cpu.idle
trong hồ sơ nguồn. Trước khi đo lường:
- Xoá các khoá ở chế độ thức hiện có (như 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. Điều này có thể chạy trên bộ xử lý riêng biệt với các phần SoC do hệ thống tạm ngưng kiểm soát.
- Đảm bảo hệ thống ở trạng thái tạm ngưng bằng cách:
- Việc xác nhận các chỉ số hiện tại đã về một giá trị ổn định. Các chỉ số đọc phải nằm trong phạm vi dự kiến phạm vi tiêu thụ điện năng của trạng thái tạm ngưng SoC cộng với mức tiêu thụ điện năng của hệ thống các thành phần vẫn cấp nguồn (chẳng hạn như USB PHY).
- Đang kiểm tra đầu ra của bảng điều khiển hệ thống.
- Xem các chỉ báo bên ngoài về trạng thái hệ thống (chẳng hạn như đèn LED tắt khi không ở trong) tạm ngưng).
Kiểm soát tốc độ CPU
CPU đang hoạt động có thể được kết nối mạng hoặc không có kết nối mạng, kèm theo tốc độ xung nhịp và điện áp thay đổi (cũng có thể ảnh hưởng đến tốc độ bus bộ nhớ và trạng thái nguồn điện cốt lõi khác của hệ thống), và có thể chuyển sang trạng thái rảnh nguồn thấp hơn khi ở vòng lặp trạng thái rảnh của nhân hệ điều hành. Khi đo lường các mức CPU khác nhau trạng thái nguồn của cấu hình nguồn, tránh phương sai công suất vẽ khi đo các thông số khác. Hồ sơ năng lượng giả định tất cả CPU đều có cùng tốc độ và đặc điểm nguồn điện.
Trong khi đo công suất CPU hoặc trong khi duy trì công suất CPU không đổi để thực hiện các phép đo khác, hãy
số lượng CPU mang lại hằng số trực tuyến (chẳng hạn như có một CPU trực tuyến và các CPU còn lại
ngoại tuyến/bị cắm nóng). Việc giữ tất cả CPU ngoại trừ một CPU khi lên lịch ở trạng thái rảnh có thể được chấp nhận
kết quả. Việc dừng khung Android bằng adb shell stop
có thể làm giảm hệ thống
hoạt động lên lịch.
Bạn phải chỉ định tốc độ CPU hiện có cho thiết bị trong hồ sơ nguồn điện
Mục nhập cpu.speeds
. Để xem danh sách tốc độ CPU hiện có, 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 cung cấp trực tuyến có ả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 trình điều khiển 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 thống đốc cpufreq không gian người dùng và sử dụng giao diện sysfs để thiết lập tốc độ. Ví dụ: để đặt tốc độ 200 MHz trên hệ thống chỉ có 1 CPU hoặc tất cả CPU dùng chung một 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 sẽ khác nhau tuỳ thuộc vào cách triển khai cpufreq trên nền tảng.
Những lệnh này giúp đảm bảo tốc độ mới không nằm ngoài giới hạn cho phép, hãy thiết lập tốc độ mới, sau đó in tốc độ mà CPU thực sự đang chạy (để xác minh). Nếu giá trị tốc độ tối thiểu trước khi thực thi cao hơn 200.000, bạn có thể cần phải đảo ngược lệnh trong hai dòng đầu tiên hoặc thực thi lại dòng đầu tiên để giảm tốc độ tối thiểu trước đặt tốc độ tối đa.
Để đo dòng điện mà CPU chạy ở các tốc độ khác nhau tiêu thụ, hãy sử dụng bảng điều khiển hệ thống để đặt CPU trong vòng lặp ràng buộc của 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 điều tiết nhiệt do nhiệt độ đo nhiệt độ (tức là sau khi chạy CPU ở tốc độ cao trong một khoảng thời gian dài). Xem cho hạn chế đó, bằng cách sử dụng đầu ra của bảng điều khiển hệ thống khi đo lường hoặc bằng cách kiểm tra nhật ký nhân hệ điều hành sau khi đo lường.
Đối với giá trị cpu.awake
, hãy đo lường mức tiêu thụ điện năng khi hệ thống không hoạt động
tạm ngưng và không thực thi các tác vụ. CPU phải ở trong vòng lặp không hoạt động của bộ lập lịch tiết kiệm năng lượng
, có thể thực thi lệnh ARM Wait For Event (Chờ sự kiện) trên ARM hoặc ở trạng thái tiết kiệm pin dành riêng cho SoC
có độ trễ thoát nhanh phù hợp với việc sử dụng ở trạng thái rảnh.
Đối với giá trị cpu.active
, hãy đo lường công suất khi hệ thống không ở chế độ tạm ngưng và
đang không thực thi các tác vụ. Một CPU (thường là CPU chính) sẽ chạy tác vụ trong khi tất cả CPU khác
phải ở trạng thái rảnh.
Đo lường công suất của màn hình
Khi đo màn hình trên nguồn, hãy đảm bảo rằng các thiết bị khác thường ở trạng thái bật khi màn hình đã 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 cũng được bật khi bạn đo lường để xem một ví dụ thực tế về mức sử dụng pin.
Một số công nghệ hiển thị có mức tiêu thụ điện năng khác nhau theo màu sắc hiển thị, gây ra công suất đo được thay đổi đáng kể tuỳ thuộc vào nội dung hiển thị trên màn hình tại thời điểm đo lường. Khi đo, hãy đảm bảo màn hình đang hiển thị thiết bị nào đó có điện đặc điểm của một màn hình thực. Nhắm giữa các cực trị của một màn hình hoàn 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 hoàn toàn màu trắng. Lựa chọn phổ biến là xem của một lịch biểu trong ứng dụng lịch có sự kết hợp giữa nền trắng và các phần tử không phải màu trắng.
Đo màn hình khi bật nguồn ở độ sáng tối thiểu và tối đa của màn hình/đèn nền. Cách đặt độ sáng tối thiểu:
- Sử dụng giao diện người dùng Android (không khuyến khích). Thiết lập phần Cài đặt > Độ sáng màn hình thanh trượt đến độ 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 đặt độ sáng thành tối thiểu 10-20% của bảng điều khiển hoặc độ sáng đèn nền có thể và không cho phép cài đặt độ sáng thấp đến mức có thể không nhìn thấy màn hình nếu không nỗ lực.
- Sử dụng tệp sysfs (nên dùng). 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 giảm xuống mức độ sáng tối thiểu mà phần cứng hỗ trợ.
Ngoài ra, nếu tệp sysfs của nền tảng cho phép biến bảng điều khiển LCD, đèn nền và màn hình cảm ứng bật và tắt, sử dụng tệp để đo khi màn hình bật và tắt. Nếu không, đặt khoá chế độ thức một phần để hệ thống không tạm ngưng, sau đó bật và tắt bằng nút nguồn.
Đo lường nguồn Wi-Fi
Thực hiện đo lường Wi-Fi trên mạng tương đối yên tĩnh. Tránh giới thiệu thêm công việc khác xử lý khối lượng lớn lưu lượng truyền tin không liên quan đến hoạt động đang được đo lường.
Giá trị wifi.on
đo lường mức điện năng tiêu thụ khi Wi-Fi bật nhưng không bật
chủ động truyền hoặc nhận. Giá trị này thường được đo bằng delta giữa điểm vẽ hiện tại
trạng thái tạm ngưng hệ thống (ngủ) khi bật hoặc tắt Wi-Fi.
Giá trị wifi.scan
đo lường mức tiêu thụ điện năng trong quá trình quét tìm Wi-Fi để truy cập
. Các ứng dụng có thể kích hoạt tính năng quét tìm Wi-Fi bằng lớp WifiManager
startScan()
API. Bạn cũng có thể mở phần Cài đặt > Wi-Fi thực hiện điểm truy cập
quét vài giây một lần với mức tiêu thụ điện năng tăng rõ rệt, nhưng bạn phải trừ đi màn hình
sức mạnh từ các phép đo này.
Lưu ý: Hãy sử dụng chế độ thiết lập có kiểm soát (chẳng hạn như iperf) để tạo thiết bị nhận và truyền mạng lưu lượng truy cập.