鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

链路时延检测功能介绍

链路时延检测工具(曾用名K-NET数据采集工具),是一个为解决复杂C/C++应用性能问题而设计的动态分析工具。它无需修改代码或重新编译,即可精确捕获函数调用的耗时数据,帮助开发者快速、准确地定位性能热点;采集数据时提供启动时加载和运行时挂载两种模式。

本工具提供三种安装包,其中工具整体包和RPM使用方式相同,单独工具包使用方式不同。

  • 单独工具压缩包使用方式(tracelib-collector-aarch64.tar.gz):

    链路时延检测功能单独工具包,主要提供动态库和数据分析的二进制文件。通过配置环境变量,可以在应用运行时先加载工具动态库采集数据。此工作模式为启动时加载模式(Launch Mode);若待采集应用还未启动,建议使用此方式,将在应用启动时自动加载so库进行采集。

  • 整体压缩包或者RPM包使用方式(DevKit-CLI-x.x.x-Linux-Kunpeng.tar.gz或devkit-advisor-x.x.x-1.aarch64.rpm):

    在DevKit-CLI-x.x.x-Linux-Kunpeng.tar.gz压缩包中,链路时延检测工具位于亲和分析中,主要提供attach命令用于采集数据和compat命令用于分析数据。此工作模式为运行时挂载模式(Attach Mode);若待采集应用处于运行态,建议使用此方式,不需重启应用。

约束限制

  • 为了能够正确识别和记录函数名称,目标应用程序必须保留符号表。请在编译您的C/C++应用时,避免使用会完全剥离(strip)符号表和调试信息的编译选项(例如不要使用“-s”标志)。
  • 本工具提供函数级别的性能分析,即统计整个函数的进入与退出耗时。如果需要分析特定代码段,建议将其重构为一个独立的函数再进行分析。
  • 鉴于插桩存在纳秒级的固定开销,对执行时间极短(如小于1微秒)且调用极其频繁的函数进行分析时可能会存在一定性能影响。建议将分析焦点放在耗时更长的业务逻辑或I/O函数上。

启动时加载模式(Launch Mode):

  • 动态库支持在Glibc 2.17及以上版本的环境上运行。
  • 暂不支持inline函数的耗时采集。

运行时挂载模式(Attach Mode):

  • 仅支持在鲲鹏平台上运行。
  • 待采集应用需为运行态,采集时指定待采集应用的PID。
  • 停止采集方式为终止目标进程(例如通过Ctrl+C)。