问题标签 [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.
linux-kernel - linux systemtap注册错误
我使用systematap 来探测slab 内存分配活动。
但该步骤产生以下错误:
我猜这个probe内核模块应该没有注册,所以没有生效。
我的操作系统:
核心 :
那么,WARNING 是什么意思呢?如何解决?
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 的进程功能呢?我不知道如何解决这个问题。
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的路径。我不知道如何解决问题?
systemtap - systemtap 按行号探测“分析失败”
使用带有文件名和行号的 systemtap 会产生错误,而使用(损坏的)函数名很好。我在这里做错了什么?
linux版本3.10.0-229.el7.x86_64
版本2.8/0.160
目录内容:a.out hello.cpp a.stp
linux - 获取正在换出的页面的 pid
我的目标是找出正在被换出的页面的进程 ID。Linux Kernel 函数在交换后备存储上的页面时将指向 struct pageswap_writepage()
的指针作为形式参数的一部分。所有换出操作均由“kswapd”进程完成。我需要找出其页面作为函数参数传递的进程的pid。为了做到这一点,我能够使用rmap结构找到与该页面关联的所有页表条目。swap_writepage()
如何从pte或struct page获取pid?我使用 sytemtap 来获取结构页面指针的值,在函数中作为参数接收。此外,该函数打印当前运行的进程的 pid,而不是该页面所属的进程的 pid,它总是给出kswapd进程。swap_writepage()
pid()
linux - systemtap 全局变量分配失败
我想使用 systemtap 来提取我的 linux 生产服务器的详细信息。我的 systemtap 脚本是
当我开始使用命令运行此脚本时
它失败,并打印以下错误:
我的生产服务器内存信息是
我觉得够用了,因为在我的测试服务器中,只有2G内存,另外一个服务器的systemtap脚本运行良好
linux - Systemtap 不显示内核函数中的所有局部变量
我正在尝试使用 systemtap 调试内核中的一些代码。我需要在该函数中打印局部变量的值,但看起来 systemtap 只能看到函数参数,而不是该函数中定义的局部变量。这是我的探测脚本。
当我运行它时,我收到以下错误
但是该功能tcp_write_xmit
显然具有skb
使用-L
打印可用变量的选项给了我 5 个变量,它们是函数参数,但没有看到任何局部变量。
这是我正在运行的内核和 systemtap 版本
有任何想法吗?
linux - SystemTap 脚本来分析函数的延迟
我的目标是分析内核模块中每个函数的执行时间。使用我在网上看到的示例脚本,我想出了以下脚本来满足我的需求。但有时我会得到计算延迟的负值。虽然,它们很少发生,但我想这表明我的脚本有问题。有人可以帮我吗?
linux - systemtap:注册错误(rc -84)
我有一个 systemtap 脚本,可以找到内核模块中某些函数的延迟。(在这里讨论:SystemTap 脚本来分析函数的延迟)
它适用于我的内核模块的较旧构建版本,但是当我从头开始重建模块并尝试使用相同的脚本对其进行分析时,对于一两个函数,我得到了registration error (rc -84)
. 它仍然适用于大多数功能。
有什么想法可能导致这个问题吗?我尝试添加 -DSTP_NO_OVERLOAD 但没有帮助。
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:
所以这是我的完整脚本: