GH GambleHub

Benchmarking və performans müqayisə

Qısa xülasə

Benchmarking bir təcrübədir, «5 dəqiqə wrk başlamaq» deyil. Əsas prinsipləri:

1. Fərziyyə və metrika formalaşdırın.

2. Dəyişənləri (dəmir, nüvə, güc, fon səs-küyü) idarə edin.

3. Kifayət qədər məlumat toplayın (replikalar, etibarlı intervallar).

4. Profilləşdirin - onsuz «niyə» başa düşmək olmaz.

5. Repro edin: skriptlər, versiyaların və artefaktların fiksasiyası.

Bençmark və biznes metrikasının məqsədləri

Bant genişliyi (throughput): RPS/QPS/CPS, qeydlər/san.
Gecikmə (latency): p50/p95/p99/quyruq sıxlığı.
Effektivlik: Cost-per-1k RPS, əməliyyat başına watt, $/millisaniyə təkmilləşdirmə.
Sabitlik: jitter, dövrlər/nodlar arasında dəyişkənlik.
Elastiklik: N × resurs (Amdahl/Gustafson göstərici) ilə göstəricilər necə ölçülür.

Metodologiya: eksperiment dizaynı

Hipotez: «HTTP/3 ilə Envoy p95 TTFB eyni RPS ilə 10-15% azaldır».
Müqayisə vahidi: dəmir bild/ /instans versiyası.
A/B sxemi: eyni mühitdə paralel qaçış; və ya ABAB/Latin Meydanı sürüklənmə təsirini azaltmaq üçün.
Təkrarların sayı: sabit qiymətləndirmələr üçün konfiqurasiya üçün 10 qısa + 3 uzun ≥.
Statistika: media, MAD, butstrep etibarlı intervallar; «quyruq» paylanması üçün qeyri-parametrik testlər (Mann-Whitney).
DoE (minimum): Bir anda bir dəyişəni (OVAT) və ya 2-3 amil üçün fraksiya faktor planını dəyişdirin (məsələn, TLS profili × HTTP versiyası × nüvə).

Dəyişən və səs-küy nəzarəti

CPU governor: `performance`; «power save» söndürmək.
Turbo/Throttling: tezlik, temperatur və trottling monitorinqi (əks halda istilik yanlış qazanc verəcəkdir).
NUMA/Hyper-Threading: IRQ və prosesləri təyin edin ('taskset/numactl'), yaddaş yerlərini ölçün.
C-states/IRQ balance: parametrləri qeyd edin; şəbəkə testləri üçün - xüsusi nüvələr üçün pin IRQ.
Fon prosesləri: təmiz nod, cron/backup/antivirus/updatedb.
Şəbəkə: sabit yollar, sabit MTU/ECN/AQM, kanal flatter yoxdur.
Məlumatlar: eyni dəstlər, kardinallıq və paylamalar.
Cash: «Soyuq» (birinci keçid) və «isti» (təkrar) rejimləri ayırın, açıq şəkildə qeyd edin.

Bençmark sinifləri

1) Mikro-bençmarklar (funksiya/alqoritm)

Məqsəd: xüsusi kod/alqoritmi ölçmək.
Alətlər: daxili bench frameworks (Go 'testing. B`, JMH, pytest-benchmark).
Qaydalar: JIT qızdırılması, milisaniyələr → nanosaniyələr; GC izolyasiya; sabit seed.

2) Mezo-bençmarklar (komponent/xidmət)

HTTP server, cache, broker, bir node DB.
Alətlər: wrk/wrk2, k6 (open model), vegeta, ghz (gRPC), fio, sysbench, iperf3.
Qaydalar: qoşulma/fayl, hovuz limitləri; CPU/IRQ/GC hesabatı.

3) Makro-bençmarklar (e2e/sorğu yolu)

Tam yol: CDN/edge → proxy → xidmət → DB/cache → cavab.
Alətlər: k6/Locust/Gatling + RUM/OTel Trace; real marşrutlar qarışığı.
Qaydalar: reallığa daha yaxın («çirkli» məlumatlar, xarici sistemlərin laqaları), retralar ilə diqqətlə.

Qatlara görə metrik dəsti

QatMetrika
Müştəri/edgeDNS p95, TLS handshake p95, TTFB, HTTP/2/3 доля
ŞəbəkəRTT/loss/jitter, ECN CE, Goodput, PPS/CPS
TLS/Proxyhandshakes/s, resumption rate, cipher mix
Tətbiqp50/95/99, 5xx/429, GC pauses, threads, queues
Cachehit-ratio by layer, eviction, hot-keys
BDQPS, p95 sorğular, locks, buffer/cache hit, WAL/fsync
DiskIOPS, latency, 4k/64k, read/write mix, fsync cost
GPU/MLthroughput (samples/s), latency, mem BW, CUDA/ROCm util

Test şablonları və komandaları

Şəbəkə (TCP/UDP):
bash iperf3 -s # server iperf3 -c <host> -P 8 -t 60 # parallel, stable bandwidth
HTTP server (sabit yük, wrk2):
bash wrk2 -t8 -c512 -d5m -R 20000 https://api. example. com/endpoint \
--latency --timeout 2s
Open-model (k6, arrival-rate):
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'] }
};
Disk (fio, 4k random read):
bash fio --name=randread --rw=randread --bs=4k --iodepth=64 --numjobs=4 \
--size=4G --runtime=120 --group_reporting --filename=/data/testfile
BD (sysbench + PostgreSQL nümunəvi fikir):
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
Yaddaş/CPU (Linux perf + stress-ng):
bash perf stat -e cycles,instructions,cache-misses,L1-dcache-load-misses \
-- <your_binary> --bench

Statistika və etibarlılıq

Təkrar: minimum 10 qaçış, istisna outliers (robastno: mediana/MAD).
Etibarlı intervallar: p95/p99 və orta üçün 95% CI butstrap.
Effekt ölçüsü: nisbi dəyişiklik və onun CI (məsələn, − 12% [− 9%; − 15%]).
Praktik əhəmiyyət: qiymət + 30% CPU ilə p95 10% azaldılması - dəyər?
Qrafiklər: paylama üçün violin/ECDF, «doygunluq əyriləri» (RPS → latency).

Dar yerin profilləşdirilməsi və lokallaşdırılması

CPU: `perf`, `async-profiler`, eBPF/pyroscope; flamegraph əvvəl və sonra.
Alloc/GC: runtime profilləri (Go pprof/Java JFR).
I/O: `iostat`, `blktrace`, `fio --lat_percentiles=1`.
Сеть: `ss -s`, `ethtool -S`, `dropwatch`, `tc -s qdisc`.
БД: `EXPLAIN (ANALYZE, BUFFERS)`, pg_stat_statements, slowlog.
Cash: Top açarları, TTL, eviction səbəb.

Hesabat və artefaktlar

Nə qeyd etmək lazımdır:
  • git SHA bilda, yığma/optimizasiya bayraqları.
  • NIC/firmware (sysctl), sürücü versiyaları.
  • Topologiya (vCPU/NUMA/HT), governor, temperatur/tezlik.
  • Data: ölçüsü, kardinallığı, paylanması.
  • Nə dərc etmək lazımdır: p50/p95/p99 cədvəllər, səhv/san, throughput, resurslar (CPU/RAM/IO), CI.
  • Artefaktlar: qaçış skriptləri, qrafiklər, flamegraph, xam JSON/CSV nəticələri, mühit protokolu.

Ədalətli müqayisə (fair benchmarking)

Eyni məhdudlaşdırıcılar (conn pool, keepalive, TLS zəncirləri, OCSP stapling).
Razılaşdırılmış vaxt/retrailer və HTTP versiyası (h2/h3).
Temperatur balansı: tarazlığa qədər istiləşmə (turbo-boost effekti olmadan).
Ədalətli keşlər: hər ikisi «soyuq» və ya hər ikisi «isti».
Şəbəkə simmetriyası: eyni marşrutlar/MTU/ECN/AQM.
Vaxt büdcəsi: DNS/TLS/connect - açıq-aşkar saymaq və ya eyni şəkildə istisna etmək.

Anti-nümunələr

Bir keçid → «çıxış».
Bir sıra rejimləri (soyuq hissəsi, isti hissəsi) qarışdırın.
İnternet yükü əvəzinə qapalı model → saxta «sabitlik».
Nəzərə alınmayan retrajlar → «RPS böyüyür» ikiqat və kaskad 5xx qiyməti ilə.
Müxtəlif dəmir parçaları/nüvələr/enerji sxemlərində müqayisə.
Profil olmaması → «kor-koranə» optimallaşdırma.
profil təhlili olmadan GC/heap ilə oyun → quyruq reqressiya.

Praktik reseptlər

Minimum bench payplayn addımları:

1. Mühiti düzəlt (skript 'env _ capture. sh`).

2. Qızdırmaq (5-10 dəq), tezlik/temperatur qeyd.

3. Qısa + 1 uzun qaçış N təkrar edin.

4. Profilləri (CPU/alloc/IO) zirvədə götürün.

5. CI/qrafikləri hesablayın, artefaktları toplayın.

6. Qərar: fərziyyəni qəbul etmək/rədd etmək, növbəti addımları formalaşdırmaq.

Tutum əyrisi (capacity curve):
  • RPS addımları (10% addım) → p95/səhvləri düzəldir → «diz» tapın.
  • RPS → latency və RPS → CPU qrafiki qururuq: sərhədləri və sonrakı% dəyərini görürük.

iGaming/Fintech üçün xüsusiyyətlər

Millisaniyə dəyəri: $ -effekt (dönüşüm/çıxış/PSP limitləri) üzrə təkmilləşdirmələri sıralayın.
Zirvələr (matçlar/turnirlər): spike + plateau bençmarkları TLS/CDN/cache ilə qızdırılır.
Ödənişlər/PSP: sandbox limitləri, idempotentlik və deqradasiya reaksiyaları ilə end-to-end ölçün; Time-to-Wallet proxy metrləri ilə qeyd edin.
Antifrod/bot filtrləri: makro-bench qaydaları profilinə daxil edin (false-positive-rate, latency əlavəsi).
Liderlər/cekpotlar: qaynar açarları/sıralamaları, kilidləri, atomları test edin.

Benchmarking çek siyahısı

  • Fərziyyə/metrika/uğur meyarı.
  • Dəyişənlərə nəzarət (güc/NUMA/IRQ/şəbəkə/cache).
  • Qaçış planı (replikalar, müddət, istiləşmə).
  • «Soyuq/isti» rejimlərin ayrılması.
  • Profil daxil (CPU/alloc/IO/BD).
  • Statistika: CI, əhəmiyyət testləri, qrafiklər.
  • Anbarda artefaktlar və repro skriptləri (stend üçün IaC).
  • «Təkmilləşdirmə dəyəri» və tövsiyələr ilə hesabat.
  • Optimallaşdırmadan sonra retest (regression perf).

Mini hesabat (şablon)

Məqsəd: CPU artımı olmadan p95 API-ni 15% azaltmaq> 10%.
Metod: A/B, k6 open-model 1k rps, 10 × 3 run, warm cache.
Cəmi: p95 − 12% [− 9%; − 15%], CPU + 6%, 5xx dəyişməz.
Flamegraph: ↓ JSON serializasiya (− 30% CPU), dar yer DB keçdi.
Qərar: optimallaşdırma; növbəti addım - DB sorğularının batching.
Artefaktlar: qrafiklər, profillər, konfiqlər, xam JSON.

Yekun

Yaxşı benchmarking - ciddi metodologiya + dürüst müqayisə + statistik etibarlılıq + profil + təkrarlanabilirlik. Fərziyyələr qoyun, ətraf mühitə nəzarət edin, etibarlı intervalları sayın, artefaktları dərc edin və təkmilləşdirmə xərcləri ilə bağlı qərarlar qəbul edin. Beləliklə, təqdimatda gözəl bir rəqəm deyil, platformanın sürətində və proqnozlaşdırılmasında real artım əldə edəcəksiniz.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.