Jitter: proč je průměr k ničemu — a proč ani p99 nemusí stačit
Změřit latenci sítě a napsat „průměrně 120 µs“ je skoro k ničemu. Ne proto, že by to číslo bylo špatně, ale proto, že odpovídá na otázku, kterou nikdo nemá. Regulační smyčka se neptá, jak je to obvykle. Ptá se, jak zlé to může být.
Rozdělení má dvě části a průměr je mezi nimi
Skoro všechna měření sítě vypadají stejně: úzké tělo okolo nějaké hodnoty a řídký dlouhý ocas od front a od plných rámců, které se nedají přerušit. Průměr leží někde mezi — je vyšší než medián, protože ho ocas táhne nahoru, a přitom mnohem nižší než nejhorší případ. Popisuje stav, který skoro nikdy nenastane.
Tohle je nález, který vypadl z testů, ne z psaní: který percentil ocas odhalí, závisí na tom, jak často se to děje. Na měření s jedním procentem výpadků leží 99. percentil přesně na hraně těla a hlásí pohodlných 128 µs, zatímco nejhorší případ je desetkrát vyšší. Věta „měříme p99“ tedy není tvrzení o bezpečnosti, dokud se neřekne, jak často se ta špatná věc děje.
| výpadků | ocas najde až | p99 | nejhorší |
|---|---|---|---|
| 20 % | p90 | 1272 µs | 1316 µs |
| 5 % | p99 | 1195 µs | 1304 µs |
| 1 % | p99,9 | 128 µs | 1272 µs |
| 0,1 % | žádný | 122 µs | 1183 µs |
Ta tabulka je spočítaná, ne opsaná — testy v repu ji projíždějí a kontrolují, že je monotónní: čím vzácnější jev, tím hlouběji se musí jít, a pod nějakou vzácností už ho žádný běžný percentil nenajde a zbývá jen nejhorší naměřená hodnota.
Co z toho plyne pro měření
- Uvádět nejhorší případ, ne průměr. A říct, jak dlouho se měřilo — nejhorší hodnota z deseti sekund a z osmi hodin jsou dvě různá čísla.
- Měřit dost dlouho. Jev, který nastane jednou za deset tisíc cyklů, se v tisícovce vzorků neobjeví ani jednou. To neznamená, že tam není.
- Počítat zmeškané cykly, ne pravděpodobnost. „0,1 %“ zní zanedbatelně; „jeden zmeškaný cyklus za sekundu“ při 1 kHz je totéž číslo a zní správně.
Ten poslední bod je nejužitečnější trik z celé kapitoly. Pravděpodobnost se přepočte na četnost a rozhodování se tím zjednoduší.