有没有办法获取Linux CPU调度事件随时间的变化?

问题描述 投票:0回答:1

我想计算特定进程进入就绪状态后在CPU中被调度的时间以及同时有多少其他进程被调度。有没有现成的工具或者我必须自己编写它们?

我尝试通过在适当的函数中调用 printK() 函数来修改内核,但这对性能有巨大影响(我认为它遇到了死锁)。

linux linux-kernel operating-system
1个回答
0
投票

您可以使用 Linux 调度跟踪(大多数 Linux 内核发行版都有此功能):

# enable tracing
echo 1 > /sys/kernel/debug/tracing/tracing_on
# enable sched tracing
echo 1 > /sys/kernel/debug/tracing/events/sched/enable
# set the log buffer size
echo 10240 > /sys/kernel/debug/tracing/buffer_size_kb
# get the sched log
cat /sys/kernel/debug/tracing/trace

您可以将sched日志输出到文件中,并使用此工具将其转换为图形界面:

https://github.com/google/schedviz

© www.soinside.com 2019 - 2024. All rights reserved.