GH GambleHub

Бенчмаркинг және өнімділікті салыстыру

Қысқаша түйіндеме

Бенчмаркинг - эксперимент, «5 минутқа wrk іске қосу» емес. Басты қағидаттар:

1. Гипотеза мен метриканы тұжырымдаңыз.

2. Айнымалыларды (темір, ядро, қорек, фон шуын) бақылаңыз.

3. Жеткілікті деректер (репликалар, сенімді аралықтар) жинаңыз.

4. Профильді жүргізіңіз - онсыз «неге» түсінуге болмайды.

5. repro жасаңыз: скрипттер, нұсқалар мен артефактілерді бекіту.

Бенчмарк және бизнес-метриканың мақсаттары

Өткізу қабілеті (throughput): RPS/QPS/CPS, жазбалар/сек.
Кідіріс (latency): р50/р95/р99/қалдықтардың тығыздығы.
Тиімділігі: Cost-per-1k RPS, транзакцияға ватт, $/миллисекунд жақсарту.
Тұрақтылық: джиттер, циклдар/нодтар арасындағы вариативтілік.
Икемділік: ресурстың N × кезіндегі көрсеткіштер қалай масштабталады (Amdahl/Gustafson бағдарлары).

Әдіснама: эксперимент дизайны

Гипотеза: «Envoy HTTP/3 p95 TTFB-ны сол RPS-мен 10-15% -ға азайтады».
Салыстыру бірлігі: темір билдінің/ /инстансының нұсқасы.
A/B-схемасы: бірдей ортада параллель жүру; немесе дрейфтің әсерін төмендету үшін ABAB/Latin Square.
Қайталау саны: тұрақты бағалау үшін конфигурацияға 10 қысқа + 3 ұзын ≥.
Статистика: медиана, MAD, бутстрэппен сенімді интервалдар; «құйрықты» бөлуге арналған параметрлік емес тесттер (Mann-Whitney).
DoE (ең аз): бір уақытта бір айнымалыны (OVAT) немесе 2-3 факторлар үшін фракциялық факторлық жоспарды өзгертіңіз (мысалы, TLS профилі × HTTP нұсқасы × ядро).

Ауыспалы және шуылды бақылау

CPU governor: `performance`; «power save» дегенді өшіру.
Turbo/Throttling: жиіліктер, температуралар және троттлинг мониторингі (әйтпесе жылыту жалған ұтыстар береді).
NUMA/Hyper-Threading: IRQ және процестерді бекітіңіз ('taskset/numactl'), жад орнын өлшеңіз.
C-states/IRQ balance: параметрлерді белгілеңіз; желілік тесттер үшін - нақты ядроларға pin IRQ.
Өңдік процестер: таза тұнба, cron/backup/antivirus/updatedb өшіру.
Желі: тұрақты жолдар, тіркелген MTU/ECN/AQM, канал флаттерінің болмауы.
Деректер: бірдей жиынтықтар, кардиналитет және бөлу.
Кэш: «суық» (бірінші өту) және «жылы» (қайталау) режимдерін бөліңіз, анық белгілеңіз.

Бенчмаркалар сыныптары

1) Микро-бенчмаркалар (функция/алгоритм)

Мақсаты: нақты кодты/алгоритмді өлшеу.
Құралдар: орнатылған бенч-фреймворк (Go 'testing. B`, JMH, pytest-benchmark).
Ережелер: JIT жылыту, миллисекундтар → наносекундтар; GC оқшаулау; тіркелген seed.

2) Мезо-бенчмаркалар (компонент/сервис)

HTTP-сервер, кэш, брокер, бір нодтағы ДҚ.
Құралдар: wrk/wrk2, k6 (open model), vegeta, ghz (gRPC), fio, sysbench, iperf3.
Қағидалар: қосылыстардың/файлдардың, пулдардың лимиттері; CPU/IRQ/GC туралы есеп.

3) Макро-бенчмаркалар (е2е/сұрау жолы)

Толық жол: CDN/edge → proxy → сервис → ДБ/кэш → жауап.
Құралдар: k6/Locust/Gatling + RUM/OTel трейсинг; бағыттардың шынайы қоспасы.
Ережелер: шындыққа жақынырақ («лас» деректер, сыртқы жүйелердің лагтары), ретралармен ұқыпты.

Қабаттар бойынша метриктер жиынтығы

ҚабатӨлшемдер
Клиент/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-сервер (тұрақты жүктеме, 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
БД (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 + stress-ng):
bash perf stat -e cycles,instructions,cache-misses,L1-dcache-load-misses \
-- <your_binary> --bench

Статистика және валидация

Қайталаулар: кем дегенде 10 прогон, outliers алынып тасталсын (робастно: медиана/MAD).
Сенімді аралық: p95/p99 және орташа үшін 95% CI бутстрэп.
Әсері-өлшемі: салыстырмалы өзгерісі және оның CI (мысалы, − 12% [− 9%; − 15%]).
Практикалық маңыздылығы: p95 + 30% CPU бағасы кезінде 10% -ға төмендеуі - тұра ма?
Графиктер: 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 билда, құрастыру/оңтайландыру жалаушалары.
  • Негізгі/желі (sysctl), драйверлер нұсқалары/NIC/firmware.
  • Топология (vCPU/NUMA/HT), governor, температура/жиілік.
  • Деректер: өлшем, кардиналитет, бөлу.
  • Не жариялау керек: p50/p95/p99 кестелері, қате/сек, throughput, ресурстар (CPU/RAM/IO), CI.
  • Артефакттар: жүгіру скрипттері, графиктер, flamegraph, шикі JSON/CSV нәтижелері, қоршау хаттамасы.

Адал салыстырулар (fair benchmarking)

Бірдей шектегіштер (conn pool, keepalive, TLS тізбектері, OCSP stapling).
Келісілген таймауттар/ретрайлер және HTTP нұсқасы (h2/h3).
Температуралық теңгерім: тепе-теңдікке дейін жылыту (турбо-қарқынды әсерсіз).
Әділ кэштер: екеуі де «салқын» немесе екеуі де «жылы».
Желілік симметрия: бірдей бағыттар/MTU/ECN/AQM.
Уақыт бюджеті: DNS/TLS/connect - анық санау немесе бірдей алып тастау.

Қарсы үлгілер

Бір рет өту → «шығару».
Режимдерді (суық бөлігін, жылы бөлігін) бір серияда араластыру.
Ашық интернет жүктеменің орнына жабық модель → жалған «орнықтылық».
Ескерілмеген ретраялар → «RPS өседі» дубль және каскад бағасы 5xx.
Әртүрлі темірлермен/ядролармен/энергия схемаларымен салыстыру.
Профильдеудің жоқтығы → «соқыр» оңтайландыру.
Профиль анализі жоқ GC/heap ойын → артқы регрессия.

Практикалық рецептілер

Ең аз бенч-пайплайн қадамдары:

1. Қоршауды бекіту (скрипт 'env _ capture. sh`).

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

3. Қысқа + 1 ұзақ рет қайталау N жүргізу.

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

5. CI/графиктерді санау, артефактілерді жинау.

6. Шешім: гипотезаны қабылдау/қабылдамау, next steps қалыптастыру.

Сыйымдылық қисығы (capacity curve):
  • RPS сатылары (10% қадам) → р95/қателерді бекітеміз → «тізе» табамыз.
  • RPS → latency және RPS → CPU кестесін жасаймыз: шекараны және одан арғы% құнын көреміз.

iGaming/финтех ерекшелігі

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

Бенчмаркинг чек-парағы

  • Жетістіктің гипотезасы/метрикасы/критерийі.
  • Айнымалыларды бақылау (қуат/NUMA/IRQ/желі/кэш).
  • Жүріп өту жоспары (реплика, ұзақтығы, жылынуы).
  • Режимдерді «суық/жылы» бөлу.
  • Профильдеу қосылған (CPU/alloc/IO/ДБ).
  • Статистика: CI, маңыздылық тестілері, графиктер.
  • Репозиторийдегі артефактілер мен repro-скрипттер (стенд үшін IaC).
  • «Жақсарту құны» мен ұсынымдары бар есеп.
  • Оңтайландырудан кейінгі ретест (regression perf).

Шағын есеп (үлгі)

Мақсаты: 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), тар орын ДБ-ға ауысты.
Шешім: оңтайландыруды қабылдау; келесі қадам - ДБ сұрауларын батч.
Артефакттар: графиктер, профильдер, конфигалар, шикі JSON.

Жиынтығы

Жақсы бенчмаркинг - бұл қатаң әдіснама + адал салыстыру + статистикалық валидация + профильдеу + жаңғыртылу. Гипотезаларды қойыңыз, қоршаған ортаны бақылаңыз, сенімді аралықтарды есептеңіз, артефакттарды жариялаңыз және жақсарту құны бойынша шешім қабылдаңыз. Осылайша, сіз презентацияда әдемі санды емес, платформаның жылдамдығы мен болжамдылығының нақты өсімін аласыз.

Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.