Metode de extindere a duratei de viaţă a bateriei ...

12
Universitatea Politehnica din București Facultatea de Electronică, Telecomunicații și Tehnologia Informației București 2017 Metode de extindere a duratei de viaţă a bateriei dispozitivelor mobile bazate pe platforma Android Profesor Coordonator: Dr. Ing. Ştefan STĂNCESCU Masterand: Marian-Alexandru TUDORAN Master: I.I.S.C

Transcript of Metode de extindere a duratei de viaţă a bateriei ...

Page 1: Metode de extindere a duratei de viaţă a bateriei ...

Universitatea Politehnica din București Facultatea de Electronică, Telecomunicații și Tehnologia Informației

București 2017

Metode de extindere a duratei de viaţă a

bateriei dispozitivelor mobile bazate pe

platforma Android

Profesor Coordonator: Dr. Ing. Ştefan STĂNCESCU

Masterand: Marian-Alexandru TUDORAN

Master: I.I.S.C

Page 2: Metode de extindere a duratei de viaţă a bateriei ...

2

Cuprins

1. INTRODUCERE ............................................................................................................................................. 3

2. GESTIONAREA CONSUMULUI DE PUTERE ÎN SISTEMUL DE OPERARE LINUX ........................... 5

2.1 GESTIONAREA AVANSATĂ A PUTERII (Advanced Power Management) ..................................... 5

2.2 CONFIGURAREA AVANSATĂ ŞI INTERFAŢA DE PUTERE (Advanced Configuration and Power

Interface) ............................................................................................................................................................. 5

2.3 SISTEME DE GESTIONARE A PUTERII ............................................................................................ 6

2.4 STĂRI DE PUTERE ALE SISTEMULUI .............................................................................................. 6

2.4.1 Starea de aşteptare (Standby) .......................................................................................................... 6

2.4.2 Starea de supendare (Suspend) ........................................................................................................ 6

2.4.3 Starea de hibernare (Hibernate) ....................................................................................................... 6

3. GESTIONAREA PUTERII LA ANDROID ................................................................................................... 7

4. ARHITECTURA GESTIONĂRII CONSUMULUI LA ANDROID ............................................................. 8

5. MECANISMUL „WAKELOCK” ................................................................................................................... 9

6. CONCLUZII ................................................................................................................................................. 11

Page 3: Metode de extindere a duratei de viaţă a bateriei ...

3

1. INTRODUCERE

În zilele de astăzi tehnologia telefoanelor mobile este în continua dezvoltare,

aceasta aducând efecte pozitive în viaţa fiecărui om. Pentru a face faţă cererilor în creştere

pentru astfel de dispozitive mobile, au apărut pe piaţă diverse sisteme de operare. Însă, nu

toţi utilizatorii îşi pot da seama cu uşurinţă care sistem de operare este mai potrivit pentru

nevoile lor.

Reţelele de telefonie mobilă consumă o cantitate mare de date, în scopul de a

îmbunătăţi comunicaţiile şi de a comprima acoperirea datelor. Dispozitivele mobile au un

impact continuu asupra fiinţei umane, aceasta din urmă beneficiind de evoluţia rapidă a

tehnologiei. În trecut, dacă se dorea trimiterea unui document important, acesta trebuia

livrat fizic, însă în prezent datorită tehnologiei avansate, oamenii pot trimite documente

în format electronic cu ajutorul telefoanelor mobile. Telefoanele mobile au un impact

major şi în alte domenii, cum ar fi cele business.

Cele mai avansate dispozitive mobile pot capta fotografii care sunt comparabile cu

camerele foto, din punct de vedere al rezoluţiei. Dispozitivele mobile devin semnificative

pentru marketing şi publicitate, furnizorul de servicii având o concurenţă foarte mare din

punct de vedere al costurilor aplicate pentru comunicare. Totuşi, în general numărul de

telefoane mobile sau de smartphone-uri este în continuă creştere, ceea ce duce la nevoia

de a înlocui telefoanele publice şi telefoanele fixe din fiecare locuinţă.

Gestionarea consumului dispozitivelor Android a devenit o problemă destul de

importantă. Smartphone-urile şi tabletele au un consum de energie ridicat datorită

componentelor hardware, iar dezvoltatorii de aplicaţii exploatează aceste componente

pentru a îmbunătăţi experienţa de utilizare. Se remarcă faptul că durata de viaţă a bateriei

nu se extinde, pe măsură ce cererea de energie creşte. Astfel, s-au efectuat foarte multe

cercetări pentru a investiga modul în care se poate realiza reducerea consumului de

energie la minimum.

Gestionarea consumului de energie (PM) al calculatoarelor a evoluat încă de la

introducerea conceptelor de management al puterii Advanced Power Management (APM)

şi Advanced Configuration & Power Interface (ACPI). Aceste două concepte sunt folosite

în general pentru calculatoare personale. Deşi sistemul de operare Android se bazează pe

kernelul Linux, acesta şi-a dezvoltat propriul sistem de management al puterii.

În urma unui studiu, s-a constatat faptul că 400,000 de dispozitive Android sunt

activate în fiecare zi, iar gestionarea consumului reprezintă o problema majoră. Pentru un

calculator de uz personal, gestionarea consumului de energie (PM) ajută la reducerea

puterii consumate dar şi a cerinţelor impuse în ceea ce priveşte răcirea. Atunci când se

consumă puţină putere, adică disiparea căldurii este destul de mică, stabilitatea sistemului

Page 4: Metode de extindere a duratei de viaţă a bateriei ...

4

este destul de ridicată, acest lucru fiind extrem de important atunci când vine vorba de

telefoane mobile.

Economisirea bateriei pentru telefoanele mobile a devenit un subiect de cercetare

destul de interesant în ultimii ani. În zilele de astăzi, dezvoltatorii de sisteme se confruntă

cu probleme fundamentale, cum ar fi salvarea resurselor sistemului pe cât de mult posibil.

Apariţia smartphone-urilor pe piaţă a facut posibilă includerea unor noi facilităţi pentru

utilizatori, cum ar fi: navigarea pe internet, înregistrarea clipurilor video sau programarea

întâlnirilor, facilităţi care erau disponibile doar pe calculatoarele personale.

Sistemul de operare Android este derivat din sistemul de operare Linux. Principala

diferenţă este reprezentată de faptul că telefoanele mobile au puterea limitată, spre

deosebire de computere. Platforma Android utilizează sisteme de blocare (wakelocks)

pentru a limita puterea dinamic în timp ce sistemul rulează. Această caracteristică este

utilă pentru dispozitivele nefolosite şi poate oferi o economisire semnificativă a puterii pe

un sistem.

Page 5: Metode de extindere a duratei de viaţă a bateriei ...

5

2. GESTIONAREA CONSUMULUI DE PUTERE ÎN SISTEMUL DE OPERARE

LINUX

Gestionarea consumului de putere în sistemele de operare este o operaţie destul de

importantă datorită cererilor în creştere existente pe piaţă. Pentru a reduce pierderile de

putere, Linux pune la dispoziţie mai multe opţiuni hardware de gestionare a puterii, cum

ar fi utilizarea circuitelor de tact (clock gating), scalarea de tensiune, activarea modulelor

de sleep şi dezactivarea memoriei cache. Fiecare dintre aceste caracteristici au rolul de a

reduce consumul de energie al sistemului în detrimentul latenţei şi/sau al performanţei.

[1]

2.1 GESTIONAREA AVANSATĂ A PUTERII (Advanced Power Management)

APM constă dintr-unul sau mai multe nivele de software care suportă gestionarea

puterii calculatoarelor. Gestionarea avansată a puterii defineşte interfaţa independentă

software-hardware între software-ul care realizează managementul puterii şi driverul

sistemului de operare. Acesta ascunde detaliile hardware, permiţând prin intermediul

software-urilor de nivel înalt să utilizeze APM fără a fi nevoie de cunoştinţe despre

interfaţa hardware. Specificaţiile software-ului de gestionare a puterii defineşte un mediu

caracterizat pe diferite nivele, în sensul că aplicaţiile, sistemele de operare, driverele

dispozitivelor şi BIOS-ul APM pot lucra împreuna pentru a reduce consumul de putere.

În concluzie, APM poate extinde durata de viaţă a bateriilor de sitem şi prin urmare

va creşte productivitatea şi disponibilitatea sistemului. [2]

2.2 CONFIGURAREA AVANSATĂ ŞI INTERFAŢA DE PUTERE (Advanced

Configuration and Power Interface)

Prin intermediul ACPI se permite controlul gestionării puterii din cadrul sistemului

de operare spre deosebire de APM unde gestionarea puterii este făcută la nivel de BIOS.

Cu ajutorul ACPI utilizatorul poate specifica la ce moment de timp un dispozitiv (de

exemplu, un monitor) se va opri din funcţionare. Dacă utilizatorul alege să specifice că

doreşte un consum de putere redus atunci când bateria este scăzută, unele aplicaţii care nu

sunt destul de importante vor deveni inactive. Sistemul de operare poate reduce nevoile

plăci de bază şi a dispozitivelor periferice până în momentul în care acestea sunt necesare

în mod deosebit. Cu ajutorul ACPI, computerul se poate opri din funcţionare şi poate intra

într-o stare inactivă, totuşi fiind capabil să răspundă la un apel telefonic.

În concluzie, ACPI oferă atât utilizatorului cât şi sistemului de operare posibilitatea

de a adapta sistemul nevoilor personale din punct de vedere al consumului de putere.

Page 6: Metode de extindere a duratei de viaţă a bateriei ...

6

2.3 SISTEME DE GESTIONARE A PUTERII

În orice sistem de operare gestionarea puterii este considerată o necesitate datorită

cererii foarte mari din punct de vedere al consumului. Linux are şi o altă funcţionalitate

numită Sistemul de Gestionare al Puterii, prin care se realizează aducerea sistemului într-

o stare în care consumul este redus. În această stare, sistemul consumă energie minimă

prin care se asigură un răspuns mai lent totuşi la cererile utilizatorului. Cantitatea de

energie şi timpul de răspuns depind de starea în care se află sistemul. [3]

2.4 STĂRI DE PUTERE ALE SISTEMULUI

Stările în care poate intra un sistem bazat pe Linux sunt dependente de paltforma

de bază, şi diferă în funcţie de arhitectură şi generaţie. În general, există trei stări care se

regăsesc pe majoritatea arhitecturilor şi suportă o sisteme de gestionare a puterii. Nucleul

(kernelul) suportă explicit trei stări: Aşteptare (Standby), Suspendare (Suspend) şi

Hibernare (Hibernate) şi oferă un mecanism de definire a unor stări noi (un port

arhitectural al kernel-ului) .

2.4.1 Starea de aşteptare (Standby)

Starea de aşteptare foloseşte energie redusă, sistemul conservă energia prin punere

procesorului într-o stare de oprire. Gestionarea puterii nu este relevantă însă răspunsul

este în general mai mic de o secundă.

2.4.2 Starea de supendare (Suspend)

Suspendarea este o stare numită “suspendare la RAM”. În această stare, toate dispozitivele

sunt puse într-o stare inactivă excepţie făcând memoria principală. Memoria este pusă

într-un mod de reîmprospătare propriu, prin acest lucru asigurându-se faptul că ceea ce

conţine nu se va pierde. Latenţa de răspuns este mai mare faţă de modul Standby, însă

timpul este destul de mic, 3-5 secunde.

2.4.3 Starea de hibernare (Hibernate)

Hibernarea conservă majoritatea energiei prin oprirea întregului sistem, după salvarea

stării sistemului, toate dispozitivele fiind oprite necondiţionat. Hibernarea este singura

stare care poate fi folosită în absenţa oricărei platforme suport pentru gestionarea

consumului. Driverul de gestionare al puterii opreşte sistemul în loc să intre într-o stare

de joasă putere. Acest mecanism oferă o economisire satisfăcătoare a energiei şi poate fi

folosit atunci când există părţi hardware defecte ale gestionării puterii.

Page 7: Metode de extindere a duratei de viaţă a bateriei ...

7

3. GESTIONAREA PUTERII LA ANDROID

Gestionarea consumului de putere la Android este dezvoltat pe baza standardului de

gestionare prezent la Linux. Dispozitivele bazate pe sistemul de operare Android oferă

propriul sistemul de gestionare al puterii, sistem care a fost dezvoltat pe premiza că un

procesor nu ar trebui să consume energie dacă nici o aplicaţie sau serviciu necesită acest

lucru. Android impune ca cererile de aplicaţii şi servicii asupra procesorului să fie făcute

prin aplicaţii framework şi librării native Linux. Dacă nu sunt cereri, Android va opri

procesorul.

Design-ul nucleului (kernel-ului) Android se bazează pe Linux, însă nu utilizează

un nucleu standard Linux. Un telefon mobil stă destul de mult timp într-o stare atunci când

nu este folosit. Acest lucru sugerează faptul că procesorul de aplicaţii este inactiv, în timp

ce procesorul de comunicaţii efectuează o activitate de nivel redus, fiind nevoit să rămână

conectat la reţea pentru a fi capabil să primească apeluri, mesaje şi altele. Timpul petrecut

în această stare este critic atunci când vine vorba de durata de viaţă a bateriei. Procesorul

salvează stările sistemului în memoria RAM iar dispozitivul este pus în modul Sleep.

Datorită faptului că procesorul este utilizat la capacitate maximă, Android nu

suportă nici o stare de aşteptare (Standby). Aplicaţiile din spaţiul utilizatorului pot folosi

clasa PowerManager pentru a controla stările de putere ale dispozitivului. În mod normal

gestionarea puterii este suportată de către drivere fără intervenţii din parte utilizatorului

sau nucleului.

Page 8: Metode de extindere a duratei de viaţă a bateriei ...

8

4. ARHITECTURA GESTIONĂRII CONSUMULUI LA ANDROID

Aplicaţiile Android sunt obligate să solicite resursele procesorului prin intermediul

aplicaţiei framework şi prin librăriile native Linux. Arhitectura pe care se bazează

gestionarea consumului este prezentată în figura de mai jos. Se remarcă faptul că dacă nu

există o cerere, procesorul este inactiv. Un sistem de blocare ajuta sistemul prin prevenirea

intrării acestuia în suspendare sau alte stări de putere joasă. [4] Există două setări pentru

„wake lock”:

- WAKE_LOCK_SUSPEND previne suspendarea întregului sistem

- WAKE_LOCK_IDLE este o stare de joasă putere, care cauzează destul de des

latenţe de întreruperi sau dezactivează un set de întreruperi

Figură 1 Arhitectura gestionării puterii

În figura de mai sus, când Aplicaţia A este executată, aceasta are nevoie de

resursele procesorului. Prin urmare, aceasta trimite o cerere API-ului de gestionare al

puterii (Power Management API) care îi transferă cererea (folosind interfaţa nativă Java)

driverului de putere prezent în nucleul Linux. Prin managerul de putere (Power

Manager) se trimite un răspuns Aplicaţiei A şi este creat wake lock-ul. În tabelul de mai

jos sunt prezentate diferite stări, cea mai des utilizată fiind cea parţială

(PARTIAL_WAKE_LOCK).

Page 9: Metode de extindere a duratei de viaţă a bateriei ...

9

Wake lock CPU Screen Keyboard

PARTIAL_WAKE_LOCK On Off Off

SCREEN_DIM_WAKE_LOCK On Dim Off

SCREEN_BRIGHT_WAKE_LOCK On Bright Off

FULL_WAKE_LOCK On Bright Bright

Tabel 1 Diferite setări WAKE LOCK

5. MECANISMUL „WAKELOCK”

Atunci când vine vorba de Android, “Wakelock” este un mecanism care previne

sistemul sa intre într-o stare de joasă putere. [5] Pe scurt, codul kernel poate seta un

wakelock cu comenzi de genul:

#include <linux/wakelock.h>

wake_lock_init (struct wakelock *lock, int type, const char *name);

Valoarea type va indica ce tip de wakelock se va folosi. Constanta name conţine un nume

care poate fi vizualizat în /proc/wakelocks. Există două stări posibile:

WAKE_LOCK_SUSPEND care previne sistemul să fie suspendat, în timp ce

WAKE_LOCK_IDLE previne intrarea sistemului într-o stare inactive de joasă putere care

ar putea mări timpii de răspuns.

Interfaţa de programare a aplicaţiei (API) pentru obţinerea şi eliberarea acestor blocări

este cea de mai jos:

void wake_lock (struct wake_lock *lock);

void wake_lock_timeout (struct wake_lock *lock, long timeout);

void wake_unlock (struct wake_lock *lock);

Există, de asemenea, şi o interfaţă utilizator-spaţiu. Alegând şi scriind un nume în

/sys/power/wake_lock se stabileşte o blocare cu acel nume, care apoi poate fi scris în

/sys/power/wake_unlock pentru a opri blocarea.

Page 10: Metode de extindere a duratei de viaţă a bateriei ...

10

Atunci când un sistem de blocare de tipul “Inactiv” este în curs, sistemul nu va intra într-

o stare de joasă putere (idle), iar acest lucru ar trebui să facă dispozitivul să fie mai

receptiv. Din acest motiv, nu trebuie să iasă din stare idle pentru a răspunde la întreruperi

sau evenimente. Atunci când un este activ un sistem de blocare de tipul “SUSPEND”,

sistemul nu va suspenda.

Pentru a managementul puterii, Android oferă un serviciu pentru aplicaţiile din

spaţiul utilizatorului cu ajutorul clasei PowerManager, prin care se realizează salvarea

puterii şi implicit extinderea duratei de viaţă a bateriei. Paşii care se parcurg sunt

următorii:

- se obţine acces la PowerManager printr-o cerere realizată în urma apelării

funcţiei Context.getSystemService()

- se creează o blocare şi vor fi activate steagurile de management al puterii pentru

ecran, pauză, etc.

- se obţine acces pentru blocare

- se realizeză operaţiile dorite de utilizator

- sistemul iese din starea de blocare

Cererile de blocare sunt realizate în layer-ul Java. Atunci când o aplicaţie android

obţine acces la cerere, se înregistrează o nouă instanţă în Serviciul de Manager al Puterii

(PowerManagerService), serviciu care rulează în layer-ul Java. Cererile înregistrate sunt

puse într-o listă şi pot fi gestionate ulterior.

Atunci când este folosită clasa PowerManager pentru a controla starea

dispozitivelor, durata de viaţă a bateriei va fi afectată semnificativ. Se va crea un obiect

în clasa PowerManager şi se vor putea folosi diverse metode pentru a controla starea

dispozitivului din punct de vedere al consumului de putere. De exemplu:

PowerManager pm = (PowerManager) getSystemService (Context.POWER_SERVICE)

PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, „My Tag”);

wl.acquire();

..Ecranul va rămâne aprins în această secţiune..

wl.release();

Page 11: Metode de extindere a duratei de viaţă a bateriei ...

11

6. CONCLUZII

În această lucrare s-au analizat principalele diferenţe dintre gestionarea puterii la

dispozitivele bazate pe Android şi tehnicile prezente în sistemul de operare Linux. S-a

examinat arhitectura Android pentru a se înţelege mai bine operaţia de gestionare a puterii,

dar şi mecanismul “wakelock”. S-a observat faptul că la Android îi este permis nucleului

să evite interacţiuni între procesele de suspendare şi evenimentele de activare.

Mecanismul wakelock previne nucleul din procesul de suspendare al sistemului sau

încearcă să oprească suspendarea în curs de desfăşurare. De asemenea, acestea îi oferă un

standard direct nucleului prin care se ia decizia oportunistă de suspendare a sistemului.

Fiecare obiect wakelock conţine câmpuri în care este stocată informaţia statistică,

cum ar fi numărul activărilor wakelock, timpul total de activare sau timpul maxim cât

mecanismul a fost activ continuu, oricând a fost activat sau dezactivat.

Metoda de gestionare a puterii la Android s-a dovedit a fi ineficientă atunci când

vine vorba de suspendarea sistemului deoarece porneşte acest proces din spaţiul nucleului,

practic preia controlul unei interfeţe care a fost atribuită pentru procesele din spaţiul

utilizatorilor, fiind nevoie să interacţioneze cu nucleul într-un mod neobişnuit.

Page 12: Metode de extindere a duratei de viaţă a bateriei ...

12

Bibliografie

1. H. Hartig, M. Hohmuth, and P. A. Barns. System integration for the android operating system. Proceedings of CollaborationCom., pp. 73–88 (2010) 2. M. Stemm and Y. H. Katz. Measuring and reducing energy consumption of network interfaces in hand-held devices. 13th ACM Symposium Operating Systems principles, pp. 102–107 (1997) 3. S. Salas and E. Hille, Introduction to Android Internals, John Wiley and Sons, New York (2007) 4. http://www.cs.uwc.ac.za/~mmotlhabi/apm2.pdf

5. https://developer.android.com/reference/android/os/PowerManager.html