06 | 性能数据的分析:如何从大量数据中看出想要的信号?
庄振运
该思维导图由 AI 生成,仅供参考
你好,我是庄振运。
我们这一讲来谈谈如何分析我们所得到的性能数据。现代的应用程序和互联网服务系统都比较复杂,要关心的性能参数也很多,所以你从各种渠道得到的性能相关的数据量往往很大。那么要如何从大量的数据中找出我们所关心的特征和规律呢?这就需要你对数据做各种分析和对比了。
这一讲要解决的核心问题就是:如何从大量数据中看出想看的信号?
当人沉浸在大量数据中时,是很容易迷失的。而“不识庐山真面目”的原因,当然是“只缘身在此山中”了。但这不能作为借口,我们需要练就“慧眼识珠”的本领,做到对各种性能数据一目了然,才能够做出一针见血的分析。
为了帮助你练就这样的本领,今天我们首先讲一下常见的算法复杂度和性能分析的目的,然后针对一个性能指标来分析,再延伸到对多个性能指标进行对比分析,最后谈谈进行数据分析的几个教训和注意点。
算法的时间复杂度
先简单地聊一下算法的时间复杂度(Time Complexity)。复杂度一般表示为一个函数,来定性描述该算法的期待运行时间,常用大 O 符号表述。
考虑程序和算法的时间复杂度时,大家通常关注的是某个解决方案属于哪个时间复杂度。具体来讲,有六种复杂度是比较普遍的,这里按照从快到慢的次序依次介绍:
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了如何从大量性能数据中找出所关心的特征和规律。首先介绍了常见的算法复杂度,包括常数时间、对数时间、线性时间、线性对数时间、二次时间和指数时间,以及它们的增长速度。接着阐述了性能数据分析的目的,包括判断数据的正常与否、趋势预测、根因分析等。对于时间序列的分析,提出了线性回归分析、分类、聚类和决策树等方法。强调了对不同时间序列的分析,包括研究时间序列的相关性和协方差。文章还提到了性能数据分析中需要注意的陷阱和教训,包括数据的相关和因果关系、数据的大小和趋势、数据的干净与否以及对性能数据内在关系的理解。总的来说,本文内容丰富,涵盖了性能数据分析的多个方面,对于需要从大量数据中提取关键信息的读者具有重要参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《性能工程高手课》,新⼈⾸单¥59
《性能工程高手课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(8)
- 最新
- 精选
- Q做运维的免不了要经常和性能数据打交道,往往很多时候,不细致了解数据内在含义,仅靠字面意思,往往很容易走入误区。比如CPU IO Waite,当这个值升高的时候,大多数人,包括我自己,会认为系统IO出现瓶颈问题了。直到我阅读了一篇关于CPU IO Waite的文章之后,我才明白,这个值不一定说明当前系统IO出现问题。简单来说,能导致CPU IO Waite值升高,有两个条件: 1.系统仍有未完成的IO正在处理,这个IO处理时间可能会很长,但不一定说明磁盘IO到了瓶颈 2.进程因为等待IO完成而处于不可中断的睡眠状态,即CPU处于空闲状态中
作者回复: 赞!
2019-12-09312 - han定位性能问题需要对知识有全面的认识,说一下自己的理解: - 理解应用系统各个模块对资源消耗的偏重(有的是磁盘IO、有的是内存、有的是CPU); - 理解操作系统各类性能指标的含义,大部分情况应该是Linux(内存、CPU、Disk、网络等) - 熟知操作系统各类性能参数工具(当然现在很多运维工具采集的也很全面了) - 了解各类操作的常规开销,比如内外网延迟、应用的CPU、IO使用率、数据库延迟 - 应用系统的外部依赖分析,很多时候问题是由外部依赖出现问题导致的,比如数据库、磁盘、网络、缓存等2019-12-184
- A君简单地说,如果是单一数据分析,重点是看它的趋势,如果是多项数据分析,就要看它们的相关性。2020-06-113
- Shupeng Xu“举个简单例子,Linux 系统的空闲内存其实就是一条时间序列,它或许显示快到 0 了,看起来性能问题出在这里。但是稍微了解 Linux 系统内存管理知识的人,就知道这个指标非常不可靠” 老师能否解释一下这里?不是很明白,谢谢。2019-12-2732
- 西西弗与卡夫卡印象最深的是一个反向例子。事先估计用户量太大,导致过度设计,到下线都没有达到预计的百分之一,反而增加了开发周期。2019-12-092
- 许童童有了数据,只是第一步,如何分析,得出性能分析的结果,这一步更为重要,先了解理论,再做实践,希望跟着老师,能一步步探究出性能分析的奥妙。2019-12-092
- 追风筝的人p(A) * p(B|A) = p(B) *p(A|B)2022-06-141
- 蔡森冉关于时间复杂度,刚刚好这两天遇到过:就是求1到n的累加和若使用常见的for循环来做那时间复杂度就是O(n),假如我们使用y=n(n+1)/2来计算那么时间复杂度就变为O(1)2020-04-231
收起评论