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

操作步骤

  1. Python3执行demo。

    该接口中使用“+”在for循环中拼接字符串,该demo耗时约11s。

    图1 执行demo
  2. 进行全景分析操作。
    表1 任务配置参数说明

    参数

    说明

    分析对象

    系统

    分析类型

    全景分析

    采样类型

    系统性能、系统设置、PCIe拓扑、任务调度

    采样时长

    20秒

    采样间隔

    1秒

  3. 查看分析结果。

    系统性能数据显示CPU负载高。

    图2 系统性能
  4. 创建进程线程分析任务。
    表2 任务配置参数说明

    参数

    说明

    分析对象

    系统

    分析类型

    进程/线程性能分析

    采样类型

    CPU、内存、存储IO、上下文切换

    采样时长

    20秒

    采样间隔

    1秒

    采集线程信息

    开启

  5. 查看进程分析结果。
    查看进程性能数据,CPU使用率也比其他进程高。
    图3 进程分析结果
  6. 创建应用的热点函数分析任务。

    由于Python3不在工具默认的路径中,首先配置Python3的目录到应用程序路径配置项中。

    表3 任务配置参数说明

    参数

    说明

    分析对象

    应用

    分析类型

    热点函数分析

    模式

    Launch application

    应用路径

    /usr/bin/python3

    应用参数

    /opt/testdemo/concatenate_string.py string_plus

    应用运行用户

    配置demo可运行用户的账号和密码

    采样时长 (s)

    10秒

    未特别说明参数请保持默认值。

    图4 应用路径配置
    图5 系统配置
  7. 再次创建热点函数分析任务。
    未特别说明参数请保持默认值。
    表4 任务配置参数说明

    参数

    说明

    分析对象

    应用

    分析类型

    热点函数分析

    模式

    Launch application

    应用路径

    /usr/bin/python3

    应用参数

    /opt/testdemo/concatenate_string.py string_plus

    应用运行用户

    配置demo可运行用户的账号和密码

    采样时长 (s)

    10秒

    未特别说明参数请保持默认值。

  8. 查看热点函数分析结果。

    查看总览页面的Top 30热点调用栈,其中memcpy实现内存中复制,__libc_realloc即malloc函数,用来实现内存的申请及分配,它们消耗了较多的CPU资源。

    图6 总览
  9. 性能瓶颈分析。

    综合以上的分析,Python中的string是不可变对象,循环中使用+进行大量字符串拼接时,会频繁的进行内存的申请、分配以及字符串的复制,导致性能低下。