问题标签 [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.
node.js - systemtap 分析 gc node.js
我通过 nvm 安装了 node.js(0.9.4),根据 changelog,它具有 systemtap 支持。
我在我的 Fedora linux 发行版上安装了 systemtap。
我使用了 Ben Noordhuis 的这个要点。
什么都不生产。
我完全没有使用 systemtap 的经验,但喜欢玩弄它吗?它有什么可能?我可以查看代码消耗了多少内存(http://stackoverflow.com/questions/13126808/whats-the-node-js-memory-breakdown)?
更新以回答评论。
linux - SystemTap 脚本如何确定当前线程数?
我想编写一个 SystemTap 脚本,它可以确定探测调用中当前 PID 的实际线程数。此时数字应该与 /proc/4711/status的输出中显示的相同。
我的第一种方法是计算kprocess.create和kprocess.exit事件的发生次数,但这显然只给你线程数的相对增加/减少。
SystemTap 脚本如何使用给定的 API 函数之一来确定这个数字?也许脚本可以以某种方式读取与用于 proc 文件系统输出相同的内核信息?
linux - 如何为 SystemTap 使用 stapdev 和 stapusr 组?
我试图将自己添加到stapdev
并stapusr
在stap
没有sudo
. 我正在尝试运行一个简单的示例,但出现如下错误:
使用sudo
它似乎工作正常:
我怎样才能做到这一点?
笔记
我使用的是 ubuntu 12.04 系统并安装了systemtap
包
编辑
linux - 记录导致主要页面错误的内存访问
有谁知道如何获取导致页面错误的内存访问(指针)?我主要对主要的页面错误感兴趣。
关于我想要实现的目标的一些背景知识。我有一个内存占用很大的应用程序(数据库),我想将分页与对大型数据结构(例如使用 mmap() 分配的表、索引)的访问相关联。进程的映射很容易从 /proc//maps 中检索。现在,如果我有导致页面错误的内存访问,我可以跟踪在访问每个数据结构时导致了多少页面错误。
我认为 perf 或 systemtap 可以完成这项工作。有任何想法吗?
linux - 如何在SYSTEMTAP中显示进程、主内存、虚拟内存的使用总量?
我想编写一个脚本来监视以下操作系统的一个(选定的)项目组件:
- 流程管理
- 主存管理
- 虚拟内存管理
- 输入/输出管理
- 网络管理
我想出了如何展示它的想法:
我不知道如何显示 CPU、主内存和虚拟内存的使用百分比。
我也不知道在输入/输出中要管理什么。
module - SystemTap 失败并出现错误“警告:kbuild 以状态退出:2”
我构建了一个自定义内核 3.2-41,需要 kernel-debuginfo-common 和 kernel-debuginfo 包。我在内核 2.6.32-358 的 CentOS 系统上安装了这些软件包。使用新内核可以正常启动系统。我运行 stap 来列出系统调用和内核函数,没有任何问题:
但是,运行一个简单的 stap 脚本:
返回错误:
我在 /usr/src/kernels/3.2-41 下解压 3.2-41 的源码。我没有安装 kernel-headers-3.2.41.x86_64.rpm 软件包,因为它试图覆盖 CentOS 2.6.32-258 内核使用的 /usr/include/ 目录。我需要在 /usr/include 中安装头文件吗?这会导致这个问题吗?
systemtap - 使用 systemtap 进行用户空间探测
好吧,我正在尝试在 SDT 标记上探索我自己的应用程序。我写了一个 systemtap 脚本来探测它,但是 systemtap 直到通过 5 并且在通过 5(开始运行)之后才显示任何错误,它只是继续什么都不做。这是我的带有 SDT 标记的 C 程序:
foo.c:
我的 systemtap 脚本是:
probe_foo.stp
我运行的命令是:
这就是我得到的:
之后,它会无限等待。我的内核版本是 3.8.0,我使用的是 fedora 18。
ubuntu - 是否可以在具有 3.5.0/3.8.0 内核的 Ubuntu 12.04 上使用 systemtap 1.7/2.1?
我的目标是获得在 Ubuntu 12.04/precise 主机上使用用户空间探测的能力。这可以从 3.5.0 内核开始,所以我安装了以下软件包:
和来自 12.10/quantal 的 systemtap v1.7。
但在启动任何 stap 脚本后我看到的唯一内容是:
unname -a:
来自 13.04/raring 的 systemtap v2.1 显示完全相同的错误。
systemtap v1.6(12.04 中的默认版本)在编译时失败:
不幸的是,不能选择更新到 12.10/13.04。
那么,是否有机会在 Ubuntu 12.04/precise 上使用 3.5.0 或 3.8.0 内核获得工作 systemtap?
mysql - 使用 SystemTap 跟踪 mysqld
我想使用 systemtap 来跟踪 MySQL。
问题是,在配置和构建 MySQL 并启动服务器之后,我无法获取服务器中存在的标记信息:
[root@localhost]$ stap -l 'process("/home/mysql/mysql5.5.33/bin/mysqld").mark("*")'
[root@localhost]$
(无输出)
我的环境如下:
2 我使用如下脚本配置 MySQL:
顺便说一句:我可以得到函数输出
[root@localhost] stap -L 'process("/home/mysql/mysql5.6.12/bin/mysqld").function("main")'
process("/home/mysql/mysql5.6.12/bin/mysqld").function("main@/home/mysql/mysql-5.6.12/sql/main.cc:23") $argc:int $argv:char**
readelf -n /home/mysql/mysql5.6.12/bin/mysqld
`在偏移量 0x0000021c 长度为 0x00000020 的注释:
所有者数据大小描述
GNU 0x00000010 NT_GNU_ABI_TAG(ABI 版本标签)
偏移量 0x0000023c 处的注释,长度为 0x00000024:
所有者数据大小描述
GNU 0x00000014 NT_GNU_BUILD_ID(唯一构建 ID 位串)`
systemtap - 为什么我无权执行 systemtap?
我想在我的 linux mint 中运行 systemtap。我创建了三个组“stapsys、stapusr、stapdev”,并在其中添加了自己的 id。但是当我运行一个简单的测试时,结果是:
stap -v -e 'probe vfs.read {printf("读取执行\n"); 出口()}'
Pass 1:使用 61820virt/22768res/2164shr/21336data kb 解析用户脚本和 95 个库脚本,在 90usr/10sys/101real ms 中。通过 2:分析脚本:1 个探针,1 个函数,3 个嵌入,0 个全局,使用 376660virt/164540res/8204shr/154120data kb,在 1380usr/150sys/1530real ms 中。第 3 步:使用缓存的 /home/gabriel/.systemtap/cache/9b/stap_9be8ad6f6153f60f65fa3ddee5ad707d_1499.c 第 4 步:使用缓存的 /home/gabriel/.systemtap/cache/9b/stap_9be8ad6f6153f60f65fa3ddee5ad707d_1499.ko 第 5 步:开始运行。警告:/usr/local/systemtap/bin/staprun 不可执行(权限被拒绝) 警告:/usr/local/systemtap/bin/staprun 退出,状态为:127 Pass 5:运行在 0usr/0sys/0real ms 内完成。Pass 5:运行失败。[人错误::pass5]