Как проанализировать параметры сценария и задержки? - PullRequest
0 голосов
/ 08 июня 2018

Я использовал запись perf sched для записи чего-либо.

, и я получил переключатель контекста событие от сценарий perf sched

filebench  2646 [000] 21159.177699:       sched:sched_switch: filebench:2646 [120] **R** ==> rcu_sched:8 [120]

filebench  2611 [000] 21159.172060:       sched:sched_switch: filebench:2611 [120] **T** ==> filebench:2645 [120]

filebench  2618 [000] 21159.193692:       sched:sched_switch: filebench:2618 [120] **S** ==> rcu_sched:8 [120]

filebench  2620 [000] 21159.193724:       sched:sched_switch: filebench:2620 [120] **D** ==> filebench:2628 [120]

что означает среднее число символов R / T / S / D?

Еще один вопрос: почему время cs отличается между задержкой выполнения сценария и сценарием выполнения?

1 Ответ

0 голосов
/ 09 июня 2018

Символы R/T/S/D представляют различные состояния задачи.

Символ 'R' показывает, что задача находится в TASK_RUNNING Состояние.Символ 'S' показывает, что задача была переведена в состояние TASK_INTERRUPTIBLE .Символ 'D' показывает, что планировщик поставил задачу в состояние TASK_UNINTERRUPTIBLE .Наконец, символ 'T' показывает, что задача в данный момент находится в состоянии TASK_STOPPED .Чтобы понять, как состояния задач можно определить по символам, посмотрите исходный код ядра Linux (4.17): -

TASK_STATE_TO_CHAR_STR macro

#define TASK_STATE_TO_CHAR_STR "RSDTtZXxKWP"

/* task state bitmask, copied from include/linux/sched.h */
#define TASK_RUNNING        0
#define TASK_INTERRUPTIBLE  1
#define TASK_UNINTERRUPTIBLE    2
#define __TASK_STOPPED      4
#define __TASK_TRACED       8
/* in tsk->exit_state */
#define EXIT_DEAD       16
#define EXIT_ZOMBIE     32
#define EXIT_TRACE      (EXIT_ZOMBIE | EXIT_DEAD)
/* in tsk->state again */
#define TASK_DEAD       64
#define TASK_WAKEKILL       128
#define TASK_WAKING     256
#define TASK_PARKED     512

Этотак же просто, как указание первого символа «R» на первый тип состояния задачи, т. е. TASK_RUNNING, второго символа «S» на состояние TASK_INTERRUPTIBLE, так же, как третий символ «D» относится к TASK_UNINTERRUPTIBLE... это продолжается, и в конце «W» относится к TASK_WAKING, а «P» относится к TASK_PARKED.Обратите внимание, что состояние задачи EXIT_TRACE не соответствует ни одному из символов в строке макроса TASK_STATE_TO_CHAR_STR.

Что касается вашего второго вопроса, довольно трудно понять, какой вывод представляет perf sched latency, а какой - perf sched script.Также трудно понять, как вы анализируете оба выхода.Вы должны помнить, что perf sched latency суммирует задержки планировщика по задачам.Он показывает вам для каждой задачи, какова ее максимальная задержка, каково ее время выполнения и сколько раз во время ее выполнения происходило переключение контекста, кроме некоторых других деталей.perf sched script, с другой стороны, сбросит все события планировщика, аналогичные команде perf script.

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

...