Оценете темата:
  • 0 гласа - средно 0
  • 1
  • 2
  • 3
  • 4
  • 5

[INFO] Governors & Schedulers
#1

Попаднах на една тема в XDA, в която е обяснено надълго и нашироко за тези неща. Опитах се да направя сносен превод на 1вата част, която засяга регулаторите или т.нар. governors. Надявам се да съм се справил добре, като разбира се приемам всякакви критики и поправки, не съм много добър в английския. Навярно тук-таме имам и по някоя правописна/пунктуационна грешка така, че спокойно драскайте за поправки, но ще помоля да е на лично съобщение, за да не се разводнява темата - нека тук има само коментари по темата. Успях само с 1вата част, защото ми се видя по-проста, надолу в schedulers има повечко термини, които надали ще успея да преведа правилно, а и вече съм доста уморен. Някой ако му се занимава нека я преведе и ще я сложа в този пост като допълнение и ще драсна за помощта му отдолу, разбира се. Ползвах търсачката преди да започна да се занимавам и не намерих подобна тема, а смятам, че е важно да имаме подобна с разяснения, предполагам доста от нас са се чудили аджеба за какво са ни тия schedulers & governors.

Ще помоля някой модератор да я качи като важна, ако реши, че е ще е полезна и съответно да я премести от тук, ако сметне, че не й е тук мястото.

Governors/Регулатори:

Ondemand:

Използван 'по подразбиране' (default) регулатор (governor) в stock ядрата. Основната цел на този регулатор е да измени честотата на процесора на максималната такава веднага, щом засече активност от процесора, за да осигури максимална ефективност на системата. Използа времето, през което процесора е активен, за да отговори на въпроса 'колко критична е производителността в момента'. Ondemand скача на максимална честота на процесора, когато той е 'busy' и я понижава постепенно , когато процесора е по-леко натоварен или достига състояние 'idle'. Дори при тези обстоятелства много от нас смятат, че този governor е надежден - държи се пестеливо с батерията и осигурява добра производителност при настройки 'по подразбиране'. Една потенциална причина, поради която този governor не се смята за много енергийно ефективен е, че той решава каква ще е следващата честота, която ще използва мигновено. Това мигновено изискване може да 'отговори' бързо на промяна в натовареността на процесора, но обикновено това няма ефект над реалната натовареност на процесора според използването му в продължителен период от време при което има вероятност за бърза смяна между най-ниската и най-високата възможна честота за процесора.

OndemandX:

Най-общо казано Ondemand governor със спрени/будни профили. Този регулатор е предназначен да бъде по-пестелив откъм батерия, базиран върху Ondemand регулатора. Когато дисплея не свети, максималната честота е максимум 500 mhz. Дори тогава Ondemand е по подразбиране в много ядра и това е смятано за сигурно/стабилно. Състоянието на Ondemand/OndemandX зависи от способността на процесора да изменя честотата на си на работа, което трябва да стане на такива преходи, които да не създават лаг. Чел съм някъде(автора), че производителността на Ondemand/OndemandX значително зависи от различните I/O Schedulers (които ще преведем скоро). Това не е точно така за повечето от другите регулатори. Персонално за мен Ondemand/OndemandX се държи най-добре при SIO I/O scheduler.


Conservative:


По-бавен Ondemand, който понижава/повишава честотата на процесора по-бавено, за да пести батерия. Този governor е базиран на Ondemand governor-a, функционира като него като динамично пренастройва честотите на процесора базиращи се на натовареността му. Всъщност Conservative governor-a повишава/понижава честотите постепенно. По-просто казано прави го на стъпки, като преминава в режим 'idle', когато е достигнал най-ниската възможна честота. Този governor цели динамичната примяна на честотата на процесора, която да отговори на настоящото натоварване без да скача директно на максималната такава. "Sampling_down_factor" стойността се държи като отрицателен множител на "sampling_rate", за да намалява честотата, докато "sheduler"-a се грижи за потреблението на процесора (тук не съм никак сигурен за превода). За пример, ако "sampling rate" е равен на 20,000 и "sampling_down_factor" е 2, то governor-a оразмерява на всеки 40,000 микросекунди.

Interactive:

Може да бъде смятан за по-бърз Ondemand. По- snappier (вероятно правописна грешка, не откривам нищо по речници, нито ми говори каквото и да е тази дума), по-малко батерия (!?). Interactive governor-a е създаден за по-голямо натоварване. Вместо да изследва всеки интервал като Ondemand, той решава как да оразмери честотата на процесора тогава, когато той вече не е в idle режим. Този регулатор има следните предимства: 1) По-последователно ескалиращи честоти, защото съществуващите регулатори правят техните оразмерявания на честотите според натоварването на процесора, докато Interactive governor-a има зададен таймер, който последователно и постоянно оразмерява работната честота на процесора. (Един вид 'изследването' за нужда от повече изчислителна мощ се прави на определен период от време в този governor, докато при останалите това се случва едва, когато процесора се натовари. Т.е. тук с този таймер, ако правилно съм разбрал и превел по-често се търси промяна в натоварването и съответно нуждата от повече изчислителна мощ.). 2) По-висок приоритет за увеличаване на честотата на работа на процесора, което е предимство, за разлика от повечето регулатори, които съумяват да увеличат честотата на работа едва, когато гладния процес нужен за изпълнение на дадена задача вече е изпълнил задачата. Interactive е по-интелигентен от Ondemand заради неговите оптимизации за стабилност. Защо ? Проверяване честотата на процесора на всеки Х ms (както Ondemand) може да доведе до понижаване на захранването на процесора за Х ms, което води до загуба на кадри/frames, лагване на UI и прочие. Вместо да проверява честотата на процесора на определена стойност, Interactive ще го направи веднага, щом честотата на процесора излезе от рамките на режим idle. Когато процесора излезе от idle режим стартира таймер, който е конфигуриран да прави проверка на 1-2 ticks (вероятно се има в предвид секунди). Ако процесора се претовари в момента след излизането си от idle състояние и преди стартирането на таймера тогава се предполага, че има пад в захранването и честотата на процесора моментално се изстрелва до максимума (за да се отговори на нуждата от процесорна мощ, изглежда).

InteractiveX:

Това е Interactive governor с 'буден' профил. По пестелив откъм батерия спрямо Interactive.

Lulzactive:

Това ново 'отритие' от Tegrak е базирано на Interactive & Smartass регулаторите и е любим на доста хора.
Стара версия: Когато натоварването е по-голямо или равно на 60%, регулатора оразмерява на следващата по големина честота на процесора. Когато натоварването е по-малко от 60% регулатора сваля 1 стъпка надолу честотата. Когато дисплея е изгасен, то честотата е заключена до абсолютния минимум.
Нова версия:Добавени са 3 нови програмируеми параметъра: inc_cpu_load, pump_up_step, pump_down_step. За разлика от старата версия тези нови параметри дават повече контрол на потребителя. С тях можем да видим момента, в който регулатора решава да повиши/понижи честотата на процесора. Можем също така да зададем стъпки, които да бъдат пропуснати, докато честотите се понижават/повишават. Когато натоварването е по-високо или равно на inc_cpu_load, то регулатора оразмерява pump_up_step няколко стъпки нагоре. Когато натоварването е по-малко от inc_cpu_load, регулатора сваля pump_down_step надолу.

Пример - представете си, че:
inc_cpu_load=70
pump_up_step=2
pump_down_step=1
If current frequency =200, Every up_sampling_time Us if cpu load >= 70%, cpu is scaled up 2 steps - to 800.
If current frequency =1200, Every down_sampling_time Us if cpu load < 70%, cpu is scaled down 1 step - to 1000.

Smartassv2:

Версия 2 на оригиналния "Smartass governor" на Erasmux, любим за много хора. Този governor се цели в идеалната честота повишавайки я по-агресивно и понижавайки я по-бавно. Използва различни 'идеални' честоти при загасен дисплей и при активен такъв, именувани "awake_deal_freq" & "sleep_ideal_freq". Този governor сваля честотата на процесора много бързо (за да достигне "sleep_ideal_freq" по-скоро) докато дисплея ни е загасен и я увеличава бързо до "awake_ideal_freq", когато дисплея ни е активен. Няма горна граница за честотата, когато дисплея ни е изключен (за разлика от Smartass governor-a). По този начин целия обхват от честоти е на разположение за governor-a, за го използва при изключен и включен дисплей. Идеята на този регулатор е да балансира между добра производителност и добър живот на батерията на смартфона ни.

Userspace:

Оставя на нас да изберем честотите на процесора ни.

Powersave:

Заключва между максимална и минимална честота на процесора. Не може да се използва за screen-off/screen-on, ако свалянето до ниска честота е прекалено бавно).

Performance:

Задава манималната честота за максимална. Перфектен за benchmark тестове.

Smoothass:

Същия като Smartass, но МНОГО по-агресивен предполагайки около 1/3 по-добър живот на батерията спрямо stock ядро.



Оригинална тема, браво на @droidphile за труда.

Etiam si omnes, ego non. 
Цитирай
#2

Добавени: OndemandX, Interactive, InteractiveX, Lulzactive governors.

Подмених и линка към оригиналната тема, понеже съществува доста по-пълна такава, от която ще превеждам от тук нататък.

Update: Временно съм преустановил сякви преводи, защото нямам време. Като ми мине сесията ще довърша темата.

Ако има желаещи да се включат в превеждането нека драснат едно лично.

Etiam si omnes, ego non. 
Цитирай
#3

Четох темата,но не можах да разбера много кой от всичките пести най много батерията?
Цитирай
#4

zarkomortala написа:Четох темата,но не можах да разбера много кой от всичките пести най много батерията?

Powersave.
Цитирай




Потребители разглеждащи темата: 1 гост(и)