سازندگان دستگاه باید نمایه مصرف برق مؤلفه را در
/frameworks/base/core/res/res/xml/power_profile.xml ارائه دهند.
برای تعیین مقادیر نمایههای مصرف برق، از سختافزاری استفاده کنید که برق مصرفی دستگاه را اندازهگیری کند و عملیات مختلفی را که اطلاعات آنها موردنیاز است انجام دهد. مصرف برق را درطول این عملیات اندازهگیری کنید و مقادیر را محاسبه کنید (درصورت لزوم، تفاوتها را از سایر مصرفهای برق پایه استخراج کنید).
ازآنجاییکه هدف نمایه مصرف انرژی تخمین مناسب خالی شدن شارژ باتری است، مقادیر نمایه مصرف انرژی برحسب جریان (آمپر) ارائه میشود. چارچوب Android جریان را در مدتزمانی که زیرسیستم فعال بوده است ضرب میکند و مقدار میلیآمپر ساعت را محاسبه میکند، که سپس برای تخمین میزان باتری مصرفشده توسط برنامه یا زیرسیستم استفاده میشود.
دستگاههای دارای کنترلکنندههای بلوتوث، مودم، و Wi-Fi که Android 7.0 و بالاتر دارند میتوانند مقادیر توان اضافی را که از دادههای مجموعه تراشه بهدست آمده است ارائه دهند.
دستگاههای دارای واحدهای پردازش مرکزی ناهمگن
نمایه توان برای دستگاههای دارای هستههای CPU با معماری ناهمگن باید شامل فیلدهای اضافی زیر باشد:
- تعداد کل CPUها برای هر خوشه (بهصورت cpu.clusters.cores بیان میشود).
- سرعتهای CPU که هر خوشه پشتیبانی میکند.
- مصرف برق فعال واحد پردازش مرکزی برای هر خوشه.
برای تمایز بین مصرف برق فعال CPU و سرعتهای CPU پشتیبانیشده برای خوشهها، شماره خوشه را به نام آرایه اضافه کنید. شمارههای خوشه بهترتیب هستههای CPU در درخت دستگاه هسته اختصاص داده میشوند. برای مثال، در معماری ناهمگن که دو (۲) خوشه با چهار (۴) هسته دارد:
- cluster0 شامل cpu0-3 میشود
- خوشه ۱ شامل cpu4-7 است
چارچوب Android هنگام خواندن آمار از فایلهای sysfs در:
/sys/devices/system/cpu/cpu<number>/cpufreq/stats از این شمارههای هسته CPU استفاده میکند.
نمونهای از سرعت و واحد پردازش مرکزی خوشهای:
<array name="cpu.active.cluster0"> <value>200</value> <value>300</value> <value>400</value> </array> <array name="cpu.speeds.cluster0"> <value>600000</value> <value>800000</value> <value>1200000</value> </array> <array name="cpu.active.cluster1"> <value>400</value> <value>500</value> <value>600</value> </array> <array name="cpu.speeds.cluster1"> <value>800000</value> <value>1200000</value> <value>1400000</value> </array>
مقادیر توان
جدول زیر تنظیمات مقدار توان دردسترس را شرح میدهد. برای مشاهده نمونه فایل در AOSP، به power_profile.xml مراجعه کنید.
| نام | شرح | مقدار نمونه | یادداشتها |
|---|---|---|---|
| محیطی.روشن | مصرف انرژی اضافی وقتی صفحهنمایش در حالت «آمادهبهکار/محیطی/همیشه روشن» است بهجای اینکه خاموش باشد. | حدود ۱۰۰ میلیآمپر | - |
| screen.on | وقتی صفحهنمایش با حداقل روشنایی روشن است، از برق بیشتری استفاده میشود. | ۲۰۰ میلیآمپر | شامل کنترلکننده لمسی و نور پسزمینه نمایشگر میشود. در روشنایی ۰، نه حداقل Android که معمولاً ۱۰ یا ۲۰٪ است. |
| screen.full | برق اضافی مصرفشده وقتی صفحهنمایش در حداکثر روشنایی است، درمقایسه با صفحهنمایش در حداقل روشنایی. | ۱۰۰ تا ۳۰۰ میلیآمپر | بخشی از این مقدار (براساس روشنایی صفحهنمایش) به مقدار screen.on اضافه میشود تا مصرف برق صفحهنمایش محاسبه شود. |
| wifi.on | وقتی Wi-Fi روشن است اما دریافت، انتقال، یا اسکن نمیکند، از برق اضافی استفاده میشود. | ۲ میلیآمپر | - |
| wifi.active | هنگام ارسال یا دریافت ازطریق Wi-Fi، برق بیشتری مصرف میشود. | ۳۱ میلیآمپر | - |
| wifi.scan | وقتی Wi-Fi درحال اسکن کردن نقاط دسترسی است، از برق بیشتری استفاده میشود. | ۱۰۰ میلیآمپر | - |
| صوتی | هنگام کدبندی/کدگشایی صوتی ازطریق DSP، از توان اضافی استفاده میشود. | حدود ۱۰ میلیآمپر | برای صدای DSP استفاده میشود. |
| ویدیو | هنگام کدگشایی ویدیو ازطریق DSP، از توان اضافی استفاده میشود. | حدود ۵۰ میلیآمپر | برای ویدیو DSP استفاده میشود. |
| camera.avg | میانگین مصرف انرژی توسط زیرسیستم دوربین برای یک برنامه دوربین معمولی. | ۶۰۰ میلیآمپر | بهعنوان تخمینی تقریبی برای برنامهای که پیشنمایش اجرا میکند و تقریباً ۱۰ تصویر با وضوح کامل در دقیقه ضبط میکند درنظر گرفته شده است. |
| camera.flashlight | میانگین توان مصرفی واحد فلاش دوربین در حالت روشن. | ۲۰۰ میلیآمپر | - |
| gps.signalqualitybased | مصرف برق اضافی توسط GPS براساس قدرت سیگنال. این ورودی چندمقداری است، یک مقدار برای هر قدرت سیگنال، از ضعیفترین به قویترین. | ۳۰ میلیآمپر، ۱۰ میلیآمپر | - |
| gps.on | هنگام دریافت سیگنال GPS، از انرژی بیشتری استفاده میشود. | ۵۰ میلیآمپر | - |
| radio.active | هنگام انتقال/دریافت رادیو همراه، از انرژی بیشتری استفاده میشود. | ۱۰۰ میلیآمپر تا ۳۰۰ میلیآمپر | - |
| radio.scanning | وقتی رادیو همراه درحال فراخوانی برج است، از انرژی بیشتری استفاده میشود. | ۱٫۲ میلیآمپر | - |
| radio.on | وقتی رادیو همراه روشن است، از انرژی بیشتری استفاده میشود. این یک ورودی چند مقداری است، یک مقدار برای هر قدرت سیگنال (بدون سیگنال، ضعیف، متوسط، قوی). | ۱٫۲ میلیآمپر | برخیاز رادیوها هنگام جستجوی دکل تلفن همراه و عدم شناسایی سیگنال، توان را افزایش میدهند. با افزایش قدرت سیگنال، مقادیر میتوانند یکسان باشند یا کاهش یابند. اگر فقط یک مقدار ارائه دهید، همان مقدار برای همه قدرتها استفاده میشود. اگر دو مقدار ارائه دهید، مقدار اول برای «بدون سیگنال» استفاده میشود، مقدار دوم برای همه قدرتهای دیگر استفاده میشود، و غیره. |
| بلوتوث.کنترلکننده.بیکار | میانگین جریان مصرفی (میلیآمپر) کنترلکننده بلوتوث در حالت آماده به کار. | - | این مقادیر تخمینی نیستند، بلکه از برگه دادههای کنترلکننده گرفته شدهاند. اگر چندین وضعیت دریافت یا انتقال وجود داشته باشد، میانگین آن وضعیتها درنظر گرفته میشود. علاوهبراین، سیستم اکنون دادههای مربوط به
اسکنهای «کممصرف» (LE) و «بلوتوث» را جمعآوری میکند. Android 7.0 و نسخههای جدیدتر دیگر از مقادیر توان «بلوتوث» برای bluetooth.active (استفادهشده هنگام پخش صدا ازطریق «بلوتوث A2DP») و bluetooth.on (استفادهشده هنگام روشن بودن «بلوتوث» در حالت آماده بهکار) استفاده نمیکنند. |
| bluetooth.controller.rx | میانگین جریان مصرفی (میلیآمپر) کنترلکننده بلوتوث درحین دریافت. | - | |
| bluetooth.controller.tx | میانگین جریان مصرفی (میلیآمپر) کنترلکننده بلوتوث درحین انتقال. | - | |
| bluetooth.controller.voltage | میانگین ولتاژ عملیاتی (میلیولت) کنترلکننده بلوتوث. | - | |
| modem.controller.sleep | میانگین جریان مصرفی (میلیآمپر) کنترلکننده مودم در حالت خواب. | ۰ میلیآمپر | این مقادیر تخمینی نیستند، بلکه از برگه دادههای کنترلکننده گرفته شدهاند. اگر چندین وضعیت دریافت وجود داشته باشد، میانگین آن وضعیتها درنظر گرفته میشود. اگر چندین وضعیت انتقال وجود داشته باشد، تعیین مقدار برای هر وضعیت انتقال از Android 9 پشتیبانی میشود. |
| مودم.کنترلکننده.آزاد | میانگین جریان مصرفی (میلیآمپر) کنترلکننده مودم درحالت بیکار. | - | |
| modem.controller.rx | میانگین جریان مصرفی (میلیآمپر) کنترلکننده مودم درحین دریافت. | - | |
| modem.controller.tx | میانگین جریان مصرفی (میلیآمپر) کنترلکننده مودم هنگام انتقال در سطوح مختلف توان RF. این یک ورودی چند مقداری با یک مقدار برای هر سطح توان انتقال است. | ۱۰۰ میلیآمپر، ۲۰۰ میلیآمپر، ۳۰۰ میلیآمپر، ۴۰۰ میلیآمپر، ۵۰۰ میلیآمپر | |
| ولتاژ کنترلکننده مودم | میانگین ولتاژ کاری (میلیولت) کنترلکننده مودم. | - | |
| wifi.controller.idle | میانگین جریان مصرفی (میلیآمپر) کنترلکننده Wi-Fi در حالت آزاد. | - | این مقادیر تخمینی نیستند، بلکه از برگه دادههای کنترلکننده گرفته شدهاند. اگر چندین حالت دریافت یا ارسال وجود داشته باشد، میانگین آن حالتها درنظر گرفته میشود. |
| wifi.controller.rx | میانگین جریان مصرفی (میلیآمپر) کنترلکننده Wi-Fi درحین دریافت. | - | |
| wifi.controller.tx | میانگین جریان مصرفی (میلیآمپر) کنترلکننده Wi-Fi درحین انتقال. | - | |
| wifi.controller.voltage | میانگین ولتاژ عملیاتی (میلیولت) کنترلکننده Wi-Fi. | - | |
| cpu.speeds | این یک ورودی چندمقداری است که هر سرعت ممکن CPU را برحسب کیلوهرتز فهرست میکند. | ۱۲۵۰۰۰ کیلوهرتز، ۲۵۰۰۰۰ کیلوهرتز، ۵۰۰۰۰۰ کیلوهرتز، ۱۰۰۰۰۰۰ کیلوهرتز، ۱۵۰۰۰۰۰ کیلوهرتز | تعداد و ترتیب ورودیها باید با ورودیهای میلیآمپر در cpu.active مطابقت داشته باشد. |
| cpu.idle | کل توان مصرفی سیستم وقتی واحدهای پردازش مرکزی (و سیستم روی تراشه) در حالت تعلیق سیستم هستند. | ۳ میلیآمپر | - |
| cpu.awake | برق اضافی مصرفشده وقتی CPUها در حالت بیکار زمانبندی هستند (حلقه بیکار هسته)؛ سیستم در حالت تعلیق سیستم نیست. | ۵۰ میلیآمپر | پلاتفرم شما ممکن است بیش از یک حالت آماده به کار داشته باشد که سطوح مختلفی از مصرف برق را بهکار میگیرند؛ یک حالت آماده به کار نماینده برای دورههای طولانیتر آماده به کار زمانبند (چند میلیثانیه) انتخاب کنید. گراف توان را در تجهیزات اندازهگیری خود بررسی کنید و نمونههایی را انتخاب کنید که واحد پردازش مرکزی در پایینترین مصرف خود قرار دارد، نمونههای بالاتری را که واحد پردازش مرکزی از حالت بیکار خارج شده است کنار بگذارید. |
| cpu.active | برق اضافی که CPU هنگام اجرا با سرعتهای مختلف مصرف میکند. | ۱۰۰ میلیآمپر، ۱۲۰ میلیآمپر، ۱۴۰ میلیآمپر، ۱۶۰ میلیآمپر، ۲۰۰ میلیآمپر | «مقدار» نشاندهنده توان مصرفی ریلهای CPU هنگام کار در سرعتهای مختلف است. حداکثر سرعت در هسته را روی هریک از سرعتهای مجاز تنظیم کنید و واحد پردازش مرکزی را در آن سرعت ثابت کنید. تعداد و ترتیب ورودیها با تعداد و ترتیب ورودیها در cpu.speeds مطابقت دارد. |
| cpu.clusters.cores | تعداد هستههایی که هر خوشه CPU دارد. | ۲, ۴ | فقط برای دستگاههای دارای معماریهای واحد پردازش مرکزی ناهمگن لازم است. تعداد ورودیها و ترتیب باید با تعداد ورودیهای خوشه برای cpu.active و cpu.speeds مطابقت داشته باشد. اولین ورودی نشاندهنده تعداد هستههای CPU در خوشه ۰، دومین ورودی نشاندهنده تعداد هستههای CPU در خوشه ۱، و غیره است. |
| battery.capacity | ظرفیت کل باتری برحسب میلیآمپر ساعت. | ۳۰۰۰ میلیآمپر ساعت | - |
اسکنهای «کممصرف» (LE) و «بلوتوث»
برای دستگاههای دارای Android 7.0، سیستم دادههای مربوط به اسکنهای «کممصرف» (LE) و ترافیک شبکه بلوتوث (مثل RFCOMM و L2CAP) را جمعآوری میکند و این فعالیتها را به برنامه آغازگر نسبت میدهد. اسکنهای بلوتوث به برنامهای که اسکن را آغاز کرده است نسبت داده میشود، اما اسکنهای دستهای نسبت داده نمیشود (و بهجای آن به برنامه بلوتوث نسبت داده میشود). برای برنامهای که N میلیثانیه اسکن میکند، هزینه اسکن N میلیثانیه زمان دریافت و N میلیثانیه زمان ارسال است؛ همه زمان باقیمانده کنترلکننده به ترافیک شبکه یا برنامه بلوتوث اختصاص داده میشود.