Основная проблема проста: у меня есть приложение реального времени (на основе API Xenomai), которое отвечает за периодический запуск списка исполняемых файлов.Моя цель состоит в том, чтобы контролировать общее выполнение, чтобы увидеть, соответствуют ли эти задачи их срокам, измерить время их выполнения и т. Д. Для проведения некоторого статистического анализа.
Проблема заключается в мониторинге и регистрации этой информации:Я не могу найти, как регистрировать конкретно эти процессы (т. Е. Не все потоки Linux, так как мне нужно запустить тест в течение как минимум 30 минут: слишком много данных ...!) с внешнимспециальный инструмент .
Мой второй вариант - реализовать это непосредственно на моем программном обеспечении, но я не знаю, как это сделать, чтобы избежать недопустимых накладных расходов (помните: яделаю в режиме реального времени).Но, эй, это план B, и он будет задан только в том случае, если текущий вопрос не найдет решения. :)
То, что я уже пробовал
Моими первыми мыслями было использование ftrace с инструментом trace-cmd.Однако у меня есть несколько проблем:
, Xenomai не любитsudo и все заблокировано (первое запущенное задание блокируется и продолжает выполняться ...).
Если я запускаю свое приложение с одной стороны, а затем прикрепляю к нему ftrace
trace-cmd record -e all -P [taskPID] -c
, мне удается заставить все работать ... но когда я подключен к нему с помощью PID, мне не удается контролировать все созданные подзадачи, и я получаю толькоосновной след приложения ..!
- Единственный способ контролировать все - это избавиться от " -P [taskPID] -c ", но затем я отслеживаю все, и мой файл достигает Go за считанные минуты ... ОтНа этом этапе я пытаюсь выяснить, могу ли я использовать фильтр на моем trace-cmd, чтобы использовать последнюю опцию, но фильтровать задачи, чтобы отследить только ту, имя потока которой начинается, например, с «RT_», ноЯ не могу найти это ... и в целом ftrace, кажется, не отвечает моим потребностям на этой стороне.
Итак, в двух словах: 1) Любая подсказка некоторых вариантов ftraceЯ мог бы использовать, чтобы получить данные, которые мне нужны?2) Если нет, любой другой инструмент может это сделать?Я тоже видел Strace, но, похоже, у меня будут точно такие же проблемы ... 3) Если нет, то единственный ли вариант - действительно ли выполнить все измерения внутри моего приложения, и, следовательно, я должен создать еще один вопрос, чтобы увидеть лучшиеспособ сделать это ..? (надеюсь, мы не доберемся до пункта 3) ..!)
Заранее благодарим за любую помощь!