怎么利用SystemTap统计函数执行耗时
发表于:2024-11-17 作者:千家信息网编辑
千家信息网最后更新 2024年11月17日,小编给大家分享一下怎么利用SystemTap统计函数执行耗时,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言当我们需要对
千家信息网最后更新 2024年11月17日怎么利用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安全错误
数据库的锁怎样保障安全
网络技术考评表
搭载一个服务器需要什么
美国2012网络安全法案
邮箱服务器地址怎么改
服务器虚拟化算不算云计算
辽阳购物软件开发
数据库中-1和0代表什么
重庆企业党建软件开发
数据库信息安全保护
华为虚拟化服务器
软件开发年收入多少
电信dns服务器出现错误
手机本地服务器ip是什么
网络安全岗位视频
数据库安全的名词解释
文档打不开数据库
互联网加大赛软件开发
国产的网络安全设备有
酷狗音乐什么软件开发的
新时代网络技术售后保障
沈阳网络技术支持实习
网络安全大赛退役年龄
青少年网络安全怎么画
数据库认识和感想
如何理解数据库中的冗余数据
互联网提高网络安全保密素养
服务器主板需要网卡吗
中国网络安全集训队
把数据库啊
mybits配置数据库