Surfaceflinger что за процесс android
Перейти к содержимому

Surfaceflinger что за процесс android

  • автор:

How to make sense of dumpsys SurfaceFlinger

Is there any documentation on the output of the adb command «dumpsys SurfaceFlinger»? In particular, I’d like to understand what is the difference between an HWC or GLES layer type, and what does numHwLayers mean? Here is the section of dumpsys SurfaceFlinger I’m talking about:

 mDebugForceFakeVSync=0 Display[0] : 768x1280, xdpi=319.790009, ydpi=318.744995, refresh=16666667 numHwLayers=5, flags=00000000 type | handle | hints | flags | tr | blend | format | source crop | frame name ------------+----------+----------+----------+----+-------+----------+---------------------------+-------------------------------- GLES | b7e1c440 | 00000002 | 00000000 | 00 | 00100 | 00000002 | [ 334, 56, 1102, 1190] | [ 0, 50, 768, 1184] com.android.systemui.ImageWallpaper GLES | b7e1d7c8 | 00000002 | 00000000 | 00 | 00105 | 00000001 | [ 0, 50, 768, 1184] | [ 0, 50, 768, 1184] com.android.launcher/com.android.launcher2.Launcher GLES | b7e701e0 | 00000002 | 00000000 | 00 | 00105 | 00000001 | [ 0, 0, 768, 50] | [ 0, 0, 768, 50] StatusBar GLES | b7e1df68 | 00000002 | 00000000 | 00 | 00100 | 00000001 | [ 0, 0, 768, 96] | [ 0, 1184, 768, 1280] NavigationBar FB TARGET | b7dd3ab0 | 00000000 | 00000000 | 00 | 00105 | 00000001 | [ 0, 0, 768, 1280] | [ 0, 0, 768, 1280] HWC_FRAMEBUFFER_TARGET 

asked Feb 8, 2014 at 6:20
5,892 13 13 gold badges 51 51 silver badges 61 61 bronze badges
Feb 8, 2014 at 7:42
Jun 19, 2014 at 0:46

2 Answers 2

Ok, I have enough figured out to answer my own question, but if anyone has any additional input, please leave them in the comments. There’s some additional stuff encountered which I’ll note below that still isn’t clear.

First, the link below helps explain a few things about how image rendering and compositing happens through SurfaceFlinger: http://source.android.com/devices/graphics.html

If you noticed in the link, there are two ways images are sent to the display. One is to process images with the GPU before sending them to the display, and the other is to use hardware overlays of the display to bypass the GPU and send images directly to the display. The latter method performs better, but you are limited to a certain number of layers/overlays (usually 4). If you have more layers, things have to get processed by the GPU.

The part of dumpsys SurfaceFlinger which was at the center of my question shows you how many layers there are at the moment dumpsys was called, and if those layers are being handled by the Hardware Composer (HWC) or the GPU (GLES). This explains what HWC and GLES mean. Also, numHwLayers is how many overlays the display supports (usually 4).

Also, there are «source crop» and «frame» coordinates. The source crop is the section of an image that will be displayed. For example, if it’s a wallpaper that spans multiple display screens (think about what you see on the home screen when you swipe across screens), then at a given moment you will only need a subsection of that larger wallpaper image to display. This means that source crop is just telling you what section of that overall image you are using at the moment. The frame part of it is where that section of the source image is going to actually be display on the screen.

The code for this section of the dumpsys SurfaceFlinger command is located here: \frameworks\native\services\surfaceflinger\DisplayHardware\HWComposer.cpp

It’s in a function called «HWComposer::dump»

The above answers my original question, but below are some additional things I noticed:

It looks like there are more composition types than HWC and GLES. In the code noted above, I see a «BACKGROUND» and a «FB TARGET» composite type. FB TARGET seems to always be present when you type «dumpsys SurfaceFlinger» in adb. I think FB Target is simply the frame buffer the complete image will be written to (someone please confirm this). Even if the device is asleep you see this FB TARGET. What I don’t understand is, what is this BACKGROUND type? I can’t even take a guess on that one. Please leave a comment if you know what this is.

Выпил SurfaceFlinger

$subj реален? Выпилить из init’a запуска GUI части.
То есть, чтобы при загрузке телефона был черный экран или заставка, а по usb был adb. А также хотелось бы добавит запуск /data/local/init.sh
все равно экран разбит, сенсор глючит
а в консоли стартовать mpd, чтобы музыку слушать

ubuntuawp ★★
13.05.14 19:07:50 MSK

и всё это для того, чтобы запустить mpd в консоли? Да вы ядерный извращенец, батенька! Тащите!

stevejobs ★★★★☆
( 13.05.14 19:18:52 MSK )

intelfx ★★★★★
( 13.05.14 19:19:55 MSK )

В гугле пишешь disable SurfaceFlinger и получаешь профит. 🙂

a1batross ★★★★★
( 13.05.14 19:24:10 MSK )

Посмотрел на заголовок, на теги … и стало интересно что тут кто выпил. А тут ерунда какая-то.

vyazovoi ★★★
( 13.05.14 19:52:00 MSK )
mittorn ★★★★★
( 13.05.14 20:14:37 MSK )
Ответ на: комментарий от mittorn 13.05.14 20:14:37 MSK

я не нашел там surfaceflinger
еще бы хотел ril и bt убрать))

ubuntuawp ★★
( 14.05.14 13:37:38 MSK ) автор топика
Ответ на: комментарий от ubuntuawp 14.05.14 13:37:38 MSK

service surfaceflinger /system/bin/surfaceflinger 

В книге Embedded Android написано что он стал отдельным сервисом, начаная с 4.0.

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

У меня самого есть телефон с разбитым экраном, захожу на него через WebKey. Думаешь если отключить графику будет быстрее работать?

Или у тебя ложные срабатывания, которые мешают удаленному управлению?

tlx ★★★★★
( 14.05.14 14:53:25 MSK )
Ответ на: комментарий от tlx 14.05.14 14:53:25 MSK

Мне графика ненужна)
Я хочу использовать как домашний сервер — mpd и бложик
Графика отъедает память и lighttpd постоянно падает (OOM, mothefucker)
Дело в том, что у меня 2.3

Surfaceflinger что за процесс android

Изображение

Энергопотребление (автономность) Redmi 3 (ido)
Xiaomi Hongmi 3
Обсуждение » | Покупка » | Прошивка » | Кастомные прошивки » | Аксессуары » | Разблокировка загрузчиков XIAOMI »

ПРАВИЛА ТЕМЫ

В этой теме обсуждаем энергопотребление Redmi 3 на разных прошивках и при различном наборе установленных программ.
Безусловно прошивка оказывает влияние на энергопотребление, но по сравнению со всем выше перечисленным оно минимально.(Исключения составляют кривые прошивки)
При возникновении проблем с повышенным расходом батареи, просьба указывать прошивку, набор установленных приложений, а также после чего появилась (по вашему мнению) проблема.+ Загляните под спойлер «Способы вычислить потребителя энергии» и выполните приведенные там действия и приложите скриншоты с результатами. Это в разы упростит и ускорит работу тех ,кто будет вам помогать. Если же это Вы не хотите тратить время на все эти бесполезные действия , а просто хотите получить простой конкретный ответ что же Вам делать с возникшей проблемой , то можете обращаться напрямую в тему Общение телепатов.
Приветствуются отчёты о том, как вы добиваетесь увеличения времени автономной работы. Настоятельно рекомендуется использовать форму из спойлера «Форма для выкладывания результатов работы от аккумулятора» . Это избавит тему от ненужных уточнений длинной в несколько страниц. Человек посмотрит и сделает для себя выводы.
Просьба,скрины прятать под спойлер! «Как убирать изображения под спойлер»
Не стоит начинать холиваров на тему «на официалке было лучше» подробнее , а также не стоит спрашивать сколько аппарат проживет при таких-то условиях подробнее
Перед публикацией любого поста крайне рекомендуется ознакомиться с Объявление: !ВАЖНО! Прочтите перед тем, как задать свой вопрос! , а также с шапкой темы.

Способы вычислить потребителя энергии

Просьба перед тем как писать сюда со своей проблемой выполнить приведенные ниже действия.
1. Выложите скриншоты(под спойлером) Настройки — Батарея (Скриншоты сюда приложите, попробуем разобраться вместе). Также подробный график оттуда тоже.
2. Ставьте Wakelock Detector и выясняйте, какой системный процесс жрущий (Тоже выложите скриншоты)
3. Зайдите в раздел Для разработчиков и посмотрите статистику процессов (как открыть раздел для разработчиков: зайти настройки — о телефоне, и 5-8 раз нажать на «Номер сборки», затем снова зайти в настройки и найти этот пункт. Или нагуглите как это сделать)
4. Зайдите в настройки — о телефоне — номер сборки — нажать 8 раз. Затем настройки — для разработчиков — показывать загрузку ЦП. И там посмотреть, что на первых местах, и постоянно ли.

Полезные приложения

BetterBatteryStats — Утилита для мониторинга разряда аккумулятора. (Подробное описание программы)
Disable Service — Включение и отключение служб.
Greenify — Управление фоновыми процессами.
GSam Battery Monitor — Утилита для мониторинга энергопотребления.
LeanDroid — Автоматическое управление беспроводными соединениями.
Lux Auto Brightness — Автоматическая регулировка яркости дисплея.
My Android Tools — Отключение/включение activity, service, receiver, provider у любых приложений.
Wakelock Detector — Поиск причины не засыпания устройства. (подробное описание программы)

Общие советы

Отключить определение местоположения в настройках micloud. Подробнее
Удалить с рабочего стола лишние виджеты
Отключить живые обои
Настройки -> wi-fi -> дополнительные функции -> wi-fi в спящем режиме — только при питании от сети
Настройки -> wi-fi -> дополнительные функции -> снять галочку — «всегда искать сети»
Отключить ненужные синхронизации
Отключить в Google Play автоматическое обновление и уведомления об обновлениях.
Отключить Пуш и уведомление соц сетей.
Не использовать «функцию просыпания по даблтапу»
Не использовать таск-киллеры
Не использовать, программы и виджеты для мониторинга, в повседневной работе смартфона.
Отключить push-сообщения от оператора
При плохом качестве связи сети LTE, переключите «Тип сети» на 3G или 2G

Форма для выкладывания результатов работы от аккумулятора

Убедительная просьба использовать эту форму , чтобы не приходилось писать по 10 постов вытаскивая из Вас информацию клещами. Без этой информации ваши посты малоинформативны
Прошивка (название и версия), а также Gapps(если установлены).
Тип сети (2G\3G\4G(LTE) или авто . Качество приема?
Если был использован WiFi,bluetooth, а также следует указывать качество приема и время работы.
Какой системный софт удалён\отключен.
Лаунчер,наличие виджетов.
Яркость экрана.
Работа экрана, Общая работа телефона.
Голосовые вызовы.
Осталось: %
Какими программами уменьшали энергопотребление? (в т.ч. ограничители автозапусков, усыпители, тасккилеры, управление режимами сети, антивирусы, блокираторы рекламы).
Укажите сколько месяцев уже пользуетесь аппаратом или если меняли акб, то укажите сколько времени прошло после замены. Если аккумулятор не стандартный, укажите это. Сколько полных циклов заряда-разряда произошло со времени установки прошивки — 1 цикл, 2 цикла, >2 циклов.
Описать, что делали во время проведения замеров (в свободной форме).

Какая прошивка самая энергоэффективная?

Если вы ждали тут увидеть конкретное название или ссылку , то спешу вас разочаровать.
На энергопотребления влияют многие факторы :
* софт
* ядро и его настройки
* gps/wifi/мобильная сеть/bluetooth/nfs качество сигнала
* манера использования
* яркость экрана
* синхронизации , пуши

Что нового в системной трассировке Android Studio

В Android Studio 4.0 мы пересмотрели UI профайлера (Profiler), чтобы обеспечить интуитивно понятный рабочий процесс записи работы центрального процессора. Мы продолжали вносить улучшения, основываясь на ваших отзывах, и добавили больше функций в версию 4.1.

Мы расскажем о том, что нового появилось в Android Studio для системной трассировки (System Trace), одной из редко используемых, но мощных конфигураций записи работы ЦП. В отличие от метода Java или трассировки функций C/C++, системная трассировка накапливает действия устройств (например, планирование работы процессора) и системные процессы Android (например, SurfaceFlinger). Кроме того, вы можете настроить код с помощью пользовательских событий, вызвав API Trace в приложении. Таким образом, ваши пользовательские события будут записываться в коллекцию вместе с системными. Они могут пригодиться, когда вы будете исследовать проблемы производительности, такие как шероховатость UI или высокое энергопотребление.

Потоки в едином представлении

Записи работы процессора теперь отделены от основной временной шкалы профайлера для облегчения анализа. В этом выделенном представлении данные трассировки организованы в разделы в левой части окна Profiler.

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

Мы услышали, что выбор потока для просмотра его диаграммы вызовов (или событий для системной трассировки) довольно громоздок, поэтому объединили все действия потока в одно представление, отображающее его состояния и диаграммы вызовов одновременно. По умолчанию мы сортируем потоки по степени их нагруженности, но вы можете перетащить мышкой любой отдельный поток, чтобы изменить порядок.

Вы также можете свернуть или развернуть каждый поток, щелкнув один раз значок треугольника или дважды щелкнув на его имени. Обратите внимание, что для трассировки метода Java или функции C/C++ мы сворачиваем все потоки по умолчанию из-за глубоких стеков вызовов, так что вы сразу можете взглянуть на все данные конкретного потока.

События системной трассировки теперь раскрашены так, чтобы было проще увидеть отличия:

Интуитивная навигация

Новый UI трассировки имеет обновленную схему навигации по временной шкале. Мы заменили старую горизонтальную полосу прокрутки на представление master-detail.

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

Оттуда вы можете выполнять более точные навигационные действия:

  • Увеличение/уменьшение масштаба с помощью Ctrl (или Cmd на Mac) + колесико мыши.
  • Панорамирование вида путем перетаскивания мышкой влево и вправо, удерживая нажатой клавишу пробела.
  • Клавиши WASD для масштабирования и панорамирования вида, как в устаревшем UI SysTrace в chrome://tracing .

Начиная с Android Studio 4.1 Canary 9, вы можете использовать мышь в разделе потоков (Threads), чтобы уточнить выбор. Можно выбрать прямоугольную область, которую можно увеличить, нажав кнопку Zoom to Selection в правом верхнем углу (клавиша “M”). Можно даже выбрать несколько потоков. Это полезно, когда вы перетаскиваете похожие потоки рядом друг с другом, проверяя все потоки сразу. Например, вы можете анализировать нескольких рабочих потоков, часто встречающихся в играх.

Панель анализа

Говоря об анализе, мы хотим выделить новую панель анализа (Analysis Panel), представленную в Android Studio 4.0, в правой колонке окна Profiler.

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

Чтобы сделать эту панель анализа полезной, мы изучали способы получения полезных аналитических данных. В дополнение к Top Down, Flame Chart и Bottom Up, уже присутствующим в профайлере центрального процессора, мы добавили вкладку со сводкой (Summary) в Android Studio 4.1 Canary 10 для распределения состояния потока, статистики событий трассировки и т.д. Например, довольно часто нам нужно узнать больше о повторяющемся событии трассировки. На вкладке со сводкой отображаются основные статистические данные (количество, минимум, максимум и т. д.), а также наиболее продолжительные события выбранного события трассировки. Вы даже можете перейти к другому событию, выбрав строку таблицы.

Повышение стабильности и производительности

И последнее, но не менее важное: мы улучшили стабильность и производительность записи работы ЦП.

  • Исправили несколько ошибок, которые могут привести к сбоям записи.
  • Построили системную трассировку на основе Perfetto в качестве бэкенда на Android API level 28 и более поздних версиях с использованием новейших инструментов.
  • Оптимизировали код профайлера, чтобы значительно снизить потребление памяти (до 80%) при разборе записанной трассировки, что позволяет открывать и анализировать более длинные записи. Помните, что вы можете увеличить максимальный размер кучи Android Studio при работе с очень длинными трассировками.

Загрузите последнюю версию превью Android Studio 4.1, чтобы попробовать эти функции. Как и всегда, мы ценим ваши отзывы.

  • Новые инструменты Android 11 для обеспечения конфиденциальности и стабильности
  • Как настроить базу данных с Firebase Firestore для Android
  • Корутины Kotlin: как работать асинхронно в Android

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *