НовостиОбзорыВсе о нейросетяхБытовая техника 2024ГаджетыТехнологииНаукаСоцсетиЛайфхакиFunПромокодыСтранные вопросыЭксперты

Как Huawei удалось повысить производительность флагманских смартфонов

29 января 2020
В сентябре Huawei выпустила флагманскую линейку Mate 30. В ходе презентации производители сделали отдельный акцент на механизме детерминированной задержки (Deterministic Latency Engine) — технологии, которая на треть повышает производительность и на 27% — стабильность работы новых моделей. Чтобы понять, как китайцам удалось достичь таких результатов, придется слегка углубиться в теорию.

Почему Android вообще может тормозить?

В отличие от персональных компьютеров, смартфоны (в силу размеров) имеют относительно скудные аппаратные возможности. При этом мобильные гаджеты должны поддерживать более сложные и динамичные пользовательские сценарии. Система распределения ресурсов, основанная на Linux, не всегда справляется с решением трудных задач — отсюда и низкая производительность гаджетов на Android (ОС основана на ядре Linux). Избавиться от подтормаживаний возможно одним путем: если внести изменения в само ядро Linux и улучшить систему планирования центрального процессора, ОЗУ и ввода/вывода.

Проблемы с планированием загрузки процессора

Чем эффективнее выполняется планирование загрузки ЦП и распределение приоритетов выполнения приложений, тем плавнее работает мобильное устройство. В Linux (начиная с версии 2.2) есть планировщик, он обеспечивает многозадачность и распределяет ресурсы между различными задачами. Проблема в том, что система планирования загрузки процессора в Linux стремится распределять процессорное время на равных условиях, но для Android-смартфонов такой вариант не подходит. Гаджеты работают в режиме нехватки ресурсов — базовый механизм планирования в этом случае оказывается малоэффективен.

Борьба за память

Быстродействие RAM тоже напрямую влияет на общую производительность смартфона — от нее зависит многозадачность и скорость переключения между приложениями. Но в Android распределение оперативки происходит таким образом, что система в одинаковом порядке обрабатывает все запросы и от открытых, и от фоновых приложений. В итоге сразу все запущенные программы конкурируют за доступ к памяти, и производительность смартфона падает — появляются подтормаживания даже в меню.

Слишком много запросов на ввод/вывод

Почти все выполняемые на смартфоне задачи обращаются к вводу/выводу, чтобы считывать данные из хранилища в ОЗУ и для записи данных обратно на запоминающее устройство. Когда железо не справляется с обработкой всех запросов, последние кэшируются в программной очереди ОС и в аппаратной очереди устройств хранения. Как результат — загруженное мобильное устройство опять же начинает работать заметно медленнее, чем в состоянии бездействия.

Как исправить основные проблемы?

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

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

Еще одно новшество — модифицированный стек сетевых протоколов (Networking Protocol Stack). Теперь он ограничивает потребление пропускной способности для задач с низким приоритетом: в первую очередь будут выполняться запросы на ввод/вывод от высокоприоритетных программ.

Корректировка приоритетов на основе зависимостей

Почти всегда высокоприоритетная задача зависит от низкоприоритетной. Но ядро Linux не может получить данные о зависимостях между процессами. Проблему опять же решает механизм детерминированной задержки. Он изменяет структуру соответствующих данных, чтобы планировщик загрузки ЦП и ввода/вывода определяли наиболее важные процессы для взаимодействия с юзером в определенный момент. В итоге, получается мгновенное и умное перераспределение ресурсов.

Резервирование ресурсов для прогнозируемых запросов

Механизм, предложенный Huawei, не только обеспечивает предоставление требуемых мощностей для приоритетных приложений, но и заранее резервирует ресурсы для самых важных задач. Другими словами, утечка памяти при работе с высокой нагрузкой становится невозможной.

Для наглядности разработчики приводят пример с выделенными полосами для общественного транспорта: по ним могут двигаться рейсовые автобусы или экстренные службы. Механизм детерминированной задержки находит «автобусы» среди приложений и оставляет для них «выделенку». Благодаря этому эффективность обработки таких задач повышается, а пользователи избавляются от лагов в критические моменты.

Годы труда

Над созданием механизма детерминированной задержки около двух лет трудились более 200 экспертов из Huawei. За это время разработчики серьезно модернизировали всю систему Android — от фреймворка до ядра. Поэтому сегодня их версия мобильной операционки представляет собой систему с глубокими индивидуальными настройками и усовершенствованными базовыми принципами работы.

Это тоже интересно:

Алексей Глинкин