高性能-性能评估及工具

简介: 性能问题是架构前想的还是之后想的?评估什么?

带着问题去思考!大家好

性能问题是架构前想的还是之后想的?评估什么?

  在设计阶段时,你需要理解整体架构和约束条件,不然你就回遗漏一些关键点,这将严重制约程序的运行,设计阶段就把性能目标预先考虑进去。当然安全问题也是一样的。一旦项目进入测试,部署和维护阶段,就得把更多的经理投入到微观优化,具体代码方式的分析,减少内存占用等工作。

  我们评估什么呢?评估的东西太多,就拿内存来说,显然需要评估内存占用情况,以便减少内存小号,查看那些类内存呢?专用工作集内存,提交大小,页面缓存池,峰值工作机,.NET堆内存大小,还是大对象堆内存。

平局值还是百分位值


用什么统计值才合适》多数人会优先选用平均值,但是应该考虑一下百分位值。如果对程序的可用性有要求,肯定会用到百分比形式的性能指标。例如:数据库请求的平均延迟必须少于10ms。95%以上的数据库请求延迟必须少于100ms。

(P/100)xN,P为百分位值,N为数据个数。

假定测试由0代垃圾回收导致的暂停服务时间

1,2,2,4,5,5,8,10,10,11,11,11,15,23,24,25,50,87;

18个样本数据。平均值为17ms,95%百分位值远大于50ms。如果只看平均值,你也许不会发现垃圾回收引起的延时问题。你还会发现,中间值(50%百分位值)与平均值的差距相当大,那些占比高的数值,对平均值的影响往往比较大。这样不具备统计学意义,也许只是偶然,可以用一条经验法则来确认所需的样本数,0-99%需要100个,99.9%需要1000个,以此类推,可以从数学角度了解到底需要多少样本数才够用。

评估工具

  “性能监视器”,所属Category和名称,Processor Time计数器属于Process类,它的多个实例分别对应了当前存在的各个处理器。有些性能计数器还带有“元实例”,

  我们先熟悉一下基本的操作系统术语

  •   物理内存---安装在计算机中的物理芯片内存,只有操作系统才能直接管理物理内存。
  •   虚拟内存---属于进程的逻辑内存块。虚拟内存可以大于物理内存。虚拟内存中连续的内存块,在物理内存中不一定是连续的,进程中的所有内存地址都是指虚拟内存。
  •   保留内存---在虚拟内存地址空间中为进程预留的地址段,且永远不会被分配。保留内存无法用于内存分配,因为它根本不存在。只是一段内存地址
  •   已提交内存---物理存在的一段内存,可能位于RAM中,也可能在磁盘上,
  •   内存页---内存单位,每页包含了多个已分配的内存块,单位通常KB
  •   页面交换----在多个虚拟内存区域之间交换内存页的过程,内存页即可能与其他进行交换(软交换),也可能与硬盘交换(硬交换)。软交换的速度可以非常快,只要把内存映射到当前进程的虚拟地址空间即可,硬交换则涉及到速度较慢的硬盘数据交换。你的程序尽量避免触发硬交换。
  •   调入内存页--把内存页从其他地方送入当前进程,
  •   调出内存页--把内存页从当前进程送出至其他地方。比如磁盘
  •   上下文切换---保存和恢复线程或进程状态的过程,因为线程数目通常总是多余可用处理器数,所以往往每秒会发生多次上下文交换
  •   内核模式--该模式下允许操作系统修改底层硬件参数,
  •   用户模式--用于执行普通指令的非特权模式,

Process类计数器可以提供很多重要信息。大家不妨试一试;

PerfView

他是由微软的.NET性能架构师Vance Morrison编写的。

当然还有很多工具,。CLR Profiler,Windbg.MeasureIt。这里不在赘述,大家可以通过其他途径获取了解。这些只不过是一些可视化程序。更重要的是评估,评估在评估

 

相关文章
|
6月前
|
机器学习/深度学习 数据采集 自然语言处理
构建高效机器学习模型:从数据处理到性能优化
在数据驱动的时代,构建高效的机器学习模型已经成为解决复杂问题的关键手段。本文将详细讨论如何通过有效的数据处理、特征工程、模型选择以及性能优化策略来构建一个高效的机器学习模型。我们将重点关注数据处理的重要性,特征选择的影响,以及如何通过调整模型参数和采用集成学习方法来提高模型的性能。我们的目标是为读者提供一套实用的指南,帮助他们在构建自己的机器学习模型时能够更加高效和有效。
|
2月前
|
安全 测试技术 PHP
如何评估PHP框架的性能?
【9月更文挑战第2天】如何评估PHP框架的性能?
46 5
|
3月前
|
机器学习/深度学习 分布式计算 TensorFlow
自研分布式训练框架EPL问题之降低分布式训练的使用门槛如何解决
自研分布式训练框架EPL问题之降低分布式训练的使用门槛如何解决
|
4月前
|
存储 监控 数据可视化
性能测试:主流性能剖析工具介绍
**性能剖析**是识别应用性能瓶颈的关键,涉及指标收集、热点分析、优化建议及可视化报告。常用工具有:**JConsole**监控JVM,**VisualVM**多合一分析,**JStack**分析线程,**FlameGraph**展示CPU耗时,**SkyWalking**分布式跟踪,**Zipkin**追踪服务延迟。这些工具助力开发人员提升系统响应速度和资源效率。
DeepRec Extension 打造稳定高效的分布式训练
DeepRec Extension 即 DeepRec 扩展,在 DeepRec 训练推理框架之上,围绕大规模稀疏模型分布式训练,我们从训练任务的视角提出了自动弹性训练,分布式容错等功能,进一步提升稀疏模型训练的整体效率,助力 DeepRec 引擎在稀疏场景中发挥更大的优势。
|
5月前
|
存储 NoSQL 大数据
NoSQL数据库在大数据处理场景下如何评估其性能?
【6月更文挑战第10天】NoSQL数据库在大数据处理场景下如何评估其性能?
109 2
|
5月前
|
存储 NoSQL 大数据
如何评估不同NoSQL数据库的性能?
【6月更文挑战第10天】如何评估不同NoSQL数据库的性能?
30 1
|
4月前
|
固态存储 测试技术 数据库
最新测试揭秘:TDengine 线性扩展能力能否满足你的性能需求?
**摘要:** TDengine 的线性扩展能力通过CPU和磁盘测试得以验证。在CPU测试中,使用TDengine V3.3.0.0和taosBenchmark,随着CPU核数从4增至12,写入性能线性提升,每个CPU增加对应约50W条/秒的提升,保持CPU在瓶颈状态。磁盘IO测试中,使用低速机械盘,增加磁盘数量导致写入性能成比例增长,充分利用新增磁盘IO。测试结果表明,无论CPU还是磁盘扩展,TDengine都能有效利用资源,展示出出色的线性扩展能力。
63 0
|
6月前
|
算法 Java 测试技术
性能工具之代码级性能测试工具ContiPerf
【2月更文挑战第23天】性能工具之代码级性能测试工具ContiPerf
408 1
性能工具之代码级性能测试工具ContiPerf
|
6月前
|
存储 监控 数据挖掘
如何评估并优化OLAP系统的性能和可扩展性?
【5月更文挑战第14天】如何评估并优化OLAP系统的性能和可扩展性?
71 0