中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

性能瓶颈优化

实际功能代码的执行速度很快,多线程使用锁的方案会把大量的开销花费在锁的竞争上面,为了减少公共资源的抢占可以通过原子变量无锁的编程的方式优化代码。

pthread_atomic为已优化的应用,再次执行分析任务查看优化效果。

  1. 重新执行热点函数分析任务(pthread_atomic应用)。

    使用系统热点函数监测锁热点时,在任务开启的同时,后台需运行对应的demo,否则无法采集到锁的热点。

    表1 任务配置参数说明

    参数

    说明

    分析对象

    应用

    分析类型

    热点函数分析

    应用路径

    /opt/testdemo/pthread_atomic

    采样时长

    30秒

    采样间隔

    1秒

    采样频率

    100次/秒

    采样范围

    用户态

  2. 查看分析结果。
    图1 热点函数分析结果
  3. 重新执行锁与等待分析任务(pthread_atomic应用)。
    表2 任务配置参数说明

    参数

    说明

    分析类型

    锁与等待分析

    分析对象

    应用

    模式

    Attach to process

    PID

    选择pthread_atomic应用对应的进程号

    锁分析类型

    全选

    预定义锁类型

    默认

    采样时长

    20秒

    采集原数据最大大小

    1024MiB

    分析栈

    关闭

  4. 查看分析结果。
    图2 锁与等待分析结果

    可以看到已经没有锁函数的调用存在。

总结

通过热点函数分析和锁与等待分析任务,找到多线程应用代码中公共资源抢占下使用锁机制带来的额外开销,通过原子变量实现无锁编程实现了同样的效果,减少了不必要的开销。