gpt4 book ai didi

linux - SystemTap 脚本如何确定当前线程数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:25:06 24 4
gpt4 key购买 nike

我想编写一个 SystemTap 脚本,它可以确定探测调用中当前 PID 的实际线程数。此时该数字应与/proc/4711/status 输出中显示的数字相同。

我的第一个方法是计算 kprocess.createkprocess.exit 事件的发生次数,但这显然只为您提供线程计数的相对增加/减少。

SystemTap 脚本如何使用给定的 API 函数之一来确定这个数字?也许脚本可以以某种方式读取与用于 proc 文件系统输出的相同内核信息?

最佳答案

在任何一种情况下,您都将受到竞争条件的影响 - stap 探测不能锁定内核结构,这将需要保证任务列表在被计数时不会更改。这对于一般的 systemtap 探测上下文尤其如此,例如在 kprobe 的中间。

对于第一种方法,您可以添加任务列表的“探测开始 {}”时间迭代,以从一些嵌入式 C 代码中启动初始线程计数。一个挑战是从嵌入式 C 代码设置 systemtap 脚本全局变量(没有记录在案的 API),但如果您查看翻译器生成的内容 (stap -p3),它应该是可行的。

第二种方法是进行相同的迭代,但出于上述锁定原因,这通常不安全。

关于linux - SystemTap 脚本如何确定当前线程数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14235815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com