Как запустить процесс Linux сразу после системного вызова execv
Процесс (Android zygote) разветвляется из процесса инициализации, затем вызывается execv для загрузки реального исполняемого файла (/system/bin/app_process). Как я проверяю из отметки времени журнала, между разветвлением и "возвратом системного вызова execv" существует небольшая задержка, но существует задержка значимости (около 1 с) между "возвратом системного вызова execv" и "main() app_process",
Похоже, что процесс запланирован после системного вызова execv и запланирован через некоторое время, что вызывает задержку в 1 секунду для реального main(). (Конечно, загрузка.so также должна вносить вклад в эту 1 секунду).
Моя цель - как можно быстрее запустить этот процесс после вызова execv. Я попытался установить наивысший приоритет -20 для процесса после форка, задержка уменьшена до 1 секунды, но я все еще хочу дальнейшее уменьшение.
Есть ли способ запланировать запуск этого процесса сразу после возврата системного вызова execv?
1 ответ
Позже я сбросил журнал расписания целевого процесса и обнаружил, что он уже был запланирован сразу после вызова execv, но вскоре он уступил ЦПУ из-за сбоя страницы карты mm, что указывает на то, что он начал загружать двоичные файлы. Необходимо было загрузить столько библиотек, что потребовалось почти одну секунду, чтобы перейти к функции main(). Так что вопрос в неправильном направлении, правильное направление - как ускорить загрузку, если это возможно.