创建锁与等待分析任务
功能描述
锁与等待分析基于Linux perf工具的采样数据,对glibc和开源软件(如MySQL、Open MP)的锁与等待函数(包括sleep、usleep、mutex、cond、spinlock、rwlock、semaphore等)进行分析,关联到其归属的进程和调用点,并根据当前已有的优化经验给出优化建议。
操作实践可参见表1。
前提条件
- 不存在“离线”状态的节点。
- 节点需支持eBPF环境要求,详情请参见eBPF环境检查。
创建锁与等待分析任务
- 单击系统性能分析后面的。
选择“通用分析”,打开新建任务页面。
- 参考“任务管理”和表2配置任务参数。新建锁与等待分析任务,如图1所示。
表2 新建锁与等待分析任务参数说明 参数
说明
任务名称
输入分析任务的名称。名称需要满足如下要求:
- 只能由中文、字母、数字和下划线组成
- 长度为1~64个字符
选择节点
选择需要分析的节点;仅支持单节点。
分析对象
仅支持选择“应用”。
模式
仅支持选择“Attach to process”。
PID
输入要分析的进程的PID,最多输入1个;单击输入框可选择对应PID或搜索需要分析进程关键字进行选择。
分析类型
选择“锁与等待分析”。
锁分析类型
选择锁分析的类型,默认全勾选,可选“直方图统计”和“锁实例分析”。
预定义锁类型
根据锁类型,分析对应方法,默认全勾选。可选“pthread mutex”、“pthread condition”和“pthread spin lock”。
采样时长 (s)
设置采集的时间,默认为20秒。取值范围1~300秒。
随着采样时长增加,采集处理可能会因超过设定的采集数据大小而终止。
分析栈(可选)
是否对调用栈进行分析,默认关闭。
栈最大深度
分析调用栈的最大栈深,默认为50,取值范围1~100。开启“分析栈”时需配置。
锁等待最小时长(μs)
只采集锁等待时间大于锁等待最小时长的锁事件。默认为0微秒,取值范围为0~10,000,000。锁分析类型选择“锁实例分析”时在“高级配置”中可配置。
锁持有最小时长(μs)
只采集锁持有时间大于锁持有最小时长的锁事件。默认为0微秒,取值范围为0~10,000,000。锁分析类型选择“锁实例分析”时在“高级配置”中可配置。
采集原始数据最大大小 (MiB)
设置采集原始数据的文件上限。默认为1024MiB,取值范围1~1024MiB。
说明:通过设置采集文件大小,防止由于文件过大导致分析时间过长。
当分析的程序进程较多,分析的数据量较大,可能会出现“任务超时失败”的情况。可通过减少“采样时长”来避免这种情况的发生。
- 单击“确认”完成分析任务的创建。
单击任务名称后面对应的图标可以执行如下操作:
- :停止分析任务,停止分析任务后,已采集的信息会被删除。
- :重启分析任务,可修改任务参数配置并重新启动分析任务,取消任务或任务失败时可使用。
- :删除分析任务,删除分析任务会将该分析任务下的数据都删除,请谨慎操作。
- :再次分析任务,自动命名任务并重新启动分析任务。
- :修改任务或报告名称,可修改对应任务或报告名称(报告名称规则同任务名称一致)。