Андроид лучшая версия ядра

Андроид лучшая версия ядра

Бывает, читаешь информацию про понравившийся тебе смартфон, а затем натыкаешься на такое слово как ядро (по-английски — kernel). Многие пользователи не понимают, о чем идет речь, а потому обращаются за помощью к операционным системам.

Перепрошивка ядра Андроид-устройства

Итак, о чем речь?

Версия ядра указана в настройках смартфона. Зайдите в раздел «Об устройстве» и увидите напротив данного пункта («Версия ядра» или Kernel Version в англоязычной прошивке) набор букв, цифр, а зачастую — и символов:

В данном случае идет речь о ядре как о центральной части операционной системы, которая обеспечивает приложениям координированный доступ к ресурсам устройства, как то: память, процессорное время, аппаратное обеспечение и т.д. Если говорить проще, ядро отвечает за взаимодействие между программной частью системы и «железом». Хотите простой пример? Допустим, вы нажимаете на клавишу Power, чтобы включить экран своего девайса, система «видит», что вы нажали на кнопку, и сообщает программному обеспечению, что необходимо включить экран. Все процессы проходят через ядро устройства.

Кстати, если вы считаете, что ядро есть только у ОС Android, вы ошибаетесь, поскольку ядро есть и у других операционных систем.

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

А еще не забывайте о вычислительных ядрах процессора. Обычно их количество указывают в технических характеристиках устройства, например, 8-ядерный процессор такой-то.

Увеличиваем время работы аккумулятора прошивкой кастомного ядра

Pocket 0Поделиться 6Tweet 0Share 0Share 0

Что вас больше всего не устраивает в Вашем смартфоне? Количество оперативной памяти? Пластиковый корпус? Может быть экран мелковат? Всё это, конечно, важно, но нет ничего важнее батареи.

Лично мне непонятно зачем производители постоянно увеличивают количество ядер и пикселей на экране. Я считаю, что смартфон — это устройство, которое должно быть готово в любой момент времени выполнить поставленную перед ним задачу: найти что-нибудь в интернете, посмотреть фильм/клип, послушать музыку и, самое главное, позвонить кому-нибудь, ведь в первую очередь — это средство связи.

Существует огромное количество решений проблем с батарей.

Кто-то уменьшает яркость, выключает Wi-Fi и мобильную связь, но это, опять же, противоречит тому, что устройство должно выполнять задачу, а не валяться кирпичом в кармане. На рынке есть огромное количество разнообразных дополнительных аккумуляторов, внешних зарядных устройства и чехлов с батарейкой, но не всем хочется постоянно таскать всё это с собой.

Проще всех проблему с батарей решила компания Highscreen. Она выпустила линейку устройств Boost. В последней версии их смартфона — Boost 2 SE в комплекте предлагается две батареи: одна на 3000 мАч, а вторая на 6000 мАч. Мой товарищ приобрел себе такое чудо, и вторую батарейку, та которая на 6000 мАч, он не заряжал уже около недели. Здесь нужно пояснить, что вставляет он её только тогда, когда хочет во что-то поиграть или направляется в долгий путь, но происходит это почти каждый день, поэтому результат действительно впечатляет.

Не ходить же всем миром с смартфонами Highscreen в карманах, верно? Хочется пользоваться своим любимым смартфоном Nexus или HTC, и тоже наслаждаться временем работы устройства. Есть один способ, о котором я сегодня Вам расскажу.

Начнём с теории. Что такое ядро?

Выбираем кастомное ядро для своего Android-аппарата

Ядро — это сердце всей системы. Именно оно управляет работой Вашего смартфона. Ядро у каждого устройства и каждой системы уникально. Производитель сам собирает его в соответствии с параметрами аппарата.

Существует не только официальные ядра, но и, так называемые, кастомные. Для чего они нужны? Кастомное ядро предоставляет больше возможностей для настройки аппарата. Вы сможете управлять энергопотреблением, частотами процессора и настраивать многое и многое другое, даже цвета экрана. Для нас же в этой статье важнее всего именно энергопотребление.

Мы уже знаем о некоторых кастомных прошивках и о том как их устанавливать, но сегодня займёмся прошивкой ядра.

Важно!Все действия делаются на Ваш страх и риск. Никто из сотрудников reDroid.ru не несёт ответственности за манипуляции совершаемые вами с вашим устройством.

Ещё важнее. Все манипуляции производятся со смартфоном Nexus 4 на стоковой прошивке, то ядро, которое предлагается в этой статье не будет поддерживаться другими прошивками и другими устройствами.

Насколько мне известно, самым меньшим энергопотреблением обладает ядро Faux. Его то мы и будем устанавливать на наше устройство.

  1. Скачиваем .zip c ядром и скидываем в любую удобную папку на смартфоне, например Download.
  2. Заходим в Recovery Mod. (о его установке я рассказывал в этой статье) Сделать это можно из расширенного меню перезагрузки, которое активируется с помощью приложения GravityBox или просто зажав кнопку блокировки и громкости вниз при включении аппарата.
  3. Выбираем пункт Install Zip, ищем наше ядро и подтверждаем, что хотим установить его.
Читайте также:  Длительное нажатие android studio

Всё готово. Ядро установлено и должно прекрасно работать. Тонкие настройки управления энергопотреблением осуществляются с помощью платного приложения, которое можно приобрести в Google Play, но я думаю не будет проблемой найти apk на просторах интернета.

Настроек в этом приложении огромное количество, но самая интересная — это переключатель ECO mod. C его помощью время работы аккумулятора увеличивается на несколько часов, но к сожалению за это приходится платить пониженной производительностью. Не могу сказать, что всё начинает безбожно тормозить, но подлагивания иногда случаются и с этим приходится мириться.

Прошивка и настройка кастомного ядра, позволят Вам существенно увеличить время работы Вашего устройства. К примеру мой Nexus 4 обычно работает с 10 утра до 16 часов дня при достаточно большой нагрузке, (интернет, соц. сети, простенькие игрушки, музыка) при этом время работы экрана достигает максимум двух, в редких случаях два с половиной часа. О том как добиться времени работы экрана около трёх, а то и четырёх часов читайте ниже.

Для того, чтобы Вам не пришлось копаться в настройках ядра самим, предлагаю скачать этот backup с настройками ядра. Через любой файловый менеджер кладём его по пути /sdcard/com.teamkang.fauxclock, затем заходим в приложение FauxClock, ссылку на которое я дал выше, переходим во вкладку Miscellaneous и нажимаем Restore App Settings.

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

  • Max clock — GHz 1.512 GHz for performance, 1.242 GHz for battery
  • Min clock — MHz 384 MHz for both
  • CPU Governor — Intellidemand for performance AND battery
  • mpdecision — Off
  • Snake Charmer — OFF for performance, On for Battery
  • Eco Mode — Off for performance, On for battery
  • Set On Boot — On
  • Set On Boot — On
  • C0 — On
  • C1 — On
  • C3 — On (Note: N4 AP modem is very sensitive to some of the deeper sleep states, if you experienced Green/Yellow AP Modem Watchdog Bark screens, I recommend disabling C2/C3 states).

intellidemand gov control

  • Up Threshold — 95 for both
  • Up Threshold Any CPU Load — 85 for both
  • Up Threshold Multi Core — 75 for both
  • Boost Frequency — 1026000 for both
  • Two Phase Freq — 1134000 for both
  • Optimal Freq — 1242000 for both
  • Synchro Freq — 756000 for both
  • Set On Boot — On
  • GPU Governor — Simple for both
  • GPU Clock — 400 MHz for performance and 320 MHz for battery
  • GPU Vsync Toggle — On for both
  • Set On Boot — On for both

I/O Scheduler Control

  • I/O Scheduler (eMMC) — FIOPS for both
  • Readhead Size (eMMC) — 2048 for both
  • Set On Boot — On for both
  • Dynamic File Sync — On for both
  • TCP Congestion Control — Westwood for both
  • Set On Boot — On for both
  • Vibration Control — 70 for both
  • Set On Boot — On for both
  • Factory Presets — LG Presets
  • Color Adjustments — R, G, B 255, 250, 245
  • Gamma Amp Adjust 0 — R, G, B 13, 20, 22
  • Gamma Amp Adjust 1 — R, G, B 0, 2, 3
  • Set On Boot — On for both
  • ZRAM Disk size — 150

200 Megabytes (or 50 MB when disabled)

  • ZRAM Enable/Disable — Enable if you mult-task often
  • Clear VFS Cache After Boot — On
  • Auto FS Writeback Delay Mode — On
  • Swappiness — 100% if ZRAM enabled, 0% if disabled
  • VFS Cache Pressure — 100% if ZRAM enabled, 150% if disabled
  • Dirty Ratio — 20% for both
  • Dirty Background Ratio — 5% for both
  • После всех проделанных манипуляций все Ваши файлы, будь то игры, контакты, музыка и тому подобное останутся не тронутыми и продолжат работать так же как и работали.

    Pocket 0Поделиться 6Tweet 0Share 0Share 0

    Как увеличить объём оперативной памяти Android

    ЧТО ДЕЛАТЬ ЕСЛИ НЕ ХВАТАЕТ ПАМЯТИ НА ANDROID

    Что можно сделать если в смартфоне мало оперативной памяти Samsung Galaxy Y s5360.

    Сегодня, я хотел бы поговорить о ситуации, когда в смартфоне мало оперативной памяти (RAM). Со смартфоном Samsung Galaxy Y s5360 ситуация обстоит именно так. В этом смартфоне ее аж 289 Mb. Предварительно, для посетителей, которые попали на эту страницу с вопросом «что делать если нет свободного места во внутренней памяти смартфона?» или «не могу установить приложения на смартфоне — нет свободного места», предлагаю перейти на страницу «как перенести приложения на SD-карту в смартфоне Samsung Galaxy Y s5360». Там довольно подробно все описано. Внутренняя память и оперативная память это совершенно разные типы памяти. Теперь давайте рассмотрим, что такое оперативная память. Оперативная память (RAM, Random-access memory, память с произвольным доступом) — энергозависимая часть системы компьютерной памяти, в которой временно хранятся данные и команды, необходимые процессору для выполнения операций. Ядро операционной системы и работающие приложения загружаются именно в нее.

    Делаем свое кастомное ядро

    И вполне естественно, что операционная система старается по максимуму занять оперативную память, кешируя свои приложения. Процитирую Криса Джонстона ”Чистить буферы и кеши в ОЗУ довольно-таки глупо. Представьте себе учителя, который вместо того, чтоб писать на всю длину классной доски, как только заканчивает предложение тут же его стирает и СНОВА и СНОВА пишет начиная с верхнего левого края доски». При большем количестве памяти — система кеширует приложений больше. При меньшем — меньше. Далее, если приложению, запросившему оперативную память, ее не хватает, операционная система выгружает из памяти некоторое количество неработающих в данный момент приложений, освобождая оперативную память. Подробнее о работе Android с оперативной памятью, можно прочесть в этой статье «Почему не стоит использовать Таск Киллеры на Андроиде» и этой статье «Нужен ли тасккиллер в Android». Давайте посмотрим, как это организовано в смартфоне Samsung Galaxy Y s5360. Для этого я установил приложение «Android System Info«. В этом приложении, во вкладке «System», есть пункт «Low Memory Killer Levels». Параллельно, можно использовать приложение «System Panel Lite«. С его помощью Вы сможете увидеть, какое приложение больше всего использует память и ресурсы.
    Как увеличить оперативную память на Android с помощью sd карты

    Память Андроид устройств(Куда девается память?)

    Источник

    Обзор особенностей ядра Андроида

    “А я… карбюратор промываю!”
    Анекдот

    В детском садике мы с единомышленниками препарировали кузнечиков в надежде разобраться в их строении. В школе распаивали радиоприёмник “Россия”. В институте дошла очередь до автомобилей, гайки которых были многократно переставлены. Интересы поменялись, но желание “разбирать” иногда просыпается, и сегодня оно направлено на Андроид.

    Сколько раз вас выручало наличие исходников Андроида? Меня — уже не счесть. Андроид — открытый проект, но, к сожалению, у нас есть возможность только читать; править код Андроида, не будучи сотрудником Google, практически невозможно. Погрустим над этим моментом и загрузим репозиторий. Как это сделать, отлично описано на официальном сайте.

    Общая архитектура

    Архитектуру Андроида можно схематично изобразить так:

    Оригинальная схема не содержит информации об особенностях ядра и не акцентирует внимание на Binder-е и системных сервисах. А ведь Binder является “клеем”, связывающим все компоненты системы.

    Как правило, в книгах описывается верхний левый синий прямоугольник, то есть API, которое доступно разработчику прикладных приложений. Нас же интересует всё, что ниже. Сегодня мы рассмотрим только ядро.

    Ядро — центральная часть любого дистрибутива, называемого “Линукс”. Несмотря на доступность “чистого” ядра, многие разработчики (Ubuntu, Fedora, SuSe и т.д.) добавляют к нему свои патчи перед включением в дистрибутив. Андроид идёт той же дорогой, только ценой потери прямой совместимости: на “чистом” ядре он не заведётся. В настоящее время есть намерения включить “андроидизмы” в основную версию ядра, в 2011 году Линус Торвальдс давал на этот процесс 4-5 лет. Успех уже достигнут в рамках включения механизма wakelocks в версии ядра 3.5.

    Рассмотрим “андроидизмы” более подробно.

    История данного механизма эпична, потянет на сборник статей “Путь wakelock-ов в Линукс”: их обсуждение заняло порядка 2000 писем в рассылке LKML.

    Настольные компьютеры и ноутбуки имеют устоявшуюся систему энергорежимов (у x86 процессоров таковых несколько): компьютер работает “на полных оборотах”, когда что-то делается, и уходит в энергоэффективный режим, когда система простаивает. Уход в “спящий” режим происходит либо после довольно длительного бездействия, либо вручную, например, при закрытии крышки ноутбука.

    На телефонах требовался другой механизм: основное состояние системы — “спячка”, выход из него осуществляется только в случаях необходимости. Таким образом, система может уснуть, даже если какое-то приложение проявляет активность. В Андроиде был реализован механизм wakelock-ов: если приложение (или драйвер) выполняет что-то важное, что должно дойти до логического завершения, оно “захватывает” wakelock, предотвращая засыпание устройства.

    Попытки портирования механизма wakelock-ов в ядро вызвали сопротивление многих разработчиков. Программисты Андроида решали конкретную проблему, решением которой стал определённый механизм. Условия задачи были весьма узки. Целевая платформа — ARM, поэтому использовались её особенности: ARM-процессоры изначально предполагают частую смену режимов работы “сна” и “бодрствования”, в отличие от x86. В Андроиде приложения общаются с системой управления питанием через PowerManager, а что делать клиентским Линукс-приложениям?

    Разработчики Андроида даже не пытались найти общее решение “на будущее”, которое потом без проблем бы вливалось в основное ядро, не консультировались по этой проблеме с сообществом ядра Линукс. Можно ли их за это винить? Несмотря на все проблемы и обсуждения, как упоминалось выше, в ядре появилось API с идентичной функциональностью autosleep.

    Программистам приложений под Андроид довольно редко приходится сталкиваться с wakelock-ами, так как платформа и драйверы обрабатывают возложенные на них обязательства с учётом “спящего” режима. Тем не менее, вмешаться в этот процесс поможет знакомый PowerManager. Кстати, автору приходит в голову только один сценарий: не дать телефону уснуть при запуске сервиса из BroadcastReceiver-а, что решается вспомогательным классом из Android Support Library WakefulBroadcastReceiver.

    Low Memory Killer

    В стандартном ядре Линукса есть Out of Memory Killer, который на основании параметра badness определяет убиваемый процесс:

    badness_for_task = total_vm_for_task / (sqrt(cpu_time_in_seconds) *
    sqrt(sqrt(cpu_time_in_minutes)))

    Таким образом, чем больше процесс потребляет памяти и чем меньше живёт, тем меньше ему повезёт.

    Все программисты, читавшие документацию или проходившие собеседования, знают, что, во-первых, процесс может быть “убит” и при наличии свободных ресурсов, во-вторых, кандидат на вытеснение выбирается по другим критериям: наличие “живых” Андроид-компонент, видимость пользователю и так далее.

    Механизм довольно простой: каждому процессу присваивается приоритет от -17 до 16, при этом чем выше приоритет, тем выше вероятность убивания процесса, и, в зависимости от количества свободной памяти, выбирается приоритет, начиная с которого процессы будут завершены. Приоритеты описаны в ProcessList.java. Занимательно, что приоритет приложения домашнего экрана HOME_APP_ADJ довольно высок, а я-то думал: почему он постоянно перезапускается?

    Массивы mOomAdj и mOomMinFreeLow/mOomMinFreeHigh как раз задают правила “когда что очистить”:

    Таким образом, приложение домашнего экрана вытесняется при остатке свободной памяти в 73728 КБ на телефоне с экраном 1280×800 и ОЗУ в 700 МБ.
    ProcessList передаёт соответствующие значения в ядро, что можно видеть в его методе updateOomLevels.

    Приоритеты процессам выставляет Activity Manager Service, один из многих системных сервисов, общаться с которым можно через Activity Manager.

    Binder, наряду с другими решениями (Files, Sigmals, Sockets, Pipes, Semaphores, Shared Memory и т.д.), решает задачу межпроцессного взаимодействия. Ноги у данного решения растут из проекта OpenBinder, разработчики которого в своё время перешли в команду Андроида.

    Bionic (реализация libc) не использует System V IPC, так как в андроидовском окружении стандартные средства приведут к утечкам ресурсов.

    Особенности:

    1. Управление потоками (мы все помним, что сервис, поддерживающий AIDL, должен работать в многопоточном окружении). Максимальное число потоков — 15 (ProcessState.c, метод open_driver), поэтому не стоит блокировать Binder-потоки в большом количестве без лишней необходимости.
    2. Механизм информирования о смерти процесса, держащего объект Binder “Link to Death”. Например, через него Window Manager узнаёт о смерти приложения и удаляет связанные с ним окна. Также LocationManager при смерти всех своих слушателей перестаёт опрашивать GPS-приёмник. Lowmemorykiller доволен. 🙂
    3. 2 режима вызова: блокирующий и неблокирующий (oneway). В первом случае вызывающий поток блокируется и ждёт отработки метода в потоке процесса-обработчика. Программисты просто вызывают методы через точку, взаимодействие потоков берёт на себя платформа.
    4. Передача UID и PID для безопасности. Через них системные сервисы определяют, есть ли у вызывающего процесса права совершать запрашиваемые действия.
    5. Для Java-программистов — средства создания Proxy и Stub-ов для конвертирования вызовов Java-методов в транзакции Binder-а.

    Рассмотрим как это работает на примере LocationManager-а.

    Когда мы хотим получить информацию о GPS, происходит следующее:

    1. Наше приложение вызывает соответствующий метод у LocationManager-а.
    2. LocationManager делегирует вызов прокси-объекту, преобразующему Java-методы и объекты в Binder-транзакцию (прокси-объектом у LocationManager-а является mService).
    3. Транзакция посылается драйверу ядра, который перенаправляет её LocationManagerService-у, отнаследованному от .LocationManager.Stub.
    4. .LocationManager.Stub делает обратные действия: разворачивает транзакцию в вызов Java-метода.
    5. .LocationManagerService обрабатывает запрос (используя, например, GPS-драйвер).
    6. Stub-объект пакует ответ в транзакцию, и процесс идёт в обратном направлении.
    7. Драйвер пересылает ответ обратно.
    8. Прокси-объект распаковывает результат вызова метода в Java-объекты.

    Как видим, за вызовом методов системных сервисов скрывается довольно большая логика.

    Anonymous Shared Memory (ashmem) — механизм разделяемой памяти. В Линуксе, как правило, данный механизм реализован через POSIX SHM. Разработчики Андроида сочли его недостаточно защищённым, что могло сыграть на руку вредоносному ПО. Особенностями ashmem-а являются счётчик ссылок, при обнулении которого разделяемая память может быть освобождена (например, память освобождается при завершении всех процессов, использующих её), и сокращение разделяемого региона при нехватке памяти в системе.

    Ярким примером использования ashmem-а является процесс zygote, в котором загружается стартовая версия Dalvik VM с загруженными базовыми классами и ресурсами, а остальные приложения просто ссылаются на эту память.

    Binder имеет ограничение на размер транзакции в 1МБ (иначе будет выброшено исключение TransactionTooLargeException). Если нам надо передать из одного процесса в другой большой объём данных, можно как раз воспользоваться Ashmem-ом: создать MemoryFile и передать дескриптор файла в другой процесс.

    Обычные дистрибутивы, как правило, используют две системы логирования: лог ядра, доступный через команду dmesg, и системные логи, располагающиеся обычно в директории /var/log.

    Система Андроида включает несколько циклических буферов для хранения сообщений пользовательских программ (что продлевает время жизни карт памяти, так как циклы чтения-записи не расходуются впустую) и не имеет дополнительных задержек от работы с сокетами, которые применяются в стандартном syslog-е.

    На диаграмме представлена общая система логирования Андроида. Драйвер логирования предоставляет доступ к каждому буферу через /dev/log/*. Приложения имеют доступ к ним не напрямую, а через библиотеку liblog. С библиотекой liblog общаются классы Log, Slog и EventLog. Команда adb logcat показывает содержимое буфера “main”.

    В данной заметке мы кратко рассмотрели некоторые особенности Андроида как Линукс-системы. За скобками остались некоторые другие части (pmem, RAM console и т.д.), а также такие важные аспекты платформы в целом, как System Service, процесс запуска системы и другие. Если данная тема будет интересна, в следующих статьях мы рассмотрим и их.

    Источник

    Читайте также:  Принудительно сбросить настройки андроид до заводских
    Оцените статью