PS:差不多完成了这一轮性能培训相关PPT的编写,一个最艰苦的部分也有了起色。
对于每一个做性能分析的来说,不可跳过的一个提升阶段是对数据的理解。
当初学者经历了工具的使用之后,下一步就面对了工具产出的数据,所以看得懂数据是必须的一个过程。
性能分析中的数据理解:
在数据理解上,有两个阶段:
- 知道计数器的含义:这个阶段看似简单,但能记得住那么多performance counter的人并不多,这个记不住倒是没有太大关系,遇到就查,多遇几次自然就记住了;
- 知道计数值的含义:这个阶段大部分人都需要好几年的时间才能完全掌握常规的计数值,之所以说只能掌握常规的计数值是因为有一些数值的联动关系不是那么容易碰得到。比如说CPU模式对TPS和RT的影响,大部分人都是拿到硬件的时候都是Full performance mode了,并不关心还有没有其他的模式;比如说网络计数值导致的TPS有规律或无规律的抖动。这些场景都要求做性能分析的在看到某个计数值的时候能有直接的反应,但是这一点非常难。因为数值的高低对大部分人来说就是一个谜,经常有人问这样的问题,这个值是高还是低,应该说只要不是一起工作的人都说不上来某个值是高还是低(当然对一些非常清晰的场景是比较容易判断的),合理还是不合理。
能经过数据理解的这一层次,我觉得才算是到了中级性能分析工程师的能力。
性能分析中的数学基础:
在经历了数据理解的过程之后,下一步就是性能分析中遇到的一些数学理论知识了。因为有些值不是直接显示出来的,而是计算出来的。像:平均值、最大值、最小值、标准方差等。这几个常见的还比较容易理解。
但是再复杂一些的比如说:请求的分布模型(比如说:泊松分布、正态分布等等);响应时间的分布模型(比如说:指数/负指数分布、双参数指数分布等);再加上做全局性能分析时要考虑的排队模型(到达率、服务强度、服务率、队列长度、平均等待时间、平均响应时间、排队规则、卡方检验之类的知识)。这些也同样是需要掌握的,当慢慢的把这些内容都掌握之后,就能更好的让自己的系统级、架构级思路更完整。
数学基础是提高性能分析的一个角度。当然经验也是一个角度。
从经验学到科学的过程就是总结固化的过程。
应该说不止是性能测试、性能调优分析领域需要这些技能,其他领域同样需要这些基础技能。