当前位置: 首页 > news >正文

计算机性能分析的三个模型

计算机性能分析的三个模型【1】

  • 一、瓶颈分析(Bottleneck Analysis)
  • 二、利特尔法则(Little's Law)【2】
  • 三、M/M/1 Queue
  • Reference

一、瓶颈分析(Bottleneck Analysis)

  瓶颈分析可以帮我们更好地定位导致性能差的最主要问题根源,从而可以让我们更精确地给出性能提升的解决方案。

  例如,如果瓶颈是吞吐量太低,那么通过增加缓存或者降低请求延迟的解决方案是没有太大作用的。

  那么针对吞吐量分析可以利用以下两条规则:

  1、并行的子系统的吞吐量是所有子系统最大吞吐量的总和;

  2、串行的子系统的吞吐量是所有子系统中最小吞吐量。

  以下给出一个例子:

吞吐量例子

图:某个系统中不同子系统的吞吐量

  根据图中可以看出,该系统的最大吞吐量为Min(9GB/s + (4+3)GB/s + 6GB/s + 10GB/s) = 6GB/s。所以针对这个吞吐量瓶颈分析,可以精确定位到我们需要进行吞吐量提升的子系统位置。

二、利特尔法则(Little’s Law)【2】

  通过这个定律可以反映吞吐量和延迟之间的关系,任务到达的速率为R,延迟为L,系统在这个延迟时间内可以处理的任务数量T。
little law

图:Little’s Law模型

  如图所示,是Little’s Law的公式模型。即系统中平均任务数量T = 平均延迟L * 任务平均到达速率R

  这个定律的美妙之处在于它可以通过任意两个参数的计算得到第三个参数值,解决了某个参数可能比较难以获取的问题。

  例子:已知每天有200个请求到达(R),并且有10,000个请求在系统中等待(T),请求系统延迟时间。

   答:L = 10,000 / 200 = 50天

  为了提升性能(降低延迟),则可以通过提升请求到达速率,例如增加到每天到达1,000个请求数量;或者是提升系统处理请求的效率,即提升吞吐量。

三、M/M/1 Queue

  对于利特尔定律,只是给出了一个黑盒结果,并没有具体详细地描述出三者之间的trade-off问题,比如通过哪个参数提升性能会更好。而M/M/1 Queue可以向我们展示这三者之间的权衡。

M/M/1 queue

图:M/M/1 Queue模型

  排队理论(Queue Theory【3】)应用马尔可夫性质,即任务到达的时间独立于先前任务到达的时间,不受先前任务的影响。

  根据上图,我们将任务到达的速率记为R,平均等待排队时间Q,平均服务时间S,平均延迟时间L = Q + S

latency vs throughput

图:延迟与吞吐量的trade-off

  如图所示,其中x轴中的吞吐量throughput = R*S,R为请求到达速率,S为平均每个请求服务时间,吞吐量为单位时间内系统处理的请求数量,因此是R乘以S。y轴是归一化平均延迟,用latency = L/S表示。由于L = S + Q,因此当L为1时表示无队列等待时间。再根据马尔科夫链可以得到L/S = 1/(1-R*S),即 y = 1/(1-x)

  因此,根据图中的曲线趋势,我们可以看到,高吞吐量会导致高延迟。吞吐量降低时,队列等待时间短,延迟降低。

Reference

1.Three Other Models of Computer System Performance:https://arxiv.org/pdf/1901.02926
2.https://fisherp.scripts.mit.edu/wordpress/wp-content/uploads/2015/11/ContentServer.pdf
3.L. Kleinrock, Queueing systems, volume 1: Theory. Wiley, New York, 1975.


http://www.mrgr.cn/news/64684.html

相关文章:

  • Angular解析本地json文件
  • clickhouse运维篇(三):生产环境一键生成配置并快速部署ck集群
  • 23.智能停车计费系统(基于springboot和vue的Java项目)
  • dockerdockerfiledocker-compose操作
  • 服务器数据恢复—RAID5阵列硬盘坏道掉线导致存储不可用的数据恢复案例
  • 「iOS」——知乎日报一二周总结
  • 树(入门)
  • 自杀一句话木马(访问后自动删除)
  • MySQL——事务
  • Redis安装与使用 + Springboot整合Redis
  • wpf中行为
  • 502 Bad Gateway 错误详解:从表现推测原因,逐步排查直至解决
  • IDEA2024下安装kubernetes插件并配置进行使用
  • 代理IP地址和端口是什么?怎么进行设置?
  • 达人探店和好友关注功能(feed流的使用,滚动分页查询)
  • Python 有哪些优雅的代码实现让自己的代码更pythonic?
  • 串口接收,不定长数据接收
  • 00 递推和递归的核心讲解
  • LeetCode27:移除元素
  • JavaEE进阶---第一个SprintBoot项目创建过程我的感受
  • 1.kubernetes作用及组件
  • (五)PostgreSQL数据库操作示例
  • 如何使用Python WebDriver爬取ChatGPT内容(完整教程)
  • 我为何要用wordpress搭建一个自己的独立博客
  • Linux基础 文件与目录
  • int a[5]里面的 a表示a[0], a执行包含5个整数的数组的指针