GH GambleHub

Բենչմարկինգը և արտադրողականության համեմատությունը

Live ռեզյումե

Բենչմարկինգը փորձառություն է, ոչ թե «հինգ րոպե սկսել»։ Հիմնական սկզբունքները

1. Ձևավորեք հիպոթեզներ և չափումներ։

2. Վերահսկեք ապրանքները (երկաթ, միջուկ, սնունդ, ֆոնի աղմուկ)։

3. Հավաքեք բավարար տվյալներ (կրկնօրինակներ, վստահելի ընդմիջումներ)։

4. Կիրառեք ավելցուկը 'առանց դրա չհասկանալու «ինչու»։

5. Արեք repro 'ջութակներ, տարբերակների և արտեֆակտների ամրագրում։

Բենչմարկի և բիզնեսի մետրիկայի նպատակները

Թողունակություն (throughput): RPS/QPS/CPS, ձայնագրություններ/վայրկյան։

Ուշացում (latency) ՝ r50/r95/r99/պոչերի խտությունը։

Արդյունավետությունը 'Cost-per-1k RPS, գործարքի վատը, $/միլիմետր բարելավման։

Ստանդարտ 'ջիտթեր, փոփոխականություն ցիկլերի/նոդների միջև։

Առաձգականություն. Ինչպե՞ ս են ավելանում N ռուսական ռեսուրսի ցուցանիշները (Amdahl/Gustafson կենտրոններ)։

Մեթոդաբանություն 'փորձի դիզայն

Հիպոթեզը ՝ «Envoy HTTP/3 հետ կնվազեցնի p95 TTFB-ը 10-15 տոկոսով նույն RPS-ում»։

Համեմատության միավորը 'տոմսերի/ww.g/instans երկաթի տարբերակը։

A/B-սխեմա 'զուգահեռ պրոգոն նույն միջավայրում։ ԿԱՄ ABAB/Latin Square-ը, որպեսզի նվազեցնի դրեյֆի ազդեցությունը։

Կրկնությունների քանակը ՝ 10 կարճ + 3 երկար շեղումներ կայուն գնահատականների համար։

Վիճակագրությունը 'մեդիա, MAD, վստահելի ընդմիջումներ բուտստրապով։ ոչ գծագրական թեստեր (Mann-Whitney) «պոչի» բաշխման համար։

DoE (նվազագույն) 'փոխեք մեկ փոփոխությունը մեկ անգամ (OVAT) կամ միգրացիոն ֆակտորային պլանը 2-3 գործոնների համար (օրինակ, TRC-պրոֆիլը wwww.HTP տարբերակն է)։

Փոփոխականների և աղմուկների վերահսկումը

CPU governor: `performance`; անջատել «www.save»։

Turbo/Throttling: Հաճախականության, ջերմաստիճանի և trottling (հակառակ դեպքում տաքացնում է կեղծ շահումները)։

NUMA/Hyper-Threading: Համախմբեք IRQ-ը և գործընթացները («taskset/numactl»), չափեք հիշողության տարածքը։

C-states/IRQ bal.ru: Գրանցեք հասցեները։ ցանցային թեստերի համար 'pin IRQ հատուկ միջուկների վրա։

Ֆոնային գործընթացները 'մաքուր նոդա, անջատել com/backup/antivirus/wwww.atedb։

Ցանցը 'կայուն ճանապարհներ, որոնք ամրագրված են MTU/ECN/AQM-ի, ալիքի ֆլատերի բացակայությունը։

Տվյալները 'նույն հավաքածուները, կարդինալիզմը և բաշխումը։

Քաշ 'բաժանեք «սառը» (առաջին ստանդարտ) և «տաք» (կրկնվող) ռեժիմները, ակնհայտորեն փչացրեք։

Բենչմարկների դասարաններ

1) Micro-bencharks (ֆունկցիա/ալգորիթմ)

Նպատակը 'չափել կոնկրետ կոդը/ալգորիթմը։

Գործիքներ 'ներկառուցված բենչ-շրջանակներ (Go' testing. B`, JMH, pytest-benchmark).
Կանոնները 'տաքացնելով JIT-ը, միլիոնավոր նանեկունդներ, մեկուսացում GC; ֆիքսված seed.

2) Meso-bencharki (բաղադրիչ/ծառայություն)

HTTP սերվերը, քեշը, բրոքերը, BD-ը մեկ նոդում։

Գործիքներ ՝ wrk/wrk2, k6 (բաց model), vegeta, ghz (gRPC), fio, sbench, iperf3։

Կանոնները ՝ limitts/ֆայլեր, փամփուշտներ։ CPU/IRQ/GC զեկույցը։

3) Makro-bencharki (e2e/հարցման ուղի)

Ամբողջ ճանապարհը ՝ CDN/edge proxy www.BD/kash ծառայությունն է։

Գործիքներ ՝ k6/Mastust/Gatling + RUM/OTel tracing; երթուղիների իրատեսական խառնուրդ։

Կանոնները ՝ ավելի մոտ իրականությանը («կեղտոտ» տվյալներ, արտաքին համակարգերի ճամբարներ), մանրակրկիտ գետերի հետ։

Շերտերի վրա նետաձիգների մի շարք

ՇերտըՄետրիկները
Հաճախորդ/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
BDQPS, p95 հարցումներ, www.ks, 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

Բաց մոդել (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 randensread)

bash fio --name=randread --rw=randread --bs=4k --iodepth=64 --numjobs=4 \
--size=4G --runtime=120 --group_reporting --filename=/data/testfile

BD (wwww.sbench + 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 եղջյուր, բացառել www.iers (ռոբաստոն ՝ միջին/MAD)։

Վստահելի ընդմիջումները '95% CI p95/p99 և միջին համար։

Էֆեկտը 'հարաբերական փոփոխությունը և դրա CI (օրինակ ՝ 3,12 տոկոսը [369 տոկոսը; 3615%)։

Գործնական կարևորություն 'p95-10 տոկոսով նվազեցնել + 30% CPU գնով, արժե՞։

Գծապատկերներ ՝ violin/ECDF բաշխման համար, «ծուռ հագեցվածություն» (RPS entlatency)։

Ավելացումը և տեղանքի տեղայնացումը

CPU: `perf`, `async-profiler`, eBPF/pyroscope; flamegraph մինչև և հետո։

Alloc/GC: runtime (Go delrof/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 տոմս, կազմման/օպտիմիզացման դրոշներ։

Միջուկի/ցանցի (wwww.sctl), վարորդների/NIC/firm.ru տարբերակները։

Տեղաբանությունը (vCPU/NUMA/HT), governor, ջերմաստիճանը/հաճախականությունը։

Տվյալները ՝ չափսը, կարդինալիզմը, բաշխումը։

Ինչ հրապարակել 'p50/p95/p99, սխալ/վայրկյան, throughput, ռեսուրսներ (CPU/RAM/IO), CI։

Արտեֆակտներ ՝ պրոգոնի, գրաֆիկայի, flamegraph, JSON/CSV արդյունք, շրջապատման արձանագրություն։

Ազնիվ համեմատություններ (fox benchmarking)

Նույնական սահմանափակիչներ (conn pool, keepalive, TSA շղթաներ, OCMS stapling)։

Timauts/retrai և HTP տարբերակը (h2/h3)։

Ջերմաստիճանի հավասարակշռությունը 'տաքացնելով հավասարակշռության (առանց ազդեցության turbo-bust)։

Արդար քեշներ 'կամ երկուսն էլ սառը են, կամ երկուսն էլ «տաք»։

Ցանցային սիմետրիա 'նույն երթուղիները/MTU/ECN/AQM։

Ժամանակի բյուջեն ՝ CSA/TSA/connational, հստակ կամ բացառել նույն։

Anti-patternes

Մեկ գդոն բացատրում է «եզրակացությունը»։

Ռեժիմների խառնուրդը (որոշ սառը, որոշ տաք) մեկ շարքում։

Փակված մոդելը համացանցային բեռի փոխարեն տեղադրվում է կեղծ «կայունություն»։

"RPS" տերմինալի անգրագետ ակնարկները աճում են "դուբլի և կասկադային 5xx-ի գնով։

Համեմատություն տարբեր երկաթերի/միջուկների/էներգախնայողության հեմերի վրա։

Ավելացման բացակայությունը բացատրում է «արցունքաբեր» օպտիմիզացումը։

Խաղը GC/heap-ի հետ առանց պոչերի ռեգրեսիայի վերլուծության։

Գործնական բաղադրատոմսեր

Քայլերը երկարացնում են բենչ-փետուրային։

1. Ամրագրել շրջապատը (ջութակը 'env _ capture։ sh`).

2. Տաքացնել (5-10 րոպե), շտկել հաճախականությունները/ջերմաստիճանը։

3. Անցկացնել N-ը կարճ + 1 երկար պրոգոն։

4. Հեռացնել պրոֆիլները (CPU/alloc/IO) գագաթին։

5. Հաշվել CI/գրաֆիկա, հավաքել արտեֆակտներ։

6. Որոշումը 'ընդունել/մերժել հիպոթեզը, ձևավորել next steps։

Տարաների կորը (capacity curve)

RPS-ի աստիճանները (10 տոկոսը) նկարագրում ենք r95/սխալները։

Մենք կառուցում ենք RPS www.latency և RPS www.CPU գրաֆիկը, տեսնում ենք սահմանը և արժեքը 105%։

Հատուկ iGaming/fintech համար

Միլիսեքսունդների արժեքը 'դասակարգել բարելավումները դոլար-էֆեկտով (փոխադարձություն/հոսանք/PBS)։

Պիկի (խաղեր/մրցույթներ): բենչեր spike + plateau հետ TFC/CDN/kash։

Վճարումները/PSA: Չափեք end-to-end-ը sandbox-limits, idempotenty և արձագանքները քայքայման վրա։ արձանագրել Time-to-Wallet-metric-ը։

Անտիֆրոդ/բոտ ֆիլտրեր 'միացրեք մակրո-բենչը կանոնների պրոֆիլին (false-positive-rate, latency ավելցուկ)։

Առաջնորդներ/ջեքպոտներ ՝ տաք բանալիներ/ռենջացիա, արգելափակում, ատոմականություն։

Չեկ-թուղթ բենչմարկինգի

  • Վարկածներ/չափումներ/հաջողության չափանիշներ։
  • Փոփոխականների վերահսկումը (սնունդ/NUMA/IRQ/ցանց/քեշ)։
  • Պրոգոնների պլանը (կրկնօրինակներ, տևողություն, տաքացում)։
  • «Սառը/տաք» ռեժիմների բաժանումը։
  • Ավելացումը ներառված է (CPU/alloc/IO/BD)։
  • Վիճակագրությունը ՝ CI, կարևորության թեստեր, գրաֆիկա։
  • Arthefakts և repro-ջութակները պահեստում (IaC պատի համար)։
  • Զեկույցը «բարելավման արժեքի» և ինտեգրման հետ։
  • Ռետեստը օպտիմիզացումից հետո (regression perf)։

Մինի զեկույցը (ձևանմուշ)

Նպատակը 'նվազեցնել p95 API-ը 15 տոկոսով առանց CPU> 10 տոկոսի աճի։

Մեթոդը ՝ A/B, k6 բաց-model 1k rps, 10-3 պրոգոն, warm cache։

Ընդհանուր ՝ p95-12 տոկոսը [249 տոկոսը, 2415 տոկոսը), CPU + 6 տոկոսը, 5xx-ը անփոփոխ։

Flamegraph: wwww.JSON սերիզացիան (www.30% CPU), նեղ տեղը տեղադրվեց BD-ում։

Որոշումը 'կայացնել օպտիմիզացիա; հաջորդ քայլը BD հարցումների մարտկոցն է։

Արտեֆակտներ 'գրաֆիկներ, պրոֆիլներ, դելիգներ, JSON պանիր։

Արդյունքը

Լավ բենչմարկինգը խիստ մեթոդաբանություն է + ազնիվ համեմատություններ + վիճակագրական վալիդենտություն + ավելացում + վերարտադրողականություն։ Վարկածներ դրեք, վերահսկեք շրջապատը, համարեք վստահելի ընդմիջումներ, հրապարակեք արտեֆակտներ և որոշումներ կայացրեք բարելավման արժեքի վերաբերյալ։ Այսպիսով, դուք կստանաք ոչ թե գեղեցիկ թվեր ներկայացման մեջ, այլ պլատֆորմի արագության և կանխատեսելիության իրական աճ։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։