性能數據分析時常用的統計方法

基本概念

進行性能測試與分析時首先需要確認的是:

  1. 性能指標 (Performance Metric)

  2. 性能數據表達 (Perforamcne Data Presentation)

假設我們想分析一段時間內CPU使用量的情況,這個過程稱爲數據集中趨勢的分析。使用最廣範計算起來也非常簡單的是平均值計算也稱呼爲 「算術平均值」, 數學表達式爲:

image

即,「將總和除以樣本數量」

這種表達方式(數據集中趨勢)簡單易懂並普遍應用在各個領域但它在分析性能數據時有個致命缺點:「最終結果受樣本中異常值的影響非常大」

想象一下在一段時間內CPU都處於idle狀態,但某時刻CPU使用量突然飆升並持續了兩秒鐘。計算這段時間內CPU使用量時峯值會被平均化並隨着觀察時間的變長其被平均化的程度更厲害。

在CPU飆升的兩秒鐘發生了事什麼誰也不敢保證,最不希望看到的情況是用戶發起的操作因CPU無法及時響應被阻塞在隊列中。

經驗上來看沒有一個公式可以直接套用在各個場合中,所以以平均值表示數據集中趨勢的方法也需要分場景使用。

數據離散性與分佈性

在實踐中我們需要量化一組樣本以表示這一組樣本的數據特性。數據特性根據分析角度不同其計算方法也不盡相同。

樣本數據間的離散性

標準差

Standard Deviation, SD

「概念」:國家計量技術規範裏的全稱是“標準偏差”,用於量化樣本與樣本平均值間的遠近程度。一個較大的標準差意味着樣本與其樣本平均值間的差異較大,一個較小的標準差意味着樣本與其樣本平均值間的差異較小。

  1. 總體標準差:

總體標準差
  1. 樣本標準差:從總體中抽樣得出樣本,對其樣本計算標準差來估摸整體標準差的方式。爲了更接近總體標準差,經驗上將樣本數量減一。

樣本標準差
  1. 適用場景:用於描述樣本中的數據離算術平均值的差異程度,其值越大越說明數據分散性較大。以應用計算啓動速度爲例,如果分散性較大則說明啓動流程中干擾因素較多,用戶所能感受到的表現不夠一致(啓動速度時快時慢)。在系統調優/應用優化時需要優化兩個數據指標:

    1. 啓動速度的穩定性(降低樣本標準差)

    2. 啓動速度本身(降低樣本算術平均值)

標準誤

Standard Error of Mean, SE

「概念」:用於描述對總體進行 不同採樣數據間的離散性。此概念容易與標準差混淆,兩者區別是:

  1. 標準差:單次採樣中數據間的離散性

  2. 標準誤:多次採樣中不同樣本集的平均值間的離散性

「適用場景」:爲了更完整的描述系統/應用性能穩定性,可以進行多次採樣並計算其標準誤。標準誤越小越說明性能穩定,反之亦然。

變異(離散)係數

Coefficient of Variation

「概念」:是概率分佈離散程度的一個歸一化量度,其定義爲標準差與平均值之比。比起標準差來,變異係數的好處是不需要參照數據的平均值。變異係數是一個無量綱量,因此在比較兩組量綱不同或均值不同的數據時,應該用變異係數而不是標準差來作爲比較的參考。

「適用場景」:當衡量不同系統間的平均數差距時用到變異係數,還有一種係數稱爲標準分(Standard Score)用於量化同個系統中不同樣本離變異係數間的差距。

樣本數據間分佈

  1. 「算數平均」 Arithmetic mean: 最簡單且最常用的數據集中趨勢量化方法,單獨使用算是平均值量化數據的情況比較少。

  2. 「加權平均」 Weighted mean: 計算LoadAverage時用到此指標,將時間遠近變量以權重的形式賦予不同樣本。

  3. 「調和平均」 Harmonic mean: 假設一個鏈路由不同處理速度的子部件組成,計算其平均處理速度時採用此指標。

  4. 「幾何平均」 Geometric mean: 當樣本的scale爲單位不同時幾何平均值相比算數平均值更合理。在量化系統整體性能提升時會採用幾何平均值因爲收集的參數可能是響應速度,隊列長度,CPU使用量等不同維度的數據(每個指標的scale各不相同)。

  5. 「百分位數」 Percentile: 對用戶影響最大的是異常值,通過百分位數獲知異常分佈情況。響應速度的75百分位數爲:50ms。表示採樣到的數據中75%的數值小於50,這個指標可以用於指導優化目標KPI。

  6. 「中位數」 Median: 遊戲性能衡量指標FPS Stability中,採用了中位數計算界面刷新的穩定度。

寫在最後

本文介紹的內容是統計分析中的冰山一角但卻是最基本,也是最常用的知識點。更高級的統計分析方法需要通過系統化的學習才能掌握。

抓取了準確的性能指標數據的前提下只有使用了正確的數據分析方法其結果才具有現實意義。此兩條是最基本的前置條件但往往也最容易忽略。如果事先明確這兩點,可以避免不必要的試錯時間。

關於啓動速度衡量方法請參考:使用置信區間量化應用程序啓動時間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章