Темир жана ресурстарды оптималдаштыруу
Кыскача резюме
Оптималдаштыруу - бул "бир нерсени тездетүү" эмес, өндүрүмдүүлүктү тең салмактоо, чыгым, ишенимдүүлүк, энергия. Негизги кадамдар: SLI/SLO жана профилдерин өлчөө, тар жерлерди табуу, кубаттуулукту "туура өлчөө", масштабдоону автоматташтыруу жана сүрөттөрдө/чарттарда/саясаттарда жакшыртууларды бекемдөө.
Максаттары жана принциптери
UX темирге чейин: SLO баштап (p95 latency, ийгиликтүү иш) → чектөөчү ресурс издеп.
Туура өлчөм (rightsizing): жүктүн мүнөзүнө ылайык ресурстар жана түрлөрү.
Кэш жана жакындыгы: кампаларга жана тармактарга "кымбат" саякаттарды азайтыңыз.
Automation: autoscaling, жашоо саясаты, IaC.
Байкоо: "төрт сигнал" метрика, CPU/alloc, Trace.
Коопсуздук = аткаруу: mTLS/кол/чектери - мүмкүн болгон жерде аппараттык тездетүү менен.
CPU жана пландаштыруу
Милдеттери: Контеншен жана кэш-каталарды минималдаштыруу, NUMA жана үзгүлтүктөрдү эске алуу.
NUMA-маалымдуулугу: түйүндөр боюнча pinning ('numactl --cpunodebind --membind'), DD/брокерлер үчүн - түйүнгө бекитүү.
IRQ/softirq: Core бөлүштүрүү (RSS/RPS), үйрөнчүктөр менен атаандаштык жок CPU үчүн ысык кезек.
Гиперпоточность: "латентизмге сезгич" үчүн - воркерлерди физикалык ядролорго бекитүү.
Контекст-свитчи: узун кезек/батчинги/асинхрон аркылуу кыскартуу.
Компиляторлор/JIT: PGO/LTO (C/C + +), Graal/HotSpot профилдери (Java), 'GOMAXPROCS' жана Worker тандоо (Go) кирет.
bash
IRQ affinity: bind NIC queue to specific CPU echo 2 >/ proc/irq/XX/smp_affinity # kernel mask
Softirq balance on sysctl -w net network cores. core. netdev_budget=600 sysctl -w net. core. netdev_max_backlog=5000
Эс тутуму жана аллокацияларды башкаруу
THP/HugePages: JVM/DB үчүн - адатта THP өчүрүү жана hugepages кол менен колдонуу (TLB каталарды азайтат).
NUMA балансы: stateful үчүн - жергиликтүү түйүнүндө эстутумду чечүү.
- JVM: G1/ZGC, '-Xms = -Xmx' барабар, акылга сыярлык 'MaxGCPauseMillis'.
- Go: 'GOGC' (100-200 менен башталат), ашыкча бурмалоолордон качуу, 'pprof' профилдери.
- Python: 'uvloop', 'asyncio', C-кеңейтүү, байланыш бассейни колдонуу.
- Swap/zswap: сынчыл кызматтар үчүн демейде swap off; жалпы багыттагы түйүндөрдө - "жумшак" жүктөр үчүн zswap.
Сактоо жана I/O
Дисктердин түрлөрү: NVMe hot-path астында, логиндер/чекапоинттер/темп үчүн өзүнчө бассейндер.
FS: XFS үчүн чоң файлдар/DD журналдар; ext4 кичинекей/жалпы үчүн.
RAID/EC: төмөн кечигүү үчүн RAID10, RAID6/EC - муздак маалыматтар астында.
I/O-пландаштыруу: 'none '/' mq-deadline' үчүн NVMe.
Async/Batch: жазууларды топтоп, Write-Behind/Group-Commit колдонуңуз.
bash fio --name=randread --filename=/data/test --size=20G --bs=4k \
--iodepth=64 --rw=randread --ioengine=libaio --numjobs=4 --time_based --runtime=60
Тармак
MTU жана Offload: 9000 MTU datacenter (end-to-end болсо), GRO/LRO жол бар.
RSS/RPS/RFS: NIC боюнча көп каналдуу кезек, негизги бөлүштүрүү; irqbalance - көзөмөлгө алынган.
SO_REUSEPORT: ядро бөлүштүрүү менен масштабдуу listen-сокет.
Кардарлардын таймауттары жана пуллингдери: кыска TCP-keepalive, ачык коннекттердин чеги, backpressure.
TLS: TLS 1. 3, аппараттык көрсөтмөлөр AES-NI, сессия resumption, OCSP stapling.
bash sysctl -w net. core. rmem_max=268435456 sysctl -w net. core. wmem_max=268435456 sysctl -w net. ipv4. tcp_rmem="4096 87380 134217728"
sysctl -w net. ipv4. tcp_wmem="4096 65536 134217728"
GPU/FPGA/SmartNIC (ылайыктуу жерде)
GPU: inference antifrode, сунуштар, CV; 'util', 'mem', 'sm _ efficiency'.
SmartNIC/eBPF/DPDK: L4/L7 түшүрүү, чыпкалоо, ядро өтүү жок телеметрия.
Энергия профилдери: жыштыктарды туруктуу латенттүүлүк менен бекитүү; агрессивдүү күч-сактоо качуу.
Тиркемелер жана РСУБД
Pool байланыш: чектөө 'max _ conns', connection pooling (PgBouncer/Hikari) колдонуу.
Индекстер/пландоочулар: EXPLAIN/ANALYZE профилдери, индекстерди жаап, партиялаштыруу.
Кэш: Redis/in-процесси кэш, статика үчүн CDN, "ысык" API үчүн edge кэш.
Демпотенттик жана кезек: Ретрациялардын каскаддарынан алыс болуңуз, dedup.
Gzip/Brotli: CPU наркын эске алуу менен жооп кысуу; балансты тандаңыз.
Контейнерлер жана Kubernetes
Requests/Limits и bin-packing
Requests = "кепилдик", Limits = "шып". Туура эмес Limits CPU → throttling жана p99.
Бурст-жүктөрдү эске алуу (турнирлердин/матчтардын чокулары) - p95 запастагы.
Bin-packing: түйүндөрдүн пулдарын бөлүп (latency-crit, batch, GPU, spot). Топологияны колдонуңуз (anti-affinity, spread).
Автоматтык масштабдоо
HPA (CPU эмес, RPS/p95).
VPA "узак" жана "эмес" workloads үчүн.
Cluster Autoscaler + өзүнчө node-топтор (on-demand/spot).
KEDA окуя жүк (кезек, Kafka, cron).
Пландоочу жана менеджерлер
CPU Manager: 'Static' latency-критикалык түтүктөрдүн толук ядросун пиннинг үчүн.
Topology Manager: NUMA боюнча тегиздөө.
HugePages/Device Plugins: DB/төмөн латенттүүлүк жана GPU/FPGA үчүн.
yaml apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: { name: api-gw }
spec:
scaleTargetRef:
apiVersion: apps/v1 kind: Deployment name: api-gw minReplicas: 6 maxReplicas: 60 metrics:
- type: Pods pods:
metric:
name: http_latency_p95_ms target:
type: AverageValue averageValue: 120
FinOps жана наркы
Тарифтердин профилдери: CPU/RAM/диск/тармак аркылуу инстанцияларды тандоо (compute-optimized, memory-optimized, storage-optimized).
Spot/Preemptible: мультизондук ашыкча менен batch/staging/кэш үчүн.
Reservation/Savings: "туруктуу" бөлүгү үчүн 1-3 жылга камдар.
Ысык/муздак: tiered-storage, Archives үчүн объект, retenshn логиндер.
Idle-Resources: Night/Weekend-Stop эмес-маанилүү чөйрө.
Энергия натыйжалуулугу (GreenOps)
Power profiles: performance vs balanced services.
Co-жайгаштыруу: "муздак" саат мөөр, пайдаланылбаган түйүндөрдү өчүрүү.
KPI: өтүнүч боюнча Watt, p95/Watt, CO ₂ -метрикалык провайдер.
Байкоо жана сыноо
Метрики: CPU steal/throttle, `cycles/instructions`, LLC miss, RSS/working set, page faults, disk lat p95/99, NIC drops, retransmits.
Trading: "алтын жолдор" үчүн бөлүштүрүлгөн соода.
Профилдөө: eBPF/Perf/Flamegraphs, 'pprof '/YourKit/JFR.
Жүктөө тесттер: SLO-багытталган, иш жүзүндө mix менен, "жылытуу" этабы, fault-инъекция.
promql
CPU throttling доля sum(rate(container_cpu_cfs_throttled_seconds_total[5m])) by (pod)
/ sum(rate(container_cpu_usage_seconds_total[5m])) by (pod)
Network loss sum (rate (node_net_dropped_total[5m])) by (instance)
Оптималдаштыруу тизмеси
- SLO жана "алтын жолдор" аныкталган (API/төлөмдөр/төлөмдөр).
- CPU/alloc/IO/Network профилдери чогултулган, Top-N тар жерлери табылган.
- NUMA/IRQ/RSS latency-критикалык түйүндөрүндө орнотулган.
- THP off (зарыл болсо), DD/Java кызматтары үчүн hugepages.
- NVMe ысык маалыматтар боюнча, XFS/IO-белгиленген, fio-bench тастыкталган.
- Тармак стек: MTU, RPS/RFS, SO_REUSEPORT; таймауттар/пулдар.
- Kubernetes: Requests туура, Limits муунтуп эмес, HPA бизнес-метрика, VPA/CA кирет.
- "кымбат" жолдордо кэш жана CDN; Redis/edge кэш.
- FinOps: rightsizing/камдар/spot бассейндер; idle-чөйрөнү токтотуу.
- CI аткаруу Automatest, p95/p99 боюнча регрессия.
iGaming/Fintech үчүн өзгөчөлүктөрү
График боюнча чокулар: турнирлер/матчтар/акциялар → "ийкемдүү" фронт бассейни, алдын ала жылытылган кэш/CDN, RPS/жашыруун HPA.
Төлөмдөр жана төлөмдөр: өзүнчө "алтын" IP/домендер, артыкчылыктуу кезектер, ресурстарды изоляциялоо (taints/tolerations), база боюнча резерв.
Antibot/антифрод: оор моделдер - GPU Worker боюнча; 50 ms p95 ≤ онлайн эсеби; фич кэши.
Жөнгө салуучу: өзгөрүлбөгөн логиндер жана шифрлөө SLOну бузбашы керек - аппараттык ылдамдатууларды жана асинхрондук пайплайндарды күйгүзүңүз.
Mini Playbook
Латентность ↑ чыгарылгандан кийин:1. Burn-rate SLO салыштыруу; 2) 'cpu/alloc' профилдери; 3) артка чегинүү/фичфлаг; 4) Replica/API кэш жогорулатуу; 5) RCA жана сыноо бекитүү.
жогорку жүк (дал/турнир):1. CDN/кэш жылытуу; 2) minReplicas жогорулатуу; 3) бурст-лимиттерди киргизүү; 4) кезек күтүүгө; 5) экинчи функциялар үчүн read-only режимин күйгүзүү.
Типтүү каталар
Limits CPU "муунтуу" жогорку workloads → жогорку p99.
Туура эмес түйүндөр бассейни: latency-критикалык жана batch аралаштырып.
DB/брокерлерде NUMA/IRQ жөндөөлөрүнүн жоктугу.
Алгоритмдерди/кэштерди/SQL оңдоонун ордуна "симптомдорду дарылоо" (CPU кошуу).
CPU боюнча HPA ордуна RPS/latency → кеч болуп саналат.
CI → регрессия өндүрүмдүүлүк тесттер жок.
Жыйынтык
Оптималдаштыруу - бул системалуу иш: SLI/SLO өлчөө, профилдөө, алгоритмдерди оңдоо, темирди (NUMA/IRQ/IO/тармак), ресурстарды "туура өлчөө" жана масштабдоону автоматташтыруу. Шаблондордо (сүрөттөр, хит-параддар, саясаттар) жакшыртууларды бекемдөө, чыгымдарды жана энергияны көзөмөлдөө - жана сиздин платформа да экстремалдык чокуларда тез, үнөмдүү жана туруктуу бойдон кала берет.