Obecně se rozumí, že Android je operační systém s velkým prostorem pro vlastní konfiguraci. To je částečně kvůli použití jádra Linux ve svém jádru. Dnes budeme diskutovat o konfiguraci jedné z nejnižších částí jádra Androidu: jeho plánovače úloh. Se správnou konfigurací plánovače úloh můžete zvýšit výkon na Android. Pokračujte ve čtení a objevte přesně to, jak můžete upravit svůj gadget pro největší výkon.
Co přesně je však plánovač úkolů jádra?
Plánovač úloh systému odpovídá za distribuci CPU mezi velkým počtem běžících úkolů. Dělá to tím, že poskytuje každému úkolu nějaký čas běhu na CPU a také jej vyměňuje s jedním dalším v konkrétních časových intervalech. Obecně existují dva druhy plánování úkolů: preventivní uspořádání a také plánování spolupráce.
V preventivním plánování se jádro rozhodne, kdy zabránit (= swap) běžící úkol. Může to udělat téměř v každém typu času na základě komplexních algoritmů. Naproti tomu při plánování spolupráce je každý úkol odpovědný za oznámení jádra, pokud již nevyžaduje CPU, a proto jej lze vyměnit. V tomto případě je jádro zodpovědné pouze za určení nejlepšího kandidáta na uspořádání a za jeho uvedení na CPU.
Také viz: Android Mýty a fakta: Busting 10 Metropolitan Legends
Uspořádání úkolů na Androidu
Android běží na vrcholu Linuxu, což je preventivní jádro. Plánovač úloh je spuštěn v pevném konstantním intervalu, v intervalu uspořádání. Toto je obvykle každých 10 milisekund na zařízeních Android. Když plánovač běží, rozhodne se, zda by spuštěný úkol měl být zabráněn nebo ne, a také který úkol od těch, kteří čekají na spuštění, by měl zaujmout jeho umístění na CPU. Od verze 2.6.23 využívá Linuxové jádro extrémně pokročilého plánovače úloh, naprosto Fair Scheduler (CFS). CFS se snaží poskytnout každému úkolu spravedlivé množství času běhu na CPU na základě řady faktorů, včetně hmotnosti úkolu a priority. Algoritmus tohoto plánovače je poměrně složitý. Proto existuje poměrně málo návrhářů jádra, které přispívají k jeho vývoji.
Vylepšení plánovače CFS
Předpoklady
Přístup root
Aplikace terminálu emulátoru
Navzdory své složitosti nabízí CFS Scheduler některé možnosti konfigurace. Vyladění těchto možností může extrémně ovlivnit výkon systému. Tradičně je nástroj příkazového řádku SYSCTL používán pro zkoumání a změnu parametrů jádra za běhu, včetně parametrů plánovače. Tento nástroj budeme využívat v našem průvodci, protože je předem nainstalován na většině Androidů. Nejprve však vyžadujeme trochu úvodu:
Jak využít sysctl
Parametry výpisu a jejich současné hodnoty
Chcete -li seznam všech nabízených parametrů jádra se svými přiřazenými hodnotami, poskytněte dodržování příkazu uvnitř aplikace terminálu:
SYSCTL -A
Abychom získali pouze parametry související s plánovačem úloh, můžeme poskytnout dodržování příkazu:
sysctl -a | grep “naplánovat”
To poskytuje dodržování výstupu na našem příkladu:
Seznam parametrů je poměrně velký. Budeme diskutovat pouze o několika těchto parametrech níže, které jsou nejdůležitější.
Změna parametru
Můžeme modifikovat parametr využívající příkaz v typu sysctl -w [parametr] = hodnota, kde parametr je název parametru jádra a hodnota je nová hodnota. Například:
sysctl -w kernel.sched_scaling_enable = 1
Přečtěte si níže pro další příklady použití SYSCTL. Mějte na paměti, že modifikace to nedostávají prostřednictvím restartu. Skript init.d můžete použít k aplikaci jakéhokoli typu potřebných úprav v době spuštění. Nakonec se ujistěte, že spustíte příkazy SYSCTL s oprávněními kořenů. Poskytnutí dodržování příkazu můžete získat oprávnění kořenů v aplikaci Terminal:
Su
Základní parametry plánovače úloh
Nenechte si ujít: minulost a budoucnost jádra Linux na mobilních zařízeních
kernel.sched_min_granularity_ns
Úkoly vázané na procesory jsou zaručeny, že budou spuštěny pro tento minimální čas, než budou vyloučeny. Úkol je považován za vázaný procesor, když doba potřebná k celkové hodnotě závisí pouze na rychlosti procesoru. Například úkol čekající na svazek, který se zobrazí s webem, není úkol vázaný na procesor. Obecně platí, že zvýšení této hodnoty zvýší propustnost systému. Na druhou stranu mohou i vysoké hodnoty snížit citlivost gadgetu. Tento parametr má hodnoty v nanosekundách. Například, abychom jej nastavili na 4000000 nanosekund (4 milisekundy), můžeme poskytnout dodržování příkazu:
SYSCTL -W KERNEL.SCHED_MIN_GRANULARITY_NS = 4000000
Podle oficiální dokumentace jádra Linux se jedná o centrální plánovač CFS laditelný.
kernel.sched_latency_ns
Všechny úkoly ve frontě CFS je zaručeno, že budou uspořádány alespoň v tomto období.null