创建锁与等待分析任务
功能描述
锁与等待分析基于Linux perf工具的采样数据,对glibc和开源软件(如MySQL、Open MP)的锁和等待函数(包括sleep、usleep、mutex、cond、spinlock、rwlock、semophore等)进行分析,关联到其归属的进程和调用点,并根据当前已有的优化经验给出优化建议。
前提条件
已成功创建工程,且当前工程下不存在“离线”状态的节点。
操作步骤
- 单击工程列表中指定工程后面的
。
打开“新建分析任务”页面。
- 参考任务管理和表1配置任务参数。以分析对象“系统”为例,新建锁与等待分析任务,如图1所示。
表1 新建锁与等待分析任务参数说明 参数
说明
任务名称
输入分析任务的名称。名称需要满足如下要求:
- 以英文字母开头
- 长度为6~32个字符
- 可以包含字母、数字、英文点(.)和下划线(_)
分析对象
选择“系统”或“应用”。
模式
选择“Launch Application”或”Attach to Process“。
分析对象选择“应用”时需配置此参数。
应用路径
输入待分析的目标应用,需要带上绝对路径。例如分析保存在“/home/test”目录下的“loop_test”应用,则输入:/home/test/loop_test
分析对象选择“应用”,模式选择“Launch Application”时需配置此参数。
说明:- 默认分析“/opt/”或者“/home/”目录下的应用,管理员用户可在系统性能分析首页中的
菜单选项中选择“系统配置”,手动配置“应用程序路径配置”,路径之间采用分号分割。仅管理员用户可修改,普通用户只有查看权限。
- 修改应用路径配置会影响资源调度分析、微架构分析、访存分析、C/C++程序分析、锁与等待分析、I/O分析的应用程序路径设置,请谨慎修改。
- 对于保存应用的目录,鲲鹏性能分析工具程序的操作系统运行用户(malluma)需要有可执行权限,对于待分析的应用需要有可读可执行权限。
- 打开“配置指定节点参数”时各节点可单独配置该参数。
应用参数(可选)
输入应用参数,请根据实际应用场景填写。
分析对象选择“应用”,模式选择“Launch Application”时需配置此参数。
说明:打开“配置指定节点参数”时各节点可单独配置该参数。
进程名
输入进程名称,进程名称支持输入正则表达式。
分析对象选择“应用”,模式选择“Attach to Process”时需配置此参数。
PID
输入要分析的进程的PID,最多输入10个,中间用英文逗号分割。PID和进程名可以同时配置。
分析对象选择“应用”,模式选择“Attach to Process”时需配置此参数。
说明:- “Attach to Process” 针对正在运行的应用程序(鲲鹏性能分析工具程序的操作系统运行用户(malluma)针对运行的应用程序需要有可读权限),通过关联到运行该应用程序的PID的方式,来实时跟踪和采集该应用程序的性能数据。
- 进程的PID可执行ps -ef | grep 程序名称查询。
- 打开“配置指定节点参数”时各节点可单独配置该参数。
分析类型
选择“锁与等待分析”。
采样时长 (秒)
设置采集的时间,默认为30秒。取值范围1~300秒。
采样间隔 (毫秒)
设置采样间隔,默认为“自定义”。可选择:
- 自定义:默认为1毫秒,取值范围1~1000毫秒。
- 高精度:默认为710微秒。说明:
高精度采样针对采样间隔为1毫秒时采样精度数据不够精确的场景,能够准确跟踪应用程序在高频CPU上运行所占用所有微指令CPU running time(CPU运行时间)。
采样范围(可选)
选择采样范围。默认为“所有”,可选择:
- 所有:采集应用层和OS内核的性能数据
- 用户态:采集应用层的性能数据
- 内核态:采集OS内核的性能数据
标准函数(可选)
选择预置的glibc的锁与等待函数名。默认为全选以下函数(All表示全选),可选择:
- All
- pthread_mutex_lock
- pthread_mutex_trylock
- pthread_mutex_unlock
- pthread_cond_wait
- pthread_cond_timedwait
- pthread_cond_reltimedwait_np
- pthread_cond_signal
- pthread_cond_broadcast
- pthread_rwlock_rdlock
- pthread_rwlock_tryrdlock
- pthread_rwlock_wrlock
- pthread_rwlock_trywrlock
- pthread_rwlock_unlock
- sem_post
- sem_wait
- sem_trywait
- pthread_spin_lock
- pthread_spin_trylock
- pthread_spin_unlock
- sleep
- usleep
自定义函数(可选)
输入待分析的锁与等待函数名称。
例如:*lock
说明:- 支持输入多个函数名,两个函数名之间用英文逗号“,”分隔。
- 支持通配符“*”(函数名的值不能为“*”)。
符号文件路径(可选)
输入符号文件在服务器上的绝对路径。
说明:- 当开发者需要观察源代码和汇编指令映射后的性能数据时,并且对应的应用程序无符号表信息,该参数用来导入对应应用程序的符号表。
- 打开“配置指定节点参数”时各节点可单独配置该参数。
C/C++源文件路径(可选)
输入C/C++源文件在服务器上的绝对路径。
须知:该应用的源码请务必符合通用编程规范,否则分析结果中热点函数的源码可能无法正常显示。
说明:- 当开发者需要观察源代码和汇编指令映射后的性能数据时,该参数用来导入对应应用程序的源代码。
- 打开“配置指定节点参数”时各节点可单独配置该参数。
内核函数关联汇编代码(可选)
是否开启内核函数关联汇编指令的功能,默认关闭。
采集文件大小 (MB)(可选)
设置采集文件大小。默认为1024MB,取值范围1~4096MB。
说明:通过设置采集文件大小,防止由于文件过大导致分析时间过长。
预约定时启动
是否创建预约定时启动任务,详细信息请参考任务管理。
立即执行
任务创建完成后会自动开始执行,默认勾选。
说明:打开“预约定时启动”将不显示该选项。
当分析的程序进程较多,分析的数据量较大,可能会出现“任务超时失败”的情况。可通过减少“采样时长”或者增大“采样间隔”来避免这种情况的发生。
- 单击“确认”完成分析任务的创建。
新创建的分析任务会出现在当前工程下的折叠列表中。
