首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何分析perf sched脚本和perf sched延迟?

如何分析perf sched脚本和perf sched延迟?
EN

Stack Overflow用户
提问于 2018-06-08 21:45:07
回答 1查看 610关注 0票数 2

我使用perf sched record记录了一些东西。

并且我从perf sched script获得了一些上下文切换事件

代码语言:javascript
复制
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是什么意思?

另一个问题:为什么perf sched延迟和perf sched脚本的cs时间不同?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-09 05:42:39

字符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

代码语言:javascript
复制
#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 script命令类似,perf sched script将转储所有调度程序事件。

这两个命令非常不同,任何直接的比较都必然会导致错误的结论。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50762056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档