跟踪正在运行的进程对 pull_task() 的调用

发布于 2024-11-19 20:10:55 字数 326 浏览 3 评论 0原文

我正在尝试计算系统中进程调用 pull_task() 的次数。 pull_task() 是一个调度函数,它将任务从繁忙 CPU 的运行队列移动到空闲 CPU 的运行队列。 我找不到任何简单的机制(包括 perf top)来找出这个问题。

系统中有一个名为migration的根进程,我预感这个进程可能负责调用pull_task()。但我也无法将 strace 附加到此进程,它会引发以下错误:

Attach: ptrace(PTRACE_ATTACH, ...): 不允许操作。

进程“迁移”的优先级是实时的。也许这就是 strace 无法附加到它的原因?

请指教。谢谢。

I am trying to count the number of times pull_task() is called by processes in my system. pull_task() is a scheduling function that moves a task from runqueue of a busy CPU to the runqueue of an idle CPU.
I could not find any simple mechanism (inclunding perf top) to find this out.

There is a root process called migration in the system, I have a hunch that this process might be responsible for calling pull_task(). But I also cannot attach strace to this process, it throws the following error:

attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted.

The priority of the process 'migration' is realtime. Perhaps that is the reason why strace cannot attach to it?

Kindly advise. Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

肥爪爪 2024-11-26 20:10:55

你需要看看Ftrace。这将给出一段时间内系统中发生的所有内核函数调用的完整列表。

像这样打开函数跟踪器...

echo function > /sys/kernel/debug/tracing/current_tracer

查看跟踪
cat /sys/kernel/debug/tracing/trace

这些文章应该有所帮助:

使用 Ftrace 进行调试第一个

< a href="http://lwn.net/Articles/366796/" rel="nofollow">使用 Ftrace 进行调试第二部分

You need to look at Ftrace. This will give a complete listing of all kernel function calls occurring in your system for some time period.

Turn on the function tracer like so...

echo function > /sys/kernel/debug/tracing/current_tracer

View the trace by
cat /sys/kernel/debug/tracing/trace

These articles should help:

Debugging with Ftrace part one

Debugging with Ftrace part two

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文