GH GambleHub

Kıyaslama ve performans karşılaştırması

Kısa Özet

Benchmarking bir deneydir, 5 dakikalık bir "run wrk" değildir. "Ana ilkeler:

1. Hipotez ve metrikleri formüle edin.

2. Kontrol değişkenleri (donanım, çekirdek, güç, arka plan gürültüsü).

3. Yeterli veri toplayın (kopyalar, güven aralıkları).

4. Profilleme yapın - onsuz "neden'i anlayamazsınız.

5. Do repro: komut dosyaları, düzeltme sürümleri ve eserler.

Benchmark hedefleri ve iş metrikleri

Verim: RPS/QPS/CPS, yazar/sn

Gecikme: p50/p95/p99/kuyruk yoğunluğu.
Verimlilik: Cost-per-1k RPS, işlem başına watt, $/milisaniye iyileştirme.
Kararlılık: jitter, döngüler arası/düğüm değişkenliği.
Esneklik: göstergelerin N × kaynağında nasıl ölçeklendiği (Amdahl/Gustafson ölçütleri).

Metodoloji: deneysel tasarım

Hipotez: "HTTP/3 ile elçi, aynı RPS ile p95 TTFB'yi %10-15 oranında azaltacaktır".
Karşılaştırma birimi: demirin yapı/yapılandırma/örnek versiyonu.
A/B diyagramı: Aynı ortamda paralel çalışma; Veya sürüklenmenin etkisini azaltmak için ABAB/Latin Meydanı.
Tekrarlama sayısı: Kararlı derecelendirmeler için yapılandırma başına ≥ 10 kısa + 3 uzun çalışma.
İstatistikler: medyan, MAD, bootstrap güven aralıkları; "Kuyruklu" dağılımlar için parametrik olmayan testler (Mann-Whitney).
DoE (minimum): Bir kerede bir değişkeni değiştirme (OVAT) veya 2-3 faktör için faktöriyel faktörleme (örneğin, TLS profili × HTTP sürümü × çekirdek).

Değişken ve gürültü kontrolü

CPU yöneticisi: 'performans'; "Güç tasarrufu'nu devre dışı bırak.
Turbo/Kısma: izleme frekansları, sıcaklıklar ve kısma (aksi takdirde ısınma yanlış kazançlar verecektir).
NUMA/Hyper-Threading: pin IRQs ve işlemler ('taskset/numactl'), bellek lokalitesini ölçer.
C-durumları/IRQ dengesi: ayarları düzeltin; Ağ testleri için - belirli çekirdekler için IRQ pini.
Arka plan işlemleri: temiz düğüm, cron/yedekleme/antivirüs/updatedb kapatın.
Ağ: kararlı yollar, sabit MTU/ECN/AQM, kanal çarpıntısı yok.
Veri: aynı kümeler, kardinalite ve dağılımlar.
Önbellek: ayrı "soğuk" (ilk geçiş) ve "sıcak" (tekrar) modları, açıkça işaretleyin.

Benchmark Sınıfları

1) Mikro kriterler (fonksiyon/algoritma)

Amaç: Belirli bir kodu/algoritmayı ölçün.
Araçlar: yerleşik tezgah çerçeveleri (Go 'testing. B ', JMH, pytest-benchmark).
Kurallar: JIT ısınma, milisaniyeler - nanosaniyeler; GC izolasyonu; sabit tohum.

2) Meso benchmarkları (bileşen/hizmet)

HTTP sunucusu, önbellek, broker, bir düğümde veritabanı.
Araçlar: wrk/wrk2, k6 (açık model), vegeta, ghz (gRPC), fio, sysbench, iperf3.
Kurallar: bağlantı/dosya sınırları, havuzlar; CPU/IRQ/GC raporu.

3) Makro ölçütler (e2e/istek yolu)

Tam Yol: CDN/Edge - Proxy - Servis - DB/Cache - Cevap.
Araçlar: k6/Locust/Gatling + RUM/OTel izleme; Gerçekçi bir rota karışımı.
Kurallar: gerçekliğe daha yakın ("kirli" veriler, harici sistemlerin gecikmeleri), düzgün bir şekilde retras ile.

Katmanlara Göre Metrikler

KatmanMetrikler
Müşteri/kenarDNS p95, TLS el sıkışma p95, TTFB, HTTP/2/3 доля
RTT/loss/jitter, ECN CE, Goodput, PPS/CPS
TLS/ProxyEl sıkışmalar/s, yeniden başlama oranı, şifre karışımı
Ekp50/95/99, 5xx/429, GC duraklar, iş parçacıkları, kuyruklar
ÖnbellekKatmana göre isabet oranı, tahliye, kısayol tuşları
DBQPS, p95 istekleri, kilitler, tampon/önbellek hit, WAL/fsync
DiskIOPS, gecikme, 4k/64k, okuma/yazma karışımı, fsync maliyet
GPU/MLVerim (örnekler/s), gecikme, mem BW, CUDA/ROCm util

Test şablonları ve komutları

Ağ (TCP/UDP):
bash iperf3 -s # server iperf3 -c <host> -P 8 -t 60 # parallel, stable bandwidth
HTTP sunucusu (kararlı yük, wrk2):
bash wrk2 -t8 -c512 -d5m -R 20000 https://api. example. com/endpoint \
--latency --timeout 2s
Açık model (k6, varış oranı):
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 rasgele okuma):
bash fio --name=randread --rw=randread --bs=4k --iodepth=64 --numjobs=4 \
--size=4G --runtime=120 --group_reporting --filename=/data/testfile
Veritabanı (sysbench + PostgreSQL örnek fikri):
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
Bellek/CPU (Linux perf + stress-ng):
bash perf stat -e cycles,instructions,cache-misses,L1-dcache-load-misses \
-- <your_binary> --bench

İstatistikler ve geçerlilik

Kopyalar: en az 10 çalışır, aykırı değerleri hariç tutar (sağlam: Medyan/MAD).
Güven aralıkları: p95/p99 için önyükleme %95 CI ve anlamına gelir.
Etki boyutu: göreceli değişim ve CI (örneğin − %12 [− %9; − %15]).
Pratik önemi: + %30 CPU fiyatıyla p95'te %10'luk bir düşüş - buna değer mi?
Grafikler: Dağılımlar için keman/ECDF, "doygunluk eğrileri" (RPS).

Darboğaz profilleme ve yerelleştirme

CPU: 'perf', 'async-profiler', eBPF/piroskop; Flamegraph öncesi ve sonrası.
Alloc/GC: çalışma zamanı 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, ağırbaşlı.
Nakit: üst anahtarlar, TTL, tahliye nedeni.

Raporlama ve Eserler

Ne düzeltmek için:
  • Git SHA yapı, derleme/optimizasyon bayrakları.
  • Çekirdek/ağ yapılandırmaları (sysctl), sürücü sürümleri/NIC/firmware.
  • Topoloji (vCPU/NUMA/HT), yönetici, sıcaklık/frekanslar.
  • Veri: boyut, kardinalite, dağılımlar.
  • Ne yayınlanır: P50/p95/p99 tabloları, hata/sn, işlem hacmi, kaynaklar (CPU/RAM/IO), CI.
  • Dışlayıcılar: komut dosyalarını, grafikleri, flamegraph'ı, ham JSON/CSV sonuçlarını, ortam protokolünü çalıştırın.

Adil kıyaslama

Özdeş sınırlayıcılar (conn havuzu, keepalive, zincir TLS, OCSP zımbalama).
Anlaşmalı zaman aşımları/geri ödemeler ve HTTP sürümü (h2/h3).
Sıcaklık dengesi: dengeye kadar ısınma (turbo-boost etkisi olmadan).
Adil önbellekler: Her ikisi de "soğuk" veya her ikisi de "sıcak".
Ağ simetrisi: aynı yollar/MTU/ECN/AQM.
Zaman bütçesi: DNS/TLS/connect - açıkça sayın veya eşit olarak hariç tutun.

Anti-desenler

Bir çalışma - "çıktı".
Modların (kısmen soğuk, kısmen sıcak) bir seride karıştırılması.
İnternet yükü için açık bir model yerine kapalı bir model - yanlış "istikrar".
Hesapsız geri alma - "RPS büyür", alma ve basamaklı 5xx pahasına.
Farklı bezler/çekirdekler/güç devreleri üzerinde karşılaştırma.
Profilleme yok - kör optimizasyon.
Profil analizi olmadan GC/yığın ile oynamak - kuyruk regresyonu.

Pratik tarifler

Minimum tezgah boru hattı adımları:

1. Ortamı düzeltin (script 'env _ capture. sh ').

2. Isınma (5-10 dk), kayıt frekansları/sıcaklıklar.

3. Kısa + 1 uzun koşunun N tekrarlarını yapın.

4. Zirvedeki profilleri (CPU/alloc/IO) kaldırın.

5. CI/grafikleri hesaplayın, eserler toplayın.

6. Çözüm: hipotezi kabul edin/reddedin, sonraki adımları oluşturun.

Kapasite eğrisi:
  • RPS adımları (adımın %10'u) - p95/hataları düzeltin - "diz'i bulun.
  • Biz RPS bir zamanlama oluşturmak - gecikme ve RPS - CPU: sınır ve daha fazla % maliyeti görüyoruz.

iGaming/fintech'e özel

Milisaniye başına maliyet: $ efekti ile sıralama iyileştirmeleri (dönüşüm/kayıp/PSP limitleri).
Zirveler (maçlar/turnuvalar): TLS/CDN/önbellek ısınmasıyla spike + plato kıyaslamaları.
Ödemeler/PSP: sandbox limitleri, idempotency ve bozulmaya karşı reaksiyonlar ile uçtan uca ölçmek; Proxy metrikleriyle Time-to-Wallet'ı düzeltin.
Anti-dolandırıcılık/bot filtreleri: makro tezgahında bir kural profili içerir (false-positive-rate, latency additive).
Liderler/ikramiyeler: Test sıcak tuşları/sıralama, kilitler, atomisite.

Kıyaslama kontrol listesi

  • Hipotez/metrik/başarı kriteri.
  • Değişken izleme (güç/NUMA/IRQ/ağ/önbellek).
  • Çalışma planı (kopyalar, süre, ısınma)
  • Soğuk/sıcak ayrımı.
  • Profilleme etkin (CPU/alloc/IO/DB).
  • İstatistik: CI, anlamlılık testleri, grafikler.
  • Depodaki eserler ve repro komut dosyaları (tezgah için IaC).
  • "İyileştirme maliyeti've önerileri ile rapor.
  • regresyon perf.

Mini rapor (şablon)

Amaç, CPU büyümesi> %10 olmadan p95 API'sini %15 azaltmaktır.
Yöntem: A/B, k6 açık model 1k rps, 10 × 3 çalışır, sıcak önbellek.
Toplam: P95 − %12 [− %9; − %15], CPU + %6, değişmemiş 5xx.
Flamegraph: JSON serileştirme ↓ (− %30 CPU), darboğaz veritabanına kaydırıldı.
Karar: optimizasyonu kabul edin; Bir sonraki adım, veritabanı isteklerini toplu hale getirmektir.
Dışlayıcılar: grafikler, profiller, yapılandırmalar, ham JSON.

Toplam

İyi kıyaslama titiz metodoloji + adil karşılaştırmalar + istatistiksel geçerlilik + profilleme + tekrarlanabilirliktir. Hipotez kurmak, çevreyi kontrol etmek, güven aralıklarını okumak, eserler yayınlamak ve iyileştirme maliyeti hakkında kararlar vermek. Böylece sunumda güzel bir rakam değil, platformun hızında ve öngörülebilirliğinde gerçek bir artış elde edeceksiniz.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.