GH GambleHub

Benchmarking жана аткаруу салыштыруу

Кыскача резюме

Бенчмаркинг - бул эксперимент эмес, "5 мүнөт бою wrk баштоо". Негизги принциптери:

1. Гипотезаны жана метриканы формулировкалаңыз.

2. Өзгөрмөлөрдү (темир, ядро, электр энергиясы, фондун ызы-чуусу) көзөмөлдөө.

3. Жетиштүү маалыматтарды чогултуу (репликалар, ишенимдүү интервалдар).

4. Профилди жүргүзүү - ансыз "эмне үчүн" түшүнүү мүмкүн эмес.

5. repro жасаңыз: скрипттер, версияларды жана экспонаттарды бекитүү.

Этаптык жана бизнес-метрика максаттары

кубаттуулугу (throughput): RPS/QPS/CPS, жазуу/сек.
кечигүү (latency): p50/p95/p99/куйруктарынын тыгыздыгы.
Натыйжалуулугу: Cost-per-1k RPS, транзакция үчүн ватт, $/миллисекунд жакшыртуу.
Туруктуулук: Життер, циклдер/ноддор ортосундагы өзгөрмөлүүлүк.
Ийкемдүүлүк: N × ресурсунда көрсөткүчтөр кандай масштабда (Amdahl/Gustafson көрсөтмөлөр).

Методология: эксперимент дизайн

гипотеза: "HTTP/3 менен Envoy p95 TTFB ошол эле RPS менен 10-15% га азайтат".
Салыштыруу бирдиги: Темир тилкесинин/ /инстанциясынын версиясы.
A/B схемасы: бирдей чөйрөдө параллелдүү өтүү; же ABAB/Latin Square drift таасирин азайтуу үчүн.
кайталоо саны: ≥ 10 кыска + туруктуу баа берүү үчүн конфигурация боюнча 3 узун прогон.
Статистика: медиа, MAD, butstrapom ишеним интервалдары; "куйруктуу" бөлүштүрүү үчүн параметр тесттер (Mann-Whitney).
DoE (минималдуу): Бир убакта бир өзгөрмөлүү (OVAT) же 2-3 факторлор үчүн фракциялык фактордук планды өзгөртүү (мисалы, TLS профили × HTTP версиясы × ядро).

Өзгөрмөлүү жана ызы-чуу башкаруу

CPU governor: `performance`; "Power Save" өчүрүү.
Turbo/Throttling: жыштык, температура жана Trottling мониторинг (болбосо жылытуу жалган утуштарды берет).
NUMA/Hyper-Threading: IRQ жана процесстерди бекитүү ('taskset/numactl'), эстутумдун жайгашкан жерин өлчөө.
C-states/IRQ балансы: орнотуу; тармак тесттер үчүн - конкреттүү ядро үчүн IRQ pin.
Фон процесстери: таза нода, cron/backup/antivirus/updatedb өчүрүү.
Network: туруктуу жолдор, белгиленген MTU/ECN/AQM, канал Flatter жоктугу.
Маалыматтар: бирдей топтомдор, кардиналдуулук жана бөлүштүрүү.
Кэш: "муздак" (биринчи өткөөл) жана "жылуу" (кайра) режимдерин бөлүп, так белгилөө.

Эталон класстары

1) микро-эталон (функция/алгоритм)

Максаты: конкреттүү кодду/алгоритмди өлчөө.
Куралдар: камтылган bench-frameworks (Go 'testing. B`, JMH, pytest-benchmark).
Эрежелер: JIT жылытуу, миллисекунддар → наносекунддар; GC изоляциясы; белгиленген seed.

2) Мезо-бенчмарктар (компонент/кызмат)

HTTP-Server, кэш, брокер, бир нод боюнча DD.
Куралдар: wrk/wrk2, k6 (open model), vegeta, ghz (gRPC), fio, sysbench, iperf3.
Эрежелер: кошулмалардын/файлдардын, пулдардын лимиттери; CPU/IRQ/GC жөнүндө отчет.

3) Макро-этаптары (e2e/сурам жолу)

Толук жол: CDN/edge → proxy → кызматы → DB/кэш → жооп.
Инструменттер: k6/Locust/Gatling + RUM/OTel Trace; жолдордун реалдуу аралашмасы.
Эрежелер: чындыкка жакыныраак ("кир" маалыматтар, тышкы системалардын лагдары), ретра менен кылдаттык менен.

Катмарлар боюнча метриктердин жыйындысы

КатмарМетрика
Кардар/edgeDNS p95, TLS handshake p95, TTFB, HTTP/2/3 доля
ТармакRTT/loss/jitter, ECN CE, Goodput, PPS/CPS
TLS/Proxyhandshakes/s, resumption rate, cipher mix
Колдонмоp50/95/99, 5xx/429, GC pauses, threads, queues
Кэшhit-ratio by layer, eviction, hot-keys
БДQPS, p95 суроолор, locks, buffer/cache hit, WAL/fsync
ДискIOPS, latency, 4k/64k, read/write mix, fsync cost
GPU/MLthroughput (samples/s), latency, mem BW, CUDA/ROCm util

Тест үлгүлөрү жана буйруктары

Тармак (TCP/UDP):
bash iperf3 -s # server iperf3 -c <host> -P 8 -t 60 # parallel, stable bandwidth
HTTP Server (туруктуу жүк, wrk2):
bash wrk2 -t8 -c512 -d5m -R 20000 https://api. example. com/endpoint \
--latency --timeout 2s
Open-модель (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'] }
};
Диск (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 болжолдуу идея):
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
Эс/CPU (Linux perf + стресс-ng):
bash perf stat -e cycles,instructions,cache-misses,L1-dcache-load-misses \
-- <your_binary> --bench

Статистика жана ырааттуулук

кайталоо: жок дегенде 10 прогондор, outliers алынып салынат (robastno: mediana/MAD).
Ишеним аралыктары: 95% p95/p99 жана орто үчүн CI бутстреп.
Эффект-өлчөмү: салыштырмалуу өзгөрүү жана анын CI (мисалы, − 12% [− 9%; − 15%]).
Практикалык мааниси: p95 + 30% CPU баасы менен 10% га төмөндөшү - татыктуу?
Graphics: бөлүштүрүү үчүн violin/ECDF, "каныгуу ийри" (RPS → latency).

Профилдөө жана тар жерди локалдаштыруу

CPU: `perf`, `async-profiler`, eBPF/pyroscope; flamegraph чейин жана андан кийин.
Alloc/GC: runtime профилдери (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.
Кэш: жогорку ачкычтар, TTL, eviction себеби.

Отчеттуулук жана экспонаттар

Эмне чечүү керек:
  • git SHA Билда, чогултуу/оптималдаштыруу желектери.
  • Config ядро/тармак (sysctl), диск версиялары/NIC/firmware.
  • Топология (vCPU/NUMA/HT), governor, температура/жыштык.
  • Маалыматтар: өлчөмү, кардиналдуулук, бөлүштүрүү.
  • Эмне жарыялоо керек: таблицалар p50/p95/p99, ката/сек, throughput, ресурстар (CPU/RAM/IO), CI.
  • Артефакттар: прогон скрипттери, графиктер, жалтылдатуу, чийки JSON/CSV натыйжалары, айлана-чөйрө протоколу.

Чынчыл салыштыруу (fair benchmarking)

Бирдей чектөө (conn pool, keepalive, TLS чынжыр, OCSP stapling).
Макулдашылган таймауттар/ретрайлер жана HTTP версиясы (h2/h3).
Температура балансы: салмактуулукка чейин жылытуу (турбо-күчтүү таасири жок).
Адилет кэш: экөө тең "суук", же экөө тең "жылуу".
Тармак симметриясы: бирдей жолдор/MTU/ECN/AQM.
Убакыт бюджети: DNS/TLS/connect - так эсептөө же бирдей жокко чыгаруу.

Анти-үлгүлөрү

Бир прогон → "чыгаруу".
бир катар режимдерин аралаштыруу (муздак бөлүгү, жылуу бөлүгү).
Жабык модель ордуна ачык интернет жүктөө → жалган "туруктуулук".
Эске алынбаган Retrains → "RPS өсүүдө" баасы дубль жана каскад 5xx.
Салыштыруу ар кандай темир/ядро/энергетикалык схемалар боюнча.
Профилдин жоктугу → "сокур" оптималдаштыруу.
профилдерин талдоо жок GC/heap менен оюн → куйруктарын регрессия.

Практикалык Recipes

Минималдуу bench-payplayn кадамдары:

1. курчап (скрипт 'env _ capture. sh`).

2. жылытуу (5-10 мин), жыштык/температураны бекитүү.

3. Кыска + 1 узак прогон кайталоо N өткөрүү.

4. Профилдерди (CPU/alloc/IO) туу чокусунда алып салуу.

5. CI/графика санап, экспонаттарды чогултуу.

6. Чечим: гипотезаны кабыл алуу/четке кагуу, кийинки кадамдарды түзүү.

Сыйымдуулуктун ийри сызыгы (capacity curve):
  • Этап RPS (10% кадам) → p95/каталарды чечүү → "тизе" табуу.
  • Биз RPS → latency жана RPS → CPU графигин куруп жатабыз: чек араны жана андан аркы% наркын көрүп жатабыз.

iGaming/Fintech үчүн өзгөчөлүктөрү

Миллисекунддук наркы: $ -эффект боюнча жакшыртууларды ранжирлөө (конверсия/агып кетүү/PSP лимиттери).
чокулары (дан/турнир): TLS/CDN/кэш жылытуу менен spike + plateau бенчмарктар.
Төлөмдөр/PSP: Сандбокс лимиттери менен end-to-end, демпотенттик жана деградацияга реакцияларды өлчөө; Time-to-Wallet proxy метриктер менен бекитүү.
Антифрод/бот фильтрлери: макро-бенч эрежелеринин профилине киргизиңиз (false-positive-rate, latency кошумчасы).
Лидерлер/джекпот: ысык ачкычтарды/рейтингин, кулпу, атомдук тестирлөө.

Чек тизмеси

  • Гипотеза/метрика/ийгиликтин критерийи.
  • Өзгөрмөлүү башкаруу (Power/NUMA/IRQ/Network/кэш).
  • Прогондор планы (репликалар, узактыгы, жылытуу).
  • бөлүү "суук/жылуу" режимдери.
  • Profile камтылган (CPU/alloc/IO/BD).
  • Статистика: CI, маанилүүлүк тесттер, графиктер.
  • Репозиторийдеги экспонаттар жана repro скрипттер (стенд үчүн IaC).
  • "жакшыртуу наркы" жана сунуштар менен отчет.
  • оптималдаштыруу кийин Retest (regression perf).

Mini отчет (шаблон)

Максаты: CPU өсүшү жок p95 API 15% кыскартуу> 10%.
Метод: A/B, k6 open-model 1k rps, 10 × 3 прогон, warm cache.
Бардыгы болуп: p95 − 12% [− 9%; − 15%], CPU + 6%, 5xx өзгөрүүсүз.
Flamegraph: ↓ JSON сериалдаштыруу (− 30% CPU), тар DD көчүп.
Чечим: оптималдаштыруу кабыл алуу; кийинки кадам - DD суроо-талаптарды батч.
Артефакттар: графика, профили, конфиги, чийки JSON.

Жыйынтык

Жакшы benchmarking - бул катуу методология + чынчыл салыштыруу + статистикалык ырааттуулук + профилирование + кайталануучулук. Гипотезаларды коюңуз, айлана-чөйрөнү көзөмөлдөп, ишенимдүү интервалдарды эсептеп, экспонаттарды жарыялаңыз жана жакшыртуунун наркын чечиңиз. Ошентип, сиз презентацияда сулуу санды эмес, платформанын ылдамдыгынын жана алдын ала билүүнүн реалдуу өсүшүн аласыз.

Contact

Биз менен байланышыңыз

Кандай гана суроо же колдоо керек болбосун — бизге кайрылыңыз.Биз дайым жардам берүүгө даярбыз!

Интеграцияны баштоо

Email — милдеттүү. Telegram же WhatsApp — каалооңузга жараша.

Атыңыз милдеттүү эмес
Email милдеттүү эмес
Тема милдеттүү эмес
Билдирүү милдеттүү эмес
Telegram милдеттүү эмес
@
Эгер Telegram көрсөтсөңүз — Emailден тышкары ошол жактан да жооп беребиз.
WhatsApp милдеттүү эмес
Формат: өлкөнүн коду жана номер (мисалы, +996XXXXXXXXX).

Түшүрүү баскычын басуу менен сиз маалыматтарыңыздын иштетилишине макул болосуз.