Dieses Dokument hilft, Perzentile und das Histogrammmodell für Messwertdaten mit dem Werttyp Distribution
zu verstehen.
Ein Verteilungsmesswert definiert Buckets genannte Wertebereiche und erfasst die Anzahl der gemessenen Werte, die in die einzelnen Buckets fallen. Verteilungsmesswerte melden keine einzelnen Messwerte. Sie melden ein Mengenhistogramm in Buckets. Dieser Wertetyp wird von Diensten verwendet, wenn die einzelnen Messungen zu zahlreich sind, um sie zu erfassen, aber statistische Informationen, wie z. B. Durchschnittswerte oder Perzentile, zu diesen Messungen wertvoll sind.
Im nächsten Abschnitt dieser Seite wird anhand eines synthetischen Beispiels gezeigt, Perzentile bestimmt. Das Beispiel zeigt, dass die Perzentilwerte die Anzahl der Container, die Breite der Container, die Verteilung der Messungen und die Gesamtzahl der Stichproben. Die Perzentilwerte hängen nicht von den tatsächlich gemessenen Werten ab, da diese Werte im Histogramm nicht verfügbar sind.
Beispiel mit synthetischen Daten
Angenommen, Sie haben ein Exponential
-Bucket-Modell mit einer Skala von 1, einem Wachstumsfaktor von 2 und 10 endlichen Buckets. Dieses Histogramm enthält
12 Buckets, die 10 endlichen Buckets, 1 Bucket, der nur eine
Obergrenze und 1, die nur eine Untergrenze angibt. In diesem Beispiel ist der endliche Bucket mit dem Index n+1 doppelt so breit wie der endliche Bucket mit dem Index n.
Die folgenden Beispiele zeigen, dass die Breite des Buckets den maximalen Fehler zwischen dem berechneten Prozentrang und den Messungen bestimmt. Außerdem zeigen sie, dass die Anzahl der Samples in einem Histogramm wichtig ist. Ist die Anzahl der Stichproben beispielsweise kleiner als 20, so befinden sich das 95. und 99. Perzentil immer im selben Bucket.
Fall 1: Die Gesamtzahl der Samples ist 1.
Bei einer einzelnen Messung unterscheiden sich die drei Perzentilwerte, es werden aber nur das 50., 95. und 99. Perzentil desselben Buckets angezeigt. Der Fehler zwischen der Schätzung und den tatsächlichen Messungen da die Messung nicht bekannt ist.
Angenommen, das Histogramm der Messungen entspricht folgender Tabelle:
Bucket-Nummer | Untergrenze | Obergrenze | Anzahl | Perzentilbereich |
---|---|---|---|---|
0 | 1 | 0 | 0 | |
1 | 1 | 2 | 0 | 0 |
2 | 2 | 4 | 0 | 0 |
3 | 4 | 8 | 0 | 0 |
4 | 8 | 16 | 0 | 0 |
5 | 16 | 32 | 0 | 0 |
6 | 32 | 64 | 0 | 0 |
7 | 64 | 128 | 0 | 0 |
8 | 128 | 256 | 1 | 0–100 |
9 | 256 | 512 | 0 | 0 |
10 | 512 | 1.024 | 0 | 0 |
11 | 1.024 | 0 | 0 |
So berechnen Sie das 50. Perzentil:
- Sie bestimmen anhand der Bucket-Anzahl, welcher Bucket das 50. Perzentil enthält. In diesem Beispiel enthält Container Nummer 8 das 50. Perzentil.
Berechnen Sie die Schätzung anhand der folgenden Regel:
pth percentage = bucket_low + (bucket_up - bucket_low)*(p - p_low)/(p_up - p_low)
Im vorherigen Ausdruck sind
p_low
undp_up
die Unter- und Obergrenze des Prozentrangbereichs für den Bucket.bucket_low
undbucket_up
sind die Unter- und Obergrenze des Buckets. Die Werte fürp_low
undp_up
hängen davon ab, wie die werden auf die verschiedenen Buckets verteilt.
Das 50. Perzentil wird beispielsweise so berechnet:
50th percentile = 128 + (256-128)*(50-0)/(100-0) = 128 + 128 * 50 / 100 = 128 + 64 = 192
Wenn Sie den 95. Perzentilwert berechnen möchten, ersetzen Sie im vorherigen Ausdruck 50
durch 95
. In diesem Beispiel, in dem es genau eine Stichprobe gibt,
Perzentile sehen wie folgt aus:
Perzentil | Bucket-Nummer | Wert |
---|---|---|
50. | 8 | 192 |
95. | 8 | 249.6 |
99. | 8 | 254.7 |
Der Fehler zwischen der Schätzung und den tatsächlichen Messungen kann begrenzt, aber nicht ermittelt werden, da die Messung nicht bekannt ist.
Fall 2: Die Gesamtzahl der Stichproben beträgt 10.
Bei zehn Stichproben kann sich das 50. Perzentil in einem anderen Bucket als das 95. und 99. Perzentil befinden. Es gibt jedoch noch nicht genügend Messungen, damit das 95. und 99. Perzentil in verschiedenen Buckets sein könnten.
Angenommen, das Histogramm der Messungen entspricht folgender Tabelle:
Bucket-Nummer | Untergrenze | Obergrenze | Anzahl | Perzentilbereich |
---|---|---|---|---|
0 | 1 | 4 | 0–40 | |
1 | 1 | 2 | 2 | 40–60 |
2 | 2 | 4 | 1 | 60–70 |
3 | 4 | 8 | 1 | 70–80 |
4 | 8 | 16 | 1 | 80–90 |
5 | 16 | 32 | 0 | 0 |
6 | 32 | 64 | 0 | 0 |
7 | 64 | 128 | 0 | 0 |
8 | 128 | 256 | 1 | 90–100 |
9 | 256 | 512 | 0 | 0 |
10 | 512 | 1.024 | 0 | 0 |
11 | 1.024 | 0 | 0 |
Sie können mit dem zuvor beschriebenen Verfahren die 50., 95. und 99. Perzentile. Das 50. Perzentil, das sich in Bucket 1 befindet, wird beispielsweise so berechnet:
50th percentile = 1 + (2-1)*(50-40)/(60-40) = 1 + (1 * 10 / 20) = 1 + 0.5 = 1.5
In ähnlicher Weise wird das 95. Perzentil so berechnet:
95th percentile = 128 + (256-128)*(95-90)/(100-90) = 128 + 128 * 5 / 10 = 128 + 64 = 192
Mithilfe des zuvor beschriebenen Verfahrens können die Perzentile berechnet werden. Jede Zeile der folgenden Tabelle listet ein Perzentil, den entsprechende Bucket und den berechneten Wert auf:
Perzentil | Bucket-Nummer | Wert | Maximaler Fehlerwert |
---|---|---|---|
50. | 1 | 1,5 | 0,5 |
95. | 8 | 192 | 74 |
99. | 8 | 243,2 | 115,2 |
In diesem und im vorherigen Beispiel befindet sich das 95. Perzentil im Bucket Zahl 8; Die Perzentilberechnung ist jedoch anders. Die auf die Verteilung der Stichproben zurückzuführen. Im ersten Beispiel wurden alle Stichproben befinden sich im selben Bucket, während im jüngsten Beispiel der Wert in verschiedenen Buckets.
Beispiel mit realen Daten
In diesem Abschnitt wird anhand eines Beispiels veranschaulicht, wie Sie das von einem bestimmten Messwert verwendete Bucket-Modell ermitteln. Dieser Abschnitt zeigt auch, wie Sie den potenziellen Fehler in der berechneten Perzentilwerte.
Bucket-Modell identifizieren
Um die Buckets zu ermitteln, die für einen Messwert über ein bestimmtes Zeitintervall verwendet werden,
der Cloud Monitoring API
projects.timeSeries/list
-Methode.
So ermitteln Sie beispielsweise das Bucket-Modell für einen Messwert:
- Rufen Sie die Webseite von
projects.timeSeries/list
auf. Geben Sie im APIs Explorer den Filter ein, in dem der Messwert, eine Startzeit und eine Endzeit angegeben sind.
Um beispielsweise Informationen zu dem Messwert zu erhalten, Latenzen von API-Anfragen geben Sie Folgendes ein:
metric.type="serviceruntime.googleapis.com/api/request_latencies" resource.type="consumed_api"
In diesem Beispiel wird im Filterfeld ein Messwerttyp und ein Ressourcentyp angegeben. Weitere Informationen zu diesen Filtern finden Sie unter Filter überwachen.
Drücken Sie die Eingabetaste.
Im Folgenden finden Sie die list
-API-Antwort für einen Verteilungswert, der in einem Google Cloud-Projekt verfügbar ist:
{ "timeSeries": [ { "metric": {...}, "resource": {...}, }, "metricKind": "DELTA", "valueType": "DISTRIBUTION", "points": [ { "interval": { "startTime": "2020-11-03T15:05:00Z", "endTime": "2020-11-03T15:06:00Z" }, "value": { "distributionValue": { "count": "3", "mean": 25.889, "bucketOptions": { "exponentialBuckets": { "numFiniteBuckets": 66, "growthFactor": 1.4, "scale": 1 } }, "bucketCounts": [ "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "3" ] } } },
In der API-Antwort beschreibt das value
-Feld die im points
-Array gespeicherten Daten. Die Felder count
und mean
geben an, dass für das angegebene Zeitintervall drei Messungen erfolgten und deren Durchschnittswert bei 25,889 lag. Das bucketOptions
-Feld zeigt, dass das exponentielle Modell so konfiguriert ist, dass es 66 Buckets, eine Skalierung von 1 und einen Wachstumsfaktor von 1,4 hat.
Verwenden Sie folgende Regeln, um die Unter- und Obergrenzen für den Bucket mit dem Index n zu berechnen:
- Untergrenze (1 ≤ n < N) = Skalierung * (Wachstumsfaktor)(n-1)
- Obergrenze (0 ≤ n < N-1) = Skalierung * (Wachstumsfaktor)n
In den vorherigen Ausdrücken ist N
die Gesamtzahl der Bucket.
Die Buckets für diesen Messwert sowie der Mittelpunkt der einzelnen Buckets sind in folgender Tabelle aufgeführt:
n-ter Bucket | Untergrenze | Obergrenze | Mittelwert |
---|---|---|---|
0 | 1 | Nicht zutreffend | |
1 | 1 | 1,40 | 1.20 |
2 | 1,40 | 1.96 | 1,68 |
… | |||
9 | 14,76 | 20.66 | 17,71 |
10 | 20.66 | 28.93 | 24.79 |
11 | 28.93 | 40,50 | 34.71 |
… |
Perzentilberechnungen prüfen
Nachdem die Bucket-Konfiguration nun bekannt ist, können Sie für jede Reihe von Messungen die Werte für das 50., 95. und 99. Perzentil vorhersagen. Beispiel: Wenn es nur eine Stichprobe gibt und sie sich in Bucket 10 befindet, ist der Wert des 50. Perzentils 24,79.
Sie können die Werte für den 50., 95. und 99. Perzentil des Messwerts abrufen. Dazu nutzen Sie die API-Methode projects.timeSeries/list
und geben einen Ausrichtungszeitraum nebst Aligner an. In diesem Beispiel wurden folgende Einstellungen ausgewählt:
- Aligner:
ALIGN_PERCENTILE_50
,ALIGN_PERCENTILE_95
oderALIGN_PERCENTILE_99
- Ausrichtungszeitraum: 60 s
Bei der Auswahl ALIGN_PERCENTILE_50
ist jeder Wert in der Zeitreihe der
50. Perzentil eines Buckets:
{ "timeSeries": [ { "metric": {...}, "resource": {...}, "metricKind": "GAUGE", "valueType": "DOUBLE", "points": [ { "interval": { "startTime": "2020-11-03T15:06:36Z", "endTime": "2020-11-03T15:06:36Z" }, "value": { "doubleValue": 24.793256140799986 } }, { "interval": { "startTime": "2020-11-03T15:05:36Z", "endTime": "2020-11-03T15:05:36Z" }, "value": { "doubleValue": 34.710558597119977 } }, { "interval": { "startTime": "2020-11-03T15:04:36Z", "endTime": "2020-11-03T15:04:36Z" }, "value": { "doubleValue": 24.793256140799986 } } ] },
Bei zwei der Stichproben befindet sich das 50. Perzentil in Bucket 10, für das andere Beispiel befindet es sich in Bucket 11.
In der folgenden Tabelle sind die Ergebnisse der Ausführung der projects.timeSeries/list
-Methode mit verschiedenen Alignern zu sehen. Die erste Zeile
entspricht dem Fall, in dem der Aligner nicht spezifiziert ist. Wenn Sie nicht
wenn Sie einen Aligner angeben, werden das Bucket-Modell und die Mittelwerte zurückgegeben. In den nächsten drei Zeilen sind die Daten aufgeführt, die zurückgegeben werden, wenn der Aligner auf ALIGN_PERCENTILE_50
, ALIGN_PERCENTILE_95
und ALIGN_PERCENTILE_99
festgelegt ist:
Statistik | Stichprobe bei 15:06 | Stichprobe bei 15:05 | Stichprobe bei 15:04 |
---|---|---|---|
Mittel | 25.889 | 33.7435 | Nicht verfügbar. |
50. Perzentil | 24.79 | 34.71 | 24.79 |
95. Perzentil | 28.51 | 39.91 | 28.51 |
99. Perzentil | 28.84 | 40.37 | 28.84 |
Wie die beiden Beispiele mit synthetischen Daten zeigen, sind die Werte der Perzentile abhängig von der Verteilung der Stichproben. Wenn sich alle Stichproben im Stichproben-Bucket befinden, ist das 50. Perzentil der Mittelpunkt dieses Buckets. Wenn sich Stichproben jedoch in verschiedenen Buckets befinden, die Schätzungen beeinflusst.
Um festzustellen, ob der 50. Perzentilwert eine angemessene Schätzung des Mittelwerts ist, können Sie den Mittelwert mit dem 50. Perzentilwert vergleichen. Der Mittelwert wird mit den Bucket-Details zurückgegeben.
Nächste Schritte
Informationen zum Visualisieren von Verteilungsmesswerten finden Sie unter Verteilungsmesswerte.