Tweak Kernels Task Scheduler för att förbättra prestandan på Android [del 2]
Välkommen tillbaka till ytterligare en Tweaking -guide för Cernel Task Scheduler för Android. I den föregående artikeln täckte vi några grundläggande alternativ för uppgiftsplaneringskonfiguration, som kan ställas in manuellt för att öka prestandan på alla typer av Android -enheter. I situationen har du inte kollat den artikeln redan, vi föreslår starkt att du gör det innan du fortsätter, eftersom den innehåller lite fördelaktig information för att mycket bättre förstå exakt hur Task Scheduler verkligen fungerar såväl som exakt hur man ändrar Kernels uppgiftsplan.
Tweak Kernels Task Scheduler
Bortsett från de grundläggande parametrarna som diskuteras i föregående artikel, implementerar Linux Task Scheduler några specialfunktioner som försöker förbättra dess rättvisa distribution av processkraft. Dessa funktioner skapar inte exakt samma resultat på alla system såväl som användningsfall, så att de kan aktiveras eller inaktiveras vid körning. De erbjuds med kärnan debugfs. Men inte alla kärnor packar support för tweaking schemaläggare debugfs -funktioner. Du kan upptäcka om din kärna stöder att ändra dessa funktioner genom att ange kommandot i en terminal -app (som superanvändare):
katt/sys/kärna/felsökning/scheman)
Om du får en utgång som följande, stöder din kärna att ändra felsökningsfunktioner vid körning:
Om du får en “Inga sådana data eller katalog” -felutgång kan du försöka installera kärnfelsökningarna, i situationen erbjuds det dock inte monterat vid start:
montering -t debugfs ingen/sys/kärna/felsökning
Om detta kommando inte skapar ett fel kan du försöka skicka det allra första kommandot igen.
Växling av en schemaläggningsfelsökningsfunktion
För att tillåta en schemaläggningsfelsökningsfunktion kräver du bara att komponera dess namn inuti Sched_Features -filen. Till exempel:
echo gentle_fair_sleepers>/sys/kernel/debug/sched_features
För att inaktivera en funktion måste du också komponera namnet i exakt samma fil, men med en “no_” framför. Till exempel:
echo no_gentle_fair_sleepers>/sys/kernel/felsökning/sched_features
Missa inte
Android Ram -administrationsidéer såväl som tricks
De flesta typiska schemaläggningsfelsökningar
Det är inte garanterat att en viss kärna kommer att stödja alla uppgiftsscheman funktioner som diskuteras nedan. Stöd för funktioner varierar mellan kärnversioner och mellan gadgetimplementeringar. Alla funktioner som stöds är de som finns i utgången från kommandot “katt/sys/kärna/felsökning/scheman_features”. Funktioner som börjar med en “no_” är de som stöds men för närvarande funktionshindrade.
Gentle_Fair_Sleepers
Denna funktion försöker minimera körtiden för sömnare (processer som tenderar att sova länge). Som ett resultat distribueras mer runtime till aktiva uppgifter. Vissa individer rapporterar att inaktivering av denna funktion kan förbättra lyhördhet på avstängda enheter.
Affine_wakeups
Sätt en uppgift som vaknar på exakt samma CPU som uppgiften som vaknade den. Detta antar att den nya uppgiften kommer att fungera på exakt samma data i minnet som den föregående. Att ordna det på exakt samma CPU kommer att förbättra cache -lokaliteten (läs nedan för mer information om cache -lokalitet).
Rt_runtime_share
Vi kräver en del djupare uppgift att ordna förståelse för att förstå den här funktionen: på Linux finns det olika uppgifter om att arrangera prioriteringar. En uppgifts ordningsproblem definierar exakt hur viktig den uppgiften är såväl som exakt hur mycket resurser som kommer från schemaläggaren. Många uppgifter körs med hjälp av Sched_OTHER (Sched_normal på nyare kärnor) prioritering. Andra prioriteringar är Sched_Batch, Sched_RR, Sched_FIFO samt Sched_DeadLine. De senaste tre prioriteringarna är realtidsprioriteringar, skapade för uppgifter som kräver att det går så snabbt som möjligt såväl som så snart de skapas.
Task Scheduler tilldelar varje CPU två specialparametrar: RT_Runtime samt RT_PERIOD. RT_PERIOD är arrangemangsperioden som motsvarar 100% CPU -bandbredd. RT_RUNTIME är den tid då varje CPU endast kör i realtidsuppgifter. Alla andra uppgifter körs för [RT_PERIOD – RT_RUNTIME] -tid. Vanligtvis tillhandahåller kärnuppgiftsplanen 95% av en CPU: s tid till realtidsuppgifter samt 5% till alla andra.
RT_Runtime_Share gör det möjligt för en CPU att köra en realtidsuppgift så mycket som 100% av tiden genom att låna RT_Runtime från andra CPU: er. CPU: er som ger RT_Runtime kan sedan köra uppgifter som inte är realtid under mer tid. Vissa anpassade kärnkonstruktörer inaktiverar denna funktion som standard, eftersom den kan göra en CPU som inte kan betjäna icke-realtidsuppgifter strikt ordnade på den samt minska prestanda.
Next_Buddy
Generellt sett på Linux, när en uppgift vaknar, förhindrar den (= tar platsen för) den uppgift som kördes före CPU (väckningsförmågan). NEXT_BUDDY hanterar situationen när uppgiften som vaknar inte orsakar förbehåll. När Next_Buddy är aktiverad kommer uppgiften som bara vaknade att köras vid nästa arrangemang. Denna funktion förbättrar också cache -lokaliteten.
Måste läsas
Hackbench – Discover Finest Performing Kernel för Android
Last_buddy
Wnull