Трассировать вызовы 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

Эти статьи должны помочь:

Отладка с помощью Ftrace, часть первая

Отладка с помощью Ftrace, часть вторая

Другие вопросы по тегам