Трассировать вызовы pull_task () для запуска процессов - PullRequest
0 голосов
/ 14 июля 2011

Я пытаюсь подсчитать, сколько раз вызывается pull_task () процессами в моей системе. pull_task () - это функция планирования, которая перемещает задачу из очереди выполнения занятого ЦП в очередь выполнения незанятого ЦП. Я не смог найти какой-либо простой механизм (включая perf top), чтобы это выяснить.

В системе есть корневой процесс, называемый миграцией, у меня есть догадка, что этот процесс может быть ответственным за вызов pull_task (). Но я также не могу прикрепить strace к этому процессу, он выдает следующую ошибку:

attach: ptrace (PTRACE_ATTACH, ...): операция не разрешена.

Приоритет процесса «миграция» в реальном времени. Возможно, именно поэтому Strace не может присоединиться к нему?

Пожалуйста, советуйте. Спасибо.

1 Ответ

2 голосов
/ 19 июля 2011

Вам нужно посмотреть на Ftrace.Это даст полный список всех вызовов функций ядра, происходящих в вашей системе за некоторый период времени.

Включите функцию трассировки следующим образом ...

echo function > /sys/kernel/debug/tracing/current_tracer

Просмотр трассировки по cat / sys / kernel / debug / tracing / trace

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

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

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

...