GH GambleHub

Benchmarking va unumdorlikni taqqoslash

Qisqacha xulosa

Benchmarking - bu tajriba, «5 daqiqa davomida wrk ishga tushirish» emas. Asosiy prinsiplar:

1. Faraz va metrikani shakllantiring.

2. Oʻzgaruvchilarni (temir, yadro, quvvat, fon shovqinini) nazorat qiling.

3. Yetarli ma’lumotlarni to’plang (nusxalar, ishonchli oraliqlar).

4. Profillashni o’tkazing - usiz «sababini» tushunib bo’lmaydi.

5. Repro: skriptlar, versiyalar va artefaktlarni tuzatish.

Benchmark va biznes metrika maqsadlari

O’tkazish qobiliyati (throughput): RPS/QPS/CPS, yozuvlar/sek.
Kechikish (latency): p50/p95/p99/dumlar zichligi.
Samaradorligi: Cost-per-1k RPS, har bir tranzaksiya uchun vatt, $/millisekund yaxshilash.
Barqarorlik: jitter, sikllar/nodlar orasidagi o’zgaruvchanlik.
Elastiklik: N × resurs (Amdahl/Gustafson mo’ljallari) da ko’rsatkichlar qanday kattalashtiriladi.

Metodologiya: eksperiment dizayni

Gipoteza: «Envoy HTTP/3 bilan p95 TTFB ni bir xil RPS bilan 10-15% ga kamaytiradi».
Solishtirish birligi: temir bild/ /instans versiyasi.
A/B-sxema: bir xil muhitda parallel yugurish; yoki drift taʼsirini kamaytirish uchun ABAB/Latin maydoni.
Takrorlar soni: barqaror baholash uchun konfiguratsiyaga 10 ta qisqa + 3 ta uzun progonlar ≥.
Statistika: mediana, MAD, butstrep bilan ishonchli oraliqlar; «dumli» taqsimotlar uchun parametrik bo’lmagan testlar (Mann-Whitney).
DoE (minimal): bir vaqtning o’zida bitta o’zgaruvchini (OVAT) yoki 2-3 omillar uchun fraksiyaviy faktor rejasini o’zgartiring (masalan, TLS profili × HTTP versiyasi × yadro).

O’zgaruvchan va shovqinlarni nazorat qilish

CPU governor: `performance`; «power save» oʻchirish.
Turbo/Throttling: chastotalar, harorat va trottling monitoringi (aks holda isitish noto’g’ri yutuq beradi).
NUMA/Hyper-Threading: IRQ va jarayonlarni (’taskset/numactl’) oʻrnating, xotiraning joyini oʻlchang.
C-states/IRQ balance: moslamalarni tuzating; tarmoq testlari uchun - aniq yadrolarga pin IRQ.
Orqa fon jarayonlari: sof nod, oʻchirish cron/backup/antivirus/updatedb.
Tarmoq: barqaror yo’llar, MTU/ECN/AQM o’rnatilgan yo’llar, kanal flatteri yo’qligi.
Ma’lumotlar: bir xil to’plamlar, kardinallik va taqsimotlar.
Kesh: «sovuq» (birinchi o’tish) va «issiq» (takroriy) rejimlarni ajrating, aniq belgilang.

Benchmarklar klasslari

1) Mikro-benchmarklar (funksiya/algoritm)

Maqsad: aniq kod/algoritmni o’lchash.
Asboblar: o’rnatilgan bench-freymvorkalar (Go’testing. B`, JMH, pytest-benchmark).
Qoidalar: JIT isitish, millisekundlar → nanokendlar; GC izolyatsiyasi; belgilangan seed.

2) Mezo-benchmarki (komponent/servis)

HTTP-server, kesh, broker, bitta node DB.
Asboblar: wrk/wrk2, k6 (open model), vegeta, ghz (gRPC), fio, sysbench, iperf3.
Qoidalar: ulanishlar/fayllar, pullar limitlari; CPU/IRQ/GC to’g "risidagi hisobot.

3) Makro-benchmarklar (e2e/so’rov yo’li)

To’liq yo’l: CDN/edge → proxy → servis → DB/kesh → javob.
Instrumentlar: k6/Locust/Gatling + RUM/OTel treysing; marshrutlarning realistik aralashmasi.
Qoidalar: haqiqatga yaqinroq («iflos» ma’lumotlar, tashqi tizimlar laglari), retralar bilan ehtiyotkorlik bilan.

Qatlamlar boʻyicha metriklar toʻplami

QatlamMetrika
Mijoz/edgeDNS p95, TLS handshake p95, TTFB, HTTP/2/3 доля
TarmoqRTT/loss/jitter, ECN CE, Goodput, PPS/CPS
TLS/Proxyhandshakes/s, resumption rate, cipher mix
Toshkent sh,p50/95/99, 5xx/429, GC pauses, threads, queues
Keshhit-ratio by layer, eviction, hot-keys
DBQPS, p95 soʻrovlar, 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 namunalari va buyruqlari

Tarmoq (TCP/UDP):
bash iperf3 -s # server iperf3 -c <host> -P 8 -t 60 # parallel, stable bandwidth
HTTP-server (barqaror yuk, 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 namunaviy g’oya):
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
Xotira/CPU (Linux perf + stress-ng):
bash perf stat -e cycles,instructions,cache-misses,L1-dcache-load-misses \
-- <your_binary> --bench

Statistika va validlik

Takrorlash: kamida 10 ta progon, outliers (robastno: mediana/MAD) chiqarib tashlansin.
Ishonchli oraliqlar: p95/p99 va o’rta uchun 95% CI butstrep.
Effekt-o’lchami: nisbiy o’zgarish va uning CI (masalan, − 12% [− 9%; − 15%]).
Amaliy ahamiyati: p95 ni + 30% CPU narxida 10% ga kamaytirish - bunga arziydimi?
Grafiklar: taqsimlash uchun violin/ECDF, «toʻyinish egri chiziqlari» (RPS → latency).

Tor joyni profillash va mahalliylashtirish

CPU: `perf`, `async-profiler`, eBPF/pyroscope; flamegraph oldin va keyin.
Alloc/GC: runtime (Go pprof/Java JFR) profillari.
I/O: `iostat`, `blktrace`, `fio --lat_percentiles=1`.
Сеть: `ss -s`, `ethtool -S`, `dropwatch`, `tc -s qdisc`.
БД: `EXPLAIN (ANALYZE, BUFFERS)`, pg_stat_statements, slowlog.
Kesh: top-kalitlar, TTL, eviction sabab.

Hisobot va artefaktlar

Nimani tuzatish kerak:
  • git SHA bilda, kompilyatsiya/optimallashtirish bayroqlari.
  • Yadro/tarmoq konfigurasi (sysctl), drayverlar versiyasi/NIC/firmware.
  • Topologiya (vCPU/NUMA/HT), governor, harorat/chastota.
  • Ma’lumotlar: o’lchami, kardinalligi, taqsimlanishi.
  • p50/p95/p99 jadvallari, xato/sek, throughput, resurslar (CPU/RAM/IO), CI.
  • Artefaktlar: dastur skriptlari, grafiklar, flamegraph, xom JSON/CSV natijalari, atrof-muhit protokoli.

Halol taqqoslashlar (fair benchmarking)

Bir xil cheklovlar (conn pool, keepalive, TLS zanjirlari, OCSP stapling).
Kelishilgan taymautlar/retraylar va HTTP versiyasi (h2/h3).
Harorat balansi: muvozanatgacha isitish (turbo-katta effektsiz).
Adolatli keshlar: ikkalasi ham «sovuq» yoki ikkalasi ham «issiq».
Tarmoq simmetriyasi: bir xil yo’nalishlar/MTU/ECN/AQM.
Vaqt byudjeti: DNS/TLS/connect - aniq sanash yoki bir xilda chiqarib tashlash.

Anti-patternlar

Bitta chiqish → «chiqish».
Rejimlarni (sovuqning bir qismi, issiqning bir qismi) bir seriyada aralashtirish.
Internet yuklamasi uchun ochiq o’rniga yopiq model → soxta «barqarorlik».
Hisobga olinmagan retrajlar → «RPS o’sib bormoqda» dubl va kaskadli 5xx.
Turli temirlarda/yadrolarda/energiya xemalarida taqqoslash.
Profillashning yo’qligi → «ko’r-ko’rona» maqbullashtirish.
Profillarni tahlil qilmasdan GC/heap bilan o’yin → dumlar regressiyasi.

Amaliy retseptlar

Eng kam bench payplaynning qadamlari:

1. Muhit (skript’env _ capture. sh`).

2. Qizdiring (5-10 daqiqa), chastota/haroratni qayd qiling.

3. Qisqa + 1 ta uzoq pog’onani N takrorlash.

4. Profillarni (CPU/alloc/IO) choʻqqida olib tashlash.

5. CI/grafiklarni sanash, artefaktlarni yig’ish.

6. Yechim: farazni qabul qilish/rad etish, next steps shakllantirish.

Qiyalik (capacity curve):
  • RPS bosqichlari (10% qadam) → p95/xatolarni aniqlaymiz → tizzani topamiz.
  • Biz RPS → latency va RPS → CPU grafigini yaratmoqdamiz: chegara va keyingi% qiymatini ko’ramiz.

iGaming/fintech uchun o’ziga xos

Millisekund qiymati: $ -effekt bo’yicha yaxshilanishlarni (konvertatsiya/chiqish/PSP limitlari) reytinglang.
Piki (o’yinlar/turnirlar): spike + plateau benchmarklari TLS/CDN/kesh bilan isitiladi.
To’lovlar/PSP: sandbox-limitlar bilan end-to-end, idempotentlik va tanazzulga bo’lgan munosabatlarni o’lchang; Time-to-Wallet proxy metrlari bilan tuzating.
Antifrod/bot-filterlar: qoidalar profilini (false-positive-rate, latency ilova) makro-banchga kiriting.
Etakchilar/jekpotlar: issiq kalitlarni/reytingni, blokirovkani, atomarlikni sinovdan o’tkazing.

Benchmarking chek-varaqasi

  • Faraz/metrika/muvaffaqiyat mezoni.
  • Oʻzgaruvchini boshqarish (quvvat/NUMA/IRQ/tarmoq/kesh).
  • Progonlar rejasi (nusxalari, davomiyligi, isishi).
  • «Sovuq/issiq» rejimlarni ajratish.
  • Profil oʻrnatilgan (CPU/alloc/IO/DB).
  • Statistika: CI, ahamiyat testlari, grafiklar.
  • Repozitoriyadagi artefaktlar va repro skriptlar (stend uchun IaC).
  • «Yaxshilash qiymati» va tavsiyalar bilan hisobot.
  • Optimallashtirishdan keyin retest (regression perf).

Mini-hisobot (shablon)

Maqsad: API p95 ni 15% ga, CPU> 10% ga kamaytirish.
Usul: A/B, k6 open-model 1k rps, 10 × 3 progon, warm cache.
Jami: p95 − 12% [− 9%; − 15%], CPU + 6%, 5xx o’zgarishsiz.
Flamegraph: ↓ JSON serializatsiya (− 30% CPU), tor joy DBga o’tdi.
Qaror: optimallashtirishni qabul qilish; keyingi qadam - DB so’rovlarini batchlash.
Artefaktlar: grafiklar, profillar, konfiglar, xom JSON.

Jami

Yaxshi benchmarking - bu qat’iy metodologiya + halol taqqoslash + statistik haqiqiylik + profillash + takrorlanuvchanlik. Gipotezalarni qo’ying, atrof-muhitni nazorat qiling, ishonchli oraliqlarni hisoblang, artefaktlarni nashr qiling va yaxshilanish uchun qarorlar qabul qiling. Shunday qilib, siz taqdimotda chiroyli raqamni emas, balki platformaning tezligi va oldindan aytilishi mumkin bo’lgan haqiqiy o’sishni olasiz.

Contact

Biz bilan bog‘laning

Har qanday savol yoki yordam bo‘yicha bizga murojaat qiling.Doimo yordam berishga tayyormiz.

Integratsiyani boshlash

Email — majburiy. Telegram yoki WhatsApp — ixtiyoriy.

Ismingiz ixtiyoriy
Email ixtiyoriy
Mavzu ixtiyoriy
Xabar ixtiyoriy
Telegram ixtiyoriy
@
Agar Telegram qoldirilgan bo‘lsa — javob Email bilan birga o‘sha yerga ham yuboriladi.
WhatsApp ixtiyoriy
Format: mamlakat kodi va raqam (masalan, +998XXXXXXXX).

Yuborish orqali ma'lumotlaringiz qayta ishlanishiga rozilik bildirasiz.