性能之巅 第一章 绪论
性能是一门令人激动,富于变化同时又充满挑战的学科。本章介绍性能的领域,性能的人员和所做的事,分析的视角,面临的挑战。
1.1 系统性能
系统性能是对整个系统的研究,包括了所有的硬件组件和整个软件栈。所有的数据路径上和软硬件上所发生的事情都包括在内,都有可能影响性能。对于分布式系统来说,意味着多台服务器和多个微服务,需要有一张完整的示意图来说明软件架构之间的关系。
下图呈现的是单台服务器的通用软件栈,包括操作系统内核,数据库,应用程序层。
1.2 人员
性能测试是需要多方协作的事务,需要系统管理员,技术人员,应用开发者,数据库管理员和网络管理员。需要专业的性能测试人员做性能指标和新能的测试规划。
1.3 事情
性能领域包括了一下事情,按照理想顺序排序如下:
- 设置性能目标和建立性能模型
- 基于软件或硬件原型进行性能特征归纳
- 对软件的架构和开发代码进行性能分析
- 执行软件的功能测试
- 针对软件发布版本的基准测试
- 目标环境性能测试的验证
- 生产性能配置优化
- 监控生产环境中运行的软件
- 特性问题的性能分析
1.4 视角
性能的两种分析视角:负载分析(workload analysis)和资源分析(resource analysis),二者从不同的方向对软件栈做分析。
系统管理员作为资源的负责人,通常采用资源分析视角,应用程序开发人员,对最终实现的负载性能负责,通常采用负载分析视角,每种视角都有优势,尝试从两个角度都进行分析,是很好的选择。
1.5 性能的挑战
1.5.1 性能是主观的
性能好坏感知有可能是主观的,但是应该尽量客观的定义性能指标,通过延迟等指标。性能的好坏取决于应用开发人员和最终用户的性能预期
1.5.2 系统是复杂的
复杂性,主要是性能分析往往缺少一个明确的方向,从猜测开始,不断验证猜测。要理解产生的问题,必须理清组件之间的关系,故障有可能是连锁反应。也有可能修复一个问题只是把瓶颈推向了系统里其他地方,导致系统的整体性能并没有提升。
1.5.3 可能有多个问题并存
性能问题有可能并不是一个,辨别性能问题的重要程度,分析性能问题解决后带来的增速。性能的适合量化指标-延时
1.6 延时
延时,就是用于等待的时间。延时估计最大增速。下图例子,延时一共是100ms,80ms阻塞是等待磁盘读取,通过减少磁盘读取时间(使用缓存),可以最好的提升性能,并可以估计结果能够提高5倍速,20ms左右延时。