ציון ספסל והשוואת ביצועים
תקציר
סימון הספסל הוא ניסוי, לא "ריצה מסוממת במשך 5 דקות. "עקרונות עיקריים:1. לנסח השערות ומדדים.
2. משתני בקרה (חומרה, ליבה, כוח, רעש רקע).
3. אספו מספיק נתונים (העתקים, מרווחי ביטחון).
4. האם פרופיל - בלעדיו אתה לא יכול להבין את ”למה”.
5. תסריטים, תיקון גרסאות וחפצים.
מטרות Benchmark ומדדים עסקיים
דרך: RPS/QPS/CPS, כותב/שניות
Latency: p50/p95/p99/צפיפות הזנב.
יעילות: Cost-per-1k RPS, וואט לעסקה, שיפור של דולר/אלפית שנייה.
יציבות: ג 'יטר, בין מחזור/משתנה צומת.
Elasticity: כיצד מדדים מודגשים במשאב N × (אמדאל/גוסטפסון benchmarkmarks).
מתודולוגיה: עיצוב ניסיוני
השערה: ”שליח עם HTTP/3 יפחית את p95 TFB ב-10-15% עם אותו RPS”.
יחידת השוואה: מבנה/הגדרה/גרסה לדוגמה של ברזל.
דיאגרמת A/B: ריצה מקבילה על סביבה זהה; או ABAB/Latin Square כדי להפחית את השפעת הסחף.
מספר חזרות: קיצור של 10 + 3 ריצות לכל תצורה עבור דירוג יציב.
סטטיסטיקות: חציוני, MAD, מרווחי ביטחון מגפיים; בדיקות לא פרמטריות (מאן-ויטני) להפצות ”זנב”.
DoE (מינימום): שינוי משתנה אחד בכל פעם (OVAT) או פעולת פרקטוריאלית עבור 2-3 גורמים (לדוגמה, TLS profile × HTTP gress × linel).
משתנה ובקרת רעש
מושל מעבד: ”ביצועים”; לנטרל ”חיסכון בכוח”.
טורבו/מצערת: תדרי ניטור, טמפרטורות וחנק (אחרת התחממות תעניק זכיות שגויות).
NUMA/Hyper-Threading: pin IRQs ותהליכים ('taskset/numactl'), מודדים את מיקום הזיכרון.
שיווי משקל C-states/IRQ: לתקן את ההגדרות; לבדיקות רשת - סיכת IRQ ליבות ספציפיות.
תהליכי רקע: צומת נקי, כבה cron/גיבוי/antivirus/updatdb.
רשת: שבילים יציבים, קבוע MTU/ECN/AQM, ללא רפרוף ערוץ.
נתונים: אותם סטים, קרדינליות והפצות.
מטמון: הפרד בין ”קור” (pirst pass) ו ”חם” (repress), סימן מפורש.
כיתות הספסל
1) מיקרו ספסל (פונקציה/אלגוריתם)
מטרה: למדוד קוד/אלגוריתם מסוים.
כלים: מסגרות ספסל מובנות (Go 'testing. B ', JMH, pytest-benchmark).
כללים: חימום JIT, אלפיות שנייה = ננו שניות; בידוד GC; זרעים קבועים.
2) Meso benchmarks (רכיב/שירות)
שרת HTTP, מטמון, ברוקר, מסד נתונים בצומת אחד.
כלים: wrk/wrk2, k6 (מודל פתוח), צמחייה, ghz (gRPC), fio, sysbench, iperf3.
כללים: גבולות חיבור/קובץ, בריכות; דו "ח מעבד/IRQ/GC.
3) אמות מידה מאקרו (נתיב e2e/בקשה)
דרך מלאה: CDN/edge = proxy ac service # DB/cache = תשובה.
כלים: k6/Locust/Gatling + RUM/OTEL איתור; תערובת מציאותית של מסלולים.
חוקים: קרוב יותר למציאות (מידע ”מלוכלך”, lags של מערכות חיצוניות), בצורה מסודרת עם retras.
metrics by layer
בחן תבניות ופקודות
רשת (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, קצב הגעה):
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 אקראי לקרוא):
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
זיכרון/מעבד (לינוקס perf + מתח-ng):
bash perf stat -e cycles,instructions,cache-misses,L1-dcache-load-misses \
-- <your_binary> --bench
סטטיסטיקה ותקפות
שכפול: מינימום 10 ריצות, להוציא חריגים (חזק: חציוני/MAD).
מרווחי ביטחון: bootstrap 95% CI עבור p95/p99 ואמצעים.
גודל אפקט: שינוי יחסי ו-CI (למשל 12% [-9%, 15% ]).
משמעות מעשית: ירידה של 10% ב-p95 במחיר של + 30% מעבד - האם זה שווה את זה?
גרפים: כינור/ECDF עבור הפצות, ”עקומות רוויה” (RPS # latency).
פרופיל צוואר בקבוק ולוקליזציה
מעבד: 'perf', 'async-profiler', eBPF/pyroscope; פלמגרף לפני ואחרי.
אלוק/GC: פרופילי ריצה (Go pprof/Java JFR).
I/O: "iostat", "blktrace", "fio --lat_percentiles=1'.
'S-S',' ethtool-S ',' dropwatch ',' tc-s qdisc '.
”הסבר (אנליזה, חוצץ)”, pg_stat_statements, איטי לוג.
מפתחות עליונים, טי-טי-אל, סיבת פינוי.
דיווח וחפצים
מה לתקן:- מבנה GIT SHA, דגלי הידור/אופטימיזציה.
- תצורת קרנל/רשת (sysctl), גרסאות התקן/NIC/קושחה.
- טופולוגיה (vCPU/NUMA/HT), מושל, טמפרטורה/תדרים.
- נתונים: גודל, קרדינליות, הפצות.
- מה לפרסם: טבלאות p50/p95/p99, שגיאה/שנייה, תפוקה, משאבים (CPU/RAM/IO), CI.
- חפצים: הרץ תסריטים, גרפים, פלמגרף, תוצאות גלם JSON/CSV, פרוטוקול סביבה.
ספסל הוגן
מגבלות זהות (מאגר קונון, שומר, שרשרת TLS, הידוק OCSP).
משא ומתן על פסקי זמן/מגשים מחדש וגרסת HTTP (h2/H3).
איזון טמפרטורה: התחממות לשיווי משקל (ללא אפקט טורבו-דחיפה).
או שניהם ”קרים” או שניהם ”חמים”.
סימטריית רשת: מסלולים זהים/MTU/ECN/AQM.
תקציב זמן: DNS/TLS/Connection - לספור באופן מפורש או לשלול באופן שווה.
אנטי-דפוסים
הרצה אחת = ”פלט”.
ערבוב של מצבים (חלק קר, חלק חם) בסדרה אחת.
מודל סגור במקום אחד פתוח עבור עומס האינטרנט = ”יציבות” כוזבת.
מגשים לא מוסברים = ”RPS גדל” במחיר של טייקים וגבס 5xx.
השוואה בין בלוטות/ליבות/מעגלי כוח שונים.
אין פרופיל * אופטימיזציה עיוורת.
משחק עם GC/Heap ללא ניתוח פרופיל _ רגרסיה זנב.
מתכונים מעשיים
צעדים מינימליים בצינור הספסל:1. תקן את הסביבה (script 'env _ capture. sh ').
2. חימום (5-10 דקות), תדרי שיא/טמפרטורות.
3. הפעלת N חזרות לטווח קצר + 1 ארוך.
4. הסר פרופילים (מעבד/אלוק/IO) בשיא.
5. חישוב מז "פ/גרפים, איסוף חפצים.
6. פתרון: לקבל/לדחות את ההשערה, ליצור את השלבים הבאים.
עקומת קיבולת:- מדרגות RPS (10% מהשלב) = תיקון p95/שגיאות _ מצא את ”הברך”.
- אנחנו בונים לוח זמנים של RPS * latency ו-RPS = מעבד: אנחנו רואים את הגבול ואת העלות של% נוספים.
iGaming/fintech ספציפי
עלות לאלפית שנייה: שיפורים בדולר (Transportation/churn/PSP limits).
פסגות (התאמות/טורנירים): spike + plateau benchmarks עם TLS/CDN/cache מתחמם.
תשלומים/PSP: מדידה מקצה לקצה עם גבולות ארגז חול, אידמפוטנטיות ותגובות להשפלה; לתקן את הזמן לארנק עם מטרי פרוקסי.
מסנני אנטי-הונאה/בוט: כוללים פרופיל כללי בספסל המאקרו (false-positive-rate, latency additive).
מנהיגים/זכיינים: מבחן מפתחות חמים/דירוג, מנעולים, אטומיציה.
רשימת סימון הספסל
[ ] היפותזה/מדדים/קריטריון הצלחה.
[ ניטור משתנה ] (power/NUMA/IRQ/network/cache).
[ תוכנית ] Run (העתקים, משך זמן, חימום)
[ ] הפרדה קרה/חמה.
[ פרופיל ] מאופשר (CPU/alloc/IO/DB).
[ סטטיסטיקות ]: CI, מבחני משמעות, גרפים.
[ ] חפצים ותסריטי חזרה במאגר (איי-סי לספסל).
[ דו "ח ] עם" עלות שיפור "והמלצות.
[ ] רגרסיה.
מיני-report (תבנית)
המטרה היא להפחית את API P95 ב-15% ללא צמיחת מעבד> 10%.
שיטה: A/B, k6 open-מודל 1k rps, 10 × 3 ריצות, מטמון חם.
סך הכל: p95 - 12% [ -9%, 15% ], מעבד + 6%, 5xx ללא שינוי.
פלמגרף: serialization של JSON (30% מעבד), צוואר הבקבוק עבר לבסיס הנתונים.
החלטה: לקבל אופטימיזציה; השלב הבא הוא לצבור בקשות לבסיס נתונים.
חפצים: גרפיקה, פרופילים, תצורות, JSON גולמי.
סך הכל
סימון טוב הוא מתודולוגיה קפדנית + השוואות הוגנות + תוקף סטטיסטי + פרופיל + רבייה. השערה, שליטה בסביבה, קריאת מרווחי ביטחון, פרסום חפצים ולקבל החלטות על עלות השיפור. אז לא תקבלו דמות יפה במצגת, אלא עלייה אמיתית במהירות וביכולת החיזוי של הפלטפורמה.