Oracle Solaris Studio 12.2:性能分析器

Procedure分析内核

  1. 通过键入以下内容来收集实验:


    % er_kernel -p on
    
  2. 在单独的 shell 中运行所需的任意负载。

  3. 负载完成后,按 Ctrl-C 来终止 er_kernel 实用程序

  4. 将生成的实验(缺省情况下名为 ktest.1.er)装入到性能分析器或 er_print 实用程序中。

    内核时钟分析将生成一个标有“KCPU 周期”的性能度量。在性能分析器中,对于“函数”标签中的内核函数、“调用方-被调用方”标签中的调用方与被调用方以及“反汇编”标签中的指令,将显示该性能度量。“源”标签不显示数据,因为附带的内核模块通常不包含文件和行符号表信息 (stabs)。

    您可以将 er_kernel 实用程序的 -p on 参数替换为 -p high(用于高精度分析)或 -p low(用于低精度分析)。如果期望用 2 到 20 分钟来运行负载,则缺省时钟分析是合适的。如果期望用不到 2 分钟的时间来运行,请使用 -p high;如果期望用 20 分钟以上的时间来运行,请使用 -p low

    您可以添加 -t duration 参数,该参数将导致 er_kernel 实用程序按 duration 所指定的时间自行终止。

    可以将 -t duration 指定为一个具有可选的 ms 后缀的数字,以指示实验应终止的时间(以分钟或秒为单位)。缺省情况下,持续时间以秒为单位。也可以将 duration 指定为用连字符分隔的两个这样的数字,这会导致数据收集暂停,直到经过第一个时间之后才开始收集数据。当到达第二个时间时,数据收集终止。如果第二个数字为零,则在初次暂停之后收集数据,直到该程序运行结束。即使该实验已经终止,也允许目标进程运行至结束。

    如果未指定任何持续时间或时间间隔,在终止之前,er_kernel 将一直运行。可以通过按 Ctrl-C (SIGINT),或者使用 kill 命令并将 SIGINTSIGQUITSIGTERM 发送到 er_kernel 进程终止该实用程序。将其中任何一个信号发送到 er_kernel 时,该进程将终止实验并运行 er_archiv(除非指定了 -A off)。er_archive 实用程序会读取实验中引用的共享对象列表,并为每个共享对象构造一个归档文件。

    如果您希望在屏幕上输出有关运行的更多信息,可以添加 -v 参数。通过 -n 参数,您可以预览将被记录的实验,而无需实际记录任何内容。

    缺省情况下,由 er_kernel 实用程序生成的实验被命名为 ktest.1.er;对于相继的运行,该数字将递增。