У меня есть встроенная система Linux, содержащая два потока, которые должны работать в режиме реального времени (или мягкого реального времени). При использовании SCHED_OTHER я заметил большое дрожание, но два потока всегда выполнялись в пределах отведенного им времени.
Я применил патч RT с включенным PREEMPT_RT, и запуск этих двух потоков с SCHED_FIFO (с высоким приоритетом потока ~80) приводит к гораздо меньшему дрожанию, в целом это намного лучше, за исключением того, что время от времени оба потока пропускают свой крайний срок. (вместо того, чтобы выполняться каждые 10 мс или около того, они могут не получить расписание почти на секунду!).
Я хотел спросить, какой инструмент лучше всего подходит для отладки планирования Linux (под RT) на встроенной ОС Linux. На ум пришел ftrace, но я не знаю, лучший ли это и/или единственный инструмент. Моя цель — выяснить, почему два потока время от времени не планируются на продолжительное время.
ОБНОВЛЕНИЕ: Сегодня я запускал ftrace с wakeup_rt. wakeup_rt как трассировщик не выполнил свою работу: максимальная задержка, которую он зафиксировал, составила 5 мс, тогда как мой поток может работать с опозданием до 1000 мс. Может дело не в планировщике? Какой еще трассировщик в ftrace посоветуете?