Обикновено се разбира, че Android е операционна система с много място за персонализирана конфигурация. Това е отчасти заради използването на ядрото на Linux в основата му. Днес ще обсъдим конфигурацията на една от части от най-ниското ниво на ядрото на Android: неговият планировчик на задачите. С правилната конфигурация на планиращия задача можете да увеличите производителността на Android. Продължете да четете, за да откриете как точно можете да промените джаджата си за най -голямо представяне.
Но какво точно е планировчикът на задачите на ядрото?
Планировчикът на задачите на системата е отговорен за разпределението на процесорите между голям брой работещи задачи. Това прави това, като предоставя всяка задача известно време на процесора, както и го сменя с още един на определени интервали от време. По принцип има два вида планиране на задачите: превантивно подреждане, както и планиране на съвместното сътрудничество.
В превантивното планиране ядрото решава кога да предвиди (= разменя) работеща задача. Това може да направи това в почти всякакъв вид време въз основа на сложни алгоритми за подреждане. За разлика от това, при съвместното планиране всяка задача е отговорна за уведомяване на ядрото, когато вече не изисква процесора, както и затова може да бъде заменено. В този случай ядрото е отговорно само за определяне на най -добрия кандидат за уреждане, както и да го постави на процесора.
Вижте също: Андроид митове, както и факти: Бъсти 10 столични легенди
Подреждане на задачи на Android
Android работи на върха на Linux, което е превантивно ядро. Планировчикът на задачите се задейства в твърдо кодиран, постоянен интервал, интервал на подреждане. Това обикновено е на всеки 10 милисекунди на устройства с Android. Когато планиращият се работи, той решава дали изпълняващата задача трябва да бъде предразположена или не, както и коя задача от тези, които чакат да работят, трябва да заеме местоположението си на процесора. Тъй като версия 2.6.23, Linux Kernel използва изключително усъвършенстван планировчик на задачи, напълно справедливият планировчик (CFS). CFS се опитва да осигури на всяка задача доста време на изпълнение на процесора въз основа на редица фактори, включително теглото на задачите, както и приоритет. Алгоритъмът на този планировчик е доста сложен за разбиране. Ето защо има доста малък брой дизайнери на ядрото, които допринасят за неговото развитие.
Настройване на планиращия CFS
Предпоставки
Корен достъп
Приложение за терминален емулатор
Въпреки сложността си, CFS Scheduler предлага някои опции за конфигуриране. Настройването на тези избори може изключително да повлияе на производителността на системата. Традиционно инструментът на командния ред SYSCTL се използва за изследване, както и за промяна на параметрите на ядрото по време на изпълнение, включително параметри на планиращия. Ще използваме този инструмент в нашето ръководство, тъй като той е предварително инсталиран на повечето андроиди там. Но първо, ние изискваме да направим малко въведение в него:
Как да използвате sysctl
Изброяване на параметрите, както и настоящите им стойности
За да изброите всички предлагани параметри на ядрото с присвоените им стойности, предоставете спазването на командата вътре в терминална приложение:
sysctl -a
За да получим само параметрите, свързани с планиращия задача, можем да предоставим командата на спазването на командата:
sysctl -a | grep “график”
Това осигурява спазването на изхода на нашето примерно устройство:
Изброяването на параметрите е доста голяма. Ще обсъдим само няколко от тези параметри по -долу, които са най -важните.
Промяна на параметър
Можем да модифицираме параметър, използвайки команда в типа SYSCTL -W [Параметър] = Стойност, където параметърът е името на параметъра на ядрото, както и стойността е новата стойност. Например:
sysctl -w kernel.sched_scaling_enable = 1
Прочетете по -долу за повече примери за използване на SYSCTL. Имайте предвид, че модификациите не го правят чрез рестартиране. Можете да използвате init.d скрипт, за да приложите всякакъв тип необходими модификации по време на зареждане. И накрая, уверете се, че изпълнявате SYSCTL команди с root привилегии. Можете да получите коренни привилегии в терминална приложение, като предоставите командата за спазване:
Су
Основни параметри на планиращия задача
Не пропускайте: минало, както и бъдещето на Linux ядрото на мобилни устройства
kernel.sched_min_granularity_ns
Задачите, свързани с процесора, са гарантирани за това минимално време, преди да бъдат предразположени. Задачата се смята за обвързан с процесора, когато времето, необходимо за общо, зависи само от скоростта на процесора. Например, задача, която чака пакет да се покаже с мрежата, не е задача, свързана с процесора. Като цяло увеличаването на тази стойност ще повиши пропускателната способност на системата. От друга страна, стойностите и високите могат да намалят отзивчивостта на джаджата. Този параметър приема стойности в наносекунди. Например, за да го зададем на 4000000 наносекунди (4 милисекунди), можем да предоставим командата спазване на командата:
sysctl -w kernel.sched_min_granularity_ns = 4000000
Съгласно официалната документация за ядрото на Linux, това е централният регулиращ CFS.
kernel.sched_latency_ns
Всички задачи на опашката за изпълнение на CFS са гарантирани, че ще бъдат подредени поне когато в рамките на този период.null