已开始琢磨Dtrace, 既然有人喜欢,就分享下对Dtrace的印象
1997年,供职于Sun而现已是Solaris内核开发部高级工程师的Bryan Cantrill 与他的工作组在紧张地研究一个性能问题,它出现在刚刚提及的Sun E10000服务器。该服务器在运行基准测试时,速度突然在一段时间内奇怪地降低。工作组经过六天夜以继日的工作后,终于发现了问题的根本原因。某个“愚蠢之极”的配置错误将服务器配置成了路由器。
“我很受震惊,”Cantrill 说到, “这是任何一个客户都可能遇到的问题,但是他们可不敢奢望让内核开发人员为之夜以继日地工作,编写自定义代码以弄清楚问题。我们得找出一个更好的方法。”
经过两年半的紧张开发,Cantrill和他的工作组终于研究出了这个更好的方法: Dtrace
DTrace是过去十年中在操作系统方面最具意义的革新之一:
Probe,Solaris中分散着30,000多的位置指针,也叫探测器probes,DTrace可激活成千上万的探测器,记录所关注的位置指定的数据,如命中,即可从该地址显示用户进程或系统内核的数据,从而了解系统,包括:
1。任何函数的参数
2。内核的任何全局变量
3。函数调用的时间(NS,十亿分之一秒,无任何其它PC/Unix在ns一级精度)
4。跟踪堆栈,包括指明函数调用的代码
5。函数调用时运行的进程
6。产生函数调用的线程
Probe于自定义D语言程序相关联,probe表示的格式为:
provider:module:function:name
1。显示当前动态系统中的动态Dtrace探针probe:
# dtrace -l |more
ID PROVIDER MODULE FUNCTION NAME
1 dtrace BEGIN
2 dtrace END
3 dtrace ERROR
4 vminfo fasttrap fasttrap_uwrite softlock
5 vminfo fasttrap fasttrap_uread softlock
6 fbt pool pool_open entry
7 fbt pool pool_open return
8 fbt pool pool_close entry
9 fbt pool pool_close return
10 fbt pool pool_ioctl entry
11 fbt pool pool_ioctl return
12 fbt pool pool_info entry
13 fbt pool pool_info return
。。。
43545 fbt zmod z_strerror return
43546 fbt zmod z_uncompress entry
43547 fbt zmod z_uncompress return
即当前本人V210上有43547个probe。
2。体验 dtrace 与 Unix ps 命令:
如用ps看mozilla进程:
# ps -e |grep mozilla
2386 pts/11 0:00 mozilla
2436 pts/11 10:12 mozilla-
也可使用dtrace 通过probe探针看:
# dtrace -n 'syscall::exece:return { trace(execname);}'
dtrace: description 'syscall::exece:return ' matched 1 probe
CPU ID FUNCTION:NAME
0 11082 exece:return uname
0 11082 exece:return uname
0 11082 exece:return basename
。。。
0 11082 exece:return sed
0 11082 exece:return mozilla-bin
1 11082 exece:return csh
1 11082 exece:return mozilla
。。。
2。实际dtrace看的更细,
如用date显示系统时间,很快就结束了,无法跟踪,体验dtrace跟踪效果:
% date
2005年05月24日 星期二 20时39分03秒 CST
# dtrace -n 'syscall::exece: '
ddtrace: description 'syscall::exece: ' matched 2 probes
CPU ID FUNCTION:NAME
0 11081 exece:entry 102890531281542
0 11082 exece:return 102890532181875
即可跟踪其在第102890531281542纳秒开始读取,第102890532181875返回结果。
3。体验Dtrace 对系统调用更多的观察:
如看机器忙闲状态,常用vmstat:
# vmstat 1
kthr memory page disk faults cpu
r b w swap free re mf pi po fr de sr s0 s3 s1 s1 in sy cs us sy id
0 0 0 5523680 1378352 14 48 84 1 0 0 1 0 1 0 0 341 2058 883 3 1 96
0 0 0 5368296 1218688 0 23 15 0 0 0 0 0 0 0 0 336 2605 722 10 1 89
得知产生2605多系统调用,但无和简单查找哪个进程的问题呢,试用dtrace看:
# dtrace -n 'syscall::read:entry {@NUM[execname] = count();}'
ddtrace: description 'syscall::read:entry ' matched 1 probe
^C
dtfile 5
sdtperfmeter 12
soffice.bin 23
dic 23
dtterm 53
mozilla-bin 394
Xsun 545
显然发现CDE和Mozilla是产生大量系统调用的程序,看I/O分布也可:
如还是Mozilla:
# dtrace -n 'syscall::write:entry {@NUM[execname] = quantize(arg2);}'
...
mozilla-bin
value ------------- Distribution ------------- count
0 | 0
1 |@@@@@@@@@@@@@@@@@@@@@ 470
2 | 0
4 | 7
8 | 0
16 | 0
32 | 0
64 | 0
128 | 10
256 |@@@@@@@@ 184
512 |@@@@@@ 146
1024 |@@@ 78
2048 | 8
4096 | 1
8192 | 0
...
可观察到大量Mozilla产生的I/O在256-512字节间。
4。 想再仔细看程序内部情况?
truss不错:
# truss /usr/sfw/bin/mozilla
execve("/usr/bin/ksh", 0xFFBFF564, 0xFFBFF574) argc = 3
resolvepath("/usr/bin/ksh", "/usr/bin/ksh", 1023) = 12
resolvepath("/usr/lib/ld.so.1", "/lib/ld.so.1", 1023) = 12
stat("/usr/bin/ksh", 0xFFBFF340) = 0
open("/var/ld/ld.config", O_RDONLY) Err#2 ENOENT
stat("/lib/libc.so.1", 0xFFBFEE70) = 0
resolvepath("/lib/libc.so.1", "/lib/libc.so.1", 1023) = 14
open("/lib/libc.so.1", O_RDONLY) = 3
mmap(0x00010000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 。。。
试下dtrace:
# dtrace -n 'syscall::read:return /execname =="mozilla" /{ ustack();}'
dtrace: description 'syscall::read:return ' matched 1 probe
CPU ID FUNCTION:NAME
0 10984 read:return
libc.so.1`_read+0x8
ksh`io_readbuff+0x264
ksh`0x245e4
ksh`io_readc+0x2c
ksh`0x29c54
ksh`main+0xa30
ksh`_start+0x108
0 10984 read:return
libc.so.1`_read+0x8
ksh`io_readbuff+0x264
ksh`0x245e4
ksh`io_readc+0x2c
ksh`0x28938
ksh`0x28654
...
看到n多调用,开始和返回,够开发人员分析的。
总结,Dtrace功能强大,精度高,轻量,truss有时降低系统30%CPU利用率。但复杂,需对系统内核和应用熟悉,否则看不懂跟踪到的数据,估计以后CU该开Dtrace编程板块了。
相关推荐
如何使用Datadog ddtrace监控LangChain应用的性能
Datadog的ddtrace集成使得LangChain应用的监控和调试变得简单直接。通过本文中的步骤,你可以快速上手并开始监控你的应用性能。
快速高效实现Django前端数据、链路追踪、日志数据关联之ddtrace
用户访问前端应用(已添加 rum 监控且已配置。
使用 Datadog ddtrace 监控 LangChain 应用性能
通过前缀如果希望在代码中启用 LangChain 集成,可以使用patch。
ddtrace 系列篇之 dd-trace-java 项目编译
是 Datadog 开源的 java APM 框架,本文主要讲解如何编译 dd-trace-java 项目。
利用Datadog ddtrace优化LangChain应用性能监控
使用Datadog ddtrace可以显著提升LangChain应用的性能监控能力。Datadog APM Python库文档LangChain官方文档Datadog支持。
使用Datadog ddtrace监控LangChain应用性能的全面指南
通过Datadog的ddtrace库,开发者可以轻松地对LangChain应用进行全面监控。更多高级使用方法,请参考APM Python库文档。
浅谈动态跟踪技术之DTrace
什么是动态追踪(Dynamic Tracing) 举个简单例子,一个人正在健身房里跑步,我们用摄像机
dd-trace-py:Datadog Python APM客户端
dd-trace-py ddtrace是Datadog的Python跟踪库。 它用于跟踪在Web服务器,数据库和微服务之间流动的请求,从而使开发人员可以很好地查看瓶颈和棘手的请求。 入门 有关产品的基本概述,安装和快速入门,请查阅我们的。 有关更高级的用法和配置,请查看我们的。 有关APM中使用的术语的说明,请查看。 发展历程 贡献 参见 。 测验 环境 该测试套件需要许多支持服务,例如PostgreSQL,MySQL,Redis等。 我们使用docker和docker-compose在CI中运行服务并进行开发。 要运行测试矩阵,请按照平台提供的说明和 。 然后通过以下方式启动它们: $ docker-compose up -d 在Docker中运行测试 docker-compose环境运行后,即可运行测试运行器映像: $ docker-compose run --rm test
Dynamic Tracing with DTrace & SystemTap
Dynamic Tracing with DTrace & SystemTap http://myaut.github.io/dtrace-stap-book/ DTrace: Dynamic Tracing in Oracle Solaris, Mac OS X and FreeBSD
dd-trace-go, Datadog APM的转到跟踪包.zip
dd-trace-go, Datadog APM的转到跟踪包 Datadog APM客户端实现 OpenTracing 跟踪。初始化要使用 OpenTracing API开始使用Datadog跟踪器,你应该首先使用适当的Configuration 对象初始化跟踪程序:import
英飞凌TC397芯片时钟树详解:从EB-tresos配置到PLL锁相环实战避坑
本文详细解析了英飞凌TC397芯片的时钟树架构,从EB-tresos配置到PLL锁相环的实战应用,帮助工程师避免常见配置陷阱。文章深入探讨了时钟源层、频率转换层和分配网络层的设计原理,提供了PLL配置的数学公式和EB-tresos关键容器的配置要点,并分享了调试技巧与性能优化实践,适用于MCU开发中的时钟管理需求。
DTrace(Dynamic Tracing):Solaris 10 的新特性
Solaris 10 的新特性中和 DBA 关系最大的恐怕就是这个 Dtrace 了。Dtrace(Dynamic Tracing)是“Solaris 操作系统的一种复杂动态跟踪框架”。与其他商用 Unix 提供的性能工具有本质区别,据称“Dtrace 在 Solaris OS 内部构建,其在内核中采用了 25,000 个探测器”(SPARC 和 X86 平台都可...
GBASE南大通用GBase 8s数据库-从零开始的手动安装与实例配置指南
本文详细介绍了GBASE南大通用GBase 8s数据库的手动安装与实例配置全过程,包括环境准备、用户创建、安装包准备、实例创建、环境变量配置等关键步骤。通过实战经验分享和常见问题解决方案,帮助用户快速掌握GBase 8s数据库的安装与配置技巧,确保数据库稳定运行。
Windows 10 加入了对内核分析工具 DTrace 的支持
微软宣布 Windows 10 支持 DTrace。DTrace 是一个动态跟踪框架,于 21 世纪初诞生于 Sun 公司的 Solaris 操作系统,提供了性能分析和调试功能。开发人员...
手把手教你用Simulink搭建交流异步电机矢量控制模型(附完整仿真文件)
本文详细介绍了如何使用Simulink搭建交流异步电机矢量控制模型,涵盖系统架构设计、关键模块实现、PI调节器参数整定及仿真分析等核心内容。通过实战指南和完整仿真文件,帮助读者掌握矢量控制技术,提升电机控制系统的设计与调试能力。
在Windows上安装Fortran编程环境「0 错误」|编程一对一教学文章
通过以上步骤,你已经成功在 Windows 系统上配置了 Fortran 编程环境。现在,你可以开始 Fortran 语言的学习和开发工作了。记得定期检查更新你的编译器和编辑器,以获得最佳的支持和新功能。
快速高效监控Django的链路追踪之ddtrace
最近在研究前端的页面数据收集,踩了一些坑,现在分享一下接入过程。
【2024保研经验帖】中科院信工所夏令营经验分享
中科院信工所夏令营经验分享,信工所夏令营据说只要报了就能进,这个是不是真的尚不清楚,不过qq群里有八九百个人,也属实可怕。招生老师说我们这届夏令营招200-300个左右,于是又开始惶惶不安。 夏令营时期都是线上进行,先是每个科室进行线上招生宣讲,然后报名第一志愿部门和第二志愿部门,不同部门的考核是不同的。有的部门只要求英语面试和综合面试,有的部门除了面试还需要机试,而有的部门除了这些还需要笔试。
Python - APM 链路跟踪探针之DDtrace
Python - APM 探针之DDtrace Max.Bai 2021-03 APM ()系统简单来说由负责收集数据的探针和数据展示分析两部分组成,这个DDtrace就是python的探针。 DDtrace 是DataDog开源的python探针,官网地址 https://docs.datadoghq.com/tracing/setup_overview/compatibility_requirements/python/, 兼容大部分WEB框架,Flask,Django等等。 这里就测试一个Fla
SCADA|KingSCADA通过组合框选择修改变量的值
《SCADA项目中组合框控件的使用方法》 本文详细介绍了SCADA系统中组合框(下拉框)控件的应用方法。通过具体示例演示如何实现:当选择"雷工笔记"时变量值为100,选择"雷工杂谈"时为200,选择"小李食代"时为300的功能。主要实现步骤包括:1)创建项目并添加组合框控件;2)设置Items选项及对应数值;3)创建内存变量;4)使用GetCurrentIndex()和GetItemData()方法;5)在选项变化事件中编写脚本。该控件在SCADA
《Android最全面试题-Offer直通车》目录
如今Android求职是僧多粥少,竞争非常激烈,企业招聘时要求很高,本专栏汇聚android面试各种考点,各大公司Android面试题,《Android 最全面试题》将助你全方位提升,助您脱颖而出,早日拿到满意Offer。本专栏汇聚了海量优质内容,文章数量超过100 篇。凭借过硬的质量,每月新增订阅用户数以百计,如今仅需特惠价 9.9 元,限时抢购,后续将逐步恢复原价,早订阅早开启逆袭之旅。精心筹备,整理出一系列超万字精华篇章,累计数十万的 Android 面试题深度剖析。
探索DD Trace-Py:全面的Python性能监控解决方案
在现代的软件开发中,实时、深入地理解代码执行情况是至关重要的。DD Trace-Py是一个由Datadog提供的强大Python库,它提供了一种简单且灵活的方式来跟踪和分析你的应用程序性能。通过集成到各种框架和库中,DD Trace-Py可以帮助开发者识别瓶颈,优化性能,并确保服务的健康运行。 ## 项目简介 DD Trace-Py是一个全面的分布式追踪解决方案,旨在与Datadog平台无缝配
项目篇:移动平台机械臂视觉定位抓取实施(基于ROS架构)
ROS包内容: 这篇日志的目的是快速项目实施,所以详细的部分会不断补充。 1、相机采集包(创建抓取图像服务,单张) Realsense Camera(微软深度摄像头,官方提供ros包) Pylon Camera(basler相机,官方提供ros包) 2、定位算法包(抓取图像,定位标志物) Aruco_ros (二维码定位,官方提供ros包) Apriltag (二维码定位,官方提供ros包)...
使用Datadog ddtrace监控LangChain应用:全面指南
在现代应用开发中,监控和调优是保持应用性能和稳定性的重要环节。Datadog的应用性能监控(APM)库ddtrace,为LangChain应用提供了强大的集成能力,帮助开发者捕获请求、参数、延迟、错误等关键数据。本篇文章将深入探讨如何使用ddtrace监控LangChain应用。首先,确保在Datadog Agent中启用了APM和StatsD。以下示例展示了使用Docker的设置方法: 接下来,安装Datadog APM Python库: 默认情况下,你可以在LangChain应用命令前加上来启用集成:
大中型超市收银系统(可直接运行)
光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
NoCableLauncher终极教程:如何免费畅玩Rocksmith 2014吉他游戏 [特殊字符]
还在为Rocksmith 2014的RealTone线缆而烦恼吗?NoCableLauncher为你提供了完美的免线缆解决方案!这款开源启动器让每个吉他爱好者都能用任何音频设备享受游戏乐趣,无需昂贵的官方配件。 ## 🎯 为什么你需要这个免线缆启动器? **省钱又省心**:告别数百元的RealTone线缆,使用你现有的USB音频接口或电脑麦克风就能直接游戏。NoCableLauncher通过
锂电池充电器电路设计 里面有电路
锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。
使用 Datadog Tracing 监控和优化 LangChain 应用性能
Datadog 的应用性能监控(APM)库ddtrace提供了与 LangChain 的集成,让你能够全面监控 LangChain 应用。追踪(Traces):捕获 LangChain 请求、参数、提示-完成过程,并可视化 LangChain 操作。指标(Metrics):记录 LangChain 请求延迟、错误率,以及令牌/成本使用情况(适用于 OpenAI LLMs 和聊天模型)。日志(Logs):存储每个 LangChain 操作的提示完成数据。仪表板(Dashboard)
数学建模模型总结
这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!
1019



被折叠的 条评论
为什么被折叠?



