Любой подход, чтобы показать переключение потоков? - PullRequest
3 голосов
/ 02 августа 2011

all, есть ли какой-либо подход или инструменты, чтобы показать процесс переключения потоков, то есть, я могу знать в любой конкретный момент времени, какой ЦП занимает какой поток, а также сколько стоит переключение контекста, спасибо*

Ответы [ 2 ]

2 голосов
/ 13 сентября 2011

SystemTap полезен для такого рода вещей. Для этого есть стандартный пример sched_switch.stp .

Однако он не измеряет истекшее время переключения. Это кажется хитрым, по крайней мере, по нескольким причинам. Во-первых, вам нужно будет выбрать подходящий зонд для входа и выхода, чтобы измерить дельту, и сейчас я ничего не нахожу. (Вход в ядро ​​или выход из него в соответствующих процессах может быть неплохим приближением? Возможно, для этого есть кое-что, хотя я не вижу этого сейчас.) Во-вторых, если вы спрашиваете, в какой степени стоит избегать переключений контекста, было бы неполной картиной, если бы вы не учитывали лишние ошибки в кэше ЦП при частом переключении задач, а они появляются позже. Я думаю, что единственный хороший способ получить ответ может быть экспериментальным путем. В частности, вы можете попробовать настроить параметры планирования (см. cfs-tuning.pdf ), чтобы увидеть, как более частые переключения контекста влияют на скорость вашей программы.

1 голос
/ 14 сентября 2011

Если в вашем ядре скомпилирована ftrace, вы можете использовать трассировщик sched_switch для вывода трассировки пробуждений процессов и переключений контекста. Если ваши задачи запланированы на RT, вы также можете использовать трассировщик wakeup, чтобы получить представление о максимальной задержке между активацией и планированием задачи. см. Documentation / trace / ftrace.txt для получения дополнительной информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...