Oracle® Solaris Studio 12.4:性能分析器

退出打印视图

更新时间: 2015 年 1 月
 
 

使用系统库

收集器插入各种系统库的函数,以收集跟踪数据并确保数据收集的完整性。 下面的列表描述了收集器插入库函数调用的情况。

  • 收集同步等待跟踪数据。在 Oracle Solaris 上,收集器插入 Oracle Solaris C 库 libc.so 中的函数。

  • 收集堆跟踪数据。收集器插入函数 mallocreallocmemalignfree。这些函数的版本可以在 C 标准库 libc.so 和其他库(如 libmalloc.solibmtmalloc.so)中找到。

  • 收集 MPI 跟踪数据。收集器从指定的 MPI 库插入函数。

  • 确保时钟数据的完整性。收集器插入 setitimer 并阻止程序使用分析计时器。

  • 确保硬件计数器数据的完整性。收集器插入硬件计数器库 libcpc.so 中的函数并阻止程序使用计数器。 程序对该库中函数的调用的返回值是 -1

  • 针对子孙进程启用数据收集。收集器插入函数 fork(2)、fork1(2)、vfork(2)、fork(3F)、posix_spawn(3p)、posix_spawnp(3p)、system(3C)、system(3F)、sh(3F)、popen(3C) 和 exec(2) 及其变体。对 vfork 的调用已在内部被替换为对 fork1 的调用。这些插入适用于 collect 命令。

  • 保证由收集器处理 SIGPROFSIGEMT 信号。收集器插入 sigaction 以确保其信号处理程序是这些信号的主信号处理程序。

    在下列情况下,插入不会成功:

  • 将程序与任何包含被插入的函数的库进行静态链接。

  • dbx 附加到运行中的未预装入收集器库的应用程序。

  • 动态装入其中一个库并通过只在该库中搜索来解析符号。

收集器插入失败可能会导致性能数据丢失或无效。

er_sync.soer_heap.soer_mpviewn.so(其中 n 表示 MPI 版本)库仅在分别请求同步等待跟踪数据、堆跟踪数据或 MPI 跟踪数据时装入。