dtrace

如何在 Solaris ZFS 上查找具有顶级 io 的文件?
dtrace

如何在 Solaris ZFS 上查找具有顶级 io 的文件?

我有一台基于 Solaris 10 ZFS 的 NFS 服务器。物理磁盘或多或少处于其最大 io 速率。性能非常差 - 因此我们将添加主轴。NFS 仅用作 XenServer Hypervisor 的存储。 我想知道哪些 VM 磁盘(即存储上的 .vhd 文件)产生了大部分负载。我如何查询文件系统或 nfsd 以获取带有文件名和读取/写入的 iostat 或 top 之类的输出。数字可以是绝对的,也可以是相对的。 我试过iosnoop。它肯定朝着正确的方向发展。不幸的是,它似乎无法获取 ZFS 文件系统上的文件名。我没有使用 dtrace 的经验。也许已...

Admin

DTrace 能否帮助查找 Solaris 10 x86 上 tcp 连接重置的原因?
dtrace

DTrace 能否帮助查找 Solaris 10 x86 上 tcp 连接重置的原因?

我正在对托管在 Glassfish 集群上的 Web 应用程序运行性能测试。 每个集群实例都托管在单独的 Solaris 10 区域上,并且 http 流量通过 F5 BigIp 负载平衡器在实例之间进行负载平衡。我面临的问题是 SOAP 请求会定期因 tcp 连接重置而中止。 现在我需要弄清楚为什么连接被关闭,以及我是否可以采取任何措施来防止这种情况发生。我使用 tcpdump 来监控负载生成器和负载平衡器之间的流量,我可以看到 tcp 连接已建立,SOAP 请求已发送,然后负载平衡器发送 ACK,4-5 秒后,我从负载平衡器的 tcp 帧中获取 RS...

Admin

寻找 dtrace 脚本来列出最常用的 nfs 文件
dtrace

寻找 dtrace 脚本来列出最常用的 nfs 文件

我目前正在使用https://github.com/siebenmann/cks-dtrace/blob/master/nfs3-mon.d识别 NFS 服务器上最活跃的数据集 (Solaris 10) 不幸的是,我需要深入挖掘,并且我希望能够找到最常用的文件。有没有办法列出各种操作的前 X 个文件? 我不是 dtrace 专家,几个小时内也无法找到答案。 ...

Admin

如何在 macOS 上使用 DTrace 识别接收到的 TCP 流量属于哪个进程
dtrace

如何在 macOS 上使用 DTrace 识别接收到的 TCP 流量属于哪个进程

从这里可以看出,我们在发送时有 PID,但在接收时没有。如何将探测限制在特定进程拥有/发起的连接上? sudo dtrace -n 'tcp:::receive, tcp:::send { printf("PID = %d, arg1 == %x", pid, arg1); }' dtrace: description 'tcp:::receive, tcp:::send ' matched 2 probes CPU ID FUNCTION:NAME 6 1571 tc...

Admin

捕获 perf 中跟踪点之间的持续时间(间隔)
dtrace

捕获 perf 中跟踪点之间的持续时间(间隔)

使用该perf工具(Linux)时,是否有任何简单方便的方法来计时两个跟踪点之间的持续时间? 明显的用途是系统调用sys_enter和sys_exit点,如sys_enter_fsync和sys_enter_fsync。但我对动态和静态定义支持的跟踪点perf probe。想想“PostgreSQLtransaction__start和 或transaction__commit之间的持续时间transaction__abort”。 理想的方法是使用 中的信息perf timechart和/或将其聚合起来perf stat。 唯一的选择是使用 DTrac...

Admin

有没有办法用 DTrace 记录所有系统调用?
dtrace

有没有办法用 DTrace 记录所有系统调用?

我通过以下命令在 Ubuntu 上安装了 DTrace: sudo apt-get install systemtap-sdt-dev 有没有办法用 DTrace 记录所有系统调用(可以通过 auditd 来实现,但它会在 20 分钟后崩溃)? ...

Admin

使用 dtrace 跟踪 Solaris 上 ZFS 中哪些块经过 L2ARC
dtrace

使用 dtrace 跟踪 Solaris 上 ZFS 中哪些块经过 L2ARC

我和我的同事正在尝试跟踪 OpenZFS 中 L2ARC 的读取/写入。我们需要块偏移量、IO 类型(读取/写入)和请求的设备 ID。请注意,我们不需要 L2ARC 设备中的偏移量,而是需要原始存储设备的偏移量/设备 ID,以便模拟哪些存储块经过 L2ARC 缓存。 浏览 OpenZFS 源代码(github.com/openzfs/openzfs/blob/master/usr/src/uts/common/fs/zfs/arc.c)并使用 Brendan 的 dtrace 教程(dtrace.org/blogs/brendan/2012/01/09/a...

Admin

Dtrace 未在 Mac 上显示堆栈
dtrace

Dtrace 未在 Mac 上显示堆栈

我在 OSx Yosemite 上玩 Node.js CPU 分析。但是我无法让 DTrace 显示堆栈跟踪。我怀疑有问题jstack/ustack。 因此,如果我以 97Hz 的频率执行 DTrace: sudo dtrace -n 'profile-97/pid == 54308/{ @[jstack(80, 8192)] = count(); }' -c "sleep 30" > dtrace.out 这是我得到的输出: node`0x40 1 node`0x18b6160 1 node`0x71361a61 1 n...

Admin

如何在 Solaris 上使用 dtrace 跟踪文件访问
dtrace

如何在 Solaris 上使用 dtrace 跟踪文件访问

我想了解如何在 Solaris 上跟踪(显示)文件访问。我已经找到了dtrace 工具包希望这voptrace能满足要求。我用voptrace -t /my/pathifls或cat该路径下的文件运行它,它没有输出。我是不是看错了工具?有人能建议另一个来找到解决方案吗? 更新 @巴哈马特 好的,它给出了如下错误消息: dtrace: error on enabled probe ID 3 (ID 126: syscall::openat:entry): invalid address (0xffd19652) in predicate at DIF o...

Admin

Centos/Fedora 上的 DTrace 受限
dtrace

Centos/Fedora 上的 DTrace 受限

我想解决 Centos 6 机器上的问题。我运行了 dtrace 但失败了。它不接受或或或任何命令行选项。它声称只接受、、、、和-n。-l我-P认为这一定-h是Centos的一些奇怪之处,因此我去 Fedora 22 机器上进行验证。同样的问题。它只接受非常有限数量的命令行选项。我尝试了 Oracle 机器,它非常像 RedHat 和 Centos,并且类似于 Fedora。它工作正常。我能够运行 just并获得所有命令行选项的长列表。我回到了 Centos 和 Fedora。当我输入时,输出是。所以,经过一个小时的 Google 搜索后,我放弃了。如何让 ...

Admin

iostat 需要很长时间才能返回
dtrace

iostat 需要很长时间才能返回

我有一台带有大量 SAN 磁盘的 Solaris 10 服务器(所有路径上接近 1000 个)。 iostat -En需要将近 5 分钟才能返回。有没有办法找出导致延迟的原因?truss 帮不上什么忙。 ...

Admin

防止 NexentaStor 分析页面超时
dtrace

防止 NexentaStor 分析页面超时

NexentaStor有一个方便的分析界面,可以作为某些dtrace 脚本. 它对于监控设备的实时 IOPS 或 I/O 吞吐量非常方便。 不幸的是,该界面几分钟后就会超时,留下一个空白的统计屏幕并重置图表。 关于如何防止这种情况有什么建议吗? ...

Admin

Dtrace Oracle 在 Solaris 10 上显示高 fsflush
dtrace

Dtrace Oracle 在 Solaris 10 上显示高 fsflush

Solaris 10 - 区域中的 Oracle 11G 运行 mpstat 时,我注意到一个 CPU 每 5 秒使用率为 100%,持续 5 秒,而所有其他 CPU 都正常,使用率较高但分布均匀。 1 0 0 0 1154 1 1599 20 105 34 0 7416 9 15 0 76 2 95 0 120 1590 483 1727 33 124 27 0 8069 16 6 0 78 3 128 0 0 861 9 133...

Admin

使用 dtrace 打印读取和写入的可变大小二进制数据
dtrace

使用 dtrace 打印读取和写入的可变大小二进制数据

我正在尝试使用 dtrace 打印出一些 read() 和 write() 调用的二进制缓冲区。仅使用 printf() 和 %s 的问题在于字符串以空字节结尾。(\000) 还有 tracemem(),但它只能打印出固定大小的缓冲区,我喜欢从 read 和 write 函数调用的大小参数中获取缓冲区的大小。此外,dtrace 的输出应该是机器可读的,而 tracemem() 则不是。我目前的方法如下: syscall::write:return, syscall::write_nocancel:return, syscall::read:return, ...

Admin

嗅探特定二进制文件/应用程序/进程 ID 的数据包?
dtrace

嗅探特定二进制文件/应用程序/进程 ID 的数据包?

有没有办法将数据包与正在执行的二进制文件关联起来?我愿意尝试传统的嗅探方法,甚至dtrace就此而言。 我在流量非常高的系统上遇到了一个具体问题。嗅探“所有”数据包并过滤它们正成为一个非常繁重的问题,在这种情况下,除了有问题的应用程序之外,消除所有数据包的发射是不可能的。 ...

Admin