性能分析十八招,你用哪一招

本文介绍了一套系统的性能分析方法论,旨在帮助开发者有效诊断和解决软件性能问题。内容覆盖了从问题陈述到具体分析手段的一系列实用技巧。
allowtransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?url=http%3A%2F%2Fwww.csdn.net%2Farticle%2F2014-08-11%2F2821145-Performance-Analysis-Methodology&type=3&count=&appkey=&title=%E5%AF%B9%E7%B3%BB%E7%BB%9F%E6%88%96%E7%A8%8B%E5%BA%8F%E8%BF%9B%E8%A1%8C%E7%9B%B8%E5%85%B3%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%EF%BC%8C%E6%9C%89%E5%8A%A9%E4%BA%8E%E5%88%86%E6%9E%90%E7%A0%94%E7%A9%B6%E8%BF%90%E8%A1%8C%E6%97%B6%E5%87%BA%E7%8E%B0%E7%9A%84%E9%97%AE%E9%A2%98%E6%88%96%E6%9F%A5%E6%89%BE%E5%87%BA%E9%97%AE%E9%A2%98%E6%A0%B9%E6%BA%90%E3%80%82%E8%80%8C%E6%B2%A1%E6%9C%89%E6%96%B9%E6%B3%95%E8%AE%BA%E6%8C%87%E5%AF%BC%E7%9A%84%E5%88%86%E6%9E%90%EF%BC%8C%E5%A6%82%E7%9B%B2%E5%A4%B4%E8%8B%8D%E8%9D%87%EF%BC%8C%E8%B4%B9%E6%97%B6%E8%B4%B9%E5%8A%9B%E3%80%82%E6%9C%AC%E6%96%87%E5%B0%86%E9%98%90%E8%BF%B0%E8%BF%9B%E8%A1%8C%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E9%87%87%E7%94%A8%E7%9A%84%E5%8D%81%E5%85%AB%E4%B8%AA%E6%96%B9%E6%B3%95%E8%AE%BA%E3%80%82&pic=&ralateUid=&language=zh_cn&rnd=1407824363790" width="22" height="16"> 摘要:对系统或程序进行相关性能分析,有助于分析研究运行时出现的问题或查找出问题根源。而没有方法论指导的分析,如盲头苍蝇,费时费力。本文将阐述进行性能分析采用的十八个方法论。

对系统或程序进行相关性能分析,有助于分析研究运行时出现的问题或查找出问题根源。而没有方法论指导的分析,如盲头苍蝇,费时费力。为确保软件满足或超过设计的期望值,有必要分析应用程序的性能以发现潜在的问题。性能分析一个必不可少的环节是使应用程序的组件可见。当能够了解组件是如何交互时,就可以诊断潜在的性能问题。

主要采用的方法论,包括:USE 方法:找出资源瓶颈;TSA 方法:分析程序用时;Off-CPU分析:分析任何类型的线程延时;http://www.brendangregg.com/activebenchmarking.htmlActive Benchmarking(动态基准)分析,进行精确有效的基准分析。

以下将列举出一个综览清单,开始部分包含一些个人不建议的反对的做法,不妨作为一个反面教材来参考。

1. 推诿他人(反对的)

  • 尝试找出一个系统或环境的组件,但是该组件与你无关。
  • 假设问题出在该组件上。
  • 把问题推至与该组件真正相关的团队。
  • 当发现其实也与该团队无关时,重做第一步,继续找别人的茬。
2.  指路明灯(反对的)

  • 采用以下任一方法来选择简便工具:自己熟悉的;在Internet找来的;随机找来的。
  • 运行工具。
  • 找出显眼的问题。

3.  酒徒做法(错误做法)

随机变更事物直到问题离去。

4.  随机变更(错误做法)

  1. 测量一个性能基线。
  2. 随机找出并变更一个属性。
  3. 沿着某一个方向进行变更操作。
  4. 测量系统性能。
  5. 换个方向继续执行变更。
  6. 测量系统性能。
  7. 步骤4或6的结果好于基线吗?如果是,继续执行;否则,执行回退。
  8. 回到步骤1。

5.  被动的基准(错误做法)

  • 选择一个基准工具。
  • 采用不同的选项组合运行工具。
  • 根据结果做一个幻灯片。
  • 按着幻灯片来进行管理。

6.  临时的检查清单法

运行 A,如果出现 B,执行 C。

7.  问题陈述法

  • 什么让你觉得出现了性能问题?
  • 系统之前运作良好吗?
  • 最近执行了什么变更(例如:软件,硬件,负载)?
  • 是潜伏期或运行时间方面的性能减退问题吗?
  • 该问题会影响其他人或程序吗(还是仅仅是自己)?
  • 运行环境是怎么样的?用了什么软件或硬件?版本?配置?
8.  系统法

  • 问题
  • 假设
  • 预测
  • 测试
  • 分析

9.  工作负荷特征描述法

  • 谁正在引起工作负荷?PID,UID,IP地址等。
  • 为什么会产生工作负荷?代码路径
  • 工作负荷是什么?IOPS,tput命令,类型
  • 这些负荷随着时间是怎样变化的?

10.自上而下分析法

  • 从最高级开始
  • 检查下一级别的细节
  • 找出最关注部分进行分解
  • 如果问题得不到解决,重做第2步

11.逐层分析法

从以下方面进行造成延迟的测量:

  • 多语言
  • 执行文件
  •  运行库
  • 系统调用
  • 核心:文件系统,网络
  • 设备驱动

12.延迟分析法

  • 测量运行时间(延迟)
  • 划分成同步的逻辑部件
  • 继续进行划分直到找出延迟的根源
  • 量化:估算系统恢复后带来的速度提升

13.工具法

  • 列出可用的性能分析工具
  • 针对每个工具各自特点列出有用的指标
  • 针对每项指标,作出相关解释
  • 运行挑选后的工具,针对选出的指标进行分析

14.USE方法

对于每项资源,作出如下检查:

  • 利用率(Utilization)
  • 饱和度(Saturation)
  • 错误(Errors)

15. 栈配置法

  • 跟踪线程堆栈信息,针对on-CPU和off-CPU进行分析
  • 联合分析
  • 把堆栈倒置进行分析

16.off-CPU分析法

  • 针对堆栈中每一计划调度线程进行off-CPU时间分析
  • 对类同的堆栈进行联合分析
  • 对于最长和最短用时进行分析

17.TSA方法

1.  针对每一引起重视的线程,测量操作系统线程状态的时间。例如:

  • 执行用时
  • 运行用时
  • 交换用时
  • 睡眠用时
  • 锁用时
  • 闲时时间

2.  使用合适的工具对最高和最低发生频率事件进行分析。

18.动态基准法

  • 以一个足够长的周期来运行测量基准。
  • 运行的时候,使用其他工具进行性能分析,查找出限制因素。

英文出自:brendangregg

代码下载链接: https://pan.quark.cn/s/6b27a128162e 【关于IAR for Arm 9.20.1的安装指导】 IAR Systems作为业内知名的嵌入式系统开发工具供应商,其推出的IAR Embedded Workbench是一款面向多种微控制器(MCU)的集成开发环境(IDE)。本指导将系统性地阐述安装IAR for ARM 9.20.1版本的具体流程,该版本是专门为基于ARM架构的嵌入式设备量身打造的开发工具。 1. **前期准备** 在启动安装流程之前,务必核实计算机的环境配置符合以下系统要求: - 操作系统版本:Windows 7或更新版本 - 硬盘容量:确保至少有1GB的可用存储空间 - 系统兼容性:支持在32位及64位Windows操作系统上运行 2. **获取与解压缩** 需要从官方网站或者指定的链接获取"IAR For Arm 9.20.1"的压缩文件。文件下载完毕后,借助解压缩软件(例如7-Zip)将内容解压到用户指定的文件夹中。 3. **启动安装流程** 进入解压后的文件夹,找到并执行"IAREmbeddedWorkbenchInstaller.exe"文件,从而启动IAR的安装向导程序。 4. **安装向导界面** - **初始界面**:仔细阅读并同意许可协议条款,随后点击“Next”进入下一阶段。 - **组件选择**:IAR Embedded Workbench通常集成了多个功能模块,包括编译器、调试器接口等。系统默认选中所有模块,用户也可依据实际需求进行个性化选择。本例中采用默认设置,并继续点击“Next”。 - **设定安装位置**:用户可以选择采用系统推荐的安装路径,或者自定义安装位置。确认选择...
内容概要:本文围绕基于反步终端滑模控制的永磁同步电机(PMSM)位置控制器三环伺服系统展开深入研究,旨在通过Matlab/Simulink平台构建完整的控制系统仿真模型,实现对PMSM高精度位置控制的设计与验证。研究系统性地阐述了反步终端滑模控制(Backstepping Terminal Sliding Mode Control, BTSMC)的理论基础,重点剖析其在应对系统强非线性、外部未知扰动及参数摄动等挑战时所展现出的卓越鲁棒性与动态性能优势。通过构建包含电流环、速度环位置环的三闭环级联控制架构,实现了对电机多物理量的精细化协同控制,显著提升了系统的响应速度、稳态精度抗干扰能力。文章不仅提供了详尽的控制律推导过程,还给出了完整的Simulink模块化实现方案,涵盖了坐标变换、控制器设计、空间矢量脉宽调制(SVPWM)等关键环节,为相关领域的科研与工程实践提供了可复现、可拓展的技术范例。; 适合人群:具备自动控制理论、电机学基础知识及Matlab/Simulink仿真操作经验的研究生、高校教师、科研院所研究人员以及从事高性能电机驱动、伺服系统开发的工程技术专业人员。; 使用场景及目标:①服务于高等院校科研机构中关于现代非线性控制理论的教学案例与课题研究;②为工业自动化领域中高精度数控机床、机器人关节、精密仪器等对伺服性能有严苛要求的应用场景提供先进的控制策略参考与技术实现路径;③支撑高水平学术论文的复现、不同先进控制算法(如传统PID、普通滑模、自适应控制等)的性能对比分析,并为进一步提出创新性复合控制方法奠定研究基础; 阅读建议:建议读者在学习过程中紧密结合文中的数学推导与Simulink仿真模型,逐模块理解控制策略的实现逻辑,特别关注滑模面的设计、李雅普诺夫函数的构造、控制器增益参数的整定方法以及三环之间的动态耦合关系。应充分利用所提供的仿真资源进行反复调试与参数优化,通过观察不同工况下的系统响应曲线,深入探究控制算法的内在机理,从而有效提升对复杂非线性系统建模、分析与设计的综合能力。
内容概要:本文档由“荔枝科研社”团队整理,系统性地提供了多个科研方向的MATLAB与Python仿真技术支持与资源下载服务,核心聚焦于虚拟电厂运行优化、日前-实时电力交易、激励型需求响应定价机制等电力系统前沿课题。通过构建包含模型预测控制(MPC)、交替方向乘子法(ADMM)、智能优化算法(如PSO、GA、鲸鱼算法等)在内的数学模型与仿真框架,深入探讨了计及多重市场机制与需求响应的虚拟电厂优化调度策略,旨在提升能源系统的经济性、可靠性低碳水平。文档还涵盖了微电网协调调度、综合能源系统优化、风光储氢协同、电热气耦合、碳交易机制等热点研究方向,并配套提供完整的代码、数据、论文复现模型及Simulink仿真案例,形成从理论建模到算法实现的全流程科研支持体系。; 适合人群:面向具备电力系统、自动化、能源工程、控制科学或相关专业背景的研究生、高校科研人员及从事新能源、智能电网、综合能源系统、优化算法研发的工程技术人员。; 使用场景及目标:① 复现高水平期刊(如IEEE、EI)论文中的复杂优化模型与先进算法;② 获取虚拟电厂、微电网、综合能源系统等方向的完整项目资源,支撑学位论文、科研课题申报或学术成果转化;③ 借助提供的开源代码与仿真模型快速搭建实验平台,开展创新性研究与算法对比分析。; 阅读建议:建议读者结合自身研究方向,优先选择标注“复现”“顶刊”“EI/IEEE”“Cplex求解”等高价值项目进行深入学习,通过公众号“荔枝科研社”获取网盘资源,并积极参与技术交流以获得持续支持与答疑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值