Многопоточность в мобильном Chrome - как посмотреть нагрузку по веб-воркерам и ядрам?

Написал простую систему видеонаблюдения с распознаванием людей на чистом JavaScript. Работу с нейросетью засунул в отдельный тред (воркер), а собственно видеозапись ведется в главном треде. Идеально работает в Chrome под линуксом даже на древнем 2-х ядерном железе. А на относительно новом 4-х ядерном андроид-телефоне в момент работы нейросети подвисает и главный тред, то есть начинает лагать пользовательский интерфейс !

Как посмотреть в хроме - сколько воркеров запущено, как они распределены по ядрам, и где основные задержки ?

PS Все приложенение написано на async/await, главный тред нигде не блокируется, в воркер передается всего один видеокадр (массив пикселей), тормоза начинаются именно в момент распознавания. Может быть TensorFlow как-то странно процессор использует или встроенную видеокарту (хотя, в ноуте тоже встроенная).

Работающее демо

Репозитарий с кодом

Собственно воркер с нейросетью

А вот главный тред с вызовом воркера

Буду благодарен за любые идеи !


Ответы (1 шт):

Автор решения: qwabra

Буду благодарен за любые идеи !


Как посмотреть в хроме - сколько воркеров запущено?

см. раздел release note

Как они распределены по ядрам?

На сколько я знаю:
Новый воркер - новый поток "ядро".

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

Где основные задержки ?

  • ,-

ядра

  1. Ядра на PC и "мобильные" - не одно и то же.
  2. Ядра даже внутри одного процессора могут быть разные.
  3. Смотреть нужно не ядра а потоки, т.к. на ядро их может быть более одного.

Тест

Начните с написания тестового примера, для наблюдения как оно работает, грузит процессор.

Там есть код для ноды (правда его нужно немного переписать)

release note (что нового) от 2018/01

Get Started with Remote Debugging Android Devices

Загрузка процессора.

Загрузку по ядрам(потокам) хром не умеет даже на PC -> нужно использовать системные утилиты.

  • AnTuTu (программа для телефона)

или

Проверка поддержки webgl.

я не в курсе нужен ли он в tensorflowJS но там -> "News & announcements" они что-то говорят про "WebGL acceleration"

We have launched the alpha version of first-class React Native support for TF.js, including WebGL acceleration on supported platforms. Learn how to bring performant ML into your React Native app.

1.нативный и 2.не очень код

  1. https://www.tensorflow.org/lite/?hl=ru
  2. react-native - https://github.com/tensorflow/tfjs/tree/master/tfjs-react-native
→ Ссылка