性能工程高手课
庄振运
Facebook 性能优化和容量管理高级专家
24631 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 40 讲
性能工程高手课
15
15
1.0x
00:00/00:00
登录|注册

06 | 性能数据的分析:如何从大量数据中看出想要的信号?

总结
数据分析的教训和陷阱
对不同时间序列的分析
对一个时间序列的分析
性能数据分析的目的
算法的时间复杂度
性能数据分析

该思维导图由 AI 生成,仅供参考

你好,我是庄振运。
我们这一讲来谈谈如何分析我们所得到的性能数据。现代的应用程序和互联网服务系统都比较复杂,要关心的性能参数也很多,所以你从各种渠道得到的性能相关的数据量往往很大。那么要如何从大量的数据中找出我们所关心的特征和规律呢?这就需要你对数据做各种分析和对比了。
这一讲要解决的核心问题就是:如何从大量数据中看出想看的信号?
当人沉浸在大量数据中时,是很容易迷失的。而“不识庐山真面目”的原因,当然是“只缘身在此山中”了。但这不能作为借口,我们需要练就“慧眼识珠”的本领,做到对各种性能数据一目了然,才能够做出一针见血的分析。
为了帮助你练就这样的本领,今天我们首先讲一下常见的算法复杂度和性能分析的目的,然后针对一个性能指标来分析,再延伸到对多个性能指标进行对比分析,最后谈谈进行数据分析的几个教训和注意点。

算法的时间复杂度

先简单地聊一下算法的时间复杂度(Time Complexity)。复杂度一般表示为一个函数,来定性描述该算法的期待运行时间,常用大 O 符号表述。
考虑程序和算法的时间复杂度时,大家通常关注的是某个解决方案属于哪个时间复杂度。具体来讲,有六种复杂度是比较普遍的,这里按照从快到慢的次序依次介绍:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了如何从大量性能数据中找出所关心的特征和规律。首先介绍了常见的算法复杂度,包括常数时间、对数时间、线性时间、线性对数时间、二次时间和指数时间,以及它们的增长速度。接着阐述了性能数据分析的目的,包括判断数据的正常与否、趋势预测、根因分析等。对于时间序列的分析,提出了线性回归分析、分类、聚类和决策树等方法。强调了对不同时间序列的分析,包括研究时间序列的相关性和协方差。文章还提到了性能数据分析中需要注意的陷阱和教训,包括数据的相关和因果关系、数据的大小和趋势、数据的干净与否以及对性能数据内在关系的理解。总的来说,本文内容丰富,涵盖了性能数据分析的多个方面,对于需要从大量数据中提取关键信息的读者具有重要参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《性能工程高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(8)

  • 最新
  • 精选
  • Q
    做运维的免不了要经常和性能数据打交道,往往很多时候,不细致了解数据内在含义,仅靠字面意思,往往很容易走入误区。比如CPU IO Waite,当这个值升高的时候,大多数人,包括我自己,会认为系统IO出现瓶颈问题了。直到我阅读了一篇关于CPU IO Waite的文章之后,我才明白,这个值不一定说明当前系统IO出现问题。简单来说,能导致CPU IO Waite值升高,有两个条件: 1.系统仍有未完成的IO正在处理,这个IO处理时间可能会很长,但不一定说明磁盘IO到了瓶颈 2.进程因为等待IO完成而处于不可中断的睡眠状态,即CPU处于空闲状态中

    作者回复: 赞!

    2019-12-09
    3
    12
  • han
    定位性能问题需要对知识有全面的认识,说一下自己的理解: - 理解应用系统各个模块对资源消耗的偏重(有的是磁盘IO、有的是内存、有的是CPU); - 理解操作系统各类性能指标的含义,大部分情况应该是Linux(内存、CPU、Disk、网络等) - 熟知操作系统各类性能参数工具(当然现在很多运维工具采集的也很全面了) - 了解各类操作的常规开销,比如内外网延迟、应用的CPU、IO使用率、数据库延迟 - 应用系统的外部依赖分析,很多时候问题是由外部依赖出现问题导致的,比如数据库、磁盘、网络、缓存等
    2019-12-18
    4
  • A君
    简单地说,如果是单一数据分析,重点是看它的趋势,如果是多项数据分析,就要看它们的相关性。
    2020-06-11
    3
  • Shupeng Xu
    “举个简单例子,Linux 系统的空闲内存其实就是一条时间序列,它或许显示快到 0 了,看起来性能问题出在这里。但是稍微了解 Linux 系统内存管理知识的人,就知道这个指标非常不可靠” 老师能否解释一下这里?不是很明白,谢谢。
    2019-12-27
    3
    2
  • 西西弗与卡夫卡
    印象最深的是一个反向例子。事先估计用户量太大,导致过度设计,到下线都没有达到预计的百分之一,反而增加了开发周期。
    2019-12-09
    2
  • 许童童
    有了数据,只是第一步,如何分析,得出性能分析的结果,这一步更为重要,先了解理论,再做实践,希望跟着老师,能一步步探究出性能分析的奥妙。
    2019-12-09
    2
  • 追风筝的人
    p(A) * p(B|A) = p(B) *p(A|B)
    2022-06-14
    1
  • 蔡森冉
    关于时间复杂度,刚刚好这两天遇到过:就是求1到n的累加和若使用常见的for循环来做那时间复杂度就是O(n),假如我们使用y=n(n+1)/2来计算那么时间复杂度就变为O(1)
    2020-04-23
    1
收起评论
显示
设置
留言
8
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部