パヌセンタむル蚈算が期埅どおりに機胜しないのはなぜですか

倚くの堎合、顧客はp99メトリック99パヌセンタむルに぀いお質問したす。



これは間違いなく合理的な芁求であり、VividCortexに同様の機胜を远加する予定ですこれに぀いおは埌で説明したす。 しかし同時に、顧客がそれに぀いお尋ねるずき、圌らは非垞に具䜓的な䜕か-問題になる可胜性のあるものを意味したす。 䞀郚のメトリックの99パヌセンタむルを求めおいるのではなく、99パヌセンタむルのメトリックを求めおいたす 。 これはGraphiteなどのシステムでは䞀般的ですが、このようなシステムでは期埅される結果が埗られたせん。 この投皿では、パヌセンタむルに぀いおの誀解、誀解の正確な範囲、この堎合にあなたができるこずに぀いお説明したす。



これは、 Baron Schwartzによっお曞かれた蚘事の翻蚳です。



途䞭あきらめたす



過去数幎間で、倚くの人々が、平均倀による監芖には倚くの問題があるずいう事実に぀いおすぐに話し始めたした。 時間が経぀に぀れお、モニタリングのパラメヌタヌの平均倀が生成され、厳密な分析なしに採甚されたため、このトピックが積極的に議論され始めおいるのは良いこずです。



平均は問題であり、モニタリングに関しおはほずんど圹に立ちたせん。 平均倀だけを芋るず、システムに最も倧きな圱響を䞎えるデヌタを芋逃す可胜性が高くなりたす。問題を探す堎合、定矩䞊特に重芁なむベントは倖れ倀になりたす。 排出量の堎合、平均倀には2぀の問題がありたす。







したがっお、システムのメトリックを゚ラヌで平均するず、最悪の事態が組み合わされたす。システムの異垞な状態をすでに芳察しおいるが、同時に異垞なものは䜕も芋られたせん。



ちなみに、ほずんどの゜フトりェアシステムの䜜業は、極端な排出量でいっぱいです。



たれに、リク゚ストの送信頻床がどれだけ䜎いかを正確に瀺すため、 ロングテヌルの倖れ倀を発生頻床別に衚瀺するこずは非垞に重芁です。 真ん䞭のものだけで䜜業しおいる堎合、これは衚瀺されたせん。



AmazonのWerner VogelsがreInventのオヌプニングで述べたように、平均倀からわかる唯䞀のこずは、顧客の半分にさらに悪いサヌビスを提䟛するこずです。 この蚘述は粟神的には完党に正しいものですが、珟実を完党に反映しおいるわけではありたせん。䞭倮倀50パヌセンタむルに぀いお蚀う方が正しいでしょう-瀺されたプロパティを提䟛するのはこのメトリックです



Optimizelyは、数幎前にこの投皿に投皿を投皿したした 。 圌女は平均が予期せぬ結果に぀ながる理由を完璧に説明しおいたす。

「平均は非垞に理解しやすいものですが、極端な誀解を招く可胜性もありたす。 なんで 平均応答時間を監芖するこずは、病院の平均気枩を枬定するようなものだからです。 本圓に気になるのは、各患者の䜓枩であり、特にそもそもどの患者があなたの助けを必芁ずしおいるのかです。」





ブレンダン・グレッグもこれをうたく説明したした 

「統蚈的特性ずしお、実際のアプリケヌションの平均倀算術平均を含むには倚くの利点がありたす。 ただし、倀の分垃を蚘述する機胜はそれらの1぀ではありたせん。





パヌセンタむルに転送



パヌセンタむル分䜍点-広矩の意味は、平均倀のこの根本的な欠点を克服する手段ずしお称賛されるこずがよくありたす。 99パヌセンタむルの意味は、デヌタセット党䜓぀たり、システム枬定倀のコレクション党䜓を収集しお䞊べ替え、最倧の1を砎棄し、残りの最倧倀を取埗するこずです。 結果の倀には2぀の重芁なプロパティがありたす。



  1. これは、99のケヌスで取埗される倀の最倧倀です。 たずえば、この倀がWebペヌゞの読み蟌み時間の枬定倀である堎合、サヌビスぞのアクセスの少なくずも99で取埗されるサヌビスの最悪のケヌスを反映しおいたす。
  2. この倀は、枬定誀差を含むさたざたな理由で発生する非垞に匷い倖れ倀に察しお耐性がありたす。




もちろん、正確に99を遞択する必芁はありたせん。 広範なオプションは、90番目、95番目、99.9番目さらには9個のパヌセンタむルです。



そしお今、あなたは仮定したす平均は悪く、パヌセンタむルは優れおいたす-パヌセンタむルをメトリックによっお蚈算し、時系列ストレヌゞ TSDB のためにストレヌゞに保存したしょうか しかし、それはそれほど単玔ではありたせん。



TSDBはメトリックをどのように正確に保存および凊理したすか



デヌタ時系列のパヌセンタむルには倧きな問題がありたす。 問題は、ほずんどのTSDBが、枬定されたむベントのサンプル党䜓ではなく、時間間隔で集玄されたメトリックをほが垞に保存するこずです。 その埌、TSDBは倚くのケヌスでこれらのメトリックを長期的に平均したす。 最も重芁なこず







そしおここに問題がありたす。 あなたは再び䜕らかの圢で平均化を扱っおいたす。 新しいスケヌルでパヌセンタむルを蚈算するには、むベントの完党なサンプルが必芁であるため、パヌセンタむル平均は機胜したせん。 実際、すべおの蚈算は正しくありたせん。 パヌセンタむル平均化は意味がありたせん。 この結果はarbitrary意的かもしれたせん。これに぀いおは埌で説明したす。







残念ながら、䞀般的なオヌプン゜ヌスの監芖補品の䞭には、パヌセンタむルメトリックの䜿甚を促すものがあり、実際には保存時にリサンプリングされたす。 たずえば、StatsDを䜿甚するず、目的のパヌセンタむルを蚈算し、foo.upper_99のような名前のメトリックを生成し、Graphiteで保存するために定期的にドロップしたす。 芖聎䞭の時間の離散性が倉わらない堎合はすべお問題ありたせんが、ずにかく起こるこずがわかりたす。



これらすべおの蚈算がどのように行われるかに぀いおの誀解は非垞に䞀般的です。 このStatsD GitHubチケットのコメントスレッドを読むず、これがよくわかりたす 。 そこには、珟実ずは䜕の関係もないこずに぀いお話しおいる仲間もいたす。





-スヌゞヌ、12 + 7はいくらですか

-億

-ありがずう

「...ええ、でもそのようなこずは真実ではないのですか」

-圌女は3 + 4に぀いお同じこずを蚀った





おそらく、問題を特定する最も簡単な方法はこれを蚀うこずです。 パヌセンタむルは枬定倀のコレクションから蚈算され、このコレクションが倉曎されるたびに完党に再カりントする必芁がありたす。 TSDBはさたざたな時間間隔で定期的にデヌタを平均したすが、同時に元の枬定サンプルを保存したせん。



パヌセンタむルを蚈算する他の方法



しかし、パヌセンタむルの蚈算で元のむベントを完党に遞択する必芁がある堎合たずえば、各Webペヌゞがロヌドされるたびに、この堎合、倧きな問題が発生したす。 「ビッグデヌタ」の問題-そう蚀う方が正確です。 そのため、パヌセンタむルの真の蚈算には非垞にコストがかかりたす。



およそのパヌセンタむルを蚈算する方法はいく぀かありたすが、枬定倀の完党なサンプルを保存しおから、それらを䞊べ替えお蚈算するのずほが同じですさたざたな分野で倚くの科孊的研究を芋぀けるこずができたす。





これらの決定のほずんどの本質は、䜕らかの方法でコレクションの分垃を抂算するこずです。 分垃情報から、おおよそのパヌセンタむルやその他の興味深いメトリックを蚈算できたす。 Optimizelyのブログからも、応答時間の分垃ず、平均および99パヌセンタむルの興味深い䟋を瀺すこずができたす。







おおよその分垃を蚈算しお保存する方法は倚数ありたすが、ヒストグラムは比范的単玔であるため、特に人気がありたす。 䞀郚の監芖゜リュヌションはヒストグラムをサポヌトしおいたす。 たずえば、 Circonusはその1぀です。 CirconusのCEO、Theo Schlossnagleは、しばしば棒グラフの利点に぀いお曞いおいたす。



最終的に、むベントの元のコレクションの分垃を持぀こずは、パヌセンタむルの蚈算に圹立぀だけでなく、パヌセンタむルが蚀えないこずを特定するこずもできたす。 結局、パヌセンタむルは、デヌタに関する倚くの情報を反映しようずしおいるだけの数字です。 Theoが「99番目は平均よりも良くない」ずツむヌトしたずきは、パヌセンタむルファンは、パヌセンタむルがビュヌの平均倀よりもはるかに有益であるこずに同意するので、ここたで行きたせん。元のサンプルのいく぀かの重芁な特性。 それにもかかわらず、パヌセンタむルは、より詳现なヒストグラムほどデヌタに関する情報を提䟛したせん。 䞊のOptimizelyの図には、単䞀の数倀でできるよりもはるかに倚くの情報が含たれおいたす。



TSDBのさらに優れたパヌセンタむル



TSDBでパヌセンタむルを蚈算する最良の方法は、範囲メトリックを収集するこずです。 倚くのTSDBは、実際にはタむムスタンプで゜ヌトされたキヌず倀のコレクションであり、ヒストグラムを保存する機胜がないため、このような仮定をしたした。



範囲メトリックは、経時的な䞀連のヒストグラムず同じ機胜を提䟛したす。 必芁なのは、倀を範囲で区切る制限を遞択し、範囲ごずにすべおのメトリックを個別に蚈算するこずです。 メトリックは、ヒストグラムの堎合ず同じになりたす。぀たり、倀がこの範囲に入ったむベントの数です。



しかし、䞀般的に、分離する範囲を遞択するのは簡単なこずではありたせん。 通垞、適切な遞択は、察数的に环進的なサむズを持぀範囲たたは蚈算を高速化するために粗い倀のストレヌゞを提䟛する範囲ですスムヌズにカりントダりンしないずいう犠牲を払っお。 ただし、同じ寞法の範囲が適切な遞択ずなるこずはほずんどありたせん。 このトピックの詳现に぀いおは、 Brendan Greggを参照しおください。



栌玍されるデヌタの量ずその正確床の間には基本的な矛盟がありたす。 ただし、範囲の倧たかな割り圓おでも、平均よりもデヌタの衚珟が優れおいたす。 たずえば、 Phusion Passenger Union Stationには、11の範囲にわたる範囲遅延メトリックが衚瀺されたす。 むラストが芖芚的であるずはたったく思えたせん。実際、y軞に沿った倀はやや玛らわしく、実際には2D非線圢の方法で投圱された3Dグラフです。それでも、平均倀よりも倚くの情報を提䟛したす。







䞀般的なオヌプン゜ヌス補品を䜿甚しおこれをどのように実装できたすか 䞊の図のように、範囲を定矩し、スタックの圢匏で列を䜜成する必芁がありたす。



しかし、これらのデヌタからパヌセンタむルを蚈算するこずは今でははるかに困難になりたす。 倧きいものから小さいものぞず逆の順序ですべおの範囲を調べ、途䞭でむベントの数のカりンタヌを合蚈する必芁がありたす。 合蚈の1を超えるむベント数の合蚈を取埗するずすぐに、99パヌセンタむルの倀を栌玍するのはこの範囲です。 ここには倚くのニュアンスがありたす-緩い平等; 境界線のケヌスの凊理方法、パヌセンタむルに遞択する倀䞊たたは䞋の範囲、たたは䞭倮にある、あるいはすべおの人に重きを眮いおいる



䞀般に、このような蚈算は非垞に混乱する可胜性がありたす。 たずえば、99パヌセンタむルを蚈算するために100の範囲が必芁であるず想定できたすが、実際には状況は異なる可胜性がありたす。 範囲が2぀しかなく、すべおの倀の1が䞊限範囲に該圓する堎合、99のパヌセンタむルなどを取埗できたす。 これが奇劙に思える堎合は、䞀般に倉䜍倀を怜蚎しおください。倉䜍倀の本質を理解するこずは非垞に䟡倀があるず思いたす。



それですべおが単玔ではありたせん。 これは理論䞊は可胜ですが、実際には、範囲メトリックによっおおおよそのパヌセンタむルを取埗するために必芁な皮類のク゚リをストアがサポヌトしおいるかどうかに倧きく䟝存したす。 これが可胜なリポゞトリを知っおいる堎合-コメントを曞いおください著者のサむトで- 箄 



良いこずは、Graphiteのようなシステム぀たり、すべおのメトリックを自由に平均化およびリサンプリングできるずいう事実に䟝存しおいるシステムでは、すべおの範囲メトリックがこれらのタむプの倉換に察しお完党に耐性があるこずです。 すべおの蚈算は時間に関しお可換であるため、正しい倀を取埗できたす。



パヌセンタむルの倖偎ヒヌトマップ



パヌセンタむルは、平均ず同様に単なる数字です。 平均はサンプルの重心を衚瀺し、パヌセンタむルはサンプルの指定された割合の䞊䜍レベルのマヌクを瀺したす。 パヌセンタむルは、浜蟺の波の痕跡ず考えおください。 しかし、パヌセンタむルは平均ずしおの䞭倮トレンドだけでなく、䞊䜍レベルを反映しおいたすが、サンプル党䜓を説明する分垃ず比范するず、ただそれほど有益で詳现ではありたせん。



ヒヌトマップがありたす。これは、実際には時間ずずもにヒストグラムが回転しお敎列され、倀がカラヌで衚瀺される3Dグラフです。 繰り返しになりたすが、Circonusはヒヌトマップを芖芚化する玠晎らしい䟋です。







䞀方、私が知っおいるように、Graphiteはただ範囲メトリックを䜿甚しおヒヌトマップを䜜成する機胜を提䟛しおいたせん。 私が間違っおいお、䜕らかのトリックを䜿甚しおこれを行うこずができる堎合-お知らせください蚘事の著者に- 箄Per。 。



ヒヌトマップは、特に遅延の圢状ず密床の衚瀺にも最適です。 遅延のヒヌトマップの別の䟋は、 高速ストリヌミング配信の抂芁です。







すでに原始的だず思われるいく぀かの叀代のツヌルでさえ、ヒヌトマップを䜜成できたす。 たずえば、Smokepingは調光を䜿甚しお倀の範囲を衚瀺したす。 明るい緑は平均を瀺したす。







しかし、パヌセンタむルメトリックを保持するのは本圓に悪いのでしょうか。



さお、考慮すべきすべおの困難ずニュアンスを述べた埌、おそらくパヌセンタむルを衚瀺するための叀き良きStatsDメトリックupper_99は、それほど悪くはないようです。 最終的には、非垞にシンプルで䟿利ですぐに䜿甚できたす。 このメトリックは本圓に悪いのですか



それはすべお状況に䟝存したす。 倚くのナヌスケヌスでは、圌らは玠晎らしいです。 いずれにせよ、パヌセンタむルが必ずしもデヌタを適切に説明するずは限らないずいう事実に自分自身を制限するずいうこずです。 しかし、これがあなたにずっお重芁でない堎合、あなたにずっお最倧の問題は、これらのメトリックのオヌバヌサンプリングです。これは、間違ったデヌタを芳察するこずを意味したす。



しかし、 枬定は䞀般に間違ったものです -いずれにせよ、さらに、本質的に間違ったものの倚くはそれにもかかわらず䜕らかの圢で有甚です。 たずえば、人々が芋おいる指暙のかなりの半分が、実際にはすでに故意に歪められおいるず蚀えたす。 たずえば、システムの負荷平均は目安です。 このパラメヌタヌは玛れもなく有甚ですが、 この「゜ヌセヌゞ」がどのように䜜られおいるかを正確に知るずすぐに、おそらく最初にショックを経隓するでしょう。 LAの蚈算に関するHabréの優れた蚘事がありたす- およそPer 同様に、倚くのシステムは同様に、パフォヌマンスのさたざたなメトリックを圧瞮しお衚瀺したす。 Cassandraメトリックの倚くは、MetricsラむブラリCoda Haleの結果であり、実際には倚くの人が匷い嫌悪感を持っおいる浮動平均 指数加重浮動平均 です。



しかし、パヌセンタむルメトリックに戻りたす。 p99メトリックを保存しおから、長期間にわたっお平均バヌゞョンを枛らしお衚瀺するず、「正しい」ずは限らず、グラフが99パヌセンタむルの実際の倀ずは非垞に異なる堎合もありたすが、間違っおいたすが、必ずしもこのスケゞュヌルを目的に䜿甚できないこずを意味するわけではありたせん。぀たり、ナヌザヌずアプリケヌションの盞互䜜甚における最悪のケヌスを理解するためです。



そのため、すべおはケヌスに䟝存したす。 パヌセンタむルがどのように機胜し、パヌセンタむルの平均をずるのが間違っおおり、それが自分に合っおいるこずを理解しおいる堎合、パヌセンタむルを保存するこずは蚱容でき、さらには有甚です。 しかし、ここであなたは道埳的なゞレンマを導入しおいたすこのアプロヌチでは、疑いを持たない人々おそらくあなたの同僚さえを倧いに混乱させるこずができたす。 StatsDのチケットに察するコメントをもう䞀床芋おください。プロセスの本質に察する理解の欠劂が盎接感じられたす。



あたり良くないアナロゞヌを描いおみたしょう。私は時々、他の人に決しお提案しなかったであろう冷蔵庫からのものを䜿甚したす。 劻に聞いおみおください。 著者の劻- 玄。 。 「アルコヌル」ず曞かれたボトルにメタノヌルが含たれおいるず、倱明したす。 しかし、「このボトルにはどのような皮類のアルコヌルが含たれおいたすか」



VividCortexは正確に䜕をしたすか



珟時点では、TSDBはヒストグラムをサポヌトしおおらず、パヌセンタむルの蚈算ず保存もサポヌトしおいたせんただし、必芁に応じおメトリックを送信するこずもできたす 。



将来的には、高解像床の範囲メトリック、぀たり倚数の範囲を持぀メトリックの保存をサポヌトする予定です。 ほずんどの範囲が空である可胜性が高く、TSDBがスパヌスデヌタを効率的に凊理できるため、同様の䜕かを実装できたすたた、時間をかけお平均化した埌、それほどスパヌスではなくなる可胜性が高い- 箄Per。 。 これにより、1秒間に1回ヒストグラムを䜜成できたすすべおのデヌタは1秒の解像床で保存されたす。 範囲メトリックは、蚭定で指定された期間デフォルトでは3日間に蚭定されたすの埌、1分の解像床に再蚘述されたす。 この堎合、範囲メトリックは数孊的な問題なしに1分の解像床にリサンプリングされたす。



そしお、最終的に、これらの範囲メトリックから、任意のパヌセンタむルを取埗し、゚ラヌの掚定倀を衚瀺し、ヒヌトマップを衚瀺し、分垃曲線を衚瀺する機胜を取埗したす。



すぐに実装するこずはできず、゚ンゞニアの倚倧な努力が必芁になりたすが、䜜業はすでに始たっおおり、システムはすでにこれらすべおを念頭に眮いお開発されおいたす。 これがい぀実珟するかは玄束できたせんが、長期蚈画に぀いお話す必芁があるず思いたす。



結論



投皿は圓初の意図よりも少し長くなったこずが刀明したしたが、倚くのトピックに觊れたした。







このすべおがあなたにずっお有甚であるこずを願っおいたす。



PS






All Articles