1. 软件的性能:
多 - 吞吐量大
快 - 请求响应快,延迟低
好 - 扩展性好,稳定性好
省 - 资源消耗少,利用率高
2. 性能问题是一个整体性问题,
单个模块->单独的软件->单机系统->服务集群->服务提供
单点的性能、多点配合协调
3. 难点在于在哪里做优化?做怎样的优化?
a 软硬结合
b 理论联系实际,有丰富的理论知识可以合理的推理,有强的动手能力就能快速、准确的验证我们的猜测
c 不仅能性能测试,还可以性能分析和性能优化
4.性能工程三定律
a 帕累托法则(八二法则)-
b 阿姆达尔定律,科学计算中加速,用多处理器进行并行时,总体程序受限于程序所需的串行百分比。
指导:
优先加速占用时间最多的模块,因为这样可以最大限度的提升加速比
对一个性能的优化计划可以做出准确的效果评估和最大的系统的性能预测。
c 利特尔法则,一个稳定系统中,长期的平均客户人数N等于客户抵达速度X乘以客户在这个系统平均处理时间w,
N=XW,系统容量
指导:
帮助我们设计测试环境
帮助我们验证测试结果的正确性
平均值:算术平均值(n个数相加除以n),几何平均值(n个数相乘,开n次方)
中位数,四分位数,百分位数,就是排序,取中间值、四等分值、百等分值
方差、标准差,变量的离散程度,该变量离期望值的差距
正态分布
5.一个性能指标,按照时间顺序得到观测值,可以看做一个时间序列。
如何获得时间序列的数据规律和趋势?线性回归分析。
系统和服务的瓶颈,也就是最制约系统性能扩展的资源。
数据分析应该注意点:
a 数据的相关和因果关系
b 数据的大小和趋势
c 数据干净与否
d 对性能数据内在关系的理解
6.数据展示方式
数据展示的目的:
a 向上级报告性能趋势和流量预测的结果
b 向运维部门描述性能问题的根本原因分析
c 先开发部门建议性能提升和代码优化
数据图表种类:
表格
线图 -- 一个或多个变量在一个时间段的变化趋势,已经相关性
PDF和CDF图
面积图
柱状图和条形图
散点图、气泡图
饼图、圆环图 - 比例数据、百分比直观,一般不大于6个部分
树形图
热图、热表,将图或者表中标不同颜色,更具备识别性、直观性
存储相关指标:
a IO读写延迟
b IO带宽
c IOPS 每秒可以读写多少个小的随机IO
CPU相关指标:
a CPI(cycles per instruction),IPC(instructions per cycle)
b MIPS = 主频*IPC,理论值
c 缓存, L1 L2 L3(LLC,last level
cache)
操作系统相关指标:
a 指令分支延迟, Branch Mis
b 互斥锁加锁、解锁,每一个操作一般需要几十个时钟周期
c 上下文切换