te verbeteren Welkom terug bij nog een Kernel -taakplanner -tweakengids voor Android. In het vorige artikel hebben we enkele fundamentele taakplannerconfiguratie -opties behandeld, die handmatig kunnen worden afgestemd om de prestaties op elk type Android -apparaat te stimuleren. In de situatie heb je dat artikel nog niet gecontroleerd, we raden het sterk aan om dit te doen voordat je verder gaat, omdat het wat nuttige informatie bevat voor veel beter begrijpen hoe de taakplanner echt werkt en precies hoe je de taakplanner van Kernel kunt wijzigen.
Tweak Kernel’s taakplanner
Afgezien van de fundamentele parameters die in het vorige artikel zijn besproken, implementeert Linux -taakplanner enkele speciale functies die proberen de eerlijke verdeling van de verwerkingskracht te verbeteren. Deze functies creëren niet exact dezelfde resultaten op alle systemen en use-cases, zodat ze tijdens runtime kunnen worden ingeschakeld of uitgeschakeld. Ze worden aangeboden met de kernel debugfs. Niet alle kernels pack -ondersteuning voor het tweaken van planner debugfs -functies. U kunt ontdekken of uw kernel deze functies ondersteunt door het in te dienen met het opdracht in een terminal -app (als superuser):
Cat/Sys/Kernel/Debug/Sched_features
Als u een uitvoer zoals het volgende krijgt, ondersteunt uw kernel het wijzigen van foutopsporingsfuncties tijdens runtime:
Als u een foutuitvoer “Gegevens of map” niet krijgt, kunt u proberen de kernel debugfs te installeren, in situatie wordt deze aangeboden echter niet gemonteerd op Boot:
mount -t debugfs geen/sys/kernel/debug
Als deze opdracht geen fout maakt, kunt u proberen de allereerste opdracht opnieuw door te geven.
Een schema -foutopsporingsfunctie schakelen
Om een schema -foutopsporingsfunctie toe te staan, moet u alleen de naam in het bestand Sched_features samenstellen. Bijvoorbeeld:
echo gentle_fair_sleepers>/sys/kernel/debug/planne_features
Om een functie uit te schakelen, moet u ook de naam in exact hetzelfde bestand samenstellen, maar met een “No_” vooraan. Bijvoorbeeld:
echo no_gentle_fair_sleepers>/sys/kernel/debug/planne_features
Mis het niet
Android RAM -beheerideeën en trucs
De meest typische schema -foutopsporingsfuncties
Het is niet gegarandeerd dat een bepaalde kernel alle hieronder besproken taakplannerfuncties ondersteunt. Ondersteuning voor functies varieert tussen kernelversies en tussen gadgetimplementaties. Alle ondersteunde functies zijn die in de uitvoer van opdracht ‘CAT/SYS/KERNEL/Debug/Sched_features’. Functies die beginnen met een “nee” zijn die ondersteund, maar momenteel uitgeschakeld.
Gentle_fair_sleepers
Deze functie probeert de looptijd van slapers te minimaliseren (processen die de neiging hebben om lang te slapen). Als gevolg hiervan wordt meer runtime verdeeld over actieve taken. Sommige personen melden dat het uitschakelen van deze functie de responsiviteit op low-end apparaten kan verbeteren.
Affine_wakeUps
Zet een taak die op exact dezelfde CPU wakker wordt als de taak die het wakker maakte. Dit veronderstelt dat de nieuwe taak op exact dezelfde gegevens in het geheugen zal werken als de vorige. Het rangschikken van exact dezelfde CPU zal de cache -plaats verbeteren (lees hieronder voor meer informatie over cache -plaats).
Rt_runtime_share
We vereisen wat diepere taakregels om deze functie te begrijpen: op Linux zijn er verschillende taakregelsprioriteiten. De zorg van een taak definieert precies hoe belangrijk die taak is en precies hoeveel bronnen van de planner zullen krijgen. Veel taken worden uitgevoerd met behulp van Sched_other (Sched_normal op nieuwere kernels) prioriteit. Andere prioriteiten zijn Sched_Batch, Sched_RR, Sched_fifo en Sched_deadline. Laatste drie van deze prioriteiten zijn realtime prioriteiten, gecreëerd voor taken die zo snel mogelijk nodig zijn om zo snel mogelijk te lopen, zo snel zodra ze zijn gemaakt.
Taakplanner wijst elke CPU twee speciale parameters toe: RT_RUNTIME evenals RT_Period. RT_PERIOD is de rangschikperiode die overeenkomt met 100% CPU -bandbreedte. RT_RUNTIME is de tijd waarin elke CPU alleen realtime taken uitvoert. Alle andere taken worden uitgevoerd voor [rt_period – rt_runtime] tijd. Doorgaans biedt de kernel-taakplanner 95% van de tijd van een CPU aan realtime taken en 5% aan alle andere.
RT_RUNTIME_SHARE maakt een CPU in staat om een realtime taak tot 100% van de tijd uit te voeren, door RT_Runtime van andere CPU’s te lenen. CPU’s die RT_RUNTIME LENGEN, kan vervolgens niet-realtime-taken uitvoeren voor meer tijd. Sommige aangepaste kernelontwerpers schakelen deze functie standaard uit, omdat het een CPU kan maken die niet in staat is om niet-realtime-taken strikt te bedienen, en de prestaties te verminderen.
Next_buddy
Over het algemeen op Linux, wanneer een taak wakker wordt, gaat deze voor (= neemt de locatie van) de taak die eerder werd uitgevoerd op de CPU (wake -up voorrang). Next_buddy behandelt de situatie wanneer de taak die wakker wordt, geen voorkeur veroorzaakt. Wanneer Next_Buddy is ingeschakeld, wordt de taak die net wakker werd uitgevoerd bij het volgende arrangeerevenement. Deze functie verbetert ook de cache -plaats.
Moet lezen
Hackbench – Ontdek het beste presterende kernel voor Android
Last_buddy
Wnull