文档详情

AIX 5L CPU性能分析

豆浆
实名认证
店铺
DOC
137.50KB
约26页
文档ID:731529
AIX 5L CPU性能分析_第1页
1/26

AIX 5L CPU 性能分析本文介绍使用 AIX 5.2 内置命令 CURT 生成 CPU 使用和性能报告curt 命令用途:从跟踪(trace)生成 CPU 使用率报告语法curt -i inputfile [-o outputfile] [-n gensymsfile] [-m trcnmfile] [-a pidnamefile] [-f timestamp] [-l timestamp][-ehpstP]描述curt 命令将 AIX 跟踪文件当作输入并产生许多与处理器(CPU)优化和进程/线程/pthread 活动相关的统计信息只要恰当地同步处理器时钟,它可用于单处理器和多处理器 AIX 跟踪使用 trace 命令收集到的 AIX 跟踪文件应该至少包含下面列出的跟踪事件(跟踪 hook)这些是 curt 要查看并计入其统计信息的事件:HKWD_KERN_SVC、HKWD_KERN_SYSCRET、HKWD_KERN_FLIH、HKWD_KERN_SLIH、HKWD_KERN_SLIHRET、HKWD_KERN_DISPATCH、HKWD_KERN_RESUME、HKWD_KERN_IDLE、HKWD_SYSC_FORK、HKWD_SYSC_EXECVE 、HKWD_KERN_PIDSIG、HKWD_SYSC__EXITHKWD_SYSC_CRTHREAD、HKWD_KERN_INITP、HKWD_NFS_DISPATCH 、HKWD_DR HKWD_PTHREAD_VPSLEEP、HKWD_PTHREAD_GENERAL 这意味着,如果您在 trace 命令上指定 -j 标志,必须为 curt 包含这些数字:-j 100,101,102,103,104,106,10C,119,134,135,139,200,210,215,38F,465,605,609 或者,您可以使用 -J curt 作为代替。

要将 PTHREAD 挂钩放入跟踪,必须使用检测到的 libpthreads.a 执行您的 pthread 应用程序实现此目的的一种方法是启动您的应用程序之前,执行以下三步(KornShell 语法):mkdir /temp.lib; cd /temp.lib ln -s /usr/ccs/lib/perf/libpthreads.a export LIBPATH=$PWD:$LIBPATH要激活用户 pthread 检测必须将检测到的库目录放入 LIBPATH;可将 temp.lib 目录放到任何位置标志-i inputfile 指定要分析的输入 AIX 跟踪文件 -o outputfile 指定输出文件(缺省值为 stdout) -n gensymsfile 指定由 gensyms 生成的名称文件 -m trcnmfile 指定由 trcnm 指定的 names 文件 -a pidnamefile 指定 PID 以处理映射文件 -f timestamp 在时间戳记秒数时开始处理跟踪 -l timestamp 在时间戳记秒数时停止处理跟踪 -e 输出系统调用和 pthread 调用所用的时间信息。

-h 显示用法文本(该信息) -p 输出详细的进程信息 -s 输出有关由系统调用返回的错误信息 -t 输出详细的线程信息 -P 输出详细的 pthread 信息 如果 trace 进程名表格不准确,或者如果期望更多描述名,请使用 -a 标志以指定 PID 来处理名称映射文件这是一个文件,其中的行构成为:一个进程标识符(十进制),后跟一个空格,再后跟一个 ASCII 字符串,用作该进程的名称如果输入 AIX 跟踪文件是使用指定的 -n 标志创建的,如果不在 curt 命令行上指定 -m 或 -n 标志,curt 将使用地址/表来对名称解析“系统调用” 和 Slih 地址报告内容curt 和 AIX 跟踪信息curt 报告中的第一行给出 curt 程序执行的时间以及用来调用 curt 的命令行紧跟其后的是关于 AIX 跟踪文件被 curt 处理的信息:名称、大小、创建日期和用来收集跟踪文件的命令系统摘要报告的第一大节是“系统摘要” 该节描述了系统作为一个整体(所有处理器)在各种执行方式下使用的时间这些方式如下:APPLICATION 在“ 用户”(非特权)方式下所有处理器所用的时间总和。

SYSCALL 所有处理器进行“系统调用” 所用时间的总和这是处理器用来在内核代码下执行以提供用户进程所直接要求的服务的那部分时间 KPROC 执行内核进程,而不是 IDLE 进程和 NFS 进程的所有处理器所用的时间总和这是处理器用来执行特别创建的只执行内核代码的可分派进程所用去的那部分时间 NFS 执行 NFS 操作的所有处理器所用的时间总和NFS 操作以 RFS_DISPATCH_ENTRY 开始,以 RFS_DISPATCH_EXIT 子挂钩结束 FLIH 所有处理器在 FLIH(一级中断处理程序)下所用时间的总和 SLIH 所有处理器在 SLIH(二级中断处理程序)下所用时间的总和 DISPATCH 所有处理器在 AIX 分派代码下所用时间的总和该总和包含用于分派所有线程(即包含对空闲进程的分派)的时间 IDLE DISPATCH 所有处理器在 AIX 分派代码中所用时间的总和,其中被分派的进程是空闲进程由于 DISPATCH 类别包含 IDLE DISPATCH 类别的时间,在计算 CPU 忙碌时间或 TOTAL 时便不再单独添加 IDLE DISPATCH 类别的时间(见下文)。

CPU 忙碌时间 所有处理器在执行应用程序、系统调用、kproc、flih 、slih 和分派方式中所用时间的总和 IDLE 所有处理器执行空闲进程所用时间的总和 TOTAL CPU 忙碌时间和空闲的总和该数字被称为“总处理时间” 标记为处理总时间(msec)的列给出相应的处理类别的总时间(毫秒)标记为总时间百分比的列给出处理总时间作为 TOTAL 处理总时间的百分比标记为忙碌时间百分比的列给出处理总时间作为 CPU 忙碌时间处理总时间的百分比Avg. Thread Affinity 是线程分派至它上一次在其上执行的同一个处理器的概率系统应用程序摘要在“ 系统总结”之后是“系统应用程序总结”,它详细说明了在用户方式下所用的时间本节描述所有进程(在所有处理器上)执行 libpthread 的各个部分使用的时间PTHREAD 所有 pthreads 在跟踪的 libpthread 操作中所使用时间的总和 PDISPATCH 所有在 libpthread 分派代码下所有使用时间的总和 PIDLE 所有 pthread 在 libpthread vp_sleep 代码下所使用时间的总和。

OTHER 在跟踪的 libpthread 操作之外,所有线程在用户方式下所使用的时间的总和 APPLICATION 时间 所有处理器在用户方式下所使用时间的总和 标号为处理总时间(msec)的列给出了相应的处理类别的总时间(毫秒)标记为总时间百分比的列给出处理总时间作为 TOTAL 处理“系统摘要”总时间的百分比标记为应用程序时间百分比的列给出处理总时间作为 APPLICATION 处理总时间的百分比Avg. Pthread Affinity 是 pthread 分派至它上一次在其上执行的同一个线程的概率每个处理器摘要“系统应用程序摘要” 之后是“每个处理器摘要”包含的信息基本相同,但以逐个处理器为基础进行停顿在对“系统摘要”给出的描述中,词组“所有处理器所用时间的总和”可以替换为“ 该处理器所用时间” 进程分派 Total 数指 AIX 在该处理器上分派任何非空闲进程的次数,而空闲进程分派 Total 数给出空闲进程分派的计数每个处理器应用程序摘要“每个处理摘要”之后是“每个处理器应用程序摘要”,包含的信息基本相同,但以逐个处理器为基础进行停顿pthread 分派 Total 数指 libpthreads 在该处理器上分派任何 pthread 的次数,而 pthread 空闲分派 Total 数 给出对 vp_sleep 调用的计数。

应用程序摘要报告的第二大节是“应用程序摘要”该节的第一部分在每个线程的基础上(通过线程标识符)总结了总系统处理时间对于每个由进程标识符(和名称,如果有)和线程标识符来标识的线程,该摘要给出了总应用程序(与上述 APPLICATION 同)和系统调用(与上述 SYSCALL 同)处理时间(以毫秒计)与其对于跟踪中的所有处理器的总系统处理时间的百分比另外,该摘要还给出了这两种时间作为原始时间和作为对总处理时间的百分比的总和本节的第二部分以每个进程标识符(通过进程标识符)为基础给出了同样的信息本节的第三部分以每个进程名称(通过进程类型)为基础给出了同样的信息本节的第四部分对内核进程线程(“内核进程摘要”)给出了相似信息由于大多数 kprocs 提供特定的内核服务,所以总处理时间分割为两类,操作和内核,分别与一直运行在内核代码中的进程的“系统调用” 和“应用程序” 形成宽松的对应每个内核进程线程通过其名称、进程标识符、线程标识符和内核进程类型(如已知)来识别kproc 类型在紧跟在该摘要后的表格中列出并进行描述本节的第五部分是“pthread 进程摘要”本节给出多线程进程上的总的应用程序时间(通过 Pid)。

对于每个由进程标识符(和名称,如果有)标识的进程,该摘要给出总的应用程序、pthread 和其它处理时间(以毫秒计)与其对于跟踪中的所有处理器的总系统处理时间的百分比该“ 摘要”的所有五节按从处理时间的综合程度最高到最低的顺序排列显示注:进程标识符和线程标识符通常以十进制形式给出系统调用摘要报告的第三大节是“系统调用摘要”该节总结了用在系统调用上的处理时间对于每个系统调用(SVC ,通过内核地址(和名称,如已知)标识),该摘要给出了调用 SVC 的次数和所有调用的总处理器时间(毫秒)以及其对于跟踪中所有处理器的总系统处理时间的百分比此外,该摘要还给出了一个至 SVC 的调用的平均值、最小值和最大值如指定了 -e 标志,则该摘要给出至 SVC 的所有调用所用的总时间以及一个调用所用的平均值、最小值和最大值时间所用时间”为从进程开始以内核方式执行 SVC 至该进程重新以应用程序方式执行为止的畴壁时钟时间该“摘要”按从最多总处理器时间至最少总处理器时间的顺序排列如果指定了 -s 标志,摘要将给出每个错误代码(errno)被每个“系统调用”返回的次数该节的第二部分是“暂挂系统调用摘要”该节列出了已启动但未完成的“系统调用” 。

给出的时间包括在系统和各种处理器的 SYSCALL 时间和发出了 SVC 的线程和进程的 SYSCALL 时间中,但不包括在该节的第一部分中的系统调用的处理时间中暂挂调用也不包括在该节的第一部分中给出的计数中注:“系统调用地址”总是以十六进制表示进程标识符和线程标识符总是以十进制表示Pthread 调用摘要报告的第四大节是“Pthread 调用摘要”该节总结了用在调用的 pthread 例程 中的处理时间对于每个由名称指定的 pthread,该摘要给出调用 pthread 例程的次数和所有调用的总处理时间(毫秒)以及对于所有处理起的总系统处理时间的百分比此外,该摘要还给出了一个至 pthread 例程的调用的平均值、最小值和最大值如果指定了 -e 标志,该摘要给出至 pthread 例程的所有调用所用的总时间以及一个调用所用的平均值、最小值和最大值所用时间为从进程开始执行 pthread 例程至该进程退出 libpthreads 代码位置的畴壁时钟时该“ 摘要”按从最多总处理器。

下载提示
相似文档
正为您匹配相似的精品文档