Statystyczny harness regresji wydajności

Natywny konsolowy harness mierzy HotPDF na Win32 i Win64 i zwraca status błędu procesu, gdy workload przekroczy swój wersjonowany próg

Uruchomienie bramki

Tests\Performance\Run-HotPDFPerformance.bat

python tools\validate_performance_report.py ^
  Tests\Performance\Reports\performance-Win32.json ^
  Tests\Performance\Reports\performance-Win64.json

Plik bat buduje runner'y w trybie release, wykonuje trzy rozgrzewki, a potem 30 zmierzonych próbek na workload, stosuje Tests\Performance\thresholds.json i zapisuje po jednym raporcie na platformę w Tests\Performance\Reports

Uruchamiaj bramkę w izolacji na maszynie poza tym bezczynnej, bo konkurencja szeregowca i I/O niepowiązanych procesów są celowo widoczne w pomiarach

Workloady

Fixture ma stałe bajty PDF i przypiętą tożsamość SHA-256, więc zmiana wejścia nie może po cichu użyć starych progów

Schemat raportu

hotpdf.performance.v1 zapisuje wersje produktu i harnessu, znacznik czasu UTC, stan rozgrzanego cache, środowisko, tożsamość fixture'a, surowe próbki, podsumowania, zastosowane progi, błędy i ogólny stan zaliczenia

Każde podsumowanie zawiera minimum, p50 i p95 metodą nearest-rank, maksimum, średnią arytmetyczną, wariancję próbkową N-1, odchylenie standardowe, zaobserwowany i szczytowy RSS procesu, maksymalny dodatni przyrost working setu oraz łączne I/O procesu: odczyt, zapis i inne

Walidator niezależnie przelicza statystyki czasów, RSS, sumy I/O, decyzje progowe i ogólny stan zaliczenia ze surowych próbek

Opcje runnera i kody wyjścia

HotPDFPerformanceRunner.exe \
  --output=report.json \
  --thresholds=thresholds.json \
  --warmup=3 \
  --samples=30

--samples nie może być mniejsze niż 30, a --warmup nie może być mniejsze niż 1

Utrzymanie progów

Utrzymuj osobne sufity Win32 i Win64 dla p50, p95, zaobserwowanego RSS, przyrostu working setu, bajtów odczytu i bajtów zapisu

Zmieniaj próg dopiero po przeglądzie surowych próbek, warunków maszyny, tożsamości fixture'a, intencji implementacji i powtórzonych izolowanych uruchomień na obu platformach

Zobacz też: Skalowalne ładowanie z dostępem losowym, Parsowanie prostych obiektów na wycinkach, Diagnostyka renderowania i telemetria operacji