linux: Есть ли способ сбросить дамп очереди выполнения задач?

Я собираюсь рискнуть и сказать, что в настоящее время такого инструмента не существует.

2
13.04.2017, 15:13
2 ответа

Я не знаю, как сделать дамп очереди выполнения, но вы можете получить другую информацию, используя perf . Например, если создается буря новых процессов, вы можете отследить их с помощью

perf record -e sched:sched_process_exec -a

Остановить запись с помощью Ctrl-C и посмотреть результаты с помощью perf report . Вы также можете просмотреть простые, но мощные скрипты, основанные на perf , которые собрал Брендан Грегг .

1
27.01.2020, 22:19

Глядя прямо на исходный код ядра, вы можете просматривать задачи, подобные приведенным ниже.

struct task_struct *process, *thread;
int cnt = 0;

rcu_read_lock();
for_each_process_thread(process, thread) {
    task_lock(thread);

/* do something with the task properties:

     thread->state;
     thread->wake_cpu;
     thread->pid;
     thread->comm;
*/

    task_unlock(thread);
    cnt++;
}
rcu_read_unlock();

Самая важная часть - заблокировать задачи RCU при входе и разблокировать при выходе. Вы запрограммируете этот дамп в модуле ядра и предоставите среднее для получения списка в команде пользовательского пространства.

Я предлагаю вам прочитать и улучшить мой пример в GitHub @ dumptask

0
27.01.2020, 22:19

Теги

Похожие вопросы