Обнаружение долгого времени ожидания в планировщике Linux - PullRequest
1 голос
/ 27 января 2012

Я пытался найти способ определить, когда конкретный поток запущен на процессоре, а когда нет.В идеале я хотел бы подключиться непосредственно к ядру, чтобы отслеживать, когда мой поток запланирован, когда он возвращается, и когда он прерывается переключением контекста.Есть ли какой-нибудь готовый инструмент, который может точно сообщить эту информацию?

Ответы [ 2 ]

2 голосов
/ 27 января 2012

Вам нужна утилита «perf sched» или, если вы работаете с более старым ядром, «ftrace».

«perf sched» в настоящее время имеет пять подкоманд:

perf sched {record |latency | map | replay | script}

  • record - запись произвольных рабочих нагрузок с минимальными издержками
  • latency - выходные данные для показателей задержки задачи
  • map - показать сводку /карта переключения контекста
  • replay - воспроизводить захваченную рабочую нагрузку с использованием скрипта эмулированных потоков
  • - чтобы увидеть подробный след рабочей нагрузки, которая была записана

http://lwn.net/Articles/353295/

    man perf-sched
0 голосов
/ 27 января 2012

Я бы использовал OProfile .

Это был бы самый простой из готовых способов посмотреть на производительность вашей системы, и, вероятно, был бы достаточно хорош для того, что вам нужно. Если вам нужно что-то сверхспособное, то вы можете сделать что-то вроде создания собственного ядра, которое переключает GPIO во время планирования интересующих событий, и просмотра сигнала с помощью логического анализатора. Я не рекомендую такой подход, потому что он не будет стоить вашего времени.

...