Tweak Kernel feladat -ütemezője az Android teljesítményének javítása érdekében [2. rész]

Üdvözöljük egy újabb kernel -feladat ütemezői útmutatóhoz az Android számára. Az előző cikkben néhány alapvető feladat -ütemező konfigurációs lehetőséget fedeztünk fel, amelyek manuálisan beállíthatók, hogy bármilyen Android -eszköznél a teljesítményt növeljék. A helyzetben, amelyet még nem nézett ki ezt a cikket, határozottan javasoljuk ezt a folytatás előtt, mivel ez tartalmaz néhány jótékony információt, hogy sokkal jobban megértse, hogy a feladat ütemezője valóban hogyan működik, valamint a Kernel feladat -ütemezőjének módosításának pontosan.

A Kernel feladat ütemezőjének csípése

Az előző cikkben tárgyalt alapvető paramétereken kívül a Linux Task Scheduler néhány speciális funkciót hajt végre, amelyek megpróbálják javítani a feldolgozási teljesítmény tisztességes eloszlását. Ezek a szolgáltatások nem hoznak létre pontosan ugyanazokat az eredményeket az összes rendszeren, valamint a felhasználási esetekben, így futásidejében engedélyezhetők vagy letilthatók. Kernel Debugfs -szal kínálják őket. Nem minden kernelcsomag -támogatás az ütemező hibakeresési funkciók módosításához. Felfedezheti, hogy a kernel támogatja ezeket a funkciók megváltoztatását azáltal, hogy beírja a Parancsot egy terminál alkalmazásban (mint Superuser):

CAT/SYS/kernel/hibakeresés/sched_features
Ha olyan kimenetet kap, mint a következők, akkor a kernel támogatja a hibakeresési funkciók megváltoztatását futásidejűleg:

Ha „nincs ilyen adat- vagy könyvtár” hiba kimenetet kap, akkor megpróbálhatja telepíteni a kernel hibakereséseket, a helyzetben azt kínálják, de a rendszerindításkor nem szerelték fel:

Mount -t Debugfs Nincs/sys/kernel/hibakeresés
Ha ez a parancs nem okoz hibát, akkor megpróbálhatja újra átadni a legelső parancsot.

Az ütemező hibakeresési funkció váltása

Az ütemező hibakeresési funkció engedélyezéséhez csak a nevét kell összeállítani az ütemezési fájlban. Például:

echo gentle_fair_sleepers>/sys/kernel/hibakeresés/sched_features
A szolgáltatás letiltásához ugyanígy meg kell állítania a nevét ugyanabban a fájlban, azonban a „NO_” elõtt. Például:

echo no_gentle_fair_sleepers>/sys/kernel/hibakeresés/sedress_features

Ne hagyja ki
Android Ram adminisztrációs ötletek és trükkök

A legjellemzőbb ütemező hibakeresési funkciók

Nem garantált, hogy egy bizonyos kernel támogatni fogja az alábbiakban tárgyalt összes feladat -ütemező funkciót. A funkciók támogatása a kernel verziók, valamint a modul megvalósításai között változik. Az összes támogatott szolgáltatás a „CAT/SYS/KERNEL/DEBUG/SUMPLY_FEATURES” parancs kimenetében található. Azok a funkciók, amelyek „NO_” -val kezdődnek, azok, amelyek a jelenleg fogyatékkal élnek.

Gentle_fair_sleepers

Ez a funkció megpróbálja minimalizálni az alvók futási idejét (olyan folyamatok, amelyek hosszú ideig alszanak). Ennek eredményeként több futási időt oszlik el az aktív feladatokra. Egyes személyek arról számolnak be, hogy ennek a funkciónak a letiltása javíthatja az alacsonyabb kategóriájú eszközök reagálását.

Affine_wakeups

Tegyen egy olyan feladatot, amely pontosan ugyanazon a CPU -ra ébred fel, mint a felébresztett feladat. Ez feltételezi, hogy az új feladat pontosan ugyanazon adatokon fog működni a memóriában, mint az előző. Ha pontosan ugyanazon a CPU -ra rendezi, javítja a gyorsítótár helyét (olvassa el az alábbiakban a gyorsítótár -helységről szóló további információkért).

Rt_runtime_share

Követelünk néhány mélyebb feladatot, hogy megértsük ezt a funkciót: a Linuxon más feladatmegoldási prioritások vannak. A feladat megszervező aggodalma pontosan meghatározza, mennyire fontos ez a feladat, valamint pontosan, hogy mekkora erőforrás érkezik az ütemezőtől. Sok feladat futtatja a Sched_other (Sched_normal újabb kerneleken) prioritását. További prioritások: a Sched_batch, a Sched_rr, a Sched_fifo, valamint a Sched_deadline. Ezen prioritások közül az utolsó három valós idejű prioritások, amelyeket olyan feladatokhoz hoztak létre, amelyek a lehető leggyorsabban, valamint a lehető leggyorsabban futtatják.

A feladat ütemezője minden CPU két speciális paramétert hozzárendel: RT_Runtime, valamint RT_PERIOD. Az RT_PERIOD az elrendezési periódus, amely megegyezik a 100% CPU sávszélességgel. Az RT_Runtime az az idő, amikor minden CPU csak valós idejű feladatokat hajt végre. Az összes többi feladat az [rt_period – rt_runtime] időre fut. Általában a kernel feladat-ütemező a CPU idejének 95% -át biztosítja a valós idejű feladatokhoz, valamint 5% -át a többiek számára.

Az RT_runtime_share lehetővé teszi a CPU-nak, hogy az idő 100% -át akár 100% -ot futtasson, az RT_Runtime más CPU-k kölcsönzésével. Az RT_Runtime kölcsönzött CPU-k ezután több ideig futtathatnak a nem valósághivatalokat. Néhány egyedi kernel-tervező alapértelmezés szerint letiltja ezt a funkciót, mivel ez a CPU-t nem képes arra, hogy a nem valós időben történő feladatokat szigorúan elrendezi, és csökkentheti a teljesítményt.

Next_buddy

Általában a Linux -on, amikor egy feladat felébred, megelőzi (= elviszi a helyét), amely korábban a CPU -n futott (ébresztési mentesség). A Next_buddy kezeli azt a helyzetet, amikor a felébresztett feladat nem okoz mentességet. Amikor a Next_buddy engedélyezve van, az éppen felébredt feladat a következő rendezvényen fut. Ez a funkció szintén javítja a gyorsítótár helyét.

El kell olvasni
HackBench – Fedezze fel az android legfinomabb előadó kernelét

Last_buddy

Wnull