Приветствую Вас, Гость! Регистрация RSS

takewi Ahmetov android story Love rom Mods

Вторник, 16.04.2024
Главная » Статьи » Мои статьи

[ликбез] Keddr-O-lab #6.1: ядро ОС Android (введение)

Keddr-O-lab #6.1: ядро ОС Android (введение)

  • 8 сентября 2012
  • Барышников Андрей

Всем привет! C вами припозднившийся, тяжелый для восприятия (и такой важный!) выпуск еженедельной рубрики Keddr-O-lab. На этот раз мы поговорим с вами о ядрах. В планах написать цикл из нескольких статей (эта – вводная), которые подробно рассмотрят все более или менее важные детали и моменты, поняв работу которых (и настроив под себя), вы выжмете из своего устройства 250% возможностей в плане производительности и сможете уменьшить энергопотребление (в зависимости от настроек и устройства число «дополнительных часов» может составить половину от вашего нынешнего показателя!).

Как я уже писал в первом выпуске нашей рубрики, прошивки – это хорошо, но далеко не самое главное. Сердцем и мозгом устройства, вокруг которого работают все остальные элементы системы, является ядро. Стоит отметить, что ядро ОС Android основано на ядре Linux, и большинство изменений "старшего брата” также имплементируются в зеленого робота.

Увы, тема по настройке ядер достаточно «хардкорная» и требует некоторого внимания и вникания, в следствие чего многие просто обходят их стороной или используют так, как написал программист  (даже если режим использования и требования к ядру сильно разнятся с таковыми у скомпилировавшего его человека).

Когда человек, скачавший прошивку, замечает сильный прирост во времени / скорости работы своего устройства (иногда прямо смартфон начинает играть новыми красками), то это лишь в меньшей степени является заслугой самой прошивки. Дело, как правило, всегда заключается в ядре.

Ядра бывают основанные на «стоковых» (т.е. используются ресурсы и наработки производителя с минимальными изменениями) или же собранные непосредственно из AOSP. Как правило, кастомные ядра:

1)      Улучшают энергопотребление.

2)      Увеличивают скорость работы.

3)      Имеют больший спектр настроек.

4)      Улучшают звук (не на всех устройствах).

5)      Позволяют изменить (а в некоторых случаях и улучшить) цветопередачу дисплея (особенно полезно для AMOLED-экранов, которые имеют особенность "уходить” в тот или иной оттенок).

6)      Ускоряют работу передачи данных по WI-FI и могут улучшить радиус приема.

7)      Позволяют ускорить зарядку устройства от порта USB (в некоторых случаях телефон при активированной данной функции не определяется как flash накопитель).

8)      Увеличивают скорость доступа к flash памяти смартфона.

9)      Позволяют изменить частоту видеочипа, что крайне положительно сказывается на производительности в играх.

Это усредненные данные, которые могут варьироваться в зависимости от модели вашего устройства. Где-то разработчик добавляет кастомный рекавери, где-то появляется возможность т.н. «dualboot» (позволяет установить две версии ОС на одно устройство и выбирать при включении оного; как вариант, возможно использовать Siyah Kernel для владельцев SGSII).

Как прошить ядро?

Вариантов несколько: «универсальный» (прошивка *.zip-архива через любой recovery mode) или же «родной» (варьируется от производителя: где-то это реализуется только посредством командной строки и fastboot режима, где-то – через сервисные программы типа самсунговского Odin’а).

Единственное, что я могу вам тут посоветовать, – нет необходимости в совершении каких-либо вайпов перед непосредственной установкой ядра, однако (каким-то магическим образом, ибо эти вещи никак не связаны) мне пару раз при возникновении проблем помогали «классические» (и ошибочные) методы типа wipe cache / wipe dalvik cache.

В ядре имеется несколько «ключевых» настроек, напрямую влияющих на скорость работы, записи / чтения данных и на энергозатраты при тех или иных нагрузках.

1)      Частота процессора. Возможно настроить минимальную и максимальную частоты. В теории (и, казалось бы, вполне очевидно) меньшая частота – меньшие энергозатраты, однако здесь имеются свои подводные камни. Во-первых, у вас могут начать обрываться загрузки при выключенном дисплее (частично зависит от планировщика, об этом чуть позже), может начать «заикаться» проигрываемая музыка. Во-вторых, не всегда меньшая частота – добро. Приведу пример, который многим может показаться знакомым. Вы часто выключаете / включаете дисплей для прочтения twitter ленты, в дороге или еще по каким-то причинам. Смена частот – достаточно энергозатратный процесс, а в данном случае повышение частоты происходит очень часто (во время выключения дисплея она падает, при включении и при прикосновении к нему – поднимается), вследствие чего вы лишь увеличиваете энергопотребление. В данном случае оптимальным вариантом является подъем минимальной планки частоты до той, на которую процессор «перескакивает» при прикосновении к дисплею (отследить можно через почти любую программу, позволяющую настраивать ядро).

2)      «Регулятор» ядра (governor) – та часть, которая отвечает за то, как, когда и при каких условиях процессор будет менять частоту. «Стоковыми» планировщиками обычно являются Ondemand, Conservative, Interactive, Powersave, Performance, Userspace. Начиная с версии Android 4.1.1. Jelly Bean основным стал Interactive, в то время как в прошлых версиях использовался чаще Ondemand. В некоторых аппаратах (скажем, Samsung Galaxy S3) основным является PegasusQ, который схож с Ondemand (написан отдельный планировщик из-за некорректной работы Ondemand’а с процессорами Exynos, количество ядер которых превышает два). О них мы поговорим подробнее в следующий раз. Сторонние же разработчики, как правило, добавляют в свои ядра дополнительные планировщики (наиболее известные – Smartassv2, Lazy, Wheatley) и настраивают работу «родных».

3)      I / O scheduler (input / output, чтение / запись) планировщик ядра отвечает за то, как и при каких условиях будет использоваться оперативная память устройства, уменьшает задержку работы с дисковым пространством, перераспределяет его в зависимости от запущенных процессов и старается нормализовать относительно каждого из параметров. Их далеко не так много, как governor’ов. Наиболее оптимальными по сложившемуся последнее время мнению являются Deadline, SIO и CFQ, в некоторых ядрах можно встретить активированный по умолчанию Noop.

Это основные настройки, изменить которые можно при помощи терминала, правки конфигурационных файлов вручную или же используя сторонние приложения (специализированные под отдельно взятое ядро [franco.Kernel updater, ExTweaks и иже с ними] или всеядные типа NoFrills, SetCPU или System Tuner).

Существуют «мастодонты» ядрописания, которые трудятся для большого количества пользователей и программируют сразу для большого количества устройств. Их ядра могут быть не самыми лучшими, однако на них всегда стоит обратить внимание. Встречайте franciscofranco (franco.kernel), faux123 (faux kernel), imoseyon (leankernel), Eezekeel (GlaDOS kernel), gokhanmoral (Siyah kernel).

На сегодня все, до следующего выпуска!




Источник: http://keddr.com/2012/09/keddr-o-lab-6-1-yadro-os-android-vvedenie/
Категория: Мои статьи | Добавил: dickus (12.09.2012)
Просмотров: 1313 | Рейтинг: 1.0/1
Всего комментариев: 0
avatar