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

计算机性能分析的三个模型【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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/907428.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Golang | Leetcode Golang题解之第520题检测大写字母

题目: 题解: func detectCapitalUse(word string) bool {// 若第 1 个字母为小写,则需额外判断第 2 个字母是否为小写if len(word) > 2 && unicode.IsLower(rune(word[0])) && unicode.IsUpper(rune(word[1])) {return f…

开发一个基于Delphi的题库生成系统

开发一个基于Delphi的题库生成系统 步骤一:需求分析 首先明确系统需要实现的功能,比如: 添加题目编辑题目删除题目题目分类管理随机生成试卷导出试卷为PDF或Word格式 步骤二:设计数据库 使用SQLite或其他轻量级数据库存储题…

红队-shodan搜索引擎篇

如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 一.shodan原理与功能的介绍 Shodan Search Engine 它是专门搜网络设备的,只要联网的,只要有IP地址的都可以称为网络设备 1.shodan&#x…

机器学习中的数据可视化:常用库、单变量图与多变量图绘制方法

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

Python复习2

一、封装函数 #自己封装len函数 s1 "hello,python" print(f"s1的长度为{len(s1)}")def my_len(data):count0for i in data:count 1print(f"{data}的长度为{count}")my_len(s1) 二、容器的排序(排序之后的结果都会变成列表&#xf…

从0开始深度学习(23)——图像卷积

上节了解了卷积层的原理,本节以图像为例,介绍一下它的实际应用 1 互相关运算 严格来说,卷积层是个错误的叫法,因为它所表达的运算其实是互相关运算(cross-correlation)。 首先,我们暂时忽略通…

代码随想录算法训练营第十二天| 226.翻转二叉树、101. 对称二叉树、104.二叉树的最大深度 、111.二叉树的最小深度

226.翻转二叉树 题目链接:. - 力扣(LeetCode) 文章讲解:代码随想录 视频讲解:听说一位巨佬面Google被拒了,因为没写出翻转二叉树 | LeetCode:226.翻转二叉树_哔哩哔哩_bilibili《代码随想录》…

2024阿里云CTF Web writeup

《Java代码审计》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484219&idx1&sn73564e316a4c9794019f15dd6b3ba9f6&chksmc0e47a67f793f371e9f6a4fbc06e7929cb1480b7320fae34c32563307df3a28aca49d1a4addd&scene21#wechat_redirect 前言 又是周末…

【CSS】CSS 样式重置 (normalize.css 和 reset.css) 和通用样式配置

一般来说,每一个项目初始化阶段都需要样式重置和样式定制化。样式重置最常用的就是 normalize.css 和 reset.css 这两个文件。 他们的区别: Normalize.css更加注重保留有用的浏览器默认样式,仅修复浏览器之间的不一致性,适用于需…

动态规划——两个数组的dp问题

目录 一、最长公共子序列 二、不同的子序列 三、通配符匹配 四、正则表达式匹配 五、两个字符串的最小ASCII删除和 六、最长重复子数组 七、交错字符串 一、最长公共子序列 最长公共子序列 第一步:确定状态表示 dp[i][j]:表示字符串 s1 的 [0&am…

安卓13默认连接wifi热点 android13默认连接wifi

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 有时候我们需要让固件里面内置好,相关的wifi的ssid和密码,让固件起来就可以连接wifi,不用在手动操作。 2.问题分析 这个功能,使用普通的安卓代码就可以实现了。 3.代…

Kubernetes:(三)Kubeadm搭建K8s 1.20集群

文章目录 一、Kubeadm安装流程二、实验1.环境准备2.所有节点安装kubeadm,kubelet和kubectl(除了Harbor节点)3.部署 Dashboard4.安装Harbor私有仓库 一、Kubeadm安装流程 集群名称IP地址安装软件master(2C/4G,cpu核心数…

杨传辉:云+AI 时代的一体化数据库|OceanBase发布会实录

在 2024 OceanBase 年度发布会 上, OceanBase CTO 杨传辉进行了主题为《云和 AI 时代的一体化数据库战略思考》的演讲,本文为演讲实录,欢迎阅读。 视频观看可点击:https://www.oceanbase.com/video/9001825 各位 OceanBase 的客…

ChatGPT变AI搜索引擎!以后还需要谷歌吗?

前言 在北京时间11月1日凌晨,正值ChatGPT两岁生日之际,OpenAI宣布推出最新的人工智能搜索体验!具备实时网络功能!与 Google 展开直接竞争。 ChatGPT搜索的推出标志着ChatGPT成功消除了即时信息这一最后的短板。 这项新功能可供 …

QT——记事本项目

目录 1.给pushButton按键添加图片 1.1 首先复制存放图片的文件夹,打开Qt回到编辑页面,右键单击pro文件选择在Explorer中显示,将图片文件夹粘贴进去你的代码同目录即可 1.2 创建一个新的文件夹 1.3 点击Add Files,将所有图片添加…

【在Linux世界中追寻伟大的One Piece】Socket编程TCP(续)

目录 1 -> V2 -Echo Server多进程版本 2 -> V3 -Echo Server多线程版本 3 -> V3-1 -多线程远程命令执行 4 -> V4 -Echo Server线程池版本 1 -> V2 -Echo Server多进程版本 通过每个请求,创建子进程的方式来支持多连接。 InetAddr.hpp #pragma…

为什么可视化大屏要有动态效果,都有哪些类型的效果。

可视化大屏已成为企业和组织展示关键信息的重要工具。这些大屏不仅需要清晰地传达数据,还要吸引观众的注意力并提供深刻的洞察。动态效果在这一过程中扮演着至关重要的角色。 动态效果的重要性 动态效果在可视化大屏中的应用,基于以下几个核心原因 吸…

【C/C++】字符/字符串函数(0)(补充)——由ctype.h提供

零.导言 除了字符分类函数,字符转换函数也是一类字符/字符串函数。 C语言提供了两种字符转换函数,分别是 toupper , tolower。 一.什么是字符转换函数? 顾名思义,即转换字符的函数,如大写字母转小写字母&am…

Hive数据库操作语法

数据类型 内部表和外部表 内部表 (CREATE TABLE table_name ......)未被external关键字修饰的即是内部表, 即普通表。 内部表又称管理表,内部表数据存储的位置由hive.metastore.warehouse.dir参数决定(默认:/user/h…

线程基础知识、jmm(Java内存模型)

目录 线程基础知识 并发与并行 进程和线程 线程优先级 创建线程的方式主要有三种 休眠 作出让步 join() 方法 线程协作注意什么 理解线程状态 选择合适的协作工具 共享资源的访问控制 避免竞争条件 创建线程几种方式 线程状态,状态之间切换 新建&…