GH GambleHub

Compararea comparațiilor și a performanțelor

Scurt rezumat

Benchmarking este un experiment, nu un "run wrk timp de 5 minute. "Principii principale:

1. Formulați ipoteze și valori.

2. Variabile de control (hardware, core, putere, zgomot de fundal).

3. Colectați suficiente date (replici, intervale de încredere).

4. Faceți profilare - fără ea nu puteți înțelege „de ce”.

5. Do repro: scripturi, versiuni de fixare și artefacte.

Obiective de referință și valori de afaceri

Debit: RPS/QPS/CPS, scrie/sec

Latență: p50/p95/p99/densitatea cozii.
Eficiență: Cost-per-1k RPS, watt per tranzacție, îmbunătățire $/milisecundă.
Stabilitate: jitter, variabilitate inter-ciclu/nod.
Elasticitate: modul în care indicatorii sunt scalați la N × resursă (indicatori de referință Amdahl/Gustafson).

Metodologie: proiectare experimentală

Ipoteză: „Trimisul cu HTTP/3 va reduce p95 TTFB cu 10-15% cu același SPR”.
Unitatea de comparație: build/config/instanță versiune de fier.
A/B diagramă: paralel rula pe mediu identic; sau ABAB/Piața Latină pentru a reduce impactul derivei.
Numărul de repetiții: ≥ 10 scurte + 3 rulaje lungi pe configurație pentru evaluări stabile.
Statistici: mediană, MAD, bootstrap intervale de încredere; teste non-parametrice (Mann-Whitney) pentru distribuții „cu coadă”.
DoE (minim): Modificați o variabilă la un moment dat (OVAT) sau factoring factorial pentru 2-3 factori (de exemplu, profilul TLS × versiunea HTTP × kernel).

Controlul variabilelor și al zgomotului

Guvernatorul CPU: „performanță”; dezactivează „economisirea puterii”.
Turbo/Throttling: frecvențe de monitorizare, temperaturi și accelerare (în caz contrar încălzirea va da câștiguri false).
NUMA/Hyper-Threading: pin IRQs și procese ("taskset/numactl'), măsura localitatea de memorie.
Soldul C-states/IRQ: remediați setările; pentru testele de rețea - PIN IRQ pentru nuclee specifice.
Procese de fundal: curățați nodul, dezactivați cron/backup/antivirus/updatedb.
Rețea: căi stabile, fixe MTU/ECN/AQM, nici un flutter canal.
Date: aceleași seturi, cardinalitate și distribuții.
Cache: separați modurile "rece" (prima trecere) și "cald' (repetare), marcați explicit.

Clase de referință

1) Micro repere (funcție/algoritm)

Scop: Măsurați un anumit cod/algoritm.
Instrumente: cadre de bancă încorporate (Go 'testing. B ', JMH, pytest-benchmark).
Reguli: încălzire JIT, milisecunde → nanosecunde; Izolarea GC; semințe fixe.

2) Repere Meso (componentă/serviciu)

Server HTTP, cache, broker, bază de date pe un singur nod.
Instrumente: wrk/wrk2, k6 (model deschis), vegeta, ghz (gRPC), fio, sysbench, iperf3.
Reguli: limite de conexiune/fișier, piscine; Raport CPU/IRQ/GC.

3) Repere macro (e2e/calea de solicitare)

Mod complet: CDN/edge proxy service răspuns DB/cache.
Instrumente: k6/Locust/Gatling + RUM/OTel trasare; un amestec realist de rute.
Reguli: mai aproape de realitate (date „murdare”, lag-uri de sisteme externe), frumos cu retras.

Măsurători după strat

StratMăsurători
Client/margineDNS p95, TLS strângere de mână p95, TTFB, HTTP/2/3 доля
ReţeaRTT/pierdere/jitter, ECN CE, Goodput, PPS/CPS
TLS/Proxystrângeri/strângeri de mână, rata de reluare, amestecul de cifre
Apendicep50/95/99, 5xx/429, pauze GC, fire, cozi
Memorie cachehit-raport de strat, evacuare, hot-chei
DBQPS, cereri p95, încuietori, tampon/cache lovit, WAL/fsync
DiscIOPS, latență, 4k/64k, citire/scriere mix, costul fsync
GPU/MLdebit (probe/s), latenţă, mem BW, CUDA/ROCm util

Șabloane și comenzi de testare

Rețea (TCP/UDP):
bash iperf3 -s # server iperf3 -c <host> -P 8 -t 60 # parallel, stable bandwidth
Server HTTP (sarcină stabilă, wrk2):
bash wrk2 -t8 -c512 -d5m -R 20000 https://api. example. com/endpoint \
--latency --timeout 2s
Open-model (k6, rata de sosire):
javascript export const options = {
scenarios: { open: { executor: 'constant-arrival-rate', rate: 1000, timeUnit: '1s',
duration: '10m', preAllocatedVUs: 2000 } },
thresholds: { http_req_failed: ['rate<0. 3%'], http_req_duration: ['p(95)<250'] }
};
Disc (fio, 4k citire aleatorie):
bash fio --name=randread --rw=randread --bs=4k --iodepth=64 --numjobs=4 \
--size=4G --runtime=120 --group_reporting --filename=/data/testfile
Baza de date (ideea de probă sysbench + PostgreSQL):
bash sysbench oltp_read_write --table-size=1000000 --threads=64 \
--pgsql-host=... --pgsql-user=... --pgsql-password=... prepare sysbench oltp_read_write --time=600 --threads=64 run
Memorie/CPU (Linux perf + stres-ng):
bash perf stat -e cycles,instructions,cache-misses,L1-dcache-load-misses \
-- <your_binary> --bench

Statistici și valabilitate

Se replică: minim 10 rulează, se exclud outliers (robust: median/MAD).
Intervale de încredere: bootstrap 95% CI pentru p95/p99 și mijloace.
Dimensiunea efectului: modificare relativă şi IÎ (de exemplu − 12% [− 9%; − 15%]).
Semnificație practică: o scădere de 10% a p95 la un preț de + 30% CPU - merită?
Grafice: vioară/ECDF pentru distribuții, „curbe de saturație” (RPS→latency).

Bottleneck profilare și localizare

Procesor: „perf”, „async-profiler”, eBPF/piroscop; flamegraph înainte și după.
Allocation/GC: profile de rulare (Go pprof/Java JFR).
I/O: "iostat", "blktrace", "fio --lat_percentiles=1'.
Сеть: 'ss -s', 'ethtool -S', 'dropwatch', 'tc -s qdisc'.
БД: 'EXPLICA (ANALIZA, BUFFERS)', pg_stat_statements, slowlog.
Bani gheaţă: cheile de sus, TTL, cauza evacuării.

Raportare și artefacte

Ce să remediați:
  • git SHA construi, compilare/optimizare steaguri.
  • Kernel/configurații de rețea (sysctl), versiuni de driver/NIC/firmware.
  • Topologie (vCPU/NUMA/HT), guvernator, temperatură/frecvențe.
  • Date: dimensiune, cardinalitate, distribuții.
  • Ce se publică: tabele p50/p95/p99, eroare/sec, debit, resurse (CPU/RAM/IO), CI.
  • Artefacte: executați scripturi, grafice, flamegraph, rezultate JSON/CSV brute, protocol de mediu.

Analiza comparativă corectă

Limitatoare identice (conn pool, keepalive, lanț TLS, OCSP capsare).
Termene negociate/retribuții și versiunea HTTP (h2/h3).
Echilibrul temperaturii: încălzirea până la echilibru (fără efect turbo-boost).
Cache-uri corecte: Fie „rece”, fie ambele „calde”.
Simetria rețelei: aceleași rute/MTU/ECN/AQM.
Bugetul de timp: DNS/TLS/connect - conta în mod explicit sau exclude în mod egal.

Anti-modele

O rulare → „ieșire”.
Amestecarea modurilor (parte rece, parte caldă) într-o singură serie.
Un model închis în loc de unul deschis pentru încărcarea pe Internet → falsă „stabilitate”.
Reîncontabil → „SPR crește” la costul de ia și cascadă 5xx.
Comparație pe diferite glande/nuclee/circuite de putere.
Fără profilare → optimizare oarbă.
Redarea cu GC/heap fără analiza profilului → regresia cozii.

Retete practice

Trepte minime de conducte:

1. Remediați mediul (script' env _ capture. sh ').

2. Încălziți-vă (5-10 min), înregistrați frecvențe/temperaturi.

3. Efectuați repetări N pe termen scurt + 1 lung.

4. Eliminați profilurile (CPU/allow/IO) la vârf.

5. Calculați CI/grafice, colectați artefacte.

6. Soluție: acceptați/respingeți ipoteza, formați pașii următori.

Curba de capacitate:
  • Pașii SPR (10% din pas) → repara p95/erori → a găsi „genunchiul”.
  • Construim un program de RPS→latency și RPS→CPU: vedem granița și costul de încă%.

iGaming/fintech specific

Costul pe milisecundă: îmbunătățiri de rang cu $ efect (conversie/Churn/PSP limite).
Vârfuri (meciuri/turnee): spike + repere de platou cu încălzirea TLS/CDN/cache.
Plăți/PSP: măsoară end-to-end cu limite de nisip, idempotență și reacții la degradare; fixați Time-to-Wallet cu măsurători proxy.
Filtrele antifraudă/bot: includ un profil de regulă în banca macro (rata fals pozitivă, aditiv de latență).
Lideri/jackpot-uri: Testați tastele fierbinți/clasament, încuietori, atomicitate.

Benchmarking lista de verificare

  • Ipoteză/metrică/criteriu de succes.
  • Monitorizare variabilă (power/NUMA/IRQ/network/cache).
  • Run plan (replici, durata, warm-up)
  • Separare rece/caldă.
  • Profilare activată (CPU/allow/IO/DB).
  • Statistici: CI, teste de semnificație, grafice.
  • Artefacte și scripturi repro în depozit (IaC pentru bancă).
  • Raportați cu „costuri de îmbunătățire” și recomandări.
  • regresie perf.

Mini-raport (șablon)

Scopul este de a reduce API-ul p95 cu 15% fără creșterea procesorului> 10%.
Metodă: A/B, k6 open-model 1k rps, 10 × 3 ruleaza, cache cald.
Total: p95 − 12% [− 9%; − 15%], CPU + 6%, 5xx nemodificat.
Flamegraph: ↓ serializarea JSON (− 30% CPU), blocajul a trecut la baza de date.
Decizie: acceptare optimizare; următorul pas este să cereri de baze de date lot.
Artefacte: grafică, profile, configurații, JSON brut.

Total

Analiza comparativă bună este o metodologie riguroasă + comparații echitabile + validitate statistică + profilare + reproductibilitate. Ipoteza, controlul mediului, citirea intervalelor de încredere, publicarea artefactelor și luarea deciziilor privind costul îmbunătățirii. Deci, nu veți obține o figură frumoasă în prezentare, ci o creștere reală a vitezei și predictibilității platformei.

Contact

Contactați-ne

Scrieți-ne pentru orice întrebare sau solicitare de suport.Suntem mereu gata să ajutăm!

Pornește integrarea

Email-ul este obligatoriu. Telegram sau WhatsApp sunt opționale.

Numele dumneavoastră opțional
Email opțional
Subiect opțional
Mesaj opțional
Telegram opțional
@
Dacă indicați Telegram — vă vom răspunde și acolo, pe lângă Email.
WhatsApp opțional
Format: cod de țară și număr (de exemplu, +40XXXXXXXXX).

Apăsând butonul, sunteți de acord cu prelucrarea datelor dumneavoastră.