Как запустить процесс Linux сразу после системного вызова execv - PullRequest
0 голосов
/ 25 мая 2018

Процесс (Android zygote) разветвляется из процесса инициализации, затем вызывается execv для загрузки реального двоичного файла (/ system / bin / app_process) для запуска.Как я проверяю из отметки времени журнала, между разветвлением и «возвратом системного вызова execv» существует небольшая задержка, но существует задержка (около 1 с) между «возвратом системного вызова execv» и «main () app_process».

Похоже, что процесс запланирован после системного вызова execv и запланирован через некоторое время, что вызывает задержку в 1 секунду для реального main ().(Конечно, загрузка .so также должна вносить вклад в эту 1 секунду).

Моя цель - сделать этот процесс выполненным как можно быстрее после вызова execv.Я попытался установить наивысший приоритет -20 для процесса после форка, задержка уменьшена до 1 секунды, но я все еще хочу дальнейшее уменьшение.

Есть ли способ запланировать запуск этого процесса сразу после execv?возврат системного вызова?

1 Ответ

0 голосов
/ 29 мая 2018

Позже я сбросил журнал расписания целевого процесса и обнаружил, что он уже был запланирован сразу после вызова execv, но вскоре он уступил ЦПУ из-за ошибки страницы карты mm, что указывает на то, что он начал загружатьдвоичные файлы.Необходимо было загрузить столько библиотек, что потребовалось почти одну секунду, чтобы перейти к функции main ().Так что вопрос в неправильном направлении, правильное направление - как ускорить загрузку, если это возможно.

...