工作中还是蛮少直接接触到评估系统性能的,但是不妨碍有兴趣了解。认为这是常识,只是个人才疏学浅不了解其定义。

  TP=Top Percentile,Top百分数,是一个统计学里的术语,与平均数、中位数都是一类,为等水位线(waterline)。

  TP50、TP90和TP99等指标常用于系统性能监控场景,指高于50%、90%、99%等百分线的情况。

  上面都是学术上的定义,具体到软件系统评估的实践中怎么理解呢?以TP90为例(借用网络上搜到的资源):

    The tp90 is a minimum time under which 90% of requests have been served.

    tp90 = top percentile 90

    Imagine you have response times:10s,1000s,100s,2s

    Calculating TP is very simple:

      1. Sort all times in ascending order: [2s, 10s, 100s, 1000s]

      2. find latest item in portion you need to calculate.
        2.1 For TP50 it will be ceil(4*0.5) = 2 requests. You need 2nd request.
        2.2 For TP90 it will be ceil(4*0.9) = 4. You need 4th request.

      3. We get time for the item found above. TP50=10s. TP90=1000s

    可以认为 TP90的意思是保证90%请求都能被响应的最小耗时。例如上例中TP90=4s,就是如果要保证90%的用户得到有效的时间是4s;同理保证50%的用户得到有效相应的时间是2s。

  如果现有需求:每隔5s打印一次最近1分钟内A、B、C三个方法的TP90、TP99的耗时情况。如何实现呢?

  分析:

    1、如果要计算 TP90、TP95 或者 TP99 等水位线的值,其前提就是需要我们将所有的待计算值保存起来。此需求中打印时刻最近1分钟内调用个方法的耗时时间。

    2、用什么数据结构来存储这一系列的值呢?数组?或者列表?实际上,无论选择哪一种数据结构都不能假设其长度无限大,因为内存空间是有限的,而且数据结构也有理论上的最大值,但是要存储的值的个数却可能是无限的。因此,就需要利用有限长度的数据结构存储更多的数值。此例中,选择的数据结构是TreeSet。

    3、最后一步就是由低到高顺序排序后计算等水位线的值了。

  实现:

    1、利用dubbo filter统计各方法调用耗时时间,使用数据结构TreeSet(Java)。

      首先看下为什么选用TreeSet,看下TreeSet的结构:

        

      SortedSet通过implements Comparable进行自定义排序:

      

    此案例中耗时时间由小到大排序:

      

      

    2、计算等WaterLine的值:这个算法就比较简单了,不介绍了直接上图

      

  此文中仅介绍与WaterLine相关的内容,其具体实现再何处体现,后续Dubbo扩展点之一Filter中详述。

  

关于TP90 TP99 等常用于评估软件系统的处理性能的指标概念的更多相关文章

  1. scikit-learn 中常用的评估模型

    一,scikit-learn中常用的评估模型 1.评估分类模型: ​ 2.评估回归模型: ​ 二.常见模型评估解析: •对于二分类问题,可将样例根据其真实类别和分类器预测类别划分为:(T,F表示预测的 ...

  2. 利用pl/sql执行计划评估SQL语句的性能简析

    一段SQL代码写好以后,可以通过查看SQL的执行计划,初步预测该SQL在运行时的性能好坏,尤其是在发现某个SQL语句的效率较差时,我们可以通过查看执行计划,分析出该SQL代码的问题所在.  那么,作为 ...

  3. 通过数据库评估存储设备IO性能-Oracle11gIO校准功能介绍

    通过数据库评估存储设备IO性能 ---------Oracle11g IO校准功能介绍 前言 I/O子系统是ORACLE数据库的一个重要组成部分,因为I/O操作是贯穿数据库管理全过程,它操作的对象包括 ...

  4. 磁盘 IO 和网络 IO 该如何评估、监控、性能定位和优化?

    生产中经常遇到一些IO延时长导致的系统吞吐量下降.响应时间慢等问题,例如交换机故障.网线老化导致的丢包重传:存储阵列条带宽度不足.缓存不足.QoS限制.RAID级别设置不当等引起的IO延时. 一.评估 ...

  5. 常用SQL操作(MySQL或PostgreSQL)与相关数据库概念

    本文对常用数据库操作及相关基本概念进行总结:MySQL和PostgreSQL对SQL的支持有所不同,大部分SQL操作还是一样的. 选择要用的数据库(MySQL):use database_name; ...

  6. CentOS评估磁盘I/O性能读写极限测试

    用一个fio工具 安装 yum -y install fio 二,FIO用法: 随机读:fio  -direct=1 -iodepth 1 -thread -rw=randread -ioengine ...

  7. 使用mongoperf评估磁盘随机IO性能

    用法举例: # 16个io线程 # 随机读写10GB的测试文件 echo "{nThreads:16,fileSizeMB:10000,r:true,w:true}" | mong ...

  8. 【redis常用的键值操作及性能优化】

    服务端 启动redis服务 { // -a:指定密码 -h:指定主机 -p:指定端口 } //让redis 服务中断崩溃 //保存和关闭 //后台备份 //设置登录密码 //redis-benchma ...

  9. PCB常用低速、高速板材参数性能(2)

随机推荐

  1. Kubernetes最佳实践之腾讯云TKE 集群组建

    作者陈鹏,腾讯工程师,负责腾讯云 TKE 的售中.售后的技术支持,根据客户需求输出合理技术方案与最佳实践,为客户业务保驾护航.使用 TKE 来组建 Kubernetes 集群时,会面对各种配置选项,本 ...

  2. Ubuntu下使用VS Code创建Spring Boot工程

    目的 我们将在Ubuntu桌面系统下,使用VS Code(Visual Studio Code)编辑器从零开始创建一个Spring Boot工程,并实现一个简单的RESTful风格接口.使用这套流程的 ...

  3. JuiceFS 在理想汽车的使用和展望

    理想汽车是中国新能源汽车制造商,设计.研发.制造和销售豪华智能电动汽车,于 2015 年 7 月创立,总部位于北京,已投产的自有生产基地位于江苏常州,通过产品创新及技术研发,为家庭用户提供安全及便捷的 ...

  4. Python 安装MySQL 错误处理

    正常情况下如果使用python 连接数据库需要安装 python-MySQL 类库 #pip install python-MySQL 等待安装完成即可 使用时 import MySQLdb ==== ...

  5. 优化.NET 应用程序 CPU 和内存的11 个实践

    https://michaelscodingspot.com/cpu-bound-memory-bound/ 优化.NET 应用程序 CPU 和内存的11 个实践 凡事都有其限度,对吧?汽车只能开这么 ...

  6. 抽签小程序(C语言随机数)

    最近班级里需要人员抽签参加活动,闲来无事用java的(Math.random()方法||java.util.Random())写了一个随机抽签的,所以我又了解了一下C语言的随机数获取. C语言的随机数 ...

  7. JAVA多线程学习十七 - 面试题

    前面针对多线程相关知识点进行了学习,那么我们来来看看常见的面试题: 1. 空中网面试题1 package com.kongzhongwang.interview; import java.util.c ...

  8. git 撤销,放弃本地修改,放弃已提交修改

    一, 未使用 git add 缓存代码时. 可以使用 git checkout -- filepathname (比如: git checkout -- readme.md ,不要忘记中间的 &quo ...

  9. php 递归目录

    转载请注明来源:https://www.cnblogs.com/hookjc/ $TheFilePath='';function file_list($path){ global $TheFilePa ...

  10. Nodejs基于Express使用html模板

    express默认使用jade模板,可以配置让其支持使用ejs或html模板. 安装ejs 在项目根目录安装ejs. npm install ejs 2.引入ejs var ejs = require ...