Caveman.Work Blog

  • Blog
  • Contact
  • Archives

使用置信区间量化应用程序启动时间

Posted on 2018-01-18

Last update 20190601

引言

指标量化是所有优化工作开展前首要确认的事情,只有当指标量化方法确认之后才能定义优化目标。

行业最普遍的做法是通过计算一组响应时间的算数平均值来量化响应时间,这种做法虽然简单但平均值受异常值的影响非常大。
这种结果往往会误导优化方向因为偶然出现的异常值会使数据失真。
为了避免这种情况本文中采用置信区间进行响应速度的量化与比较。
我们认为置信区间工具能够有效的量化响应时间(完成时间),其主要的贡献来自于考虑了异常值的存在及出现概率。

置信区间(Confidence interval)

置信区间详细的解释在此链接,如果大量数学公式使你迷惑的化你只需要记住如果样本分布符合t分布且满足若干个前提条件时可以使用置信区间量化响应时间。

t检验假设前提条件是:

  • 代表性:两组样本代表他们各自的总体。如果样本无法代表总体则无论采用哪种统计手段都无法弥补。这条前提看似简单但往往也容易忽略。
  • 独立性:两组样本彼此不相关。
  • 正态性:两组样本基本满足正态分布。
  • 方差齐性: 两组的方差大致相等(标准差)。

使用置信区间可以计算单个样本集的响应时间又可以对比不同样本集间的差异,特别是在量化优化提升时非常有用。以下分别展示通过使用置信区间工具分析单个响应时间与比较两组响应时间的差异。

使用置信区间分析单个样本集响应时间

以下为部分输出结果

Software Version: 110038382Build
Measured Data: 2460ms, 2430ms, 2471ms, 2416ms, 2373ms, 2627ms, 2492ms, 2504ms, 2503ms, 2523ms
Arithmetic mean: 2479.9ms Gemotric mean: 2479.04ms  Median: 2481.5ms  
Mode: 2373.0ms  SD: 69.31 CV: 0.03ms  SampleSize: 10
Confidence: 95% 2 T-Distribution  Range: 2440.96ms ~ 2539.84ms Volume: 98.88ms

表示有95%信心确认110038382Build版本的响应时间范围会处在2440.96ms到2539.84ms之间。

使用置信区间对比多个样本集响应时间

以下为部分输出结果

Software Version: 110038382Build
Measured Data: 1240.650ms, 1076.644ms, 1073.136ms, 1089.155ms, 1069.663ms, 1073.757ms, 1068.990ms, 1075.755, 1064.660ms, 1095.025ms
Confidence: 95% 2 T-Distribution  Range: 1061.32ms ~ 1133.12 ms Volume: 71.8ms

Software Version: 110038634Build
Measured Data: 1238.555ms, 1246.591ms, 1245.808ms, 1232.166ms, 1231.308ms, 1234.580ms, 1240.009ms, 1221.805ms, 1226.612ms, 1229.983ms
Confidence: 95% 2 T-Distribution  Range: 1230.72ms - 1242.21ms Volume: 11.49ms    

Diversity Percent 100.000% Range: -179.35ms ~ -104.65ms Volume: 74.7ms 

表示有100%信心确认两个样本集有差异并且版本110038382Build响应速度会快于版本110038634Build。

性能数据分析时常用的统计方法

Posted on 2018-01-18

Last update: 20190601

基本概念

进行性能测试与分析时首先需要确认的是:

  • 性能指标 (Performance Metric)
  • 性能数据表达 (Perforamcne Data Presentation)

假设我们想分析一段时间内CPU使用量的情况,这个过程称为数据集中趋势的分析。使用最广范计算起来也非常简单的是平均值计算也称呼为 算术平均值。
数学表达式为:
$$\overline {X}=\dfrac {\sum ^{n}_{i=1}x_{i}}{n}=\dfrac {x_{1}+x_{2}+\ldots x_{n}}{n}$$
即,将总和除以样本数量。

这种表达方式(数据集中趋势)简单易懂并普遍应用在各个领域但它在分析性能数据时有个致命缺点:
最终结果受样本中异常值的影响非常大

想象一下在一段时间内CPU都处于idle状态,但某时刻CPU使用量突然飙升并持续了两秒钟。计算这段时间内CPU使用量时峰值会被平均化并随着观察时间的变长其被平均化的程度更厉害。
在CPU飙升的两秒钟发生了事什么谁也不敢保证,最不希望看到的情况是用户发起的操作因CPU无法及时响应被阻塞在队列中。
经验上来看没有一个公式可以直接套用在各个场合中,所以以平均值表示数据集中趋势的方法也需要分场景使用。

数据离散性与分布性

在实践中我们需要量化一组样本以表示这一组样本的数据特性。
数据特性根据分析角度不同其计算方法也不尽相同。

样本数据间的离散性

标准差 Standard Deviation, SD
概念: 国家计量技术规范里的全称是“标准偏差”,用于量化样本与样本平均值间的远近程度。
一个较大的标准差意味着样本与其样本平均值间的差异较大,一个较小的标准差意味着样本与其样本平均值间的差异较小。

  • 总体标准差:$$SD=\sqrt {\dfrac {1}{N}\sum ^{N}_{i=1}\left( x_{i}-\mu \right) ^{2}}$$
  • 样本标准差:从总体中抽样得出样本,对其样本计算标准差来估摸整体标准差的方式。为了更接近总体标准差,经验上将样本数量减一。
    $$SD=\sqrt {\dfrac {1}{N-1}\sum ^{N}_{i=1}\left( x_{i}-\mu \right) ^{2}}$$
    适用场景: 用于描述样本中的数据离算术平均值的差异程度,其值越大越说明数据分散性较大。
    以应用计算启动速度为例,如果分散性较大则说明启动流程中干扰因素较多,用户所能感受到的表现不够一致(启动速度时快时慢)。 在系统调优/应用优化时需要优化两个数据指标:
  • 启动速度的稳定性(降低样本标准差)
  • 启动速度本身(降低样本算术平均值)

标准误 Standard Error of Mean, SE
概念: 用于描述对总体进行 不同采样数据间的离散性。此概念容易与标准差混淆,两者区别是:

  • 标准差:单次采样中数据间的离散性
  • 标准误:多次采样中不同样本集的平均值间的离散性

适用场景: 为了更完整的描述系统/应用性能稳定性,可以进行多次采样并计算其标准误。标准误越小越说明性能稳定,反之亦然。

变异(离散)系数 Coefficient of Variation
概念: 是概率分布离散程度的一个归一化量度,其定义为标准差与平均值之比。
比起标准差来,变异系数的好处是不需要参照数据的平均值。变异系数是一个无量纲量,因此在比较两组量纲不同或均值不同的数据时,应该用变异系数而不是标准差来作为比较的参考。

适用场景: 当衡量不同系统间的平均数差距时用到变异系数,还有一种系数称为标准分(Standard Score)用于量化同个系统中不同样本离变异系数间的差距。

样本数据间分布

算数平均 Arithmetic mean: 最简单且最常用的数据集中趋势量化方法,单独使用算是平均值量化数据的情况比较少。

加权平均 Weighted mean: 计算LoadAverage时用到此指标,将时间远近变量以权重的形式赋予不同样本。

调和平均 Harmonic mean: 假设一个链路由不同处理速度的子部件组成,计算其平均处理速度时采用此指标。

几何平均 Geometric mean: 当样本的scale为单位不同时几何平均值相比算数平均值更合理。
在量化系统整体性能提升时会采用几何平均值因为收集的参数可能是响应速度,队列长度,CPU使用量等不同维度的数据(每个指标的scale各不相同)。

百分位数 Percentile: 对用户影响最大的是异常值,通过百分位数获知异常分布情况。
响应速度的75百分位数为:50ms。 表示采样到的数据中75%的数值小于50,这个指标可以用于指导优化目标KPI。

中位数 Median: 游戏性能衡量指标FPS Stability中,采用了中位数计算界面刷新的稳定度。

写在最后

  • 本文介绍的内容是统计分析中的冰山一角但却是最基本,也是最常用的知识点。更高级的统计分析方法需要通过系统化的学习才能掌握。
  • 抓取了准确的性能指标数据的前提下只有使用了正确的数据分析方法其结果才具有现实意义。此两条是最基本的前置条件但往往也最容易忽略。如果事先明确这两点,可以避免不必要的试错时间。
  • 关于启动速度衡量方法请参考:使用置信区间量化应用程序启动时间。
12

Caveman.Work

Life is fantanstic!

12 posts
© 2019 Caveman.Work