شما می توانید با مقایسه جریان گرفته شده توسط دستگاه در زمانی که قطعه در وضعیت دلخواه است (مانند روشن، فعال، اسکن) و زمانی که قطعه خاموش است، مصرف انرژی تک تک اجزا را تعیین کنید. متوسط جریان لحظهای را که روی دستگاه کشیده میشود با یک ولتاژ اسمی با استفاده از یک مانیتور برق خارجی، مانند منبع تغذیه روی میز یا ابزارهای تخصصی نظارت بر باتری (مانند نرمافزار Monsoon Solution Inc. Power Monitor و Power Tool) اندازهگیری کنید.
تولیدکنندگان اغلب اطلاعاتی را در مورد جریان مصرف شده توسط یک جزء جداگانه ارائه می کنند. اگر این اطلاعات به طور دقیق جریان گرفته شده از باتری دستگاه را در عمل نشان می دهد، از این اطلاعات استفاده کنید. با این حال، قبل از استفاده از آن مقادیر در نمایه برق دستگاه خود، مقادیر ارائه شده توسط سازنده را تأیید کنید.
کنترل مصرف برق
هنگام اندازهگیری، مطمئن شوید که دستگاه به منبع شارژ خارجی متصل نیست، مانند اتصال USB به میزبان توسعه که هنگام اجرای Android Debug Bridge (adb) استفاده میشود. دستگاه مورد آزمایش ممکن است جریان را از میزبان دریافت کند، بنابراین اندازه گیری باتری را کاهش می دهد. از اتصالات USB On-The-Go (OTG) خودداری کنید، زیرا ممکن است دستگاه OTG جریان را از دستگاه تحت آزمایش بگیرد.
به استثنای جزء در حال اندازهگیری، سیستم باید در سطح ثابتی از مصرف برق کار کند تا از اندازهگیریهای نادرست ناشی از تغییرات در اجزای دیگر جلوگیری شود. فعالیتهای سیستمی که میتوانند تغییرات ناخواسته را در اندازهگیری توان ایجاد کنند عبارتند از:
- فعالیت دریافت، ارسال یا اسکن شبکه تلفن همراه، Wi-Fi و بلوتوث . وقتی توان رادیویی سلولی را اندازه گیری نمی کنید، دستگاه را روی حالت هواپیما قرار دهید و Wi-Fi یا بلوتوث را در صورت لزوم فعال کنید.
- روشن/خاموش صفحه نمایش رنگهایی که هنگام روشن بودن صفحه نمایش نشان داده میشوند، میتوانند بر مصرف برق در برخی از فناوریهای صفحه تأثیر بگذارند. هنگام اندازه گیری مقادیر اجزای غیرصفحه نمایشگر را خاموش کنید.
- سیستم تعلیق/رزومه . حالت خاموش بودن صفحه نمایش می تواند باعث تعلیق سیستم شود و بخش هایی از دستگاه را در حالت کم مصرف یا خاموش قرار دهد. این میتواند بر مصرف برق جزء در حال اندازهگیری تأثیر بگذارد و تغییرات زیادی را در قرائتهای توان ایجاد کند، زیرا سیستم بهطور دورهای برای ارسال آلارمها و غیره از سر میگیرد. برای جزئیات، به کنترل سیستم تعلیق مراجعه کنید.
- CPU ها در حال تغییر سرعت و ورود/خروج از حالت بیکار زمانبندی کم مصرف هستند . در طول کارکرد عادی، سیستم تنظیمات مکرر را برای سرعت CPU، تعداد هستههای CPU آنلاین و دیگر حالتهای هسته سیستم مانند سرعت باس حافظه و ولتاژ ریلهای برق مرتبط با CPU و حافظه انجام میدهد. در طول آزمایش، این تنظیمات بر اندازه گیری توان تأثیر می گذارد:
- عملیات مقیاسگذاری سرعت CPU میتواند میزان مقیاس ساعت و ولتاژ گذرگاههای حافظه و سایر اجزای هسته سیستم را کاهش دهد.
- فعالیت زمانبندی میتواند بر درصد زمانی که CPUها در حالتهای بیکار کم مصرف میگذرانند تأثیر بگذارد. برای جزئیات در مورد جلوگیری از انجام این تنظیمات در طول آزمایش، به کنترل سرعت CPU مراجعه کنید.
به عنوان مثال، جو دروید می خواهد مقدار screen.on
را برای یک دستگاه محاسبه کند. او حالت هواپیما را روی دستگاه فعال میکند، دستگاه را در وضعیت فعلی ثابت اجرا میکند، سرعت CPU را ثابت نگه میدارد، و از یک wakelock جزئی برای جلوگیری از تعلیق سیستم استفاده میکند. سپس جو صفحه نمایش دستگاه را خاموش می کند و اندازه گیری (200 میلی آمپر) را انجام می دهد. سپس، جو صفحه نمایش دستگاه را با حداقل روشنایی روشن می کند و اندازه گیری دیگری (300 میلی آمپر) می گیرد. مقدار screen.on
100 میلی آمپر (300 - 200) است.
توجه : برای قطعاتی که هنگام فعال بودن شکل موج مصرف جریان ندارند (مانند رادیو سلولی یا Wi-Fi)، میانگین جریان را در طول زمان با استفاده از ابزار نظارت برق اندازهگیری کنید.
هنگام استفاده از منبع تغذیه خارجی به جای باتری دستگاه، ممکن است سیستم به دلیل عدم اتصال ترمیستور باتری یا پین های یکپارچه گیج سوخت، با مشکلاتی مواجه شود (یعنی خوانش نامعتبر دمای باتری یا ظرفیت باقی مانده باتری می تواند هسته یا سیستم Android را خاموش کند). . باتریهای تقلبی میتوانند سیگنالهایی را روی پایههای ترمیستور یا سنج سوخت ارائه دهند که دما و وضعیت شارژ را برای یک سیستم معمولی تقلید میکنند، و همچنین ممکن است سرنخهای مناسبی برای اتصال به منابع تغذیه خارجی ارائه دهند. همچنین، میتوانید سیستم را طوری تغییر دهید که دادههای نامعتبر باتری از دست رفته را نادیده بگیرد.
تعلیق سیستم کنترل
این بخش نحوه جلوگیری از حالت تعلیق سیستم را در زمانی که نمیخواهید با اندازهگیریهای دیگر تداخل داشته باشد، و نحوه اندازهگیری توان مصرفی حالت تعلیق سیستم در زمانی که میخواهید آن را اندازهگیری کنید، شرح میدهد.
جلوگیری از تعلیق سیستم
تعلیق سیستم می تواند واریانس ناخواسته ای را در اندازه گیری توان ایجاد کند و اجزای سیستم را در حالت های کم مصرف قرار دهد که برای اندازه گیری مصرف توان فعال نامناسب هستند. برای جلوگیری از تعلیق سیستم در حالی که صفحه نمایش خاموش است، از یک قفل موقت موقت استفاده کنید. با استفاده از کابل USB، دستگاه را به یک میزبان توسعه متصل کنید، سپس دستور زیر را صادر کنید:
adb shell "echo temporary > /sys/power/wake_lock"
در حالت wake_lock
، حالت خاموش صفحه باعث تعلیق سیستم نمی شود. (به یاد داشته باشید قبل از اندازه گیری مصرف برق، کابل USB را از دستگاه جدا کنید.)
برای حذف wakelock:
adb shell "echo temporary > /sys/power/wake_unlock"
تعلیق سیستم را اندازه گیری کنید
برای اندازهگیری میزان مصرف انرژی در حالت تعلیق سیستم، مقدار cpu.idle
را در پروفایل قدرت اندازهگیری کنید. قبل از اندازه گیری:
- wakelockهای موجود را حذف کنید (همانطور که در بالا توضیح داده شد).
- دستگاه را در حالت هواپیما قرار دهید تا از فعالیت همزمان رادیو سلولی که ممکن است روی یک پردازنده جدا از بخشهای SoC که توسط سیستم تعلیق کنترل میشود، اجرا شود، اجتناب کنید.
- اطمینان حاصل کنید که سیستم در حالت تعلیق است:
- خوانش های فعلی تأیید شده به یک مقدار ثابت می رسد. قرائت ها باید در محدوده مورد انتظار برای مصرف انرژی در حالت تعلیق SoC به اضافه مصرف برق اجزای سیستمی که برق باقی می مانند (مانند USB PHY) باشد.
- بررسی خروجی کنسول سیستم
- مراقب نشانه های خارجی وضعیت سیستم (مانند خاموش شدن LED در حالت تعلیق نیست).
کنترل سرعت CPU
CPUهای فعال را میتوان آنلاین یا آفلاین کرد، سرعت ساعت و ولتاژهای مربوط به آنها را تغییر داد (احتمالاً روی سرعت گذرگاه حافظه و سایر حالتهای قدرت هسته سیستم نیز تأثیر میگذارد)، و میتوانند در حالی که در حلقه بیکار هسته هستند، به حالتهای بیکار با توان کمتر وارد شوند. هنگام اندازهگیری حالتهای مختلف توان CPU برای مشخصات توان، از واریانس مصرف برق هنگام اندازهگیری پارامترهای دیگر اجتناب کنید. مشخصات قدرت فرض میکند که همه پردازندهها دارای ویژگیهای سرعت و قدرت یکسانی هستند.
در حین اندازهگیری توان CPU، یا در حالی که برای انجام اندازهگیریهای دیگر، توان CPU را ثابت نگه میدارید، تعداد پردازندههای آنلاین را ثابت نگه دارید (مانند اینکه یک CPU آنلاین و بقیه آفلاین یا هاتپلاگ شده باشند). بیکار نگه داشتن تمام CPUها به جز یکی از آنها در زمانبندی ممکن است نتایج قابل قبولی به همراه داشته باشد. توقف فریم ورک اندروید با adb shell stop
می تواند فعالیت زمان بندی سیستم را کاهش دهد.
شما باید سرعت های موجود CPU را برای دستگاه خود در ورودی cpu.speeds
نمایه قدرت مشخص کنید. برای دریافت لیستی از سرعت های موجود CPU، اجرا کنید:
adb shell cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state
این سرعت ها با اندازه گیری های توان مربوطه در مقدار cpu.active
مطابقت دارند.
برای پلتفرم هایی که تعداد هسته های آنلاین به طور قابل توجهی بر مصرف انرژی تأثیر می گذارد، ممکن است لازم باشد درایور cpufreq یا گاورنر پلت فرم را تغییر دهید. اکثر پلتفرم ها از کنترل سرعت CPU با استفاده از گاورنر فضای کاربر cpufreq و استفاده از رابط های sysfs برای تنظیم سرعت پشتیبانی می کنند. به عنوان مثال، برای تنظیم سرعت برای 200 مگاهرتز در سیستمی که فقط 1 CPU دارد یا همه CPU ها دارای یک خط مشی مشترک cpufreq هستند، از کنسول سیستم یا پوسته adb برای اجرای دستورات زیر استفاده کنید:
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
توجه : دستورات دقیق بسته به اجرای cpufreq پلت فرم متفاوت است.
این دستورات اطمینان میدهند که سرعت جدید خارج از محدوده مجاز نیست، سرعت جدید را تنظیم کنید، سپس سرعتی را که CPU واقعاً با آن کار میکند چاپ کنید (برای تأیید). اگر حداقل سرعت فعلی قبل از اجرا بالاتر از 200000 باشد، ممکن است لازم باشد ترتیب دو خط اول را برعکس کنید، یا خط اول را دوباره اجرا کنید تا حداقل سرعت را قبل از تنظیم حداکثر سرعت کاهش دهید.
برای اندازهگیری جریان مصرفشده توسط یک CPU که با سرعتهای مختلف کار میکند، از کنسول سیستم استفاده کنید تا CPU را در یک حلقه محدود به CPU با استفاده از دستور زیر قرار دهید:
# while true; do true; done
اندازه گیری را در حین اجرای حلقه انجام دهید.
برخی از دستگاهها میتوانند حداکثر سرعت CPU را در حین انجام گلوگاه حرارتی به دلیل اندازهگیری دمای بالا (یعنی پس از اجرای CPU با سرعتهای بالا برای مدتهای طولانی) محدود کنند. مراقب چنین محدودیتهایی باشید، یا با استفاده از خروجی کنسول سیستم هنگام اندازهگیری یا با بررسی گزارش هسته پس از اندازهگیری.
برای مقدار cpu.awake
، توان مصرفی را در زمانی که سیستم در حالت تعلیق نیست و وظایف را اجرا نمی کند اندازه گیری کنید. CPU باید در یک حلقه بیکار زمانبندی کم مصرف باشد، احتمالاً دستور ARM Wait For Event را اجرا کند یا در حالت کم مصرف مخصوص SoC با تأخیر خروج سریع مناسب برای استفاده بیکار باشد.
برای مقدار cpu.active
، زمانی که سیستم در حالت تعلیق نیست و وظایف را اجرا نمی کند، توان را اندازه گیری کنید. یک CPU (معمولا CPU اولیه) باید وظیفه را اجرا کند در حالی که سایر CPU ها باید در حالت بیکار باشند.
اندازه گیری قدرت صفحه نمایش
هنگام اندازهگیری روشن بودن صفحه نمایش، مطمئن شوید که سایر دستگاههایی که معمولاً وقتی صفحه نمایش فعال است روشن میشوند نیز روشن هستند. برای مثال، اگر صفحه نمایش لمسی و نور پسزمینه نمایشگر معمولاً هنگام روشن بودن صفحه نمایش روشن است، مطمئن شوید که این دستگاهها هنگام اندازهگیری روشن هستند تا یک مثال واقعی از صفحه نمایش در مصرف برق داشته باشید.
برخی از فناوریهای نمایشگر در مصرف انرژی با توجه به رنگهای نمایش داده شده متفاوت هستند، که باعث میشود اندازهگیری قدرت بسته به چیزی که در زمان اندازهگیری روی صفحه نمایش داده میشود، به طور قابلتوجهی متفاوت باشد. هنگام اندازه گیری، اطمینان حاصل کنید که صفحه نمایش چیزی را نشان می دهد که دارای ویژگی های قدرت یک صفحه نمایش واقعی است. بین صفحه نمایش تمام مشکی (که برای برخی فناوری ها کمترین انرژی را مصرف می کند) و صفحه نمایش تمام سفید هدف بگیرید. یک انتخاب رایج، نمایش یک برنامه در برنامه تقویم است که ترکیبی از پسزمینه سفید و عناصر غیرسفید دارد.
روشنایی صفحه نمایش را در حداقل و حداکثر روشنایی / نور پس زمینه اندازه گیری کنید. برای تنظیم حداقل روشنایی:
- از رابط کاربری اندروید (توصیه نمی شود) استفاده کنید . نوار لغزنده Settings > Display Brightness را روی حداقل روشنایی صفحه تنظیم کنید. با این حال، رابط کاربری اندروید اجازه می دهد تا روشنایی را تنها روی حداقل 10 تا 20 درصد از روشنایی پنل یا نور پس زمینه ممکن تنظیم کنید، و اجازه نمی دهد روشنایی را به قدری پایین تنظیم کنید که صفحه نمایش بدون تلاش زیاد قابل مشاهده نباشد.
- از فایل sysfs استفاده کنید (توصیه می شود). در صورت موجود بودن، از یک فایل sysfs برای کنترل روشنایی پنل تا حداقل میزان روشنایی پشتیبانی شده توسط سخت افزار استفاده کنید.
بعلاوه، اگر فایل sysfs پلتفرم امکان روشن و خاموش کردن پنل LCD، نور پسزمینه و صفحه لمسی را میدهد، از فایل برای اندازهگیری با روشن و خاموش شدن صفحه استفاده کنید. در غیر این صورت، یک wakelock جزئی تنظیم کنید تا سیستم به حالت تعلیق در نیاید، سپس صفحه را با دکمه پاور روشن و خاموش کنید.
اندازه گیری قدرت وای فای
اندازه گیری Wi-Fi را در یک شبکه نسبتاً ساکت انجام دهید. از معرفی حجم بالای ترافیک پخشی که با فعالیت اندازه گیری شده ارتباطی ندارد، پردازش کار اضافی را معرفی نکنید.
مقدار wifi.on
انرژی مصرف شده را در هنگام فعال بودن Wi-Fi اما به طور فعال ارسال یا دریافت نمی کند، اندازه گیری می کند. این اغلب به عنوان دلتا بین قرعه کشی فعلی در حالت تعلیق سیستم (خواب) با Wi-Fi فعال در مقابل غیرفعال اندازه گیری می شود.
مقدار wifi.scan
انرژی مصرف شده در حین اسکن Wi-Fi برای نقاط دسترسی را اندازه گیری می کند. برنامهها میتوانند اسکنهای Wi-Fi را با استفاده از API کلاس WifiManager startScan()
فعال کنند. همچنین میتوانید تنظیمات > Wi-Fi را باز کنید، که هر چند ثانیه یکبار اسکن نقطه دسترسی را با یک جهش آشکار در مصرف انرژی انجام میدهد، اما باید قدرت صفحه نمایش را از این اندازهگیریها کم کنید.
توجه : از یک تنظیمات کنترل شده (مانند iperf ) برای ایجاد دریافت و انتقال ترافیک شبکه استفاده کنید.