{"id":20634,"date":"2026-08-14T11:50:07","date_gmt":"2026-08-14T09:50:07","guid":{"rendered":"https:\/\/webhosting.de\/numa-memory-policies-datenbankserver-optimierung-server\/"},"modified":"2026-08-14T11:50:07","modified_gmt":"2026-08-14T09:50:07","slug":"numa-hukommelsespolitikker-databasesserver-optimering-server","status":"publish","type":"post","link":"https:\/\/webhosting.de\/da\/numa-memory-policies-datenbankserver-optimierung-server\/","title":{"rendered":"NUMA-hukommelsespolitikker til store databaseservere: M\u00e5lrettet optimering af ydeevnen"},"content":{"rendered":"<p><strong>NUMA-hukommelse<\/strong> bestemmer for store databaseservere, hvor t\u00e6t tr\u00e5de arbejder p\u00e5 den n\u00f8dvendige hukommelse, og i hvor h\u00f8j grad forsinkelser p\u00e5virker svartider og gennemstr\u00f8mning. Jeg tilpasser m\u00e5lrettet CPU-allokering, hukommelsesplacering og arbejdsbelastningens st\u00f8rrelse, reducerer fjernadgang og opn\u00e5r dermed en p\u00e5lidelig, planl\u00e6gbar <strong>Ydelse<\/strong>.<\/p>\n\n<h2>Centrale punkter<\/h2>\n<ul>\n  <li><strong>Topologi<\/strong> forst\u00e5: tage m\u00e5lrettet h\u00f8jde for knudepunkter, kerner, RAM og interconnect.<\/li>\n  <li><strong>Politikker<\/strong> V\u00e6lg den passende indstilling: Strict, Preferred eller Interleave afh\u00e6ngigt af m\u00e5let for arbejdsbelastningen.<\/li>\n  <li><strong>affinitet<\/strong> Implementere: Binde tr\u00e5de, IRQ'er og hukommelse lokalt.<\/li>\n  <li><strong>VM'er<\/strong> p\u00e5 knudepunktsniveau: Placer vCPU og RAM i et NUMA-knudepunkt.<\/li>\n  <li><strong>Overv\u00e5gning<\/strong> Gennemf\u00f8re: M\u00e5ling af fjernl\u00e6sninger, P99-latens og knudebelastning.<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/datenbankserver-setup-8273.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>At forst\u00e5 NUMA-topologi<\/h2>\n<p>Jeg starter enhver optimering med <strong>Topologi<\/strong>: Hvor mange NUMA-knudepunkter findes der, hvordan er kernerne fordelt, hvordan er RAM'en tilkoblet til soklerne, og hvor tidskr\u00e6vende er adgangen til interconnect-netv\u00e6rket? Adgang til lokal hukommelse tager betydeligt kortere tid end adgang p\u00e5 tv\u00e6rs af knudepunkter, derfor undg\u00e5r jeg un\u00f8dvendige <strong>Fjernbetjening<\/strong>-metoder. Store databaseservere drager fordel af, at jeg planl\u00e6gger arbejdsm\u00e6ngderne p\u00e5 en s\u00e5dan m\u00e5de, at tr\u00e5de og data forbliver p\u00e5 samme node. Hvis den aktive datam\u00e6ngde ikke kan rummes p\u00e5 en enkelt node, planl\u00e6gger jeg fordelingen bevidst i stedet for at overlade den til standardadf\u00e6rden. P\u00e5 den m\u00e5de holder jeg <strong>Forsinkelse<\/strong> lav og sikrer en j\u00e6vn gennemstr\u00f8mning, selv ved h\u00f8j belastning.<\/p>\n\n<h3>V\u00e6lg den rigtige BIOS- og hardwareindstilling<\/h3>\n<p>Jeg kontrollerer i BIOS, at <strong>Node-interleaving<\/strong> er deaktiveret, s\u00e5 NUMA-adskillelsen bevares. Jeg fordeler hukommelseskanalerne symmetrisk pr. sokkel og er opm\u00e6rksom p\u00e5 konfigurationen (1DPC vs. 2DPC), s\u00e5 klokfrekvensen og b\u00e5ndbredden ikke falder un\u00f8digt. Funktioner som <strong>C-tilstande<\/strong> og n\u00e5r det g\u00e6lder latensm\u00e5l, indstiller jeg aggressive energibesparelsestilstande mere konservativt, s\u00e5 kernerne ikke hele tiden skal v\u00e5gne op. <strong>SMT\/Hyper-Threading<\/strong> Jeg vurderer dette ud fra den specifikke arbejdsbelastning: For OLTP-arbejdsbelastninger, der er st\u00e6rkt afh\u00e6ngige af hukommelse, begr\u00e6nser jeg antallet af parallelt aktive SMT-tr\u00e5de pr. kerne for at reducere cache-belastningen og variabiliteten. Jeg kontrollerer desuden, at PCIe-enheder (NIC'er, NVMe) er tilsluttet lokalt pr. sokkel, s\u00e5 deres <strong>IRQ'er<\/strong> og at DMA-stier ikke l\u00f8ber p\u00e5 tv\u00e6rs af interconnecten. Hvis man l\u00e6gger et grundigt fundament her, skaber man det grundlag, hvorp\u00e5 politikker og affiniteter kan udfolde deres virkning.<\/p>\n\n<h2>S\u00e5dan v\u00e6lger du de rigtige hukommelsespolitikker<\/h2>\n<p>Valget af <strong>Politik<\/strong> bestemmer, fra hvilket node kernen allokerer hukommelse, og hvordan fallbacks skal se ud. \u00bbStrict\u00ab s\u00e6tter strenge gr\u00e6nser og afbryder allokeringer, hvis m\u00e5lnoden ikke har plads; dette prioriterer <strong>Str\u00f8m<\/strong> om fleksibilitet. \u00bbPreferred\u00ab foretr\u00e6kker en bestemt node, men falder tilbage p\u00e5 andre i tilf\u00e6lde af knaphed og udg\u00f8r dermed en mellemvej. Interleave fordeler sider efter round-robin-metoden p\u00e5 flere noder, hvilket kan v\u00e6re fornuftigt ved meget store, j\u00e6vnt udnyttede datas\u00e6t. For mange databaser er en lokal strategi med Preferred eller Strict som regel den bedste <strong>Valgmuligheder<\/strong>.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Politik<\/th>\n      <th>Adf\u00e6rd<\/th>\n      <th>Typisk brug<\/th>\n      <th>Fordele<\/th>\n      <th>Risici<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>Streng<\/td>\n      <td>Henter kun data fra m\u00e5lknudepunktet, ellers vises der en fejlmeddelelse<\/td>\n      <td>Latentzkritisk <strong>Databaser<\/strong> med en klar planl\u00e6gning af knudepunkterne<\/td>\n      <td>S\u00e5 lokalt som muligt <strong>Adgange<\/strong>, forudsigelige ventetider<\/td>\n      <td>Allokeringen kan mislykkes, hvis noden er fuld<\/td>\n    <\/tr>\n    <tr>\n      <td>Foretrukket<\/td>\n      <td>Foretrukket knudepunkt, mulighed for at falde tilbage p\u00e5 andre<\/td>\n      <td>Generelt <strong>Arbejdsbyrder<\/strong> med skiftende belastning<\/td>\n      <td>God n\u00e6rhed med en acceptabel grad af fleksibilitet<\/td>\n      <td>St\u00f8rre andel af fjernarbejde i tilf\u00e6lde af mangel<\/td>\n    <\/tr>\n    <tr>\n      <td>Interleave<\/td>\n      <td>Round-robin over flere knudepunkter<\/td>\n      <td>Meget store, bredt anvendte <strong>Data<\/strong><\/td>\n      <td>Fordelt belastning p\u00e5 flere knudepunkter<\/td>\n      <td>Svagere signalstyrke, potentielt h\u00f8jere ventetid<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/NUMA_Optimierung_Besprechung_1234.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Tr\u00e5de, CPU-affinitet og hukommelsesbinding<\/h2>\n<p>Jeg pinner tr\u00e5de til kerner p\u00e5 m\u00e5lknudepunktet, binder hukommelse med numactl og tilpasser IRQ'er, s\u00e5 <strong>Data<\/strong> forblive lokalt. Denne kombination af CPU-affinitet og memory binding reducerer kostbare fjernl\u00e6sninger og g\u00f8r fordelingen af k\u00f8retiden mere j\u00e6vn. For at opn\u00e5 detaljeret kontrol bruger jeg politikker p\u00e5 proces- eller tr\u00e5dniveau og holder bufferpoolen s\u00e5 t\u00e6t p\u00e5 de aktive arbejdstr\u00e5de som muligt. Hvis du vil dykke dybere ned i emnet, finder du praktiske trin til <a href=\"https:\/\/webhosting.de\/da\/server-numa-lokalitet-cpu-hukommelse-affinitet-optimering-kerne\/\">CPU-affinitet<\/a>, som kan anvendes direkte p\u00e5 produktive v\u00e6rter. P\u00e5 den m\u00e5de sikrer jeg konsistens <strong>Forsinkelser<\/strong> selv n\u00e5r systemet er st\u00e6rkt belastet.<\/p>\n\n<h3>Prioriter lokale hotsets<\/h3>\n<p>Jeg identificerer hotsets fra <strong>Arbejdsbyrde<\/strong> og placerer dem strengt lokalt, mens \u00bbkolde\u00ab data gerne m\u00e5 ligge mere fleksibelt. Gennem denne prioritering holder jeg mig t\u00e6t p\u00e5 nodens RAM i de centrale stier. Hvis belastningen stiger, skalerer l\u00f8sningen problemfrit, fordi de ressourcekr\u00e6vende stier fortsat k\u00f8rer lokalt. Uden denne struktur begynder latenstidskurven at glide, s\u00e5 snart tr\u00e5de i stigende grad henter data p\u00e5 tv\u00e6rs af noder. En klar <strong>Indbinding<\/strong> forhindrer netop denne adf\u00e6rd p\u00e5lideligt.<\/p>\n\n<h3>Sammenl\u00e6gning af Storage- og netv\u00e6rks-NUMA<\/h3>\n<p>Jeg organiserer <strong>NIC'er<\/strong> og <strong>NVMe<\/strong>-Enhederne tildeles m\u00e5lrettet til soklerne, og deres IRQ\u2019er dirigeres til lokale kerner. Jeg holder Receive-\/Transmit-Steering (RSS\/RPS\/XPS) konsistent pr. node, s\u00e5 pakker behandles d\u00e9r, hvor databasetr\u00e5dene ogs\u00e5 k\u00f8rer. Ved NVMe bruger jeg flere k\u00f8er pr. kerne og fastg\u00f8r IO-tr\u00e5de lokalt, s\u00e5 log- og datastier ikke pendler via interconnecten. Til replikering adskiller jeg netv\u00e6rksstier pr. node, s\u00e5 indg\u00e5ende WAL\/Redo-str\u00f8mme ender lokalt. P\u00e5 den m\u00e5de forbliver <strong>IO<\/strong>\u2013 og CPU-stierne er kongruente, og databasen spilder ikke cyklusser p\u00e5 un\u00f8dvendige kopier p\u00e5 tv\u00e6rs af hukommelsessystemet.<\/p>\n\n<h2>Planl\u00e6gning af VM'er p\u00e5 knudepunktsniveau<\/h2>\n<p>Jeg dimensionerer virtuelle maskiner (VM'er) s\u00e5ledes, at antallet af vCPU'er og RAM passer ind i en fysisk NUMA-node, da det reducerer <strong>Forsinkelse<\/strong> og interconnect-trafik. Wide VM\u2019er, der er st\u00f8rre end en node, spreder uundg\u00e5eligt hukommelsesadgangene og mister dermed forudsigeligheden. Hvis en VM skal v\u00e6re st\u00f8rre, planl\u00e6gger jeg vNUMA eksplicit og s\u00f8rger for en symmetrisk fordeling p\u00e5 tv\u00e6rs af noderne. P\u00e5 v\u00e6rtsiden undg\u00e5r jeg oversubscription ved latensbelastninger og holder den lokale hukommelse reserveret pr. VM. Et hurtigt overblik over den fysiske knudestruktur gives af \u201e<a href=\"https:\/\/webhosting.de\/da\/numa-nodes-server-hosting-store-systemer-serverboost\/\">Planl\u00e6gning af NUMA-knudepunkter<\/a>\u201c, hvilket g\u00f8r det lettere at tr\u00e6ffe beslutninger om VM-st\u00f8rrelsen og <strong>Fejl<\/strong> forhindrer, at den s\u00e6tter sig fast.<\/p>\n\n<h3>V\u00e6r opm\u00e6rksom p\u00e5 hypervisor-indstillingerne<\/h3>\n<p>Jeg unders\u00f8ger, hvordan hypervisoren pr\u00e6senterer vNUMA, og registrerer tildelingen af vCPU-grupper til fysiske <strong>Kerner<\/strong> Konsekvent. Derudover s\u00f8rger jeg for, at VM\u2019ens NUMA-topologi passer til v\u00e6rtsmaskinens, s\u00e5 scheduleren kan forblive lokal. Jeg holder hukommelsesreservationer og anti-affinitetsregler s\u00e5 begr\u00e6nsede som muligt, men s\u00e5 strenge som n\u00f8dvendigt. H\u00f8j VM-t\u00e6thed p\u00e5 en sokkel foretr\u00e6kker jeg at erstatte med en fordeling t\u00e6t p\u00e5 noderne. S\u00e5ledes reserverer jeg <strong>Fjernbetjening<\/strong>- Begr\u00e6ns adgangene til et minimum, og s\u00f8rg for, at IO-stierne forbliver stabile.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/numa-memory-policies-database-8672.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h3>Container- og orkestreringspraksis<\/h3>\n<p>I beholdere placerer jeg <strong>cpuset<\/strong>-Gr\u00e6nserne er konsistente: CPU'er og tilh\u00f8rende hukommelsesmasker (<em>cpuset.cpus<\/em>, <em>cpuset.mems<\/em>) h\u00f8rer sammen. Systemd-slices og -units tildeles faste CPU-affiniteter, s\u00e5 kernen rent faktisk kan h\u00e5ndh\u00e6ve hukommelsesprioriteringen. I orkestreringslagene planl\u00e6gger jeg pods\/tjenester <strong>t\u00e6t p\u00e5 knudepunktet<\/strong>, bruger jeg topologivurderinger og statisk CPU-tildeling, s\u00e5 en arbejdsbelastning ikke skifter frem og tilbage mellem noder. Jeg deklarerer Huge Pages eksplicit pr. pod\/container og holder deres st\u00f8rrelse og antal pr. node stabilt. Vigtigt: Infrastruktur- og sideprocesser (logning, sidecars, backups) binder jeg til andre kerner eller endda til den modsatte NUMA-node for ikke at forstyrre database-hotsets.<\/p>\n\n<h2>NUMA-balancering og optimering af operativsystemet<\/h2>\n<p>Automatisk NUMA-balancering kan lokale <strong>Adgange<\/strong> forbedre, n\u00e5r arbejdsbelastninger flytter sig, eller n\u00e5r faser \u00e6ndrer sig markant. Jeg bruger det m\u00e5lrettet, men holder \u00f8je med, om det at flytte sider frem og tilbage forstyrrer mere, end det gavner. Fastlagte processer med en klar tilknytning drager ofte st\u00f8rre fordel af manuelt indstillede politikker end af konstant omfordeling. Kernel-parametre, IRQ-styring og transparente Huge Pages tjekker jeg i hver sin sammenh\u00e6ng med databasen og platformen. Som udgangspunkt hj\u00e6lper dette mig <a href=\"https:\/\/webhosting.de\/da\/numa-balancering-server-hukommelse-optimering-hardware-numaflux\/\">NUMA-balancering<\/a>-Vejledning til trinvis test af indstillingerne og til <strong>spredning<\/strong> at reducere ventetiderne.<\/p>\n\n<h2>M\u00e5lrettet brug af Huge Pages<\/h2>\n<p>Jeg bruger Huge Pages for at reducere TLB-misses og store <strong>Hukommelse<\/strong>at h\u00e5ndtere disse omr\u00e5der mere effektivt. Til databaseservere reserverer jeg siderne p\u00e5 forh\u00e5nd, tildeler dem til noder og kontrollerer, om instansen rent faktisk bruger dem. Jeg deaktiverer ofte Transparent Huge Pages, n\u00e5r der er m\u00e5ls\u00e6tninger for latenstid, og indstiller statiske Huge Pages, s\u00e5 allokeringen forbliver deterministisk. Afg\u00f8rende er dog stadig n\u00e6rheden til NUMA-noden; Huge Pages styrker en god strategi, men erstatter den ikke. Den, der ignorerer dette, vinder n\u00e6ppe noget. <strong>Str\u00f8m<\/strong> og risikerer bivirkninger ved paging.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/numa_optimierung_7436.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Dimensionering af databaser: Bufferpool og arbejdsm\u00e6ngde<\/h2>\n<p>Jeg planl\u00e6gger den aktive arbejdsm\u00e6ngde s\u00e5ledes, at bufferpoolen, l\u00e5se- og plan-cacherne samt de mest belastede <strong>Tabeller<\/strong> passer ind i en node. Ved meget store instanser fordeler jeg tjenester eller shards p\u00e5 tv\u00e6rs af noderne i stedet for at str\u00e6kke en k\u00e6mpe monolitisk instans over alle noder. I OLTP-tilf\u00e6lde holder jeg bufferpoolen pr. node kompakt og prioriterer lokale hit-rater. Ved OLAP-scanninger kan interleave i s\u00e6rlige tilf\u00e6lde v\u00e6re fornuftigt, hvis datam\u00e6ngden er enorm og j\u00e6vnt fordelt. Uden denne disciplin vokser <strong>Interconnect<\/strong>-trafik og t\u00e6rer p\u00e5 reserverne netop i de \u00f8jeblikke, hvor der opst\u00e5r spidsbelastninger.<\/p>\n\n<h3>Databasespecifikke tips<\/h3>\n<p>Jeg tager h\u00f8jde for motorens proces- og tr\u00e5dmodel: <strong>PostgreSQL<\/strong> bruger processer, derfor k\u00f8rer jeg hovedinstansen, Autovacuum og Checkpointer separat for hver node og holder <em>shared_buffers<\/em> lokalt pr. shard. Ved <strong>MySQL\/InnoDB<\/strong> jeg sorterer <em>bufferpool-instanser<\/em> p\u00e5 knudepunkter og ret IO-tr\u00e5de og log-writer lokalt. <strong>SQL Server<\/strong> drager fordel af tilpasset Soft-NUMA og en allokering, der fordeler schedulere og hukommelsesgrupper p\u00e5 tv\u00e6rs af de fysiske noder. <strong>Oracle<\/strong>-Jeg ops\u00e6tter instanser med lokale Large Pages og fordeler worker- og IO-servere p\u00e5 tv\u00e6rs af noderne. Generelt reducerer jeg allokatorens (f.eks. jemalloc) arena-konkurrence ved hj\u00e6lp af NUMA-bevidste arenaer og s\u00f8rger for, at <strong>L\u00e5seadministrator<\/strong> og at Latch-hotspots forbliver lokale ved at udf\u00f8re partitionering og sharding p\u00e5 tv\u00e6rs af noderne.<\/p>\n\n<h2>Overv\u00e5gning: De vigtigste n\u00f8gletal<\/h2>\n<p>Jeg m\u00e5ler fjernl\u00e6sninger, trafik mellem noder, sidefejl pr. node og P99-<strong>Forsinkelse<\/strong> de relevante foresp\u00f8rgsler. Derudover overv\u00e5ger jeg CPU-udnyttelsen pr. node, NUMA-miss-forhold og andelen af lokale hukommelsesadgange. Dette overblik viser, om politikken virker, eller om tr\u00e5de ukontrolleret tilg\u00e5r fjerne sider. Jeg sammenholder spidsbelastninger med scheduler-beslutninger, migrationsh\u00e6ndelser og allokeringsfejl. F\u00f8rst disse m\u00e5linger bekr\u00e6fter, at <strong>Politik<\/strong> ikke kun i laboratoriet, men ogs\u00e5 p\u00e5 lang sigt i produktionssystemet.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/numa_memory_optimierung_3481.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Teststrategi og implementering<\/h2>\n<p>Jeg tester i trin: F\u00f8rst mikrobenchmarks til <strong>B\u00e5ndbredde<\/strong> og latenstid pr. node, derefter realistiske arbejdsbelastninger med kolde og varme cacher. Jeg \u00f8ger belastningsniveauet trinvist, m\u00e5ler P95\/P99\/P99,9 og observerer fordelingen, ikke kun gennemsnitsv\u00e6rdierne. Jeg dokumenterer hver \u00e6ndring (politik, affiniteter, Huge Pages, IRQ-omdirigering) og sammenligner A\/B under identiske betingelser. F\u00f8r implementeringen definerer jeg <strong>Kriterier for aflysning<\/strong> og en backout-plan, s\u00e5 jeg hurtigt kan vende tilbage til den tidligere konfiguration i tilf\u00e6lde af regressioner. En kort soak-test under kontinuerlig belastning d\u00e6kker <strong>Drift<\/strong> og migrationer, der forbliver usynlige i korte perioder.<\/p>\n\n<h2>Trin-for-trin-vejledning<\/h2>\n<p>F\u00f8rst registrerer jeg <strong>Topologi<\/strong>: Antal noder, kerneallokering, hukommelseskanaler og interconnect. Derefter fastl\u00e6gger jeg m\u00e5l-workloaden pr. node og tjekker, om hotsets passer ind. I det n\u00e6ste trin indstiller jeg CPU-affinitet, IRQ-dirigering og memory binding p\u00e5 proces- eller tr\u00e5dniveau. Derefter aktiverer eller deaktiverer jeg NUMA-balancering afh\u00e6ngigt af arbejdsbelastningens dynamik og reserverer om n\u00f8dvendigt Huge Pages pr. node. Til sidst verificerer jeg resultatet med repeterbare belastningstests og overv\u00e5ger <strong>N\u00f8gletal<\/strong> i kontinuerlig drift.<\/p>\n\n<h2>Praktiske eksempler og forhindringer<\/h2>\n<p>En OLTP-instans med mange korte transaktioner opn\u00e5r en m\u00e5lbar forbedring, hvis jeg indstiller arbejdstr\u00e5de og bufferpoolen til en <strong>Knudepunkt<\/strong> angiver og indstiller til \u201eStrict\u201c eller \u00bbPreferred\u00ab. Et datalager med brede scanninger kan drage fordel af \u00bbInterleave\u00ab, hvis dataene udnyttes meget j\u00e6vnt, og knudepunkterne udnyttes godt. VM'er bliver m\u00e6rkbart sv\u00e6rere at planl\u00e6gge, s\u00e5 snart de vokser ud over knudepunktsgr\u00e6nserne, og hypervisoren tildeler hukommelse forskudt. Jeg ser ofte, at en enkelt \u00bbbred\u00ab VM overbelaster interconnecten og dermed ogs\u00e5 bremser nabo-VM'er. Disse effekter forsvinder, s\u00e5 snart jeg skifter til lokal <strong>Tildeling<\/strong> og vender tilbage til en ren vNUMA-konfiguration.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/serverraum-numa-9023.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Fejlscenarier og anti-m\u00f8nstre<\/h2>\n<p>Med <strong>Streng<\/strong> \u00f8ger jeg risikoen for, at allokeringer mislykkes, og at OOM-killer tr\u00e6der i kraft. Derfor holder jeg \u00bbpuder\u00ab fri p\u00e5 m\u00e5lknudepunktet, overv\u00e5ger mislykkede fors\u00f8g og definerer fallbacks (f.eks. m\u00e5lrettet resize uden for spidsbelastningstiderne). Transparent Huge Pages i <em>altid<\/em>-tilstand for\u00e5rsager i latensstier <strong>Defragmentering<\/strong> og Stalls \u2013 jeg bruger statiske reservationer eller aktiverer THP <em>madvise<\/em>. Automatisk NUMA-balancering kan flytte sider frem og tilbage ved svingende belastning; hvis jeg opdager \u00bbpage-bounce\u00ab-m\u00f8nstre, indstiller jeg politikkerne manuelt igen. I VM'er er <strong>Ballonflyvning<\/strong> og hukommelseskomprimering er en trussel mod forudsigeligheden; jeg deaktiverer disse funktioner for kritiske databaser. Live-migreringer p\u00e5 tv\u00e6rs af noder planl\u00e6gger jeg kun inden for nedetidsvinduer, eller ogs\u00e5 flytter jeg f\u00f8rst dataene p\u00e5 databasesiden, s\u00e5 interconnecten ikke bliver overbelastet sekund\u00e6rt.<\/p>\n\n<h2>Kapacitetsplanl\u00e6gning og v\u00e6kst<\/h2>\n<p>Jeg planl\u00e6gger \u00e9n pr. knude <strong>Reserve<\/strong> Jeg indstiller 10\u201320 % til spidsbelastninger, Autovacuum\/Compaction og periodiske vedligeholdelsesopgaver. Hvis datam\u00e6ngden vokser, skalerer jeg f\u00f8rst langs noderne (shards\/tjenester) i stedet for blindt at udvide hele bufferpoolen. Jeg forhindrer stille \u201esnigende v\u00e6kst\u201c ved hj\u00e6lp af strenge gr\u00e6nsev\u00e6rdier pr. node og alarmer, s\u00e5 snart lokale hit-rater falder eller andelen af fjernadgang stiger. I prognoserne for de kommende kvartaler tager jeg ikke kun h\u00f8jde for datam\u00e6ngden, men ogs\u00e5 <strong>Transaktionsrater<\/strong> og \u00e6ndrede adgangsfordelinger, da disse ofte flytter hotsets hurtigere end det rene lagerbehov. P\u00e5 den m\u00e5de forbliver platformen stabil \u2013 og udvidelser foreg\u00e5r p\u00e5 en kontrolleret m\u00e5de uden at g\u00e5 p\u00e5 kompromis med NUMA-lokaliteten.<\/p>\n\n<h2>Kort balance<\/h2>\n<p>Jeg optimerer store databaseservere ved at <strong>NUMA<\/strong>-topologi, politikker og arbejdsbelastningens st\u00f8rrelse p\u00e5 en overskuelig m\u00e5de. Lokal hukommelsestildeling giver de afg\u00f8rende millisekunder, mens uplanlagte fjernadgange \u00f8ger P99-latensen. Fremover planl\u00e6gger jeg virtuelle maskiner, s\u00e5 de passer ind i noder eller udnytter vNUMA optimalt. Jeg anvender operativsystemindstillinger, affiniteter og Huge Pages m\u00e5lrettet, tester deres effekt og implementerer \u00e6ndringer kun p\u00e5 baggrund af m\u00e5linger. Den, der f\u00f8lger disse trin, opn\u00e5r den forventede <strong>Str\u00f8m<\/strong> best\u00e5r af moderne hardware og sikrer, at platformene fungerer hurtigt og p\u00e5lideligt, selv under stor belastning.<\/p>","protected":false},"excerpt":{"rendered":"<p>NUMA-hukommelsespolitikker forbedrer store databaseservere gennem lokal hukommelsestildeling, CPU-affinitet og passende serverhardware.<\/p>","protected":false},"author":1,"featured_media":20627,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-20634","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server_vm"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"145","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":"1","_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"NUMA Memory","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"20627","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/posts\/20634","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/comments?post=20634"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/posts\/20634\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/media\/20627"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/media?parent=20634"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/categories?post=20634"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/tags?post=20634"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}