问题标签 [systemtap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
426 浏览

linux-kernel - linux systemtap注册错误

我使用systematap 来探测slab 内存分配活动。

但该步骤产生以下错误:

我猜这个probe内核模块应该没有注册,所以没有生效。

我的操作系统:

核心 :

那么,WARNING 是什么意思呢?如何解决?

0 投票
1 回答
1821 浏览

nginx - systemtap:解析探测点时:源中的标识符“进程”:探测进程()。函数不匹配

我已经在我的 docker 镜像中安装了 nginx 和 lua,但是我没有在我的物理 CentOS 系统上安装 nginx。我“docker run my image”并在我的物理 CentOS 系统上启动 nginx。所以 nginx master 和 worker 进程都在工作。我运行了一个 nginx-systemtap-toolkit 的示例。我跑:

24945 是工作进程 ID。错误如下:

其实“/data1/nginx/sbin/nginx”就是docker镜像中的nginx路径,我的物理系统上没有安装nginx。那么是一定要在我的物理系统上安装 nginx,还是有其他方法可以使用 nginx 的进程功能呢?我不知道如何解决这个问题。

0 投票
0 回答
64 浏览

nginx - systemtap:“sudo stap -L 'process("/data1/nginx/sbin/nginx").function("*")' 没有

我已经在我的 docker 镜像中安装了 nginx 和 lua,但我没有在我的物理 CentOS 系统上安装它们。我在物理 CentOS 系统和 docker 映像上都安装了 nginx-debuginfo。我 docker run 并启动 nginx:

然后我在我的物理 CentOS 系统上运行“stap -L”以查看 nginx 的功能,但没有返回任何内容:

/data1/nginx/sbin/nginx是docker镜像上nginx的路径。我不知道如何解决问题?

0 投票
1 回答
350 浏览

systemtap - systemtap 按行号探测“分析失败”

使用带有文件名和行号的 systemtap 会产生错误,而使用(损坏的)函数名很好。我在这里做错了什么?

linux版本3.10.0-229.el7.x86_64

版本2.8/0.160

目录内容:a.out hello.cpp a.stp

0 投票
1 回答
389 浏览

linux - 获取正在换出的页面的 pid

我的目标是找出正在被换出的页面的进程 ID。Linux Kernel 函数在交换后备存储上的页面时将指向 struct pageswap_writepage()的指针作为形式参数的一部分。所有换出操作均由“kswapd”进程完成。我需要找出其页面作为函数参数传递的进程的pid。为了做到这一点,我能够使用rmap结构找到与该页面关联的所有页表条目。swap_writepage()

如何从ptestruct page获取pid?我使用 sytemtap 来获取结构页面指针的值,在函数中作为参数接收。此外,该函数打印当前运行的进程的 pid,而不是该页面所属的进程的 pid,它总是给出kswapd进程。swap_writepage()pid()

0 投票
1 回答
641 浏览

linux - systemtap 全局变量分配失败

我想使用 systemtap 来提取我的 linux 生产服务器的详细信息。我的 systemtap 脚本是

当我开始使用命令运行此脚本时

它失败,并打印以下错误:

我的生产服务器内存信息是

我觉得够用了,因为在我的测试服务器中,只有2G内存,另外一个服务器的systemtap脚本运行良好

0 投票
3 回答
2325 浏览

linux - Systemtap 不显示内核函数中的所有局部变量

我正在尝试使用 systemtap 调试内核中的一些代码。我需要在该函数中打印局部变量的值,但看起来 systemtap 只能看到函数参数,而不是该函数中定义的局部变量。这是我的探测脚本。

当我运行它时,我收到以下错误

但是该功能tcp_write_xmit显然具有skb

使用-L打印可用变量的选项给了我 5 个变量,它们是函数参数,但没有看到任何局部变量。

这是我正在运行的内核和 systemtap 版本

有任何想法吗?

0 投票
1 回答
1156 浏览

linux - SystemTap 脚本来分析函数的延迟

我的目标是分析内核模块中每个函数的执行时间。使用我在网上看到的示例脚本,我想出了以下脚本来满足我的需求。但有时我会得到计算延迟的负值。虽然,它们很少发生,但我想这表明我的脚本有问题。有人可以帮我吗?

0 投票
0 回答
213 浏览

linux - systemtap:注册错误(rc -84)

我有一个 systemtap 脚本,可以找到内核模块中某些函数的延迟。(在这里讨论:SystemTap 脚本来分析函数的延迟

它适用于我的内核模块的较旧构建版本,但是当我从头开始重建模块并尝试使用相同的脚本对其进行分析时,对于一两个函数,我得到了registration error (rc -84). 它仍然适用于大多数功能。

有什么想法可能导致这个问题吗?我尝试添加 -DSTP_NO_OVERLOAD 但没有帮助。

0 投票
1 回答
461 浏览

linux - SystemTap 脚本分析函数的缓存行为

我想用 SystemTap 分析内核模块的缓存行为(#cache 引用、#cache 未命中等)。在线有一个示例脚本,它显示了如何使用 SystemTap 来读取性能事件和计数器,包括与缓存相关的事件和计数器: https ://sourceware.org/systemtap/examples/profiling/perf.stp

此示例脚本默认适用于进程:

我用我的内核模块的名称替换了process关键字module和可执行文件的路径:

我很确定我的模块有调试信息,但是运行我得到的脚本:

语义错误:解析探测点时:perf.stp:14:7 处的标识符 'perf' 来源:probe perf.hw.instructions.module(MODULE_NAME).counter("find_insns") {}

有什么想法可能是错的吗?

编辑:

好的,我意识到性能计数器只能绑定到进程而不是模块(此处解释:https ://sourceware.org/systemtap/man/stapprobes.3stap.html )。因此我将其改回:

现在,正如示例脚本所暗示的,我有:

但现在运行它,我得到:

语义错误:性能计数器“find_insns”未定义语义错误:解析探测点时:perf.stp:26:7 处的标识符“模块”源:探测模块(MODULE_NAME).function(FUNC_NAME)

编辑2:

所以这是我的完整脚本: