A Kernel tweaki feladat -ütemezője az Android teljesítményének fokozására [1. rész]

Általában megértik, hogy az Android egy operációs rendszer, ahol sok hely van az egyedi konfigurációhoz. Ez részben annak köszönhető, hogy a Linux kernel a magjában. Ma megvitatjuk az Android kernel egyik legalacsonyabb szintű részének konfigurációját: a feladat ütemezőjét. A megfelelő feladat ütemező konfigurációjával növelheti a teljesítményt az Androidon. Olvassa tovább, hogy felfedezze, hogy pontosan hogyan módosíthatja eszközét a legnagyobb teljesítmény érdekében.

De mi pontosan a kernel feladat -ütemezője?

A rendszer feladat -ütemezője elszámoltatható a CPU -k terjesztéséért számos futófeladat között. Ezt úgy teszi, hogy minden feladat elvégzésével bizonyos időt biztosít a CPU -n, és cserélje ki még egy, meghatározott időközönként. Általában kétféle feladat -ütemezés létezik: megelőző elrendezés, valamint a kooperatív ütemezés.

A megelőző ütemezés során a kernel dönt arról, hogy mikor kell megelőzni (= cserélni) egy futó feladatot. Ezt szinte bármilyen időpontban megteheti, összetett elrendezési algoritmusok alapján. Ezzel szemben a kooperatív ütemezés során minden feladat elszámoltatható a kernel értesítéséért, amikor az már nem követeli meg a CPU -t, és ezért kicserélhető. Ebben az esetben a kernel csak azért felel meg, hogy meghatározza a legjobb jelöltet a rendezéshez és a CPU -ra történő felhelyezéséhez.

Lásd még: Android -mítoszok, valamint tények: 10 nagyvárosi legenda lerombolása

Feladat elrendezése az androidon

Az Android a Linux tetején fut, amely egy megelőző kernel. A feladat ütemezője kemény kódolású, állandó intervallumban, az elrendezési intervallumban kezdődik. Ez általában 10 milliszekundum az Android készülékeken. Amikor az ütemező fut, eldönti, hogy a futási feladatot meg kell -e hagyni, vagy sem, valamint hogy a futáshoz várók mely feladatát kell vinni a CPU -n. A 2.6.23 verzió óta a Linux kernel egy rendkívül fejlett feladat -ütemezőt, a Totally Fair Scheduler -t (CFS) használja. A CFS számos tényező, beleértve a feladat súlyát és a prioritást, minden feladatot minden feladatot megtesz a CPU -nál. Ez az ütemező algoritmusa meglehetősen összetett megértés. Ezért van egy meglehetősen kevés kernel -tervező, amely hozzájárul a fejlődéséhez.

A CFS ütemező módosítása

Előfeltételek

Gyökérhasználat

Terminál emulátor alkalmazás

Bonyolultsága ellenére a CFS Scheduler néhány konfigurációs lehetőséget kínál. Ezeknek a választásoknak a módosítása rendkívül befolyásolhatja a rendszer teljesítményét. Hagyományosan, a SYSCTL parancssori eszközt használják a kernel paraméterek vizsgálatához és megváltoztatásához futásidejűleg, beleértve az ütemező paramétereket is. Ezt az eszközt az útmutatóban fogjuk használni, mivel az előre telepítve van a legtöbb androidon. Először azonban azt követeljük, hogy tegyünk egy kis bevezetést:

Hogyan lehet használni a SySCTL -t

A paraméterek felsorolása, valamint azok jelenlegi értékei
Az összes kínált kernel -paraméter felsorolásához a hozzárendelt értékekkel adja meg a megfelelő parancsot egy terminál alkalmazáson belüli parancsnak:

sysctl -a
Ahhoz, hogy csak a feladat ütemezővel kapcsolatos paramétereit kapjuk, megadhatjuk a megfelelő parancsot:

sysctl -a | grep “ütemezés”
Ez biztosítja a Példa eszközünk kimenetének betartását:

A paraméterek felsorolása meglehetősen nagy. Az alábbi paraméterek közül csak néhányat tárgyalunk, amelyek a legfontosabbak.

Paraméter megváltoztatása
Módosíthatunk egy paramétert egy parancs felhasználásával a sysctl -w típusban [paraméter] = érték, ahol a paraméter a kernel paraméter neve, valamint az érték az új érték. Például:

sysctl -w kernel.sched_caling_enable = 1

Az alábbiakban olvassa el a további SYSCTL használati példákat. Ne feledje, hogy a módosítások nem hajtják végre újraindításon keresztül. Használhat egy init.d szkriptet bármilyen típusú módosítás alkalmazására a rendszerindításkor. Végül győződjön meg arról, hogy a SYSCTL parancsokat gyökér privilégiumokkal futtatja. A terminál alkalmazásban gyökérprofilokat kaphat, ha megadja a parancsot a parancsnak:

su
Alapvető feladat ütemező paraméterek

Ne hagyja ki: a Linux kernelének múltja, a mobil eszközökön lévő jövője

kernel.sched_min_granulity_ns
A processzorhoz kötött feladatok garantáltan garantálják, hogy ezen a minimális időre végezzenek, mielőtt azok megelőzik őket. A feladatot processzorhoz kötöttnek tekintik, amikor a teljes időtartamra csak a processzor sebességétől függ. Például egy olyan feladat, amely egy kötegre vár, hogy megjelenjen az interneten, nem processzorhoz kötött feladat. Általában az érték növelése növeli a rendszer átviteli sebességét. Másrészt az értékek és a magas értékek csökkenthetik a készülékek reakcióképességét. Ez a paraméter értékeket vesz a nanosekundumokban. Például, hogy 4000000 nanosekundumra (4 milliszekundum) állítsuk be, megadhatjuk a Parancsnokságot:

sysctl -w kernel.sched_min_granularity_ns = 4000000
A hivatalos Linux kernel dokumentáció szerint ez a központi CFS ütemező hangolható.

kernel.sched_latency_ns
A CFS futási sorának összes feladata garantáltan legalább akkor rendezhető, ha ezen az időszakon belül.null

Back to top