Почему Android вообще может тормозить?
В отличие от персональных компьютеров, смартфоны (в силу размеров) имеют относительно скудные аппаратные возможности. При этом мобильные гаджеты должны поддерживать более сложные и динамичные пользовательские сценарии. Система распределения ресурсов, основанная на Linux, не всегда справляется с решением трудных задач — отсюда и низкая производительность гаджетов на Android (ОС основана на ядре Linux). Избавиться от подтормаживаний возможно одним путем: если внести изменения в само ядро Linux и улучшить систему планирования центрального процессора, ОЗУ и ввода/вывода.
Проблемы с планированием загрузки процессора
Чем эффективнее выполняется планирование загрузки ЦП и распределение приоритетов выполнения приложений, тем плавнее работает мобильное устройство. В Linux (начиная с версии 2.2) есть планировщик, он обеспечивает многозадачность и распределяет ресурсы между различными задачами. Проблема в том, что система планирования загрузки процессора в Linux стремится распределять процессорное время на равных условиях, но для Android-смартфонов такой вариант не подходит. Гаджеты работают в режиме нехватки ресурсов — базовый механизм планирования в этом случае оказывается малоэффективен.
Борьба за память
Быстродействие RAM тоже напрямую влияет на общую производительность смартфона — от нее зависит многозадачность и скорость переключения между приложениями. Но в Android распределение оперативки происходит таким образом, что система в одинаковом порядке обрабатывает все запросы и от открытых, и от фоновых приложений. В итоге сразу все запущенные программы конкурируют за доступ к памяти, и производительность смартфона падает — появляются подтормаживания даже в меню.
Слишком много запросов на ввод/вывод
Почти все выполняемые на смартфоне задачи обращаются к вводу/выводу, чтобы считывать данные из хранилища в ОЗУ и для записи данных обратно на запоминающее устройство. Когда железо не справляется с обработкой всех запросов, последние кэшируются в программной очереди ОС и в аппаратной очереди устройств хранения. Как результат — загруженное мобильное устройство опять же начинает работать заметно медленнее, чем в состоянии бездействия.
Как исправить основные проблемы?
Представители Huawei уверяют, что перечисленные выше проблемы можно решить с помощью механизма детерминированной задержки с обновленной концепцией приоритетности. Эта технология переопределяет значение приоритетных приложений и присваивает динамические атрибуты приоритетным задачам.
В качестве примера разработчики рассказали о распределении ресурсов при запуске «тяжелой» мобильной игры. Благодаря новому механизму все ее сегменты (включая фоновые) временно получают приоритет высокого уровня — сторонние приложения не будут мешать юзеру, пока тот играет.
Еще одно новшество — модифицированный стек сетевых протоколов (Networking Protocol Stack). Теперь он ограничивает потребление пропускной способности для задач с низким приоритетом: в первую очередь будут выполняться запросы на ввод/вывод от высокоприоритетных программ.
Корректировка приоритетов на основе зависимостей
Почти всегда высокоприоритетная задача зависит от низкоприоритетной. Но ядро Linux не может получить данные о зависимостях между процессами. Проблему опять же решает механизм детерминированной задержки. Он изменяет структуру соответствующих данных, чтобы планировщик загрузки ЦП и ввода/вывода определяли наиболее важные процессы для взаимодействия с юзером в определенный момент. В итоге, получается мгновенное и умное перераспределение ресурсов.
Резервирование ресурсов для прогнозируемых запросов
Механизм, предложенный Huawei, не только обеспечивает предоставление требуемых мощностей для приоритетных приложений, но и заранее резервирует ресурсы для самых важных задач. Другими словами, утечка памяти при работе с высокой нагрузкой становится невозможной.
Для наглядности разработчики приводят пример с выделенными полосами для общественного транспорта: по ним могут двигаться рейсовые автобусы или экстренные службы. Механизм детерминированной задержки находит «автобусы» среди приложений и оставляет для них «выделенку». Благодаря этому эффективность обработки таких задач повышается, а пользователи избавляются от лагов в критические моменты.
Годы труда
Над созданием механизма детерминированной задержки около двух лет трудились более 200 экспертов из Huawei. За это время разработчики серьезно модернизировали всю систему Android — от фреймворка до ядра. Поэтому сегодня их версия мобильной операционки представляет собой систему с глубокими индивидуальными настройками и усовершенствованными базовыми принципами работы.
Это тоже интересно: