Bençmarking we öndürijiligi deňeşdirmek
Gysgaça gysgaça
Bençmarking "wrk-ny 5 minutlap işe girizmek" däl-de, synag. Esasy ýörelgeler:1. Gipotezany we metrikleri düzüň.
2. Üýtgeýjilere gözegçilik ediň (demir, ýadro, güýç, fon sesi).
3. Ýeterlik maglumatlary (göçürmeler, ynam aralyklary) ýygnaň.
4. Profilini geçiriň - onsuz "näme üçin" düşünip bilmersiňiz.
5. Repro: skriptleri, wersiýalary we artefaktlary düzüň.
Bençmarkyň we işewürlik metrikasynyň maksatlary
Geçirijilik ukyby (throughput): RPS/QPS/CPS, ýazgylar/sek.
Gijä galmak (latency): p50/p95/p99/guýruk dykyzlygy.
Netijeliligi: Cost-per-1k RPS, bir geleşik üçin watt, $/millisekund gowulaşma.
Durnuklylyk: jitter, siklleriň/nodlaryň arasyndaky üýtgewsizlik.
Elastiklik: N × resurs (Amdahl/Gustafson görkezijileri) boýunça görkezijiler nähili masştab edilýär?
Metodologiýa: synag dizaýny
Çaklama: "HTTP/3 bilen Enwoý p95 TTFB-ni şol bir RPS bilen 10-15% azaldar".
Deňeşdirme birligi: demir bildiň/ /instans görnüşi.
A/B-shema: birmeňzeş gurşawda paralel geçmek; ýa-da ABAB/Latyn meýdany.
Gaýtalanmalaryň sany: ≥ 10 gysga + 3 dowamly baha bermek üçin konfigurasiýa üçin uzyn geçişler.
Statistika: mediana, MAD, butstrap bilen ynanç aralyklary; "guýrukly" paýlamalar üçin Mann-Whitney synaglary.
DoE (minimal): bir gezekde bir üýtgeýjini (OVAT) ýa-da 2-3 faktor üçin fraksiýa faktor meýilnamasyny üýtgediň (mysal üçin, TLS profili × HTTP wersiýasy × ýadro).
Üýtgeýänlere we seslere gözegçilik
CPU governor: `performance`; "power save" öçürmek.
Turbo/Throttling: ýygylyklara, temperaturalara we trottlinge gözegçilik etmek (ýogsam ýylylyk ýalan ýeňişler berer).
NUMA/Hyper-Threading: IRQ we prosesleri düzüň ('taskset/numactl'), ýat ýerini ölçäň.
C-states/IRQ balance: sazlamalary düzüň; tor synaglary üçin - belli bir ýadro üçin pin IRQ.
Fon prosesleri: arassa nod, cron/backup/antivirus/updatedb öçürmek.
Tor: MTU/ECN/AQM tarapyndan kesgitlenen durnukly ýollar, kanal flatteriniň ýoklugy.
Maglumatlar: birmeňzeş toplumlar, kardinallyk we paýlanmalar.
Kesh: "sowuk" (birinji geçiş) we "ýyly" (gaýtalanýan) reimesimleri bölüň, aç-açan belläň.
Bellik synplary
1) Mikro-bençmarkalar (funksiýa/algoritm)
Maksat: anyk kody/algoritmi ölçemek.
Gurallar: gurlan bench frameworklary (Go 'testing. B`, JMH, pytest-benchmark).
Düzgünler: JIT gyzdyrmak, millisekundlar → nanosekundlar; GC izolýasiýasy; kesgitlenen seed.
2) Mezo-bençmarki (komponent/hyzmat)
HTTP-serwer, keş, broker, bir ýadro DB.
Gurallar: wrk/wrk2, k6 (açyk model), vegeta, ghz (gRPC), fio, sysbench, iperf3.
Düzgünler: birikmeleriň/faýllaryň, howuzlaryň çäkleri; CPU/IRQ/GC barada hasabat.
3) Makro-bençmarkalar (e2e/haýyş ýoly)
Doly ýol: CDN/edge → proxy → hyzmat → DB/kesh → jogap.
Gurallar: k6/Locust/Gatling + RUM/OTel söwdasy; marşrutlaryň hakyky garyndysy.
Düzgünler: hakykata has ýakyn ("hapa" maglumatlar, daşarky ulgamlaryň laglary), retralar bilen seresaplylyk bilen.
Metrikleri gatlaklara görä ýygnamak
Synag şablonlary we buýruklary
Tor (TCP/UDP):bash iperf3 -s # server iperf3 -c <host> -P 8 -t 60 # parallel, stable bandwidth
HTTP-serwer (durnukly ýük, wrk2):
bash wrk2 -t8 -c512 -d5m -R 20000 https://api. example. com/endpoint \
--latency --timeout 2s
Açyk 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 takmynan pikir):
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
Ýat/CPU (Linux perf + stress-ng):
bash perf stat -e cycles,instructions,cache-misses,L1-dcache-load-misses \
-- <your_binary> --bench
Statistika we tassyklama
Gaýtalamalar: azyndan 10 pogon, outliers (robastno: mediana/MAD).
Ynam aralyklary: p95/p99 we orta üçin 95% CI butstrap.
Effekt-ululyk: CI-ni üýtgetmek (mysal üçin, − 12% [− 9%; − 15%]).
Amaly ähmiýeti: p95-iň CPU-nyň 30% bahasy bilen 10% azalmagy - mynasyp?
Grafikler: paýlamak üçin violin/ECDF, "doýma egri" (RPS → latency).
Dar ýeri profillemek we lokallaşdyrmak
CPU: `perf`, `async-profiler`, eBPF/pyroscope; flamegraph öň we soň.
Alloc/GC: runtime profilleri (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.
Keş: Top Key, TTL, eviction sebäp.
Hasabat we artefaktlar
Näme ýazmaly:- git SHA bilda, ýygnamak/optimizasiýa baýdaklary.
- Ýadro/tor konfigi (sysctl), sürüjileriň wersiýasy/NIC/firmware.
- Topologiýa (vCPU/NUMA/HT), governor, temperatura/ýygylyk.
- Maglumatlar: ululygy, kardinaliýasy, paýlanylyşy.
- Näme çap etmeli: p50/p95/p99 tablisalar, ýalňyşlyk/sek, throughput, çeşmeler (CPU/RAM/IO), CI.
- Artefaktlar: geçişiň skriptleri, grafikler, flamegraph, çig JSON/CSV netijeleri, gurşaw teswirnamasy.
Dogruçyl deňeşdirmeler (fair benchmarking)
Birmeňzeş çäklendirijiler (conn pool, keepalive, TLS zynjyrlary, OCSP stapling).
Ylalaşylan wagt/retrailer we HTTP wersiýasy (h2/h3).
Temperatura balansy: deňagramlylyga çenli gyzdyrmak (turbo-güýçli täsir etmezden).
Adalatly keşler: ikisi-de "sowuk" ýa-da ikisi-de "ýyly".
Tor simmetriýasy :/MTU/ECN/AQM.
Wagt býudjeti: DNS/TLS/connect - birmeňzeş hasaplamak ýa-da aýyrmak.
Anti-pattern
Bir geçiş → "netije".
Bir seriýada re regimeimleriň garyşmagy (sowuklaryň bir bölegi, ýylylylaryň bir bölegi).
Açyk internet ýüküniň ýerine ýapyk model → ýalan "durnuklylyk".
Hasaba alynmadyk retralar → "RPS ösýär" goşa we kaskad bahasy 5xx.
Dürli demirlerde/ýadrolarda/energohemalarda deňeşdirme.
Profiliň ýoklugy → "kör" optimizasiýasy.
Profilleri analiz etmezden GC/heap bilen oýun → guýruk regressiýasy.
Amaly reseptler
Iň az benç paýlaýjynyň ädimleri:1. Gurşawy düzdür (skript 'env _ capture. sh`).
2. Gyzdyrmak (5-10 minut), ýygylygy/temperaturany düzetmek.
3. Gysga + 1 uzak aralyk N gaýtalamak.
4. Profilleri iň ýokary derejeden aýyrmak (CPU/alloc/IO).
5. CI/grafikleri sanamak, artefaktlary ýygnamak.
6. Karar: gipotezany kabul etmek/ret etmek, indiki ädimleri emele getirmek.
Kuwwat eğrisi (capacity curve):- RPS ädimleri (10% ädim) → r95/ýalňyşlyklary düzedýäris → "dyz" tapýarys.
- RPS → latency we RPS → CPU grafigini düzýäris: indiki% -iň çägini we bahasyny görýäris.
iGaming/fintech üçin aýratynlyklar
Millisekundyň bahasy: $ -effekt boýunça gowulaşmalary tertipläň (öwrülişik/akym/PSP çäkleri).
Piki (oýunlar/ýaryşlar): TLS/CDN/kesh bilen gyzdyrylan spike + plateau bençmarklary.
Tölegler/PSP: sandbox-çäkleri, idempotentligi we zaýalanmalara bolan reaksiýalary bilen end-to-end ölçäň; Time-to-Wallet proxy metrleri bilen ýazyň.
Antifrod/bot süzgüçleri: makro-banç düzgünleriniň profilini goşuň (false-positive-rate, latency goşundy).
Leadersolbaşçylar/jekpotlar: gyzgyn açarlary/reýtingleri, blokirlemeleri, atomlary synagdan geçiriň.
Bençmarking barlag sanawy
- Üstünlik üçin gipoteza/metrika/kriteriýa.
- Üýtgeýänlere gözegçilik etmek (/NUMA/IRQ/tor/keş).
- Geçmegiň meýilnamasy (göçürmeler, dowamlylygy, gyzdyrylmagy).
- "Sowuk/ýyly" reimesimleri bölmek.
- Profillemek (CPU/alloc/IO/DB).
- Statistika: CI, möhüm synaglar, grafikler.
- Ammardaky artefaktlar we repro skriptleri (stend üçin IaC).
- "Gowulaşdyrmagyň bahasy" we teklipleri bolan hasabat.
- Optimizasiýalardan soň retest (regression perf).
Kiçi hasabat (şablon)
Maksat: CPU ösüşi bolmazdan p95 API-ni 15% azaltmak> 10%.
Usul: A/B, k6 open-model 1k rps, 10 × 3 pas, warm cache.
Jemi: p95 − 12% [− 9%; − 15%], CPU + 6%, 5xx üýtgemez.
Flamegraph: ↓ JSON serializasiýa (− 30% CPU), dar ýer DB-e geçdi.
Çözgüt: optimizasiýany kabul etmek; indiki ädim - DB soraglaryny batching.
Artefaktlar: grafikler, profiller, konfigalar, çig JSON.
Jemi
Gowy bençmarking berk usulyýet + dogruçyl deňeşdirmeler + statistik tassyklama + profillemek + köpeltmek. Gipotezalary goýuň, daşky gurşawy dolandyryň, ynamly aralyklary hasaplaň, artefaktlary çap ediň we gowulaşmagyň bahasy barada karar beriň. Şeýlelik bilen, tanyşdyryş dabarasynda owadan san däl-de, platformanyň tizliginiň we öňünden aýdylýanlygynyň hakyky ýokarlanmagyny alarsyňyz.