打印

Solaris 性能入门 (8) 丢失跟踪

本帖已经被作者加入个人空间 本主题由 sun029 于 2008-6-13 10:34 设置高亮

Solaris 性能入门 (8) 丢失跟踪

truss – 初级工具

truss 是 Solaris 中最有价值的工具之一,可以通过它了解应用程序的各种问题。truss 可以帮助了解读取和写入了哪些文件,调用了哪些系统调用以及多少系统调用。尽管 truss 很有用,但我们必须了解,它在应用程序跟踪方面太过激进,会影响性能和时间。

truss 标准的使用场景是获取给定时间窗内一个进程的系统调用汇总。

truss – 系统调用汇总

从以上输出可以看出,find 进程发出了大量的 fstat(2)、lstat(2)、getdents(2) 和 fchdir(2) 系统调用。getdents(2) 系统调用占用了约 45% 的总系统时间(0.149 秒,总系统时间共 0.331 秒)。

truss 另一个标准的使用场景是获取给定进程发出的系统调用的详细视图。

truss – 详细系统调用活动

上述输出中,truss 展示了发出的系统调用的详细信息及其参数。更详细的信息可以使用 -v 选项获取。例如:

    *truss -v all -p <pid>

另一种标准的使用场景是将 truss 的输出限制为特定的系统调用:

    *truss -t fstat -p <pid>

可将输出限制在 fstat(2) 系统调用活动。

truss -t – 示例输出

最后,连接 -t 选项和 -v 选项,可以得到以下类似输出:

truss -t -v – 示例输出

[ 本帖最后由 云杉上的蝴蝶 于 2008-6-11 22:57 编辑 ]
|-- AI by Spruce Lab -- | Discover the Info. Tech. for Personal! && Powered by Solaris & Oracle

TOP

plockstat – 报告用户级锁定统计数据

该 plockstat 实用工具收集并显示用户级锁定统计数据。默认情况下,plockstat 监控所有锁定内容事件,收集这些事件的频率和时间数据,以递减顺序显示数据,使最常见的事件出现在最上方。plockstat 收集数据,直到指定的命令完成或使用 -p 选项指定的进程完成。plockstat 依赖 DTrace 检测运行的进程或它调用的命令,以跟踪感兴趣的事件。这将在观察的进程上强加一个很小但可度量的性能开销。用户必须拥有 dtrace_proc 权限以及使用 plockstat 观察特定进程的权限。

让我们研究一下 plockstat 的输出,从运行读/写示例锁定程序 cc_lck 开始。首先启动 cc_lck,将写入器阻塞 10 毫秒。

    * cc_lck 10

然后运行 plockstat 工具 10 秒钟:

    *plockstat -A -e 10 -p <pid>

得到的输出应该类似于下面的屏幕截图。从输出中可以看到,读/写锁定了一些内容。

plockstat – 示例输出

pfilestat [DtraceToolkit] – 跟踪 I/O 中花费的时间

pfilestat 打印进程中每个文件描述符的 I/O 统计数据。具体来说,即 read() and write() 事件中损耗的时间。此工具有助于了解进程 I/O 的影响。

为了研究 pfilestat 的输出,我们首先启动以下命令:

    * dd if=/dev/rdsk/c1d0s0 of=/dev/null bs=1k &

然后在另一个窗口中启动 pfilestat 工具,并使用 dd 命令的 pid 作为参数:

    * pfilestat <dd 命令的 pid>

得到的输出应该类似于下面的屏幕截图:

pfilestat – 示例输出

pfilestat 消耗的进程时间包括读取 (read)、写入 (write)、等待 CPU (waitcpu)、在 CPU 运行 (running)、读取时休眠 (sleep-r) 和写入时休眠 (sleep-w) 时间。

cputrack/cpustat – 监控流程/系统 w/ CPU perf. 计数器


cputrack 实用工具允许将 CPU 性能计数器用于监控系统上运行的进程或进程家族的行为。cpustat 实用工具允许将 CPU 性能计数器用于监控系统中 CPU 的整体行为。

使用 cputrack/cpustat 查询被测 CPU 和系统的详细情况。有关可用计数器的详细内容,请参考系统/CPU 文档。cpustat 或 cputrack(带 -h 选项)可以列出所有可用的性能计数器。

为了观察 cputrack 的输出,我们使用示例程序 cc_usr 运行该工具。

使用以下命令(只有一行):

    * cputrack -t -c pic0=FP_dispatched_fpu_ops,cmask0=0,umask0=0x7,pic1=FR_retired_x86_instr_w_excp_intr,cmask1=0 cc_usr

输出如下:

cputrack – 示例输出

在上面的输出中,我们可以看到 cc_usr 程序每秒中执行了近 60000 万条指令,近 16000 万次浮点运算。
|-- AI by Spruce Lab -- | Discover the Info. Tech. for Personal! && Powered by Solaris & Oracle

TOP


感谢一直以来您对我们的支持!
当前时区 GMT+8, 现在时间是 2008-10-8 19:30 京ICP证060528 号

Designed By 17DST