Трассировать вызовы pull_task() для запуска процессов
Я пытаюсь подсчитать, сколько раз pull_task() вызывается процессами в моей системе. pull_task() - это функция планирования, которая перемещает задачу из очереди выполнения занятого ЦП в очередь выполнения незанятого ЦП. Я не мог найти какой-либо простой механизм (включая perf top), чтобы это выяснить.
В системе есть корневой процесс, называемый миграцией, у меня есть догадка, что этот процесс может быть ответственным за вызов pull_task(). Но я также не могу прикрепить strace к этому процессу, он выдает следующую ошибку:
attach: ptrace (PTRACE_ATTACH,...): операция не разрешена.
Приоритет процесса "миграция" в реальном времени. Возможно, именно поэтому Strace не может присоединиться к нему?
Добрый совет. Благодарю.
1 ответ
Вам нужно посмотреть на Ftrace. Это даст полный список всех вызовов функций ядра, происходящих в вашей системе за некоторый период времени.
Включите функцию трассировки так...
echo function > /sys/kernel/debug/tracing/current_tracer
Просмотр трассировки по cat / sys / kernel / debug / tracing / trace
Эти статьи должны помочь: