{"id":21223,"date":"2026-09-01T08:32:24","date_gmt":"2026-09-01T06:32:24","guid":{"rendered":"https:\/\/webhosting.de\/ksm-linux-kernel-samepage-merging-virtualisierung-effizient-speichercloud\/"},"modified":"2026-09-01T08:32:24","modified_gmt":"2026-09-01T06:32:24","slug":"ksm-linux-kernen-sammenlaegning-af-samme-sider-virtualisering-effektiv-hukommelse-cloud","status":"publish","type":"post","link":"https:\/\/webhosting.de\/da\/ksm-linux-kernel-samepage-merging-virtualisierung-effizient-speichercloud\/","title":{"rendered":"Kernel Samepage Merging: KSM for bedre virtualiseringsydeevne"},"content":{"rendered":"<p><strong>KSM-virtualisering<\/strong> reducerer det fysiske RAM-behov ved, at Linux-kernen samler identiske hukommelsessider p\u00e5 tv\u00e6rs af VM\u2019er og deler dem effektivt via \u00bbcopy-on-write\u00ab. P\u00e5 den m\u00e5de \u00f8ger jeg VM-t\u00e6theden, afhj\u00e6lper RAM-flaskehalse og holder <strong>Ydelse<\/strong> i balance.<\/p>\n\n<h2>Centrale punkter<\/h2>\n<p>F\u00f8lgende hovedpunkter hj\u00e6lper mig med hurtigt at f\u00e5 et overblik over KSM og anvende det m\u00e5lrettet:<\/p>\n<ul>\n  <li><strong>Deduplikering<\/strong> Identiske hukommelsessider reducerer RAM-forbruget markant.<\/li>\n  <li><strong>Copy-on-Write<\/strong> holder siderne l\u00e6sbare sammen og adskiller dem f\u00f8rst, n\u00e5r der foretages \u00e6ndringer.<\/li>\n  <li><strong>Finjustering<\/strong> ksmd-parametre afbalancerer CPU-belastningen og besparelserne.<\/li>\n  <li><strong>NUMA-placering<\/strong> forhindrer un\u00f8dvendige forsinkelser i v\u00e6rter med flere sokler.<\/li>\n  <li><strong>Sikkerhed<\/strong> kr\u00e6ver selektiv deling i multi-tenant-milj\u00f8er.<\/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\/09\/rechenzentrum-ksm-7425.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Hvad er KSM? Grundl\u00e6ggende principper og forl\u00f8b<\/h2>\n\n<p>Med <strong>Kernel Samepage Merging<\/strong> Kernel-tr\u00e5den ksmd gennems\u00f8ger regelm\u00e6ssigt anonyme private sider, der er markeret som \u201emergeable\u201c, og sammenl\u00e6gger indhold, der er bit-identisk. Jeg drager fordel af, at mange virtuelle maskiner ofte har identiske biblioteker, programkoder eller OS-komponenter i hukommelsen. KSM markerer de sammenlagte sider som <strong>Kopiering ved skrivning<\/strong>, hvilket betyder, at alle g\u00e6ster l\u00e6ser den samme fysiske side, indtil en af dem skriver. F\u00f8rst ved skriveadgang opretter kernen en separat side til denne proces, mens den oprindelige side fortsat deles. Vigtigt: KSM deduplicerer ikke filsystem- eller sidecache-sider, og jeg skal eksplicit frigive hukommelse til sammenl\u00e6gningen.<\/p>\n\n<h2>Anvendelse i virtualiseringsmilj\u00f8er<\/h2>\n\n<p>I v\u00e6rter med mange lignende VM\u2019er udfolder sig <strong>KSM<\/strong> den st\u00f8rste effekt, fordi der ofte forekommer redundante sider. I KVM- og cloud-ops\u00e6tninger s\u00e6nker sammenl\u00e6gningen den effektive RAM-belastning pr. g\u00e6st markant og \u00f8ger dermed VM-t\u00e6theden pr. server. Erfaringer fra praksis viser op til 300 % flere g\u00e6stesystemer ved korrekt tuning uden m\u00e6rkbar forringelse af responstiden. Hvis jeg kombinerer KSM med <a href=\"https:\/\/webhosting.de\/da\/overcommitment-af-hukommelse-virtualisering-ram-optimus\/\">Overengagement i hukommelsen<\/a>, udnytter jeg serverne bedre og bruger den tilg\u00e6ngelige RAM mere m\u00e5lrettet. Ved at dele identiske sider mindsker jeg risikoen for swap-spidsbelastninger og opn\u00e5r en j\u00e6vn <strong>Ydelseskurve<\/strong> p\u00e5 tv\u00e6rs af mange instanser.<\/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\/09\/virtualisierungksm4523.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Konfiguration under Linux og KVM<\/h2>\n\n<p>Jeg aktiverer <strong>KSM<\/strong> via CONFIG_KSM i kernen og styrer funktionen via sysfs under \/sys\/kernel\/mm\/ksm\/. Der starter jeg scanningen (run), indstiller intensiteten (pages_to_scan, sleep_millisecs) og overv\u00e5ger sidegevinsten (pages_sharing). I enterprise-distributioner bruger jeg tjenester som ksm og ksmtuned, der automatisk skruer op eller ned p\u00e5 baggrund af t\u00e6rskelv\u00e6rdier for ledig RAM. For at opn\u00e5 en mere detaljeret styring markerer jeg m\u00e5lrettet hukommelsesomr\u00e5der som sammenl\u00e6gbare ved hj\u00e6lp af madvise(MADV_MERGEABLE) eller prctl(PR_SET_MEMORY_MERGE). I dynamiske milj\u00f8er kombinerer jeg gerne KSM med <a href=\"https:\/\/webhosting.de\/da\/virtualisering-af-serverhukommelse-der-bliver-storre-og-storre-dynamik-i-ram-styring\/\">Hukommelse i ballon<\/a>for at optimere <strong>RAM-tildeling<\/strong> og samtidig sikre fleksibiliteten.<\/p>\n\n<h2>Ydelse og tuning: den rette balance<\/h2>\n\n<p>Jeg vinder is\u00e6r der, hvor RAM udg\u00f8r det egentlige flaskehals, og hvor CPU-kerner ellers ville forblive uudnyttede \u2013 s\u00e5 kommer <strong>KSM<\/strong> den samlede ydeevne, fordi jeg k\u00f8rer flere virtuelle maskiner sidel\u00f8bende. ksmd-tr\u00e5den bruger dog CPU-tid, hvorfor for aggressive scanningsparametre kan mindske fordelene. Jeg starter konservativt, m\u00e5ler pages_sharing og pages_scanned og overv\u00e5ger latenstider under belastning, f\u00f8r jeg \u00f8ger scanningshastigheden. Hvis der er tilstr\u00e6kkelig ledig RAM, holder jeg ksmd mindre aktivt og strammer f\u00f8rst t\u00f8jlerne, n\u00e5r der bliver mangel p\u00e5 v\u00e6rter. P\u00e5 den m\u00e5de opretholder jeg et godt forhold mellem <strong>Lagringsgevinst<\/strong> og CPU-overhead.<\/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\/09\/ksvm-virtualization-performance-8273.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Sikkerhed og isolation set ud fra et objektivt synspunkt<\/h2>\n\n<p>Da flere g\u00e6ster deler en fysisk side, tager jeg h\u00f8jde for potentielle <strong>Sidekanaler<\/strong>, som kunne udlede oplysninger via timing eller adgangs m\u00f8nstre. I f\u00f8lsomme multi-tenant-ops\u00e6tninger deaktiverer jeg page-sharing selektivt for bestemte instanser eller v\u00e6rter. Til mindre f\u00f8lsomme arbejdsbelastninger med mange ensartede g\u00e6ster er KSM derimod en p\u00e5lidelig metode til at s\u00e6nke omkostningerne og \u00f8ge t\u00e6theden. Jeg dokumenterer beslutningen for hvert cluster og f\u00f8rer en undtagelsesliste for s\u00e6rligt kritiske VM\u2019er. P\u00e5 den m\u00e5de sikrer jeg <strong>Gennemsigtighed<\/strong> og minimerer s\u00e5rbarhederne uden at g\u00e5 p\u00e5 kompromis med effektivitetsgevinsten.<\/p>\n\n<h2>NUMA, Huge Pages og interaktion<\/h2>\n\n<p>P\u00e5 NUMA-systemer l\u00e6gger jeg m\u00e6rke til <strong>Opbevaringssted<\/strong> og lader KSM helst kun blive sammenf\u00f8jet inden for en enkelt node, s\u00e5 adgangsforesp\u00f8rgsler ikke skal g\u00e5 via langsomme stier. Det reducerer ventetiderne og holder b\u00e5ndbredden pr. socket h\u00f8j. I kombination med Huge Pages reducerer jeg TLB-misses, men skal huske p\u00e5, at store sider \u00e6ndrer sandsynligheden for bitidentisk indhold. Nogle arbejdsbelastninger drager st\u00f8rre fordel af Huge Pages, andre af deduplikering; jeg validerer dette med benchmarks. M\u00e5let er fortsat at maksimere den lokale adgang og <strong>Fjernlager<\/strong> for at undg\u00e5.<\/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\/09\/ksm_virtualisierung_3485.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Overv\u00e5gning og forst\u00e5else af n\u00f8gletal<\/h2>\n\n<p>Jeg vurderer effekten af <strong>KSM<\/strong> ved hj\u00e6lp af f\u00e5, men informative t\u00e6llere: pages_sharing, pages_shared, pages_scanned, pages_unshared og full_scans. Hvis pages_sharing stiger stabilt, og CPU-belastningen er moderat, udvikler min ops\u00e6tning sig i den \u00f8nskede retning. Hvis v\u00e6rdierne forbliver u\u00e6ndrede, tjekker jeg, om g\u00e6ster overhovedet markerer hukommelse som \u00bbmergeable\u00ab. Derudover overv\u00e5ger jeg host-swap, VM-latenser og IO-wait for at opdage bivirkninger i tide. Dashboards med tidsserier viser mig tendenser, s\u00e5 jeg <strong>Justeringer<\/strong> tr\u00e6ffer beslutninger p\u00e5 grundlag af data.<\/p>\n\n<h2>Praktiske eksempler og besparelsespotentiale<\/h2>\n\n<p>I testklynger med snesevis af lignende Linux-VM\u2019er kunne jeg takket v\u00e6re <strong>KSM<\/strong> til tider tocifrede besparelser i RAM m\u00e5lt i procentpoint og dermed en m\u00e6rkbart h\u00f8jere t\u00e6thed. Java-workloads med mange identiske klasser og biblioteker gav s\u00e6rligt konsistente gevinster. Jo mere homogene g\u00e6sterne er, desto mere reduceres hukommelsesaftrykket; heterogene stakke leverer mindre, men stadig nyttige resultater. I kombination med korrekt konfigureret overcommit holder jeg omkostningerne pr. instans lave og k\u00f8rer flere tjenester p\u00e5 samme hardware. S\u00e5ledes opst\u00e5r der en klar <strong>\u00d8konomisk effekt<\/strong> med en kvalitet, der kan planl\u00e6gges.<\/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\/09\/ksm_virtualisierung_3127.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>KSM kontra alternativer: Afgr\u00e6nsning og samspil<\/h2>\n\n<p>Jeg satser p\u00e5 en <strong>Portef\u00f8lje<\/strong> Supplerende hukommelsesteknikker, der virker forskelligt afh\u00e6ngigt af m\u00e5let. KSM fjerner redundans i RAM-indholdet, mens Ballooning dynamisk frig\u00f8r hukommelse til g\u00e6ster, og Huge Pages \u00f8ger CPU-effektiviteten. Ingen af teknikkerne erstatter den anden; jeg kombinerer dem m\u00e5lrettet afh\u00e6ngigt af arbejdsbelastningsprofilen og t\u00e6thedsm\u00e5let. For begyndere kan f\u00f8lgende oversigt hj\u00e6lpe med at tr\u00e6ffe valget hurtigere. Som n\u00e6ste skridt er det v\u00e6rd at kigge p\u00e5 <a href=\"https:\/\/webhosting.de\/da\/servervirtualisering-kvm-xen-openvz-hosting-kernelboost\/\">KVM og Xen<\/a> i sammenligning med, for at <strong>Valg af platform<\/strong> at placere det p\u00e5 den rette plads.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Teknologi<\/th>\n      <th>Opgave<\/th>\n      <th>Fordel<\/th>\n      <th>Ulempe<\/th>\n      <th>Velegnet til<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>KSM<\/td>\n      <td>Deduplisering af identiske RAM-sider<\/td>\n      <td>H\u00f8j <strong>Besparelse p\u00e5 RAM<\/strong> ved lignende VM'er<\/td>\n      <td>Ekstra belastning af CPU\u2019en som f\u00f8lge af scanninger<\/td>\n      <td>Mange ensartede g\u00e6ster, KVM-v\u00e6rter<\/td>\n    <\/tr>\n    <tr>\n      <td>Hukommelse i ballon<\/td>\n      <td>Dynamisk genvinding af gaslager<\/td>\n      <td>Bedre <strong>Udnyttelse<\/strong> ved svingende arbejdsbelastninger<\/td>\n      <td>Der skal v\u00e6re en ballonf\u00f8rer pr. g\u00e6st<\/td>\n      <td>Blandede udnyttelsesprofiler<\/td>\n    <\/tr>\n    <tr>\n      <td>Store sider<\/td>\n      <td>St\u00f8rre side-st\u00f8rrelser for f\u00e6rre TLB-fejl<\/td>\n      <td>H\u00f8jere <strong>CPU-effektivitet<\/strong> ved app'er, der kr\u00e6ver meget hukommelse<\/td>\n      <td>Mindre sandsynlighed for deduplikering<\/td>\n      <td>Databaser, JVM'er, in-memory-motorer<\/td>\n    <\/tr>\n    <tr>\n      <td>NUMA-pinning<\/td>\n      <td>Tilknytning af VM'er til lokale lagringsknudepunkter<\/td>\n      <td>konstant <strong>Forsinkelse<\/strong> og b\u00e5ndbredde<\/td>\n      <td>Mindre fleksibilitet i planl\u00e6gningen<\/td>\n      <td>Hosts med flere sockets, arbejdsbelastninger, hvor latenstiden er afg\u00f8rende<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\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\/09\/virtualisierung-ksm-7429.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Praktisk aktivering og v\u00e6rts-playbooks<\/h2>\n<p>P\u00e5 host-niveau tager jeg en pragmatisk tilgang: Jeg starter ksm\/ksmtuned og indstiller standardv\u00e6rdier, der har vist sig at fungere godt i praksis. Eksempel:<\/p>\n<pre><code>Aktiver #-tjenester (afh\u00e6nger af distributionen)\nsystemctl enable --now ksm ksmtuned\n\nManuel justering af # (tr\u00e6der i kraft med det samme, indtil genstart)\necho 1 &gt; \/sys\/kernel\/mm\/ksm\/run\necho 1000 &gt; \/sys\/kernel\/mm\/ksm\/pages_to_scan\necho 50 &gt; \/sys\/kernel\/mm\/ksm\/sleep_millisecs\n<\/code><\/pre>\n<p>I libvirt styrer jeg delingen for hver enkelt VM. Som standard markerer QEMU g\u00e6ste-RAM som \u00bbmergeable\u00ab. For s\u00e6rligt f\u00f8lsomme VM'er deaktiverer jeg delingen eksplicit:<\/p>\n<pre><code><!-- Deaktiver KSM for denne VM -->\n<\/code><\/pre>\n<p>P\u00e5 den m\u00e5de f\u00f8lger jeg en klar linje: bred implementering p\u00e5 servere med ensartede arbejdsbelastninger, m\u00e5lrettede undtagelser for s\u00e6rlige tilf\u00e6lde.<\/p>\n\n<h2>Finjustering af KSM-parametrene i detaljer<\/h2>\n<ul>\n  <li><strong>run<\/strong>: 0 = sl\u00e5et fra, 1 = aktiv, 2 = sl\u00e5et fra og fjern sammenk\u00e6dning af allerede sammenk\u00e6dede sider. Jeg bruger kun \u201e2\u201c til m\u00e5lrettede tests eller n\u00e5r jeg sikkert vil sl\u00e5 deling fra igen f\u00f8r vedligeholdelsesvinduer.<\/li>\n  <li><strong>sider_der_skal_scannes<\/strong>: Hvor mange sider der kontrolleres pr. cyklus. H\u00f8jere v\u00e6rdier fremskynder identificeringen af identiske sider, men \u00f8ger CPU-belastningen.<\/li>\n  <li><strong>sleep_millisecs<\/strong>: Pause mellem cyklusser. L\u00e6ngere pauser reducerer overhead, men det tager l\u00e6ngere tid, f\u00f8r besparelsesplateauet n\u00e5s.<\/li>\n  <li><strong>merge_across_nodes<\/strong>: P\u00e5 NUMA-v\u00e6rter indstiller jeg dette til 0, s\u00e5 sammenl\u00e6gning kun finder sted inden for en enkelt NUMA-node. Det sikrer lokalitet.<\/li>\n  <li><strong>use_zero_pages<\/strong>: Hvis denne funktion er aktiveret, deler processer nul-sider effektivt med kernel-nul-siden. Dette giver \u201esikre\u201c besparelser uden COW-omkostninger.<\/li>\n<\/ul>\n<p>Med ksmtuned justerer jeg dynamisk ud fra RAM-t\u00e6rskler. S\u00e5 snart den ledige hukommelse bliver knap, \u00f8ger ksmtuned scanningshastigheden (Npagen-Boost); falder belastningen, reducerer det indsatsen igen. Det resulterer i en adaptiv, \u201e\u00e5ndende\u201c konfiguration uden manuelle indgreb.<\/p>\n\n<h2>Interaktion med THP, Huge Pages og ballooning (dybdeg\u00e5ende)<\/h2>\n<p><strong>Gennemsigtige store sider (THP)<\/strong> og <strong>Store sider<\/strong> optimerer CPU-effektiviteten, mens KSM reducerer redundansen i RAM. Her tager jeg h\u00f8jde for:<\/p>\n<ul>\n  <li>KSM arbejder med almindelige 4-KB-sider. THP-sider (oftest 2 MB) kan ikke dedupliceres. Jo mere THP griber ind, desto mindre \u00bbfoder\u00ab har KSM.<\/li>\n  <li>Til latenskritiske eller CPU-afh\u00e6ngige arbejdsbelastninger foretr\u00e6kker jeg THP\/Huge Pages. Til v\u00e6rter med begr\u00e6nset RAM og homogene VM\u2019er prioriterer jeg KSM.<\/li>\n  <li>Ballooning supplerer KSM: Balloon-driveren frigiver ledig gaslagerplads til v\u00e6rten. KSM reducerer samtidig behovet ved at konsolidere identiske sider. Tilsammen udj\u00e6vner jeg spidsbelastninger og forhindrer forhastet swapping.<\/li>\n<\/ul>\n<p>Jeg tr\u00e6ffer min beslutning p\u00e5 baggrund af empiriske data: Benchmark-tests med og uden THP\/Huge Pages samt aktiv KSM viser mig, hvilken kombination der giver den bedste samlede omkostnings-ydelses-forhold.<\/p>\n\n<h2>Sikkerhedsmodeller og moderne CPU-funktioner<\/h2>\n<p>I milj\u00f8er med <strong>streng adskillelse af klienter<\/strong> sl\u00e5r jeg konsekvent deling pr. VM\/host fra. Det minimerer indirekte informationskanaler via delte sider og forenkler compliance-kontroller. Moderne <strong>Lagringskryptering<\/strong> P\u00e5 v\u00e6rt\/g\u00e6st-niveau (f.eks. pr. VM-n\u00f8gle) forhindrer dette i praksis, at KSM kan foretage en meningsfuld sammenl\u00e6gning mellem g\u00e6ster, da identisk indhold ikke l\u00e6ngere findes bit for bit i den fysiske RAM. I s\u00e5danne klynger undg\u00e5r jeg aggressiv scanning og holder ksmd ret passivt for ikke at lade CPU-ressourcerne k\u00f8re i tomgang.<\/p>\n<p>For mindre f\u00f8lsomme, men homogene stacks beholder jeg KSM som standard. Jeg dokumenterer politikken for hvert cluster: \u201eStandard til, undtagelser via nosharepages\u201c eller \u201eStandard fra, deling kun for definerede puljer\u201c \u2013 begge dele er gyldige, s\u00e5 l\u00e6nge det implementeres p\u00e5 en gennemsigtig og reproducerbar m\u00e5de.<\/p>\n\n<h2>Egnethed i forhold til arbejdsbyrde og anti-m\u00f8nstre<\/h2>\n<p>KSM udm\u00e6rker sig ved ensartede arbejdsbelastninger med mange instanser (f.eks. mange identiske app-servere, JVM-baserede tjenester, agenter). F\u00f8lgende drager mindre fordel heraf:<\/p>\n<ul>\n  <li><strong>St\u00e6rkt varierende, kortvarige allokeringer<\/strong> (f.eks. mange sm\u00e5 buffere, der \u00e6ndres hurtigt), da sandsynligheden for COW er stor.<\/li>\n  <li><strong>Komprimerede, krypterede eller pseudotilf\u00e6ldige data<\/strong> \u2013 der forekommer n\u00e6sten ingen identiske sider.<\/li>\n  <li><strong>Store in-memory-databaser<\/strong> med aggressiv sidegenbrug, n\u00e5r data \u00e6ndrer sig hurtigt. Her opvejer fordelene ved Huge Pages\/THP ofte ulemperne.<\/li>\n<\/ul>\n<p>I container-farme kan KSM ogs\u00e5 fungere, forudsat at processerne markerer lagerpladsen som \u00bbmergeable\u00ab. I praksis fokuserer jeg dog prim\u00e6rt p\u00e5 virtuelle maskiner (VM'er), fordi QEMU der allerede s\u00e6tter de n\u00f8dvendige madvise-flags.<\/p>\n\n<h2>Fejlfinding og typiske snublesten<\/h2>\n<ul>\n  <li><strong>Deling af sider stagnerer<\/strong>: Jeg tjekker, om QEMU\/VM\u2019er virkelig opretter sammenfletbar hukommelse (ingen \u00bbnosharepages\u00ab-direktive i libvirt-XML\u2019en), og om ksmd k\u00f8rer. Hvis der ikke sker noget, er arbejdsbelastningen sandsynligvis for heterogen.<\/li>\n  <li><strong>CPU-belastning for h\u00f8j<\/strong>: Jeg \u00f8ger v\u00e6rdien for `sleep_millisecs` og\/eller s\u00e6nker v\u00e6rdien for `pages_to_scan`. Derudover kan jeg deaktivere NUMA-overskridende sammenl\u00e6gning for at indsn\u00e6vre s\u00f8geomr\u00e5det.<\/li>\n  <li><strong>Uventede spidsbelastninger<\/strong>: Jeg unders\u00f8ger, om der er en sammenh\u00e6ng mellem COW-h\u00e6ndelser og belastningsspidser. I s\u00e5danne tilf\u00e6lde s\u00e6nker jeg scanningsfrekvensen eller udelukker de ber\u00f8rte VM\u2019er midlertidigt fra delingen.<\/li>\n  <li><strong>Overcommit eskalerer til swap<\/strong>: KSM er ikke en erstatning for kapacitetsplanl\u00e6gning. Jeg s\u00f8rger altid for at have en reserve af ledig RAM og justerer ksmd kun som en buffer, ikke som en n\u00f8dl\u00f8sning.<\/li>\n<\/ul>\n\n<h2>Planl\u00e6gning, dimensionering og automatisering<\/h2>\n<p>For at opn\u00e5 forudsigelige resultater definerer jeg m\u00e5lv\u00e6rdier for hver enkelt host:<\/p>\n<ul>\n  <li><strong>Headroom<\/strong>: En fast procentuel buffer af ledig RAM, under hvilken ksmtuned bliver mere aggressiv. P\u00e5 den m\u00e5de flytter jeg deduplikeringen til perioder, hvor der er et reelt behov.<\/li>\n  <li><strong>Retf\u00e6rdighed<\/strong>: N\u00e5r arbejdsbelastningen er uensartet, opdeler jeg puljerne (f.eks. efter projekt\/milj\u00f8), s\u00e5 ensartede virtuelle maskiner kan drage fordel af hinanden, uden at de uensartede \u201eudvander\u201c fordelene.<\/li>\n  <li><strong>Gr\u00e6nsev\u00e6rdier<\/strong>: Jeg fasts\u00e6tter gr\u00e6nser for de maksimale scanningshastigheder og kontrollerer regelm\u00e6ssigt, om besparelserne retf\u00e6rdigg\u00f8r CPU-forbruget.<\/li>\n<\/ul>\n<p>Inden for automatisering betragter jeg KSM som en gentagelig, versionsstyret vejledning (f.eks. Systemd-drop-ins eller Cloud-Init-snippets). P\u00e5 den m\u00e5de sikrer jeg, at nye v\u00e6rter tages i brug med det samme s\u00e6t parametre, og at afvigelser hurtigt bliver opdaget.<\/p>\n\n<h2>Oversigt til administratorer<\/h2>\n\n<p>Jeg bruger <strong>KSM<\/strong>, n\u00e5r v\u00e6rter k\u00f8rer mange lignende virtuelle maskiner, og RAM er den begr\u00e6nsende faktor. Her giver deduplikering den st\u00f8rste gevinst, mens jeg n\u00f8je styrer CPU-forbruget via ksmtuned og sysfs-parametre. I NUMA-ops\u00e6tninger holder jeg sammenl\u00e6gningen lokal, kombinerer KSM med ballooning og huge pages og m\u00e5ler effekten via pages_sharing samt latensmetrikker. For f\u00f8lsomme g\u00e6ster deaktiverer jeg delingen m\u00e5lrettet og dokumenterer undtagelser p\u00e5 en gennemsigtig m\u00e5de. P\u00e5 den m\u00e5de \u00f8ger jeg <strong>t\u00e6thed<\/strong>, sikre hurtige reaktionstider og reducere euroomkostningerne pr. instans p\u00e5 lang sigt.<\/p>","protected":false},"excerpt":{"rendered":"<p>L\u00e6r, hvordan Kernel Samepage Merging (KSM) i Linux-kernen optimerer RAM-forbruget og g\u00f8r det muligt at k\u00f8re flere virtuelle maskiner p\u00e5 samme hardware. Artiklen forklarer, hvordan det fungerer, hvordan det konfigureres, og hvilke effekter det har p\u00e5 virtualiseringsydelsen \u2013 inklusive praktiske tips til administratorer.<\/p>","protected":false},"author":1,"featured_media":21216,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-21223","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":"120","_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":"KSM Virtualisierung","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":"21216","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/posts\/21223","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=21223"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/posts\/21223\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/media\/21216"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/media?parent=21223"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/categories?post=21223"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/tags?post=21223"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}