Sta­ny glo­bal­ne i pro­ce­so­ra

Jak wie­my, gdy tele­fon jest nie­uży­wa­ny, wcho­dzi on w Deep sle­ep (DS), jed­nak nie wszy­scy wie­dzą, że są róż­ne stop­nie Deep sle­epu. Są stop­nia glo­bal­ne, urzą­dze­nia, pro­ce­so­ra, wydaj­no­ści. Ja opi­szę stop­nie glo­bal­ne i stop­nie pro­ce­so­ra.

Sta­ny glo­bal­ne. Na począt­ku mają lite­rę „G”. Roz­cią­ga­ją się od G0 do G3.

G0-ekran jest wyłą­czo­ny, ale w tle pro­ce­sy cho­dzą nor­mal­nie. Wystę­pu­je pod­czas łado­wa­nia, albo np pod­czas syn­chro­ni­za­cji. Wybu­dze­nie nastę­pu­je natych­mia­sto­wo

G1-pro­ce­sor jest pau­zo­wa­ny (instruk­cje prze­sta­ją być wyko­ny­wa­ne) lub wyłą­cza­ny, cache idzie z pro­ce­so­ra do ramu, lub do pamię­ci Fla­sh.
Wybu­dze­nie tro­chę trwa.

G2-prąd jest dostar­cza­ny tyl­ko do miej­sc, któ­re są potrzeb­ne do ponow­ne­go uru­cho­mie­nia, cache jest wipo­wa­ne, pro­ce­sor, dysk, ram są wyłą­czo­ne.

G3-cało­ść jest wyłą­czo­na

Sta­ny pro­ce­so­ra. Wystę­pu­ją od C0 do C3.

C0-instruk­cje nie są wyko­ny­wa­ne. Pobie­ra zde­cy­do­wa­nie naj­wię­cej ener­gii. Ekran włą­cza się bły­ska­wicz­nie.

C1-instruk­cje nie są wyko­ny­wa­ne, moż­na szyb­ko wró­cić do sta­nu C0. Pobie­ra mniej ener­gii. Uży­wa­ny, jeże­li tele­fon jest nie­uży­wa­ny przez oko­ło 25 min.

C2-napię­cie na pro­ce­sor jest niż­sze, niż przy C1, głęb­szy sen, mniej­sze zuży­cie ener­gii. Uży­wa­ny, gdy tele­fon jest nie­uży­wa­ny oko­ło godzi­nę.

C3-naj­głęb­szy sen, nie wszyst­kie tele­fo­ny go obsłu­gu­ją. Będzie czę­ściej uży­wa­ny na andro­idzie M, na razie jest uży­wa­ny czę­sto (nie zawsze) w środ­ku nocy, jeśli tele­fon się nie ładu­je.

Jak spraw­dzić, w jakim sta­nie jest nasz pro­ce­sor? Moż­li­wo­ść ta jest zależ­na od mode­lu, pro­du­cen­ta i sys­te­mu w naszym tele­fo­nie. U mnie np w /sys/devices/system/cpuX/cpuidle (gdzie X w cpuX ozna­cza numer rdze­nie, u mnie od cpu0 do cpu3) są w zależ­no­ści od rdze­nia 3 lub 4 fol­de­ry. Dla cpu0 są fol­de­ry: sta­te0, sta­te1, sta­te2, sta­te3. A dla cpu1 ‚cpu2 ‚cpu3 są tyl­ko: sta­te0, sta­te1, sta­te2. Czy­li tyl­ko 1 rdzeń może teo­re­tycz­nie wej­ść w napraw­dę głę­bo­ki sen. W poszcze­gól­ny­ch pod­fol­de­ra­ch mamy infor­ma­cje na temat: opi­su sta­nu, cza­su spę­dzo­ne­go w sta­nie, moż­li­wo­ści wyłą­cze­nia sta­nu z puli dostęp­ny­ch, opóź­nie­nia wzglę­dem przej­ścia z jed­ne­go sta­nu na głęb­szy. Tak więc u mnie stan c0 ma opis WFI, stan c1 ma RETENTION, c2 ma STANDALONE_POWER_COLLAPSE, a c3 ma POWER_COLLAPSE.
Tak więc, dzię­ki dowia­dy­wa­niu się o Deep sle­epie dowie­dzia­łem się, że mój pro­ce­sor nie wcho­dzi w stan głęb­szy, niż c0