De taakplanner van Tweak Kernel om de prestaties op Android [deel 1]

0 Comments

te stimuleren, wordt vaak begrepen dat Android een besturingssysteem is met veel ruimte voor aangepaste configuratie. Dit is gedeeltelijk vanwege het gebruik van de Linux -kernel in de kern. Tegenwoordig gaan we de configuratie bespreken van een van de onderdelen op laagste niveau van Android’s Kernel: de taakplanner. Met de juiste taakplannerconfiguratie kunt u de prestaties op Android stimuleren. Blijf lezen om precies te ontdekken hoe u uw gadget kunt aanpassen voor de beste prestaties.

Maar wat is precies de taakplanner van een kernel?

De taakplanner van een systeem is verantwoordelijk voor het verspreiden van CPU’s onder een groot aantal uitvoeringstaken. Het doet dat door elke taak wat runtime op de CPU te bieden en deze uit te ruilen met nog een op specifieke tijdsintervallen. Over het algemeen zijn er twee soorten taakplanning: preventieve regels en coöperatieve planning.

In preventieve planning beslist de kernel wanneer hij moet voorkomen (= ruilen) een lopende taak. Het kan dat op bijna elk soort tijd doen, gebaseerd op complexe regelsalgoritmen. In coöperatieve planning daarentegen is elke taak verantwoordelijk voor het op de hoogte stellen van de kernel wanneer deze de CPU niet meer vereist, evenals deze kan worden verwisseld. In dit geval is de kernel alleen verantwoordelijk voor het bepalen van de allerbeste kandidaat voor het regelen en op de CPU plaatsen.

Zie ook: Android -mythen en feiten: Busting 10 Metropolitan Legends

Taakregeling op Android

Android draait bovenop Linux, een preventieve kernel. Taakplanner wordt geactiveerd met een hard gecodeerd, constant interval, het regelsinterval. Dit is meestal om de 10 milliseconden op Android -apparaten. Wanneer de planner wordt uitgevoerd, beslist het of de lopende taak moet worden voorgegaan of niet, evenals welke taak van degenen die wachten om te lopen zijn locatie op de CPU moet nemen. Sinds versie 2.6.23 gebruikt Linux Kernel een extreem geavanceerde taakplanner, de volledig eerlijke planner (CFS). CFS probeert elke taak een behoorlijke hoeveelheid looptijd op de CPU te bieden op basis van een aantal factoren, waaronder taakgewicht en prioriteit. Het algoritme van deze planner is nogal complex om te begrijpen. Daarom is er een vrij weinig kernelontwerpers die bijdragen aan de ontwikkeling ervan.

De CFS -planner aanpassen

Voorwaarden

Root Access

Een terminal -emulator -app

Ondanks de complexiteit biedt CFS Scheduler enkele configuratie -opties. Het aanpassen van deze keuzes kan extreem invloed hebben op de prestaties van het systeem. Traditioneel wordt de SYSCTL -opdrachtregel tool gebruikt voor het onderzoeken en wijzigen van kernelparameters tijdens runtime, inclusief plannerparameters. We gaan deze tool in onze gids gebruiken, omdat het vooraf is geïnstalleerd op de meeste Androids die er zijn. Eerst moeten we er een kleine introductie bij doen:

Hoe u SYSCTL kunt gebruiken

Lijstparameters op en hun huidige waarden
Om alle aangeboden kernelparameters te vermelden met hun toegewezen waarden, geeft u het opdracht in een terminal -app aan de opdracht:

sysctl -a
Om alleen de taakplanner-gerelateerde parameters te krijgen, kunnen we de opdracht naleven:

sysctl -a | Grep “Sched”
Dit biedt het naleven van de uitvoer op ons voorbeeldapparaat:

De lijst met parameters is vrij groot. We zullen slechts enkele van deze parameters hieronder bespreken, die de belangrijkste zijn.

Een parameter wijzigen
We kunnen een parameter wijzigen met behulp van een opdracht in het type SYSCTL -W [parameter] = waarde waarbij de parameter de naam van de kernelparameter is en waarde is de nieuwe waarde. Bijvoorbeeld:

sysctl -w kernel.sched_scaling_enable = 1

Lees hieronder voor meer voorbeelden van SYSCTL -gebruik. Houd er rekening mee dat wijzigingen niet door een reboot komen. U kunt een init.d -script gebruiken om elk type benodigde aanpassingen toe te passen tijdens het opstarttijd. Zorg er ten slotte voor dat u SYSCTL -opdrachten uitvoert met rootprivileges. U kunt rootprivileges krijgen in een terminal -app door het opdracht te naleven:

SU
Basic taakplanner parameters

Mis het niet: zowel verleden als toekomst van de Linux -kernel op mobiele apparaten

kernel.sched_min_granularity_ns
Processorgebonden taken worden gegarandeerd gedurende deze minimale tijd uitgevoerd voordat ze worden voorgegaan. Er wordt een taak beschouwd als processor gebonden wanneer de tijd die nodig is om in totaal te duren, alleen afhankelijk is van de processorsnelheid. Een taak die op een bundel wacht om met het web te verschijnen, is bijvoorbeeld geen processor-gebonden taak. Over het algemeen zal het verhogen van deze waarde de doorvoer van een systeem vergroten. Aan de andere kant kunnen waarden en hoog hoog de responsiviteit van gadget verminderen. Deze parameter neemt waarden in nanoseconden. Om het bijvoorbeeld in te stellen op 4000000 nanoseconden (4 milliseconden), kunnen we het opdracht geven:

SYSCTL -W Kernel.sched_min_granularity_ns = 4000000
Volgens de officiële Linux -kernel -documentatie is dit de centrale CFS -planner die instelbaar is.

kernel.sched_latency_ns
Alle taken op de Run Queue van de CFS worden gegarandeerd ten minste in deze periode geregeld.null

Leave a Reply

Your email address will not be published. Required fields are marked *