怎么利用SystemTap统计函数执行耗时
发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,小编给大家分享一下怎么利用SystemTap统计函数执行耗时,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言当我们需要对
千家信息网最后更新 2024年11月14日怎么利用SystemTap统计函数执行耗时
小编给大家分享一下怎么利用SystemTap统计函数执行耗时,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
前言
当我们需要对应用程序进行系能分析时,我们通常可以使用perf或者火焰图。 但是这些工具通常只能定性问题,发现那些函数占用cpu较多,需要优化。但是给不出定量的数据, 比如这个函数的耗时情况,它耗时1ms还是5ms。
因此在不在代码中加入统计耗时的代码的情况,我们可以使用SystemTap来统计应用程序的耗时情况。
SystemTap可以跟踪内核函数和用户态进程,当我们跟踪用户态进程时,需要使用其process模块。
查找函数符号
很多情况下,代码在执行时,其函数符号并不一定是代码中写的名称,因此我们可以使用以下脚本打印 出应用程序中在调用的函数符号。
probe process("/data0/app").function("*") { println(probefunc())}
然后执行
stap echo.stp
其会打印出/data0/app这个程序运行时调用到的各个函数名,此处最好填绝对路径。我们可以从中找到 我们需要统计的函数名称。
统计函数耗时
我们可以使用SystemTap内置的直方图来展示耗时的分布。我们有两种直方图函数可以使用:
@hist_linear(v, start, stop, interval) # 打印start-stop区间interval间隔的直方图@hist_log(v) # 打印以2为底指数分布的直方图
统计脚本:
global sends # 声明全局的统计存储容器probe process("/data0/app").function("git.intra.xx.send").return { # function中为函数名,同时支持通配符*等,在该函数return时计算耗时 sends <<< gettimeofday_us() - @entry(gettimeofday_us()) # 以微秒精度来统计,entry方法将一个表达式放置于函数入口处}probe timer.s(10) { # 每10s打印一次直方图 print(@hist_log(sends))}
然后执行stap elaspe.stp
即可获得每10秒统计的结果,如果希望每10秒清空重新统计的话, 可以将打印函数修改为:
probe timer.s(10) { # 每10s打印一次直方图 print(@hist_log(sends)) delete sends # 清空数据}
以上是"怎么利用SystemTap统计函数执行耗时"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
函数
统计
直方图
代码
情况
程序
应用程序
符号
篇文章
应用
内容
名称
数据
用户
进程
跟踪
不怎么
从中
入口
入口处
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库组织数据采用什么模型
全球网络安全专家
吉林城管通软件开发系统
oracle数据库性能分析
无线网络安全性为无法访问权限
腾讯数据库安全吗
江苏网络安全资质申请哪家好
java游戏服务器架构
网络安全 小学信息技术
中小学网络安全须知
王者服务器哪个最好
sql查询一条数据库
网络安全竞赛学生
活动数据库设计
软件开发结构化面试
印加印网络技术有限公司
网络安全2018专技天下
数据库 三元关系
中小学网络安全教育日
网络安全检查室
有EEE数据库吗
苏州有农网络技术咋样
java软件开发时间
数据库如何插入当前时间
我国网络安全发展的特点
安全检查服务器初始化失败
通讯与网络安全工程
上海朝夕网络技术有限公司官网
英雄联盟东南亚服务器
服务器端软件需求