Како ЕАС помаже да Гоогле Пикел постане најбржи Андроид телефон

Гоогле Пикел паметни телефони су међу најбржим Андроид телефонима на тржишту. Енерги Аваре Сцхедулинг (ЕАС) је делимично разлог зашто је телефон тако углађен.

Далеко у прошлости, када је Линус био само идеја у уму Линуса Торвалдса, ЦПУ су били једнојезгарни ентитети који су захтевали огромну количину енергије за мало енергије. Први икада комерцијално доступан процесор, Интел 4004, радио је на такту од 740 кХз на једном језгру. Тада није било потребе за планером учитавања. Планирање учитавања било је резервисано за "бехемоте" са два језгра као што је ИБМ Повер 4 који је изашао неколико деценија касније. Они су радили на зверских 1,1 ГХз до 1,9 ГХз и захтевали су програме и систем за правилно коришћење ових језгара. Како смо од ових машина дошли до софтверских алгоритама који користе више језгара? Можда сте већ чули за Енерги Аваре Сцхедулинг (ЕАС) на нашим форумима. То је део разлога зашто Гоогле Пикел паметни телефони раде тако добро. Шта је тако сјајно у вези са ЕАС-ом и како смо уопште дошли до ове тачке? Пре него што то објаснимо, морамо да разговарамо о Линук планерима учитавања.


Еволуција Линук планера учитавања

Кружни распоред

Роунд Робин Процессинг. Извор: Википедија

Роунд робин обрада је једноставан концепт за објашњење и разумевање, а још једноставнији за разумевање његових недостатака. Роунд-робин користи сечење времена да додели време сваком процесу. Претпоставимо да имамо четири процеса која су покренута на нашем рачунару.

  • Процес А
  • Процес Б
  • Процес Ц
  • Процес Д

Сада, хајде да урадимо посао кружног распореда. Сваком процесу ћемо доделити 100 милисекунди (сечење времена) пре него што пређемо на следећи. То значи да Процесу А може бити потребно 100 милисекунди да обави своју обраду, затим прелази на Процес Б и тако даље. Ако је за посао апликације потребно 250 милисекунди, она ће морати да прође кроз овај процес 3 пута само да би завршила свој посао! Сада скалирајте ово на различита језгра, тако да се процес А и процес Б додељују језгру 1, а процес Ц и процес Д језгру 2. Ово је замењено О(н) распоређивањем (које је било као кружно, али користећи епохе и омогућавајући динамичку алокацију време), затим О(1) заказивање (минимизирани трошкови, неограничена подршка за процесе), затим на крају потпуно фер планер (ЦФС). ЦФС је спојен у Линук кернел верзију 2.6.23 у октобру 2007. Од тада је ремонтован и још увек је подразумевани планер у Линук системима.

Потпуно поштен распоред

Потпуно поштени планер постоји у Андроиду од његовог почетка и користи се на не-великим. МАЛО уређаја. Користи интелигентни алгоритам за одређивање редоследа обраде, додељеног времена итд. То је пример радне имплементације добро проученог алгоритма за планирање названог „пондерисано поштено чекање у редовима“. Ово се у основи фокусира на давање приоритета системским процесима и другим процесима високог приоритета који се покрећу на машина. Ако би се покренуло на великом. МАЛИ уређај, сва језгра би се доживљавала као једнака. Ово је лоше, јер језгра мале снаге могу бити приморана да покрећу интензивне апликације, или још горе, може се догодити супротно. Декодирање за слушање музике може се обавити на великом језгру, на пример, непотребно повећавајући потрошњу енергије. Због тога нам је потребан нови планер за велике. ЛИТТЛЕ, онај који заправо може препознати и искористити разлику у језграма на енергетски ефикасан начин. Ту на сцену ступа хетерогена вишеструка обрада (ХМП), стандардни планер учитавања који сада ради већина Андроид телефона.

Хетерогена вишеструка обрада

Ово је стандардни планер оптерећења за све велике. МАЛИ уређај објављен последњих година, осим Гоогле Пикел-а. ХМП користи велике. ЛИТТЛЕ архитектура, делегирање ниског приоритета, мање интензивног рада на мала језгра која троше мање енергије. ХМП је „безбедан“ при чему зна шта треба да иде у велика језгра, а шта у мала језгра, без грешке. Једноставно ради и захтева много мање напора да се постави на развојној страни него нешто попут ЕАС-а, у шта ћемо се позабавити за тренутак. ХМП је само проширење ЦФС-а како би био свестан снаге.

ХМП не претпоставља, нити предвиђа будуће процесе. Ово је добро, али зато уређај не може бити тако флуидан као они који користе ЕАС, а такође и разлог зашто троши нешто више батерије. Ово нас, коначно, доводи до Енерги Аваре Сцхедулинг (ЕАС), за који чврсто верујем да је будућност у развоју РОМ-а и кернела пошто га све више ОЕМ-а усваја.

Планирање енергије свесно

Енерги Аваре Сцхедулинг (ЕАС) је следећа велика ствар о којој корисници на нашим форумима говоре. Ако користите ОнеПлус 3 (или Гоогле Пикел, очигледно) сигурно сте чули за њега на форумима. Лансиран је у мејнстрим са Куалцомм Снапдрагон 845, тако да ако имате један од ових уређаја, већ имате паметни телефон са ЕАС-ом. ЕАС у облику језгара као нпр РендерЗенитх и РОМ-ови као нпр ВертекОС и ПуреФусион су освојили ОнеПлус 3 форуме у свом врхунцу. Наравно, Гоогле Пикел такође долази са ЕАС-ом. Са обећањима о побољшаном трајању батерије и бољим перформансама, у чему је квака?

Планирање енергије свесно није тако једноставно јер није универзално за сваки уређај као што су ЦФС или ХМП. ЕАС захтева разумевање процесора на коме ради, на основу енергетског модела. Ове енергетске моделе праве тимови инжењера који стално тестирају и раде на оптималном раду. Пошто су Снапдрагон 820 и 821 у основи исти, прилагођена језгра на ОнеПлус 3 користе енергетски модел Гоогле Пикел. Уређаји са Снапдрагон 845 могу да користе ЕАС, а ОнеПлус 6 у одређеној мери. Није тако подешен као што би био Гоогле Пикел уређај, али обавља посао. Ево примера како, упркос томе што ОнеПлус 6 има бољи процесор са ЕАС-ом, Пикел 2 КСЛ га и даље надмашује у глаткоћи. Обе ове слике су преузете са наше преглед оријентисан на брзину ОнеПлус 6.

Ако имате проблема са разумевањем графикона, можете погледати слику испод за упутства. Све што прелази зелену линију указује на испуштене оквире и, у најгорем случају, приметно муцање.

ОнеПлус 6 имплементација ЕАС-а је занимљива, јер не изгледа да је потпуно развијена имплементација као што бисте нашли на Гоогле Пикел-у са истим СоЦ-ом. Подешавање планера такође нема много смисла, тако да то вероватно објашњава зашто није толико ефикасан колико бисте очекивали. Изузетно је конзервативан у потрошњи енергије, при чему систем даје предност језгри мале снаге за већину посла.

Подесиве су једноставно скуп параметара који се прослеђују централном процесору, што мења начин на који гувернер реагује на одређене ситуације у смислу фреквенције. Планер затим одлучује где поставља задатке на различите процесоре. Подесиве опције ОнеПлус 6 су постављене да дају приоритет раду на језграма мале снаге. Такође не помаже ни то што Гоогле Пикел 2 има огромну количину појачања улаза, држећи свих 8 језгара на мрежи све време. Гоогле такође користи ан прекид балансера што помаже у уклањању падова оквира и побољшању перформанси.

Дакле, како ЕАС функционише? Зашто је тако ефикасан само у одређеним условима?

Планирање са свешћу о енергији уводи потребу за коришћењем енергетског модела, и као што је горе поменуто захтева много тестирања и рада да би био савршен. ЕАС покушава да уједини три различита језгра језгра који сви делују независно, а енергетски модел помаже да се уједине.

  • Линук планер (ЦФС, поменут горе)
  • Линук цпуидле
  • Линук цпуфрек

Обједињавање сва 3 дела под планером и њихово заједничко израчунавање даје потенцијал за уштеду енергије, јер њихово заједничко израчунавање омогућава да буду што ефикаснији. ЦПУИдле покушава да одлучи када ЦПУ треба да пређе у режим мировања, док ЦПУФрек покушава да одлучи када да повећа или смањи ЦПУ. Оба ова модула имају примарни циљ уштеду енергије. И не само то, он затим категорише процесе у четири цгрупе, а то су топ-апп, систем-бацкгроунд, први план и позадина. Задаци који треба да буду обрађени се смештају у једну од ових категорија, а затим се категорији даје ЦПУ снага и рад се делегира преко различитих ЦПУ језгара. топ-апп је највиши приоритет завршетка, праћен првим планом, позадином, а затим системском позадином. Позадина технички има исти приоритет као системска позадина, али системска позадина обично такође има приступ више малих језгара. У ствари, Енерги Аваре Сцхедулинг узима кључне делове Линук кернела и све то обједињује у један процес.

Када буди уређај, ЕАС ће изабрати језгро у најплићем стању мировања, минимизирајући енергију потребну за буђење уређаја. Ово помаже да се смањи потребна снага при коришћењу уређаја, јер неће пробудити велики кластер ако то није потребно. Праћење оптерећења је такође изузетно важан део ЕАС-а и постоје две опције. „Праћење оптерећења по ентитету“ (ПЕЛТ) се обично користи за праћење оптерећења, информације се затим користе за одлучивање о фреквенцијама и начину делегирања задатака преко ЦПУ-а. „Праћење оптерећења уз помоћ прозора“ (ВАЛТ) такође се може користити и оно је оно што се користи на Гоогле Пикел-у. Многи ЕАС РОМ-ови на нашим форумима, као што је ВертекОС, одлучују да користе ВАЛТ. Многи РОМ-ови ће објавити две верзије кернела са ВАЛТ или ПЕЛТ, тако да је на кориснику да одлучи. ВАЛТ је интензивнији, са високим врховима фреквенције процесора, док ПЕЛТ покушава да остане конзистентнији. Праћење оптерећења заправо не утиче на фреквенцију ЦПУ-а, већ само говори систему колика је употреба ЦПУ-а. Већа употреба ЦПУ-а захтева већу фреквенцију, па је конзистентна особина ПЕЛТ-а то што узрокује да се фреквенција ЦПУ-а полако повећава или смањује. ПЕЛТ има тенденцију да залута ка већем извештавању о оптерећењу процесора, тако да може да обезбеди веће перформансе уз већу цену батерије. Међутим, у овом тренутку нико заиста не може рећи који је систем за праћење оптерећења бољи, пошто се оба метода праћења оптерећења непрестано закрпе и усавршавају.

У сваком случају, очигледно је да, без обзира на коришћени метод праћења оптерећења, постоји повећање ефикасности. Уместо да само обрађује задатке на било ком процесору, задатак се анализира и процењује количина енергије која је потребна за његово покретање. Ово паметно постављање задатака значи да се задаци завршавају на много ефикаснији начин, док истовремено чини систем бржим у целини. ЕАС се односи на добијање најглађег могућег корисничког интерфејса уз минималну потрошњу енергије. Овде долазе у игру друге спољне компоненте као што је сцхедтуне.

Сцхедтуне је дефинисан у свакој цгроуп са два подешавања која обезбеђују финију контролу над задацима који треба да се заврше. Он не контролише само расподелу задатака на више ЦПУ-а, већ и да ли би уочено оптерећење требало да буде надувано како би се обезбедило да се временски осетљиви задаци брже заврше. На овај начин, апликације и услуге у првом плану које корисник користи неће успорити и узроковати непотребне проблеме са перформансама.

Иако је планирање са свешћу о енергији следећа велика ствар, такође се може тврдити да је већ овде и да постоји неко време. Са све више и више уређаја који долазе у мејнстрим са Енерги Аваре Планирањем, ново доба ефикасности мобилне обраде је ту.

Предности и мане Роунд-Робин-а, ЦФС-а, ХМП-а и ЕАС-а

Иако су моје графичке вештине испод нивоа, саставио сам слику која би требало да сумира предности и недостатке сваког од ових планера.


Желео бих да се посебно захвалим КСДА признатом сараднику Мостафа Ваел чија су објашњења различитих аспеката ЕАС-а умногоме помогла у стварању овог чланка. Такође бих желео да се захвалим КСДА Рецогнизед Девелоперу јосхуоус, КСДА признати програмер РендерБрокен и Мостафа Ваел за његово писање о ЕАС-у. За оне од вас који су заинтересовани за делове који се односе на ЕАС, Линаро има много документације о ЕАС-у коју можете прочитати.