{"id":21103,"date":"2026-08-28T11:49:48","date_gmt":"2026-08-28T09:49:48","guid":{"rendered":"https:\/\/webhosting.de\/numa-balancing-deaktivieren-oder-aktiv-lassen-linux-performance-optimal\/"},"modified":"2026-08-28T11:49:48","modified_gmt":"2026-08-28T09:49:48","slug":"deaktiver-numa-balancing-eller-lad-den-vaere-aktiveret-for-optimal-ydeevne-i-linux","status":"publish","type":"post","link":"https:\/\/webhosting.de\/da\/numa-balancing-deaktivieren-oder-aktiv-lassen-linux-performance-optimal\/","title":{"rendered":"NUMA-balancering i Linux: skal den deaktiveres eller forblive aktiveret?"},"content":{"rendered":"<p>NUMA-balancering i Linux afg\u00f8r, om <strong>Kernen<\/strong> Om hukommelsesadgangene lokaliseres automatisk, eller om jeg selv m\u00e5lrettet styrer placeringen. I denne vejledning viser jeg, hvorn\u00e5r jeg lader Numa-balancering v\u00e6re aktiveret, og hvorn\u00e5r jeg deaktiverer den for <strong>Forsinkelse<\/strong>-Sikkerhed fra.<\/p>\n\n<h2>Centrale punkter<\/h2>\n\n<ul>\n  <li><strong>Automatisk<\/strong> hj\u00e6lper ved blandede arbejdsbelastninger uden NUMA-optimering.<\/li>\n  <li><strong>Deaktiv\u00e9r<\/strong> ved pinning, statiske politikker eller h\u00f8j latenstid.<\/li>\n  <li><strong>Overhead<\/strong> opst\u00e5r som f\u00f8lge af scanninger, fejl og migrationer.<\/li>\n  <li><strong>Konfiguration<\/strong> styres via sysctl eller boot-parametre.<\/li>\n  <li><strong>Testning<\/strong> og m\u00e5le i stedet for at g\u00e6tte, og s\u00e5 tr\u00e6ffe en beslutning.<\/li>\n<\/ul>\n\n<h2>NUMA kort forklaret: Latenstider og lokalitet<\/h2>\n\n<p>I NUMA-systemer inddeler hardwaren hukommelsen i flere noder, hvor de enkelte <strong>CPU'er<\/strong> ligger t\u00e6t p\u00e5 hinanden. Lokale adgangsforesp\u00f8rgsler tager kortere tid end fjerne, hvilket jeg straks bem\u00e6rkede ved <strong>Forsinkelse<\/strong> og b\u00e5ndbredde. Hvis en proces k\u00f8rer p\u00e5 en node, men dataene ligger p\u00e5 en anden, mister jeg v\u00e6rdifulde mikrosekunder pr. adgang. Det er netop her, at kernen tr\u00e6der til og optimerer <strong>Lokalitet<\/strong> fra sider. Den, der forst\u00e5r grundid\u00e9en, indser hurtigt: N\u00e6rhed mellem processorkerner og data er den direkte vej til konstant <strong>Ydelse<\/strong>.<\/p>\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\/linux-numa-balancing-2345.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>S\u00e5dan fungerer automatisk NUMA-balancering<\/h2>\n\n<p>Kernen holder \u00f8je med, hvilke kerner en proces ber\u00f8rer sider fra, og udl\u00f8ser m\u00e5lrettet <strong>Tip<\/strong>-Faults. P\u00e5 den m\u00e5de kan den registrere, hvilken node der modtager flest anmodninger, og derefter flytte de relevante sider derhen. Disse flytninger reducerer antallet af fjernadgange og \u00f8ger den lokale <strong>Tr\u00e6fprocent<\/strong>. Jeg ser is\u00e6r effekten ved dynamiske arbejdsbelastninger, hvor tr\u00e5de skifter og hukommelsen flytter sig. Hvis man \u00f8nsker at dykke dybere ned, kan man unders\u00f8ge sammenh\u00e6ngen mellem CPU- og hukommelsesn\u00e6rhed via <a href=\"https:\/\/webhosting.de\/da\/server-numa-lokalitet-cpu-hukommelse-affinitet-optimering-kerne\/\">CPU-\/hukommelsesaffinitet<\/a> forst\u00e5 det i praksis.<\/p>\n\n<h2>Hvorn\u00e5r skal man lade den k\u00f8re aktivt: typiske arbejdsbelastninger<\/h2>\n\n<p>Jeg lader funktionen v\u00e6re aktiveret, hvis programmer ikke har deres egen NUMA-logik, og processer ofte <strong>\u00e6ndring<\/strong>. Typiske eksempler er applikationsservere, databaser med varierende belastning og v\u00e6rter med mange <strong>Containere<\/strong>. I s\u00e5danne ops\u00e6tninger bringer den automatiske funktion sider og tr\u00e5de t\u00e6ttere p\u00e5 hinanden, uden at jeg beh\u00f8ver at fastg\u00f8re dem manuelt. Is\u00e6r p\u00e5 servere med flere sockets stiger andelen af lokale adgangsforesp\u00f8rgsler m\u00e6rkbart. For administratorer med heterogene tjenester giver det en god <strong>Kompromis<\/strong> af hensyn til hastighed og arbejdsindsats.<\/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_balancing_linux_5843.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Hvorn\u00e5r skal man deaktivere: klare kriterier<\/h2>\n\n<p>Jeg sl\u00e5r den automatiske funktion fra, s\u00e5 snart jeg bevidst laver en fejl eller klarer mig <strong>Politikker<\/strong> indstiller. Hvis jeg bruger numactl, cgroups eller MPOL_BIND\/MPOL_PREFERRED, er der allerede truffet en fast beslutning om hukommelsesstier. I s\u00e5 fald skaber hint-faults og migrationer un\u00f8dvendig <strong>Overhead<\/strong>. Det samme g\u00e6lder for realtids- eller HFT-scenarier, hvor hver mikrosekund t\u00e6ller, og forudsigelighed er en prioritet. Den, der g\u00e5r mere i dybden med valget af placeringsregler, har gavn af at se p\u00e5 passende <a href=\"https:\/\/webhosting.de\/da\/numa-hukommelsespolitikker-databasesserver-optimering-server\/\">Hukommelsespolitikker<\/a>.<\/p>\n\n<h2>At forst\u00e5 og m\u00e5le overhead<\/h2>\n\n<p>Automatisk afbalancering medf\u00f8rer arbejde: scanninger, <strong>Fejl<\/strong> og sidemigreringer optager CPU-tid. Det m\u00e6rkes n\u00e6ppe, n\u00e5r antallet af eksterne adgangsforesp\u00f8rgsler falder kraftigt, men det kan n\u00e6ppe betale sig, n\u00e5r layoutet allerede er lokalt. Derfor tjekker jeg altid den faktiske effekt med numastat, perf og meningsfulde <strong>Benchmarks<\/strong>. Det er udviklingen over flere minutter, der er interessant, ikke blot en kortvarig top. F\u00f8rst n\u00e5r m\u00e5lingerne konsekvent viser, at det lokale trafikvolumen stiger, og latenstiderne falder, beholder jeg denne tilstand.<\/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-balancing-decision-linux-4539.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Konfiguration: Sysctl og opstartsparametre<\/h2>\n\n<p>Jeg tjekker status via \/proc eller sysctl og \u00e6ndrer den om n\u00f8dvendigt med det samme, uden at <strong>Genstart<\/strong>. Til testform\u00e5l er det nok med enkle kommandoer som dem nedenfor, som jeg k\u00f8rer i konsollen. P\u00e5 lang sigt indstiller jeg v\u00e6rdien i en sysctl-fil, s\u00e5 den bevares efter en genstart. Hvis man vil indstille det allerede ved opstart, kan man bruge kernelparameteren numa_balancing=enable eller <strong>deaktivere<\/strong>. Jeg dokumenterer hver eneste \u00e6ndring og noterer, i hvilken fase af arbejdsbyrden jeg har foretaget den.<\/p>\n\n<pre><code>cat \/proc\/sys\/kernel\/numa_balancing\necho 0 &gt; \/proc\/sys\/kernel\/numa_balancing\nsysctl -w kernel.numa_balancing=1\n# \/etc\/sysctl.d\/90-numa.conf\n# kernel.numa_balancing = 0\n<\/code><\/pre>\n\n<h2>Container- og virtualiseringsscenarier<\/h2>\n\n<p>P\u00e5 v\u00e6rter med mange virtuelle maskiner og containere spiller den automatiske <strong>Lokalisering<\/strong> udnytter ofte deres styrker. Processer starter og slutter, Cgroups fordeler belastningen, og kernen holder hukommelsen t\u00e6ttere p\u00e5 de aktive kerner. Det ser jeg is\u00e6r p\u00e5 store multi-socket-servere med flere <strong>Noder<\/strong>. S\u00e6rlige tilf\u00e6lde med streng fastl\u00e5sning af enkelte forekomster adskiller jeg tydeligt og deaktiverer der m\u00e5lrettet den automatiske funktion. For en mere detaljeret inddeling kan det v\u00e6re nyttigt at se p\u00e5 praktiske <a href=\"https:\/\/webhosting.de\/da\/numa-balancering-server-hukommelse-optimering-hardware-numaflux\/\">NUMA-optimering<\/a> i host-drift.<\/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_balancing_linux_5823.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Beslutningstabel til brug i praksis<\/h2>\n\n<p>Den f\u00f8lgende oversigt opsummerer typiske scenarier, den forventede virkning og min klare <strong>Anbefaling<\/strong>. Jeg bruger dem som udgangspunkt, men erstatter dem aldrig med m\u00e5lev\u00e6rdier fra det rigtige system. Hvert milj\u00f8 har sine s\u00e6rlige egenskaber, og jeg tr\u00e6ffer f\u00f8rst beslutninger, n\u00e5r resultaterne er reproducerbare <strong>Resultater<\/strong> fast. Hvis man g\u00e5r systematisk til v\u00e6rks, sparer man senere tid p\u00e5 fejls\u00f8gning og finjustering. Sm\u00e5 testk\u00f8rsler inden en udrulning betaler sig n\u00e6sten altid i <strong>Constance<\/strong> og forudsigelighed.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Scenarie<\/th>\n      <th>Typisk virkning<\/th>\n      <th>Min anbefaling<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>Standard-arbejdsbelastninger uden NUMA-optimering<\/td>\n      <td>Flere lokale adgangsforesp\u00f8rgsler, f\u00e6rre fjerne <strong>L\u00e6ser<\/strong><\/td>\n      <td>Lad det v\u00e6re aktivt<\/td>\n    <\/tr>\n    <tr>\n      <td>Databaser med varierende belastning<\/td>\n      <td>Dynamisk sidelokalisering, moderat <strong>Scanninger<\/strong><\/td>\n      <td>Lad den k\u00f8re, test den<\/td>\n    <\/tr>\n    <tr>\n      <td>H\u00e5rd realtid eller HFT<\/td>\n      <td>Hint-Fault-latens er et problem <strong>Jitter<\/strong>-M\u00e5l<\/td>\n      <td>Deaktiver, fastg\u00f8r manuelt<\/td>\n    <\/tr>\n    <tr>\n      <td>Manuel fasts\u00e6ttelse via numactl\/cgroups<\/td>\n      <td>Automatisk system kolliderer med faste genstande <strong>Politikker<\/strong><\/td>\n      <td>Deaktiv\u00e9r<\/td>\n    <\/tr>\n    <tr>\n      <td>Statiske hukommelsespolitikker (MPOL_BIND osv.)<\/td>\n      <td>Migration medf\u00f8rer ingen reel <strong>Fordel<\/strong><\/td>\n      <td>Deaktiv\u00e9r<\/td>\n    <\/tr>\n    <tr>\n      <td>Test-\/analysemilj\u00f8<\/td>\n      <td>God udsigt over lokaliteten og <strong>Effekter<\/strong><\/td>\n      <td>Lad det v\u00e6re aktivt, tjek varianterne<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Vejledning i test og validering<\/h2>\n\n<p>Jeg starter med Balancer aktiveret og registrerer lokale kontra eksterne <strong>Adgange<\/strong> via Numastat. Derefter deaktiverer jeg funktionen og gentager m\u00e5lingerne p\u00e5 n\u00f8jagtig samme m\u00e5de. Forskelle vurderer jeg ikke kun ud fra gennemsnitsv\u00e6rdier, men ogs\u00e5 ud fra <strong>Percentiler<\/strong>. Regressionskontroller med belastningsprofiler fra produktionen giver de mest p\u00e5lidelige resultater. F\u00f8rst da tr\u00e6ffer jeg den endelige beslutning om, hvorvidt det skal v\u00e6re en host, en VM eller en bestemt <strong>Service<\/strong>.<\/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\/devdesk_linux_numa_bal_7283.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Almindelige forhindringer og myter<\/h2>\n\n<p>En udbredt misforst\u00e5else er, at den automatiske funktion erstatter enhver <strong>Fastg\u00f8relse<\/strong>. Det er ikke rigtigt, for faste latensbudgetter kan n\u00e6sten ikke klare yderligere fejl. Lige s\u00e5 forkert er antagelsen om, at migrationer altid <strong>gratis<\/strong> ske. Is\u00e6r n\u00e5r det drejer sig om alligevel lokale layout, virker overhead oftere negativt end positivt. Den, der undg\u00e5r myter og m\u00e5ler pr\u00e6cist, tr\u00e6ffer beslutninger med betydeligt h\u00f8jere <strong>N\u00f8jagtighed<\/strong>.<\/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\/linux-numa-balancing-8192.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Automatikkens begr\u00e6nsninger og interaktioner<\/h2>\n\n<p>AutoNUMA har stor indflydelse p\u00e5 anonyme sider, som en proces selv allokerer. Det er dog ikke alt, der kan migreres p\u00e5 en fornuftig m\u00e5de. Pinned Pages (mlock), DMA-\/enhedshukommelse, DAX eller RDMA-registrerede omr\u00e5der forbliver, hvor de er. Ogs\u00e5 f\u00e6llesbrugte sider (f.eks. st\u00e6rkt delte biblioteker eller sidecache) giver kun begr\u00e6nset udbytte ved migrering, fordi flere processer konkurrerer om <strong>Adgangsm\u00f8nster<\/strong> fremstille. Jeg tager desuden h\u00f8jde for omkostningerne ved <strong>Gennemsigtige store sider<\/strong> (THP): Deres migration er dyrere end ved 4-KiB-sider og kan for\u00e5rsage belastningsspidser. Hvis man har strenge m\u00e5l for ventetiden, kombinerer man ofte THP=never eller madvise med deaktiveret balancering og ren pinning for at undg\u00e5 uventede situationer.<\/p>\n\n<p>Et andet aspekt er samspillet med CPU-scheduleren. Scheduleren fors\u00f8ger at placere tr\u00e5de der, hvor deres data befinder sig \u2013 og balanceren flytter dataene hen til det sted, hvor tr\u00e5dene k\u00f8rer. De to funktioner supplerer hinanden, men kan ved ustabil belastning kortvarigt f\u00f8re til <strong>Svingninger<\/strong> f\u00f8re til. I praksis d\u00e6mper scanningsintervallerne disse effekter; hvis man ser ekstremt ustabile belastningsprofiler, kan man afhj\u00e6lpe problemet ved at anvende l\u00e6ngere scanningsperioder eller mere stabil tr\u00e5dfastg\u00f8relse.<\/p>\n\n<h2>Finjustering af scanningsparametrene<\/h2>\n\n<p>Ud over den globale indstilling findes der kerneparametre, som jeg kan bruge til at finjustere automatikens aggressivitet. De n\u00f8jagtige navne kan variere lidt afh\u00e6ngigt af kernens version, men form\u00e5let er det samme:<\/p>\n\n<ul>\n  <li>kernel.numa_balancing_scan_delay_ms: Ventetid efter start, fork eller exec, indtil den f\u00f8rste scanning begynder.<\/li>\n  <li>kernel.numa_balancing_scan_period_min_ms \/ _max_ms: Nedre og \u00f8vre gr\u00e6nse for scanningsfrekvensen pr. procesadressebereik.<\/li>\n  <li>kernel.numa_balancing_rate_limit_mb: \u00d8vre gr\u00e6nse pr. tidsvindue for sidemigreringer for at spare p\u00e5 hukommelsesb\u00e5ndbredden.<\/li>\n  <li>kernel.numa_balancing_scan_size_mb: M\u00e6ngden af hukommelse, der markeres pr. scanningsomgang (hvis tilg\u00e6ngelig).<\/li>\n<\/ul>\n\n<p>I ops\u00e6tninger, hvor ventetiden er afg\u00f8rende, forh\u00f8jer jeg forsigtigt minimums- og maksimumsperioderne og s\u00e6nker hastighedsbegr\u00e6nsningerne, i stedet for straks at deaktivere den automatiske funktion. Det giver ofte en god mellemvej: f\u00e6rre hint-fejl, f\u00e6rre migrationer, men stadig tilstr\u00e6kkelig reaktion p\u00e5 reelle fejlplaceringer.<\/p>\n\n<pre><code>#-eksempler (midlertidigt, indtil genstart)\nsysctl -w kernel.numa_balancing_scan_period_min_ms=60000\nsysctl -w kernel.numa_balancing_scan_period_max_ms=240000\nsysctl -w kernel.numa_balancing_rate_limit_mb=64\n<\/code><\/pre>\n\n<h2>Dybdeg\u00e5ende m\u00e5linger og diagnose<\/h2>\n\n<p>For at kunne tr\u00e6ffe velbegrundede beslutninger l\u00e6ser jeg n\u00f8gletal, der direkte afspejler mekanismen. Der er tre kilder, jeg bruger regelm\u00e6ssigt:<\/p>\n\n<ul>\n  <li>numastat: Forholdet mellem lokale og eksterne adgangsforesp\u00f8rgsler p\u00e5 systemniveau og pr. proces.<\/li>\n  <li>\/proc\/\/numa_maps: Fordeling af en process' hukommelsessider p\u00e5 noder, inklusive flag som f.eks. active, file og anon.<\/li>\n  <li>\/proc\/vmstat: T\u00e6llere som numa_hint_faults, numa_hint_faults_local og numa_pages_migrated viser, om balanceren er i gang, og om den <strong>Succes<\/strong> har.<\/li>\n<\/ul>\n\n<pre><code>#-oversigt pr. proces\nnumastat -p \n\n#-detaljevisning: Hvilke omr\u00e5der ligger hvor?\ngrep -E 'anon|file' \/proc\/\/numa_maps | head\n\n# Kernel-d\u00e6kkende overblik over AutoNUMA-aktivitet\ngrep -E 'numa_(hint_faults|pages_migrated)' \/proc\/vmstat\n<\/code><\/pre>\n\n<p>I resultaterne leder jeg efter tendenser: Stiger andelen af lokale adgangsforesp\u00f8rgsler stabilt? Falder antallet af hint-fejl samtidig? I s\u00e5 fald er det et tegn p\u00e5, at et godt layout sl\u00e5r igennem. Hvis den lokale andel forbliver u\u00e6ndret trods mange migreringer, spilder jeg snarere ressourcer p\u00e5 un\u00f8dvendige cyklusser. For at vurdere latenstidsm\u00e5lene tjekker jeg desuden 95.\/99.-percentilerne for svartiderne; sm\u00e5 forbedringer i gennemsnitsv\u00e6rdierne kan skyldes <strong>Jitter<\/strong> d\u00e6kkes til.<\/p>\n\n<h2>Arbejdsbelastningsprofiler: hvad der typisk fungerer<\/h2>\n\n<p>Erfaringerne har vist, hvorn\u00e5r AutoNUMA som regel hj\u00e6lper, og hvorn\u00e5r det ikke g\u00f8r:<\/p>\n\n<ul>\n  <li>JVM-tjenester og applikationsservere: De drager ofte fordel af dette, s\u00e5 l\u00e6nge der ikke anvendes en streng thread-pinning-strategi eller en aggressiv, egen NUMA-logik. Nogle runtime-milj\u00f8er tilbyder NUMA-indstillinger; hvis jeg bruger disse strengt, reducerer jeg den automatiske funktion eller sl\u00e5r den fra.<\/li>\n  <li>Relationelle databaser: Ved variabel belastning med blandede cacher fungerer den automatiske indstilling ofte godt. Men hvis jeg aktiverer dedikeret pinning (Worker-to-Node, Shared Buffers strengt fordelt), deaktiverer jeg balanceringen for at sikre pr\u00e6cis reproducerbarhed.<\/li>\n  <li>In-memory-lagre og cacher: Et stort, aktivt datas\u00e6t drager fordel af lokal placering. Hvis instansen k\u00f8rer single-threaded eller er strengt fastl\u00e5st, forhindrer jeg un\u00f8dvendige flytninger ved at deaktivere funktionen.<\/li>\n  <li>HPC\/MPI og videnskabelige koder: Der findes som regel klare regler for placering og binding (OpenMP\/numactl). Her er forudsigelighed vigtigere end automatisering \u2013 jeg udelader NUMA-balancering.<\/li>\n<\/ul>\n\n<h2>Virtualisering: vNUMA, pinning og live-migration<\/h2>\n\n<p>I samspillet mellem v\u00e6rt og g\u00e6st tager jeg h\u00f8jde for begge niveauer:<\/p>\n\n<ul>\n  <li>Hvis vNUMA-topologien i g\u00e6sten stemmer overens med v\u00e6rtsmaskinens fysiske NUMA-topologi, kan g\u00e6stebalanceren tr\u00e6ffe fornuftige beslutninger. Afviger den herfra, opst\u00e5r der \u201efalske naboskaber\u201c, som AutoNUMA kun i begr\u00e6nset omfang kan kompensere for.<\/li>\n  <li>Hvis jeg tildeler vCPU'er fast til v\u00e6rts-CPU'er og binder g\u00e6stehukommelsen til bestemte noder, er det en eksplicit politik \u2013 jeg reducerer eller deaktiverer AutoNUMA p\u00e5 dette VM-niveau for at undg\u00e5 dobbelte migrationer.<\/li>\n  <li>Efter live-migreringer observerer jeg en opvarmningsfase: Antallet af hint-fejl stiger, indtil der er opn\u00e5et en ny ligev\u00e6gt. I denne periode indregner jeg en sikkerhedsmargen for <strong>Forsinkelse<\/strong>-spidser.<\/li>\n<\/ul>\n\n<p>P\u00e5 t\u00e6tpakkede virtualiseringsv\u00e6rter, hvor instanser startes og stoppes, og hvor cgroups fordeler belastningen, er den automatiske styring p\u00e5 v\u00e6rten ofte en nettofordel. For dedikerede VM\u2019er, der er f\u00f8lsomme over for \u201est\u00f8jende naboer\u201c, indkapsler jeg ressourcerne ordentligt og indstiller reglerne statisk.<\/p>\n\n<h2>Pragmatiske m\u00e5lv\u00e6rdier og acceptkriterier<\/h2>\n\n<p>Jeg definerer p\u00e5 forh\u00e5nd, hvad \u201egodt\u201c betyder, s\u00e5 jeg ikke ender med at finjustere i det uendelige:<\/p>\n\n<ul>\n  <li>Generelle tjenester: 70\u201385% lokale adgangspunkter er ofte tilstr\u00e6kkelige, hvis variansen forbliver lav.<\/li>\n  <li>Latens-SLA'er: M\u00e5l &gt;90% lokalt, klare \u00f8vre gr\u00e6nser for Hint-Fault-Rate og stabile 99.-percentiler.<\/li>\n  <li>B\u00e5ndbreddeintensivt: Migreringer m\u00e5 ikke overbelaste lagringskanalerne \u2013 juster hastighedsbegr\u00e6nsninger og perioder i overensstemmelse hermed.<\/li>\n<\/ul>\n\n<p>Jeg dokumenterer disse t\u00e6rskelv\u00e6rdier og analyserer A\/B-test over flere belastningsfaser. Jeg tr\u00e6ffer f\u00f8rst en beslutning, n\u00e5r resultaterne kan gentages.<\/p>\n\n<h2>Tjekliste til fejlfinding<\/h2>\n\n<ul>\n  <li>Pludselige spidsbelastninger: Unders\u00f8g, om der er en sammenh\u00e6ng mellem THP-migrationer og spidser i \u00bbnuma_hint_faults\u00ab. Afhj\u00e6lpende foranstaltning: For\u00f8g scanningsintervallerne, indstil THP til \u00bbmadvise\/never\u00ab, og deaktiver eventuelt \u00bbBalance\u00ab.<\/li>\n  <li>N\u00e6sten ingen effekt trods aktivering: Er tr\u00e5dene st\u00e6rkt fastl\u00e5ste, eller findes der faste hukommelsespolitikker? I s\u00e5 fald kommer den automatiske funktion i konflikt med retningslinjerne.<\/li>\n  <li>H\u00f8jt migrationshastighed, men alligevel mange fjernadgange: Kontroller og \u00f8g hastighedsbegr\u00e6nsningen; alternativt stabiliser arbejdsm\u00e6ngden (thread-pinning, hold cacherne varme).<\/li>\n  <li>Uklare m\u00e5lev\u00e6rdier: Brug procesvisningen med numastat -p og \/proc\/\/numa_maps \u2013 ikke kun de samlede systemv\u00e6rdier.<\/li>\n<\/ul>\n\n<h2>Detaljer, der ofte overses<\/h2>\n\n<ul>\n  <li>Arbejdsbelastninger, der er afh\u00e6ngige af sidecache: AutoNUMA har is\u00e6r effekt p\u00e5 anonyme sider. Hvis man prim\u00e6rt arbejder med I\/O-begr\u00e6nsede opgaver, b\u00f8r man ikke forvente mirakler ved hj\u00e6lp af balancering.<\/li>\n  <li>Cgroups og cpusets: cpuset.mems begr\u00e6nser, hvilke noder en gruppe har adgang til. Dette udg\u00f8r en fast ramme, inden for hvilken det automatiske system fungerer.<\/li>\n  <li>Memory-Hotplug\/Node-Offlining: Dynamiske topologier \u00e6ndrer afstande; efter \u00e6ndringer er det en god id\u00e9 at k\u00f8re en ny test og om n\u00f8dvendigt justere scanningsparametrene.<\/li>\n<\/ul>\n\n<h2>Kort opsummeret<\/h2>\n\n<p>Til generelle serveropgaver lader jeg den automatiske indstilling v\u00e6re aktiveret, fordi den uden manuel indgriben n\u00e6sten <strong>Data<\/strong> f\u00f8rer til aktive kerner. Ved realtid, HFT, manuel pinning eller faste politikker sl\u00e5r jeg dem fra for at undg\u00e5 overhead og jitter. I testfaser arbejder jeg iterativt: m\u00e5le, beslutte, gentage <strong>validere<\/strong>. Jeg holder konfigurationen enkel, dokumenterer hver \u00e6ndring og kontrollerer effekten ved hj\u00e6lp af p\u00e5lidelige n\u00f8gletal. P\u00e5 den m\u00e5de udnytter jeg styrkerne ved NUMA-hardware uden un\u00f8dvendige <strong>Risici<\/strong> at indg\u00e5.<\/p>","protected":false},"excerpt":{"rendered":"<p>Find ud af, hvordan NUMA-balancering p\u00e5virker Linux-ydeevnen p\u00e5 moderne serverhardware, og hvorn\u00e5r du b\u00f8r deaktivere eller lade funktionen v\u00e6re aktiveret. Fokus: NUMA-balancering.<\/p>","protected":false},"author":1,"featured_media":21096,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-21103","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":"166","_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 balancing","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":"21096","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/posts\/21103","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=21103"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/posts\/21103\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/media\/21096"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/media?parent=21103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/categories?post=21103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/tags?post=21103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}