我想计算特定进程进入就绪状态后在CPU中被调度的时间以及同时有多少其他进程被调度。有没有现成的工具或者我必须自己编写它们?
我尝试通过在适当的函数中调用 printK() 函数来修改内核,但这对性能有巨大影响(我认为它遇到了死锁)。
您可以使用 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日志输出到文件中,并使用此工具将其转换为图形界面: