[架构之路-200]- 性能需求与性能分析:影响性能的主要因素

2023-10-27

目录

前言:关于性能的几点说明

第一章 性能需求:提出各种性能指标

1.1 可靠性或可用性: stablity

1.2 处理能力或效率:  Performance

1.2.1 指标是吞吐率

1.2.2 指标是响应时间:

1.2.3 指标是资源利用率

1.3 高并发性

1.4 通信系统性能指标

1.4.1 信道传输速率

1.4.2 信道吞吐量:throughput

1.4.3 容量:Capacity

1.4.4 信道利用率

1.4.5 传输延迟

1.4.6 响应时间

1.4.7 负载能力(load)

第二章 性能分析:分析和细化影响性能需求的各种因素

第三章 系统设计:为高性能设计好系统架构

第四章 系统实现

第五章 系统测试:性能测试与评估

5.1 Linux系统性能评估的工具


前言:关于性能的几点说明

(1)性能需要是非功能性需求

(2)不同的信息系统比的是功能

(3)同行的信息系统比的是性能

(4)产品后期打磨的就是性能(性能提示曲线)

一开始性能提升容易,越往后,性能提升越难。


(5)性能的改进因素分布在系统的方面面面(性能分析框架)

(6)信息系统的性能从需求阶段就开始了,而不是在编码实现阶段才开始。

  • 客户需求:性能需求,提出各种性能指标
  • 系统分析:性能分析(最难),分析和细化影响性能需求的各种因素
  • 系统设计:为高性能设计好系统 架构
  • 系统实现:通过芯片设计、编程语言和代码编程来实现高性能信息系统。 
  • 系统测试:性能测试与评估

很多人在开发信息系统时,早期只关系功能,到了开发的后期才关心性能,导致花了大量人力、物力开发的系统,

  • 要么因为性能无法满足客户的需求,导致一直无法交付
  • 要么陷在现有框架下艰难的进行性能的改进和优化,项目交付一再推迟。
  • 要么导致推翻以前的软硬件架构,重新设计,造成前期大量的人力、物力、时间的浪费。

本文重点重点关注前期的性能需求和性能分析!!!

(7)性能目标的本质:多、快、好、省、低

 数量多,速度快,质量好,成本省、功耗低

第一章 性能需求:提出各种性能指标

  • 不同的业务系统,对性能指标的要求是不同的!!!!
  • 不同的业务系统,对性能指标的优先级是不同的!!!
  • 不同的性能指标之间是相互制约的!!!会导致后续一些列设计上的变化!!!

这就是为什么需求阶段需要明确业务系统的性能指标!!!

计算机系统的性能一般包括三的方面。

1.1 可靠性或可用性: stablity

一个方面是它的可靠性或可用性,也就是计算机系统能正常工作的时间,其指标可以是能够持续工作的时间长度(例如,平均无故障时间),也可以是在一段时间内,能正常工作的时间所占的百分比;

1.2 处理能力或效率:  Performance

另一个方面是它的处理能力或效率,这又可分为三类指标:

1.2.1 指标是吞吐率

系统在单位时间内能处理正常作业的个数

1.2.2 指标是响应时间:

从系统得到输入到给出输出之间的时间

1.2.3 指标是资源利用率

即在给定的时间区间中,各种部件(包括硬设备和软件系统)被使用的时间与整个时间之比。

1.3 高并发性

通常是指通过设计保证系统能够同时并行处理很多请求的数量。

高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。

1.4 通信系统性能指标

不同的系统对性能指标的描述有所不同,例如,计算机网络系统常用的性能评估指标为:

1.4.1 信道传输速率

传输速率是泛指数据从一点向另一点传输的速率。如从网络节点向打印服务器传输打印数据的速率,Modem对数据传输的速率,信道传输数据的速率等。传输速率的单位有bts,波特等。

1.4.2 信道吞吐量:throughput

网络吞吐量,信息技术术语,网络中的数据是由一个个数据包组成,防火墙对每个数据包的处理要耗费资源。吞吐量是指在没有帧丢失的情况下,设备能够接受的最大速率。其测试方法是:在测试中以一定速率发送一定数量的帧,并计算待测设备传输的帧,如果发送的帧与接收的帧数量相等,那么就将发送速率提高并重新测试;如果接收帧少于发送帧则降低发送速率重新测试,直至得出最终结果。吞吐量测试结果以比特/秒或字节/秒表示。

1.4.3 容量:Capacity

容量也指物体或者空间所能够容纳的单位物体的数量。

现广泛应用于计算机硬盘、电池等储量的计量。

通信容量-单位时间内能够传输的最大信息量。

1.4.4 信道利用率

用于描述有效信息传递过程中信息占用信道的百分率,也是信道的效率。

1.4.5 传输延迟

传输延迟,发送接收处理时间、电信号响应时间、介质中传输时间三个时间的总和。

1.4.6 响应时间

系统响应时间,是计算机对用户的输入或请求作出反应的时间 [1]  。

系统响应时间的计算要考虑到用户的数目,用户数目越多,响应时间必须越快,不然就难以保证每一个用户都有可以接受的响应时间。

响应时间和时间片的大小有关,一般情况是:时间片越短,响应时间越快。

1.4.7 负载能力(load)

在给定持续运行时长下,设备可承受的最大负载,或在给定负载下,设备可持续运行的最大时长。

带负载能力就是代表器件的输出电流的大小。对于标准TTL器件,输出负载能力的高电平为0.4mA,而作为下级负载的TTL器件的输入高电平电流为0.04mA(40uA),这样一个标准TTL器件最大可以驱动8个以上标准TTL负载。

所谓带负载能力,是说电路的输出电阻的大小,和电压源(电流源)中的内阻是一个意思。

对于CPU: 负载就是指CPU的占用率的可执行任务,比80%的负载,100%负载。

对于5G系统:负载就是就是用户数量或throughput的数据,比如最大64个用户,实际用户的数量就是负载,再如,最大传输速率是1G, 900M数据传输就是负载。

第二章 性能分析:分析和细化影响性能需求的各种因素

CPU计算 内存 外设IO 总线通信
硬件电路

1.主时钟

2. 高速CPU

1. 主时钟

2. 高速内存

1. 主时钟

2. 高速外设

3. 高速flash硬盘

1. 主时钟

2. 高速总线

CPU架构

1. ALU运算速度

2. 指令执行速度

3. 流水线 

4. 吞吐量与吞吐率

5. 高性能计算

1. 主存容量和存取速度

2. 层次性

3. cache

1. IO指令速度

2. IO访问速度

1 . 字长和数据通路宽度

2. 内部高速总线

3. 内部互联总线

操作系统

1. 操作系统调度与优先级

2. 实时性调度

3. 异常处理

4. 调度策略与算法

1. 虚拟内存技术

2.减少内存拷贝

3. 内存层次模型

4. 分区管理

5. 内存管理与算法

1.响应时间与完成时间

2. 中断响应

3. 中断屏蔽

4. IO缓存

1. 进程间通信与进程间数据传输与拷贝

2. 内核空间与用户空间数据传送

3. 死锁

数据库

1. CPU效率

2. CPU多核

3. 负载均衡

1. 网络存储技术

2. 索引优化

3. 查询优化

1.避免不必要的硬盘访问与缓存

2. 读写分离

1. 网络数据库之间通信

2. 本地备份,定期同步

网络通信

1. DMA传送

2. 

1. 避免不必要的内存拷贝

2. 避免

1. 提升通信的响应速度

1. 采用高速通信链路

分布式

1. 负载均衡

应用程序 与特定的业务应用算法相关 与特定的业务应用算法相关 与特定的业务应用算法相关 与特定的业务应用算法相关

编程技巧与操作目标

1. 降低无效的CPU占用的时间

2. 较少CPU指令数量

1.避免无效的访问内存

1. 避免无效的访问低效的IO

2. 避免IO等待

1. 避免不必要的网络通信

2. 避免低速通信

算法

数据

结构

软件架构

第三章 系统设计:为高性能设计好系统架构

第四章 系统实现

通过芯片设计、编程语言和代码编程来实现高性能信息系统。 

第五章 系统测试:性能测试与评估

5.1 Linux系统性能评估的工具

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[架构之路-200]- 性能需求与性能分析:影响性能的主要因素 的相关文章

  • 什么是架构,架构的本质是什么

    不论是开发人员还是架构师 我们都一直在跟软件系统打交道 架构是在工作中出现最频繁的术语之一 那么 到底什么是架构 你可能有自己的答案 也有可能没有答案 对 架构 的理解需要我们不断在实践中思考 归纳 演绎 形成自己的认知 一 什么是软件架构
  • 为什么程序员招聘都要5年经验起?因为他们懂Java8底层优化!

    一 前情回顾 上篇文章给大家聊了一下volatile的原理 具体参见 入坑两个月自研非外包创业公司 居然让我搞懂了volatile 这篇文章给大家聊一下java并发包下的CAS相关的原子操作 以及Java 8如何改进和优化CAS操作的性能
  • HarmonyOS-开发避坑指南——源码下载和编译,企业级项目实战讲解

    安装文件系统打包工具 运行 mkfs vfat 如果未找到该命令 需要安装 运行 mcopy 如果未找到该命令 需要安装 sudo apt get install dosfstools mtools 官方文档说明的两个文件系统打包工具sud
  • 阿里云大佬告诉你为什么学不会设计模式,归根到底还是方法不对

    最近总有读者在后台跟我说 工作几年 自己的代码质量似乎没有什么提升 我觉得他的情况非常典型 很多人应该或多或少都有过类似的经历 毕业几年 几乎一直在做复制黏贴的工作 偶尔会遇到原有业务扩展的需求 想简单应付一下完事的话 也不难 无非就是多加
  • 数据仓库进阶 《阿里大数据之路》第二篇 数据模型篇 (完整版)

    第8章 大数据领域建模综述 此文章为学习笔记 有兴趣的小伙伴可以根据以下指引获取更多 学习内容链接如下 视频 一起啃书 阿里大数据之路数据仓库建模基础理论研读 已完结 哔哩哔哩 bilibili 书籍 阿里大数据之路 8 1 为什么需要数据
  • 英伟达最新开源

    Title FasterViT Fast Vision Transformers with Hierarchical Attention Paper https arxiv org pdf 2306 06189 pdf Code https
  • 十四、java版 SpringCloud分布式微服务云架构之Java String 类

    Java String 类 字符串广泛应用 在 Java 编程中 在 Java 中字符串属于对象 Java 提供了 String 类来创建和操作字符串 创建字符串 创建字符串最简单的方式如下 String str xxx 在代码中遇到字符串
  • 2022Java面试题大全(整理版)面试题附答案详解,最全面详细

    目录 JAVA八股文 Java基础 String 和StringBuffer和 StringBuilder的区别 sleep 区间wait 区间有什么区别 Object 中有哪些方法 其中clone 怎么实现一个对象的克隆 Java如何实现
  • 【实践篇】领域驱动设计:DDD工程参考架构

    背景 为什么要制定参考工程架构 不同团队落地DDD所采取的应用架构风格可能不同 并没有统一的 标准的DDD工程架构 有些团队可能遵循经典的DDD四层架构 或改进的DDD四层架构 有些团队可能综合考虑分层架构 整洁架构 六边形架构等多种架构风
  • 如果老板要求你的系统接入春晚大流量活动,你会心慌慌吗?

    目录 回头看看 原始系统技术架构 基于CDN的活动静态页面缓存方案 基于Nginx Tomcat Redis的多级缓存方案 超高并发写请求RocketMQ削峰填谷方案 系统限流防雪崩体系架构方案 今天给大家分享一个话题 就是如果要是你老板突
  • 企业架构LNMP学习笔记29

    Nginx负载均衡配置 架构分析 1 用户访问请求Nginx负载均衡服务器 2 Nginx负载均衡服务器再分发请求到Web服务器 实际配置负载均衡 只需修改作为负载均衡服务器的Nginx即可 当前架构中的server04 在客户端解析域名到
  • [思维模式-15]:《复盘》-3- “行”篇 - 操作复盘- 个人复盘

    目录 前言 一 将军不是教出来的 而是打出来的 二 复盘是能力提升的有效方式 三 对什么进行个人复盘 1 新的事 2 重要的事 3 有价值的事 4 按照规范 惯例处置不太奏效的事件 未达预期的事 四 个人复盘的两种操作手法 1 自我简易复盘
  • 5. 一线大厂高并发缓存架构实战与性能优化

    分布式缓存技术Redis 1 冷热数据分离 2 缓存设计 2 1 缓存击穿 失效 2 2 缓存穿透 2 3 缓存雪崩 3 大V直播带货导致线上商品系统崩溃原因分析 4 突发性热点缓存重建导致系统压力暴增问题 5 缓存数据库双写不一致问题 6
  • [架构之路-256]:目标系统 - 设计方法 - 软件工程 - 软件设计 - 架构设计 - 软件系统不同层次的复用与软件系统向越来越复杂的方向聚合

    目录 前言 一 CPU寄存器级的复用 CPU寄存器 二 指令级复用 二进制指令 三 过程级复用 汇编语言 四 函数级复用 C语言 五 对象级复用 C Java Python 六 组件级复用 七 服务级复用 八 微服务级复用 前言 物质世界的
  • 进阶之Kotin协程原理和启动方式详细讲解(优雅使用协程)

    协程就是方法调用封装成类线程的API 方法调用当然比线程切换轻量 而封装成类线程的API后 它形似线程 可手动启动 有各种运行状态 能够协作工作 能够并发执行 前言 kotlin的协程在初学者看来是一个很神奇的东西 居然能做到用同步的代码块
  • Docker与微服务:构建和部署微服务架构的完整指南

    微服务架构已经成为现代应用开发的主要范式之一 而Docker容器技术则为微服务的构建 部署和管理提供了理想的解决方案 本文将深入探讨如何使用Docker构建和部署微服务架构 提供更多示例代码和细致的指南 以帮助大家更全面地理解和运用这些关键
  • 什么是微服务

    微服务是一种架构风格 它把一个大型的复杂软件应用划分为一系列小的服务 每个服务都具有单一的功能 运行在其自己的进程中 并通常基于不同的编程语言和框架 这些服务之间通过轻量级通信机制相互通信 这种通信机制基于HTTP协议 微服务架构风格使得系
  • 浅谈小程序开源业务架构建设之路

    一 业务介绍 1 1 小程序开源整体介绍 百度从做智能小程序的第一天开始就打造真正开源开放的生态 我们的愿景是 定义移动时代最佳体验 建设智能小程序行业标准 打破孤岛 共建开源 开放 繁荣的小程序行业生态 百度智能小程序的生态玩家有三类 分
  • 如何解读服务器的配置和架构?

    在当今数字化时代 服务器作为企业或组织的重要基础设施 其配置和架构对于保障业务的稳定运行至关重要 如何解读服务器的配置和架构 成为了一个备受关注的话题 本文将围绕服务器配置和架构的解读进行深入探讨 帮助读者更好地理解服务器的性能 扩展性和安
  • CCSC,一种CPU架构

    core circuit separate computer 核与执行电路的分离 最初是为了省电 用寄存器实现这种分离 V寄存器控制着执行电路的供电 V 0则不供电 进入省电模式 V 1则供电 进入工作模式 P寄存器是parameter r

随机推荐

  • GSM PA前端插损

    GSM PA前端插损 文章目录 GSM PA前端插损 一 GSM PA前端插损 一 GSM PA前端插损 GSM BAND DRB要求 产线功率上限 PA前插损 PA前插损 850 32 5 1 0 4 0 4 900 32 5 1 0 4
  • 视图库——公安视频侦查数据处理应用中心

    随着城市视频监控系统的不断完善和扩建 视频已经成为社会数据量最大的一类数据 网络甚至流传这样一个段子 电视台新闻行业应该给视频监控行业颁发 最佳素材奖 原因是电视台播放的新闻中 有四分之一的素材来自于视频监控 当然这只是个段子 但无疑也再次
  • 【.NET 6】使用EF Core 访问Oracle+Mysql+PostgreSQL并进行简单增改操作与性能比较

    前言 唠嗑一下 都在说去O或者开源 但是对于数据库选型来说 很多人却存在着误区 例如 去O 狭义上讲 是去Oracle数据库 但是从广义上来说 是去Oracle公司产品或者具有漂亮国垄断地位和需要商业授权的数据库产品 去O 目前国内有一个现
  • DBA 面试题

    一 SQL tuning 类 1 列举几种表连接方式 2 不借助第三方工具 怎样查看sql的执行计划 3 如何使用CBO CBO与RULE的区别 4 如何定位重要 消耗资源多 的SQL 5 如何跟踪某个session的SQL 6 SQL调整
  • echarts分享(四):双y轴图表刻度均匀分布问题

    今天分享一个小问题 内容不多 双y轴图表中 为了图表的美观 经常会隐藏一侧的y轴刻度线 仅显示一侧的刻度线 那么问题就来了 两个y轴的数据数值大小不同 常常会导致刻度线的刻度分布不均匀 该如何解决呢 这里分享下我在项目中所作的处理 首先是要
  • ESP32彩屏开发板(WT32-SC01),除了买买买,你还可以参与一起设计了

    基于ESP32彩屏的开发板已在Git Hub平台上开源给所有的开发者了 硬件参数 显示屏 3 5 英尺 LCD 屏幕 分辨率 320 480 SoC ESP32 WROVER B 模组 CPU 双核 Xtensa 32 bit LX6 MC
  • ESP8266测试Wi-Fi通讯安全

    创建Arduino Sketch include
  • 5.荔枝派 zero(全志V3S)-buildroot配置播放视频

    上面是我的微信和QQ群 欢迎新朋友的加入 1 开启ALSA和MPLAY 编译烧录 2 测试 amixer c 0 sset Headphone 0 100 unmute cd usr bin mplayer root test mp4 3
  • is too old (format 10, created by Subversion 1.6)的解决方案

    svn Working copy E aliyun spirit spiritmap0916 is too old format 10 created by Subversion 1 6 解决方案 对项目进行upgrade 等待刷新完成即可
  • Android SDK+Appium安装及环境配置

    Android SDK环境搭建Xmind思维导图 一 安装SDK先配置环境变量 1 创建 JAVA HOME D Program Files Java jdk1 8 0 05 2 创建 CLASSPATH D Program Files J
  • uniapp 拍照和从相册选择的弹窗

    1 在common创建一个vue 把下列代码复制进去
  • linux安装 MySQL 5.7

    我的是CentOS 7 虚拟机 因为之前一直安装失败 浪费了不少时间 特此记录一下正确安装步骤 亲测可用 1 下载命令 wget https dev mysql com get mysql57 community release el7 9
  • 微信小程序云开发——图片展示,视频播放案例

    这次是帮朋友写的一个简单的小程序 考虑到成本和页面简单的问题 我就决定用小程序云开发来进行开发 后来实际开发的时候发现 页面用到图片实在是太多 CDN流量一个月5G根本不够用 但是我看到了数据库一天可以免费访问5万次 我就决定用base64
  • 区块链存证原理

    公证通 Factom公证通 一本由共识算法维护的账本 网录科技 网录科技CTO汪波 区块链做存证的原理及方式 专注区块链技术开发 网录科技千万级天使轮融资 Blockstack 官网 https blockstack org 白皮书 htt
  • 用python编写daemon监控进程并自动恢复

    用python编写daemon监控进程并自动恢复 下面这个程序是用于python编写daemon监控进程并自动恢复 参考http pythonhosted org KiTT modules kitt daemon html usr bin
  • mac下 docker 挂载目录权限问题(operation not permitted)

    在docker run 或者 docker compose yml 添加privileged true privileged的含义是让容器内的root拥有真正root用户的权限 否则它只是一个名为root的普通用户 但是在macos下 即使
  • select函数使用时应注意的问题

    问题一 fd set和timeval的重置 select函数的使用一般分为以下几步 1 FD ZERO fd set 2 FD SET int fd fd set 3 int select int n fd set readfds fd s
  • VSCode批量代码比较

    前言 最近因为工作原因 需要找出一个工程里面修改过的地方 VSCode里自带代码比较功能 可以高亮代码不同的地方 然而手动一个个打开文件来比较显然非常的繁琐 在网上检索后发现并没有相关的方法 因此 为了解决这个问题 在查阅了官方文档后 决定
  • 操作系统笔记整理12——磁盘存储器的管理

    点此链接可跳转到 操作系统笔记整理 目录索引页 参考书籍 计算机操作系统 第四版 汤小丹等编著 文章目录 点此链接可跳转到 操作系统笔记整理 目录索引页 外存的组织方式 连续组织方式 链接组织方式 隐式链接 显示链接 FAT File Al
  • [架构之路-200]- 性能需求与性能分析:影响性能的主要因素

    目录 前言 关于性能的几点说明 第一章 性能需求 提出各种性能指标 1 1 可靠性或可用性 stablity 1 2 处理能力或效率 Performance 1 2 1 指标是吞吐率 1 2 2 指标是响应时间 1 2 3 指标是资源利用率