锁与等待分析基于Linux perf工具的采样数据,对glibc和开源软件(如MySQL、Open MP)的锁与等待函数(包括sleep、usleep、mutex、cond、spinlock、rwlock、semaphore等)进行分析,关联到其归属的进程和调用点,并根据当前已有的优化经验给出优化建议。
操作实践可参见表1。
选择“通用分析”,打开新建任务页面。
参数 |
说明 |
---|---|
任务名称 |
输入分析任务的名称。名称需要满足如下要求:
|
选择节点 |
选择需要分析的节点;仅支持单节点。 |
分析对象 |
仅支持选择“应用”。 |
模式 |
仅支持选择“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。
说明:
通过设置采集文件大小,防止由于文件过大导致分析时间过长。 |
当分析的程序进程较多,分析的数据量较大,可能会出现“任务超时失败”的情况。可通过减少“采样时长”来避免这种情况的发生。
单击任务名称后面对应的图标可以执行如下操作: