问题标签 [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 回答
1136 浏览

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)?


更新以回答评论。

0 投票
1 回答
299 浏览

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

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

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

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

0 投票
0 回答
2395 浏览

linux - 如何为 SystemTap 使用 stapdev 和 stapusr 组?

我试图将自己添加到stapdevstapusrstap没有sudo. 我正在尝试运行一个简单的示例,但出现如下错误:

使用sudo它似乎工作正常:

我怎样才能做到这一点?

笔记

我使用的是 ubuntu 12.04 系统并安装了systemtap

编辑

0 投票
2 回答
2065 浏览

linux - 记录导致主要页面错误的内存访问

有谁知道如何获取导致页面错误的内存访问(指针)?我主要对主要的页面错误感兴趣。

关于我想要实现的目标的一些背景知识。我有一个内存占用很大的应用程序(数据库),我想将分页与对大型数据结构(例如使用 mmap() 分配的表、索引)的访问相关联。进程的映射很容易从 /proc//maps 中检索。现在,如果我有导致页面错误的内存访问,我可以跟踪在访问每个数据结构时导致了多少页面错误。

我认为 perf 或 systemtap 可以完成这项工作。有任何想法吗?

0 投票
1 回答
181 浏览

linux - 如何在SYSTEMTAP中显示进程、主内存、虚拟内存的使用总量?

我想编写一个脚本来监视以下操作系统的一个(选定的)项目组件:

  • 流程管理
  • 主存管理
  • 虚拟内存管理
  • 输入/输出管理
  • 网络管理

我想出了如何展示它的想法:

我不知道如何显示 CPU、主内存和虚拟内存的使用百分比。
我也不知道在输入/输出中要管理什么。

0 投票
2 回答
1433 浏览

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 中安装头文件吗?这会导致这个问题吗?

0 投票
1 回答
1860 浏览

systemtap - 使用 systemtap 进行用户空间探测

好吧,我正在尝试在 SDT 标记上探索我自己的应用程序。我写了一个 systemtap 脚本来探测它,但是 systemtap 直到通过 5 并且在通过 5(开始运行)之后才显示任何错误,它只是继续什么都不做。这是我的带有 SDT 标记的 C 程序:

foo.c:

我的 systemtap 脚本是:

probe_foo.stp

我运行的命令是:

这就是我得到的:

之后,它会无限等待。我的内核版本是 3.8.0,我使用的是 fedora 18。

0 投票
2 回答
1747 浏览

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?

0 投票
1 回答
593 浏览

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 位串)`

0 投票
0 回答
634 浏览

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]