Android
Android-kerneloptimalisatie
Zoeken…
Lage RAM-configuratie
Android ondersteunt nu apparaten met 512 MB RAM. Deze documentatie is bedoeld om OEM's te helpen bij het optimaliseren en configureren van Android 4.4 voor apparaten met weinig geheugen. Verschillende van deze optimalisaties zijn generiek genoeg zodat ze ook kunnen worden toegepast op eerdere releases.
Vlag van Low Ram Device inschakelen
We introduceren een nieuwe API met de naam ActivityManager.isLowRamDevice () voor toepassingen om te bepalen of ze specifieke geheugenintensieve functies moeten uitschakelen die slecht werken op apparaten met weinig geheugen.
Voor 512 MB-apparaten wordt deze API naar verwachting geretourneerd: "true" Het kan worden ingeschakeld door de volgende systeemeigenschap in het apparaatbestand.
PRODUCT_PROPERTY_OVERRIDES += ro.config.low_ram=true
Schakel JIT uit
Het hele JIT-geheugengebruik in het systeem is afhankelijk van het aantal actieve toepassingen en de codevoetafdruk van die toepassingen. Het JIT stelt een maximale vertaalde codecache-grootte in en raakt de pagina's erin indien nodig aan. JIT kost ergens tussen 3M en 6M in een typisch lopend systeem.
De grote apps hebben de neiging om de codecache vrij snel te maximaliseren (die standaard 1M was). Gemiddeld loopt het JIT-cachegebruik tussen 100K en 200K bytes per app. Het verkleinen van de maximale grootte van de cache kan enigszins helpen bij het geheugengebruik, maar als deze te laag is ingesteld, wordt de JIT in een thrashing-modus gebracht. Voor apparaten met weinig geheugen raden we aan de JIT volledig uit te schakelen.
Dit kan worden bereikt door de volgende regel toe te voegen aan het productbestand:
PRODUCT_PROPERTY_OVERRIDES += dalvik.vm.jit.codecachesize=0
Hoe een CPU-gouverneur toe te voegen
De CPU-regelaar zelf is slechts 1 C-bestand, dat zich bevindt in kernel_source / drivers / cpufreq /, bijvoorbeeld: cpufreq_smartass2.c. U bent zelf verantwoordelijk voor het vinden van de gouverneur (zoek in een bestaande kernel-repo voor uw apparaat) Maar om dit bestand met succes op te roepen en in uw kernel te compileren, moet u de volgende wijzigingen aanbrengen:
- Kopieer uw gouverneurbestand (cpufreq_govname.c) en blader naar kernel_source / drivers / cpufreq, plak het nu.
- en open Kconfig (dit is de interface van de lay-out van het configuratiemenu) wanneer u een kernel toevoegt, u wilt dat deze wordt weergegeven in uw configuratie. U kunt dat doen door de gouverneurkeuze toe te voegen.
config CPU_FREQ_GOV_GOVNAMEHERE
tristate "'gov_name_lowercase' cpufreq governor"
depends on CPU_FREQ
help
governor' - a custom governor!
bijvoorbeeld voor smartassV2.
config CPU_FREQ_GOV_SMARTASS2
tristate "'smartassV2' cpufreq governor"
depends on CPU_FREQ
help
'smartassV2' - a "smart" optimized governor!
naast het toevoegen van de keuze, moet u ook de mogelijkheid aangeven dat de gouverneur als standaardgouverneur wordt gekozen.
config CPU_FREQ_DEFAULT_GOV_GOVNAMEHERE
bool "gov_name_lowercase"
select CPU_FREQ_GOV_GOVNAMEHERE
help
Use the CPUFreq governor 'govname' as default.
bijvoorbeeld voor smartassV2.
config CPU_FREQ_DEFAULT_GOV_SMARTASS2
bool "smartass2"
select CPU_FREQ_GOV_SMARTASS2
help
Use the CPUFreq governor 'smartassV2' as default.
- kunt u de juiste plaats niet vinden om het te plaatsen? Zoek gewoon naar “CPU_FREQ_GOV_CONSERVATIVE”
en plaats de code eronder, hetzelfde geldt voor “CPU_FREQ_DEFAULT_GOV_CONSERVATIVE”
Nu Kconfig is voltooid, kunt u het bestand opslaan en sluiten.
- Open Makefile terwijl u zich nog in de map
/drivers/cpufreq
bevindt. Voeg in Makefile de lijn toe die overeenkomt met uw CPU-gouverneur. bijvoorbeeld:
obj-$(CONFIG_CPU_FREQ_GOV_SMARTASS2) += cpufreq_smartass2.o
Let op dat u niet het native C-bestand aanroept, maar het O-bestand! dat is het gecompileerde C-bestand. Bewaar het bestand.
- Verplaatsen naar:
kernel_source/includes/linux
. Open nucpufreq.h
Scroll naar beneden totdat je iets ziet als:
#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND)
extern struct cpufreq_governor cpufreq_gov_ondemand;
#define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_ondemand)
(andere CPU-gouverneurs worden daar ook vermeld)
Voeg nu uw invoer toe met de geselecteerde CPU Governor, bijvoorbeeld:
#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_SMARTASS2)
extern struct cpufreq_governor cpufreq_gov_smartass2;
#define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_smartass2)
Sla het bestand op en sluit het.
De initiële CPU Governor-installatie is nu voltooid. wanneer je alle stappen met succes hebt voltooid, zou je je gouverneur moeten kunnen kiezen uit het menu ( menuconfig
, xconfig
, gconfig
, nconfig
). Eenmaal aangevinkt in het menu zal het worden opgenomen in de kernel.
Commit die bijna hetzelfde is als bovenstaande instructies: voeg smartassV2 en lulzactive gouverneur commit toe
I / O-planners
U kunt uw kernel verbeteren door indien nodig nieuwe I / O-planners toe te voegen. Wereldwijd zijn bestuurders en planners hetzelfde; ze bieden beide een manier hoe het systeem zou moeten werken. Voor de planners draait het echter allemaal om de input / output-datastroom behalve de CPU-instellingen. I / O-planners beslissen hoe een aankomende I / O-activiteit wordt gepland. De standaardplanners zoals noop of cfq presteren zeer redelijk.
I / O-planners zijn te vinden in kernel_source / block .
Kopieer uw I / O-planningsbestand (bijvoorbeeld sio-iosched.c ) en blader naar kernel_source / block . Plak het plannerbestand daar.
Open nu Kconfig.iosched en voeg uw keuze toe aan de Kconfig , bijvoorbeeld voor SIO :
config IOSCHED_SIO tristate "Simple I/O scheduler" default y ---help--- The Simple I/O scheduler is an extremely simple scheduler, based on noop and deadline, that relies on deadlines to ensure fairness. The algorithm does not do any sorting but basic merging, trying to keep a minimum overhead. It is aimed mainly for aleatory access devices (eg: flash devices).
Stel vervolgens de standaardkeuzeoptie als volgt in:
default "sio" if DEFAULT_SIO
Bewaar het bestand.
Open de Makefile in kernel_source / block / en voeg eenvoudig de volgende regel toe voor SIO :
obj-$(CONFIG_IOSCHED_SIO) += sio-iosched.o
Sla het bestand op en je bent klaar! De I / O-planners moeten nu verschijnen in het menu config.
Soortgelijke commit op GitHub: eenvoudige I / O-planner toegevoegd .