高性能-性能评估及工具

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

带着问题去思考!大家好

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

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

  我们评估什么呢?评估的东西太多,就拿内存来说,显然需要评估内存占用情况,以便减少内存小号,查看那些类内存呢?专用工作集内存,提交大小,页面缓存池,峰值工作机,.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。这里不在赘述,大家可以通过其他途径获取了解。这些只不过是一些可视化程序。更重要的是评估,评估在评估

 

相关文章
|
7月前
|
机器学习/深度学习 数据采集 自然语言处理
构建高效机器学习模型:从数据处理到性能优化
在数据驱动的时代,构建高效的机器学习模型已经成为解决复杂问题的关键手段。本文将详细讨论如何通过有效的数据处理、特征工程、模型选择以及性能优化策略来构建一个高效的机器学习模型。我们将重点关注数据处理的重要性,特征选择的影响,以及如何通过调整模型参数和采用集成学习方法来提高模型的性能。我们的目标是为读者提供一套实用的指南,帮助他们在构建自己的机器学习模型时能够更加高效和有效。
|
监控 算法 测试技术
性能优化之几种常见压测模型及优缺点 | 陈显铭
上一篇讲的是《性能优化的常见模式及趋势》,今天接着讲集中常见的压测模型。通过上一章我们大概知道了性能优化的一些招式,但是怎么发现有性能问题,常见的模式还是需要压测。
5877 0
|
27天前
|
关系型数据库 分布式数据库 数据库
PolarDB 以其出色的性能和可扩展性,成为大数据分析的重要工具
在数字化时代,企业面对海量数据的挑战,PolarDB 以其出色的性能和可扩展性,成为大数据分析的重要工具。它不仅支持高速数据读写,还通过数据分区、索引优化等策略提升分析效率,适用于电商、金融等多个行业,助力企业精准决策。
34 4
|
3月前
|
安全 测试技术 PHP
如何评估PHP框架的性能?
【9月更文挑战第2天】如何评估PHP框架的性能?
53 5
|
5月前
|
存储 监控 数据可视化
性能测试:主流性能剖析工具介绍
**性能剖析**是识别应用性能瓶颈的关键,涉及指标收集、热点分析、优化建议及可视化报告。常用工具有:**JConsole**监控JVM,**VisualVM**多合一分析,**JStack**分析线程,**FlameGraph**展示CPU耗时,**SkyWalking**分布式跟踪,**Zipkin**追踪服务延迟。这些工具助力开发人员提升系统响应速度和资源效率。
|
6月前
|
存储 NoSQL 大数据
NoSQL数据库在大数据处理场景下如何评估其性能?
【6月更文挑战第10天】NoSQL数据库在大数据处理场景下如何评估其性能?
135 2
|
7月前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据预处理到性能优化
【5月更文挑战第28天】 在机器学习领域,构建一个高效的模型并非易事。它涉及多个步骤,从数据预处理、特征选择、模型训练、参数调优,直至最终的性能评估与优化。本文将详细探讨如何通过这些关键步骤来打造一个高性能的机器学习模型,并提供实用的技巧和策略以应对常见的挑战。
|
7月前
|
存储 监控 数据挖掘
如何评估并优化OLAP系统的性能和可扩展性?
【5月更文挑战第14天】如何评估并优化OLAP系统的性能和可扩展性?
79 0
|
7月前
|
存储 并行计算 数据挖掘
如何优化大规模数据处理的性能
在当今大数据时代,对于使用大规模数据处理技术进行数据分析和挖掘的企业和组织来说,优化数据处理性能已经成为一项关键任务。本文将介绍如何通过并行计算、数据分片、内存管理等技术手段,优化大规模数据处理的性能,以提高数据分析和挖掘的效率。
|
7月前
|
缓存 负载均衡 网络协议
网络协议之性能优化与性能评估
网络协议之性能优化与性能评估
151 1
网络协议之性能优化与性能评估