{"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-kaernan-samepage-merging-virtualisering-effektiv-lagring-moln","status":"publish","type":"post","link":"https:\/\/webhosting.de\/sv\/ksm-linux-kernel-samepage-merging-virtualisierung-effizient-speichercloud\/","title":{"rendered":"Kernel Samepage Merging: KSM f\u00f6r b\u00e4ttre virtualiseringsprestanda"},"content":{"rendered":"<p><strong>KSM-virtualisering<\/strong> minskar det fysiska RAM-behovet genom att Linux-k\u00e4rnan sammanf\u00f6r identiska minnessidor mellan virtuella maskiner och delar dem effektivt med hj\u00e4lp av \u201dcopy-on-write\u201d. P\u00e5 s\u00e5 s\u00e4tt \u00f6kar jag VM-t\u00e4theten, lindrar RAM-flaskhalsar och h\u00e5ller <strong>Prestanda<\/strong> i balans.<\/p>\n\n<h2>Centrala punkter<\/h2>\n<p>F\u00f6ljande nyckelbudskap hj\u00e4lper mig att snabbt f\u00f6rst\u00e5 KSM och anv\u00e4nda det p\u00e5 ett m\u00e5linriktat s\u00e4tt:<\/p>\n<ul>\n  <li><strong>Deduplicering<\/strong> Identiska minnessidor minskar RAM-anv\u00e4ndningen avsev\u00e4rt.<\/li>\n  <li><strong>Copy-on-Write<\/strong> h\u00e5ller sidorna l\u00e4sbara tillsammans och separerar dem f\u00f6rst n\u00e4r \u00e4ndringar g\u00f6rs.<\/li>\n  <li><strong>Finjustering<\/strong> ksmd-parametrarna balanserar CPU-belastningen och besparingarna.<\/li>\n  <li><strong>NUMA-plats<\/strong> f\u00f6rhindrar on\u00f6diga f\u00f6rdr\u00f6jningar i v\u00e4rddatorer med flera socklar.<\/li>\n  <li><strong>S\u00e4kerhet<\/strong> kr\u00e4ver selektiv delning i milj\u00f6er med flera anv\u00e4ndare.<\/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>Vad \u00e4r KSM? Grunder och f\u00f6rfarande<\/h2>\n\n<p>Med <strong>Kernel Samepage Merging<\/strong> Kernel-tr\u00e5den ksmd genoms\u00f6ker regelbundet anonyma privata sidor som markerats som \u201emergeable\u201c och sl\u00e5r samman inneh\u00e5ll som \u00e4r identiskt p\u00e5 bitniv\u00e5. Jag drar nytta av att m\u00e5nga virtuella maskiner ofta har identiska bibliotek, programkoder eller operativsystemskomponenter i minnet. KSM markerar de sammanslagna sidorna som <strong>Kopiering vid skrivning<\/strong>, vilket inneb\u00e4r att alla g\u00e4ster l\u00e4ser samma fysiska sida tills n\u00e5gon skriver. F\u00f6rst vid skriv\u00e5tkomst skapar k\u00e4rnan en egen sida f\u00f6r denna process, medan den ursprungliga sidan f\u00f6rblir delad. Viktigt: KSM deduplicerar inte filsystem- eller sidcache-sidor, och jag m\u00e5ste uttryckligen frig\u00f6ra minne f\u00f6r sammanslagningen.<\/p>\n\n<h2>Anv\u00e4ndning i virtualiseringsmilj\u00f6er<\/h2>\n\n<p>I v\u00e4rddatorer med m\u00e5nga liknande virtuella maskiner utvecklas <strong>KSM<\/strong> den st\u00f6rsta effekten, eftersom redundanta sidor f\u00f6rekommer ofta. I KVM- och molnmilj\u00f6er minskar sammanslagningen den effektiva RAM-belastningen per g\u00e4st avsev\u00e4rt och \u00f6kar d\u00e4rmed VM-t\u00e4theten per server. Erfarenhetsrapporter fr\u00e5n praktiken n\u00e4mner upp till 300 % fler g\u00e4stsystem vid korrekt inst\u00e4llning, utan m\u00e4rkbara f\u00f6rs\u00e4mringar av svarstiden. Om jag kombinerar KSM med <a href=\"https:\/\/webhosting.de\/sv\/minne-oeverkommando-virtualisering-ram-optimus\/\">\u00d6verengagemang i minnet<\/a>, utnyttjar jag servrarna b\u00e4ttre och anv\u00e4nder det tillg\u00e4ngliga minnet mer effektivt. Genom att dela identiska sidor minskar jag risken f\u00f6r swap-toppar och f\u00e5r en j\u00e4mn <strong>Effektkurva<\/strong> genom m\u00e5nga 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 och KVM<\/h2>\n\n<p>Jag aktiverar <strong>KSM<\/strong> via CONFIG_KSM i k\u00e4rnan och styr beteendet via sysfs under \/sys\/kernel\/mm\/ksm\/. D\u00e4r startar jag skanningen (run), st\u00e4ller in intensiteten (pages_to_scan, sleep_millisecs) och observerar sidvinster (pages_sharing). I f\u00f6retagsdistributioner anv\u00e4nder jag tj\u00e4nster som ksm och ksmtuned, som automatiskt skalar upp eller ner utifr\u00e5n tr\u00f6skelv\u00e4rden f\u00f6r ledigt RAM-minne. F\u00f6r detaljerad styrning markerar jag minnesomr\u00e5den med madvise(MADV_MERGEABLE) eller prctl(PR_SET_MEMORY_MERGE) specifikt som sammanfogbara. I dynamiska milj\u00f6er kombinerar jag g\u00e4rna KSM med <a href=\"https:\/\/webhosting.de\/sv\/serverminne-ballongering-virtualisering-ramhantering-dynamik\/\">Ballongflygning i minnet<\/a>f\u00f6r att optimera <strong>RAM-tilldelning<\/strong> att dessutom bibeh\u00e5lla flexibiliteten.<\/p>\n\n<h2>Prestanda och tuning: den r\u00e4tta balansen<\/h2>\n\n<p>Jag vinner framf\u00f6r allt d\u00e4r RAM-minnet utg\u00f6r den verkliga flaskhalsen och CPU-k\u00e4rnorna annars skulle f\u00f6rbli outnyttjade \u2013 d\u00e5 utm\u00e4rker sig <strong>KSM<\/strong> den totala prestandan, eftersom jag k\u00f6r fler virtuella maskiner parallellt. Ksmd-tr\u00e5den tar dock upp CPU-tid, vilket inneb\u00e4r att alltf\u00f6r aggressiva skanningsparametrar kan minska f\u00f6rdelarna. Jag b\u00f6rjar f\u00f6rsiktigt, m\u00e4ter pages_sharing och pages_scanned och observerar latenser under belastning innan jag \u00f6kar skanningshastigheten. Om det finns tillr\u00e4ckligt med ledigt RAM-minne h\u00e5ller jag ksmd mindre aktivt och drar f\u00f6rst \u00e5t tyglarna n\u00e4r v\u00e4rdarna b\u00f6rjar ta slut. P\u00e5 s\u00e5 s\u00e4tt uppr\u00e4tth\u00e5ller jag en bra balans mellan <strong>Lagringsvinst<\/strong> och CPU-\u00f6verbelastning.<\/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>S\u00e4kerhet och isolering ur ett sakligt perspektiv<\/h2>\n\n<p>Eftersom flera g\u00e4ster delar en fysisk sida tar jag h\u00e4nsyn till potentiella <strong>Sidokanaler<\/strong>, som skulle kunna utl\u00e4sa information utifr\u00e5n tidsm\u00f6nster eller \u00e5tkomstm\u00f6nster. I k\u00e4nsliga multitenant-milj\u00f6er inaktiverar jag siddelning selektivt f\u00f6r vissa instanser eller v\u00e4rdar. F\u00f6r mindre k\u00e4nsliga arbetsbelastningar med m\u00e5nga likartade g\u00e4ster \u00e4r KSM d\u00e4remot en p\u00e5litlig metod f\u00f6r att s\u00e4nka kostnaderna och \u00f6ka densiteten. Jag dokumenterar beslutet per kluster och f\u00f6r en undantagslista f\u00f6r s\u00e4rskilt kritiska virtuella maskiner. P\u00e5 s\u00e5 s\u00e4tt s\u00e4kerst\u00e4ller jag <strong>\u00d6ppenhet<\/strong> och minska s\u00e5rbarheten utan att offra effektivitetsvinsterna.<\/p>\n\n<h2>NUMA, Huge Pages och interaktion<\/h2>\n\n<p>P\u00e5 NUMA-system \u00e4r jag uppm\u00e4rksam p\u00e5 <strong>F\u00f6rvaringsplats<\/strong> och l\u00e5ter KSM helst endast sl\u00e5s samman inom en nod, s\u00e5 att \u00e5tkomst inte sker via l\u00e5ngsamma v\u00e4gar. Detta minskar latensen och h\u00e5ller bandbredden per socket h\u00f6g. I kombination med Huge Pages minskar jag TLB-missar, men m\u00e5ste t\u00e4nka p\u00e5 att stora sidor f\u00f6r\u00e4ndrar sannolikheten f\u00f6r bitidentiskt inneh\u00e5ll. Vissa arbetsbelastningar drar st\u00f6rre nytta av Huge Pages, andra mer av deduplicering; jag validerar detta med prestandatester. M\u00e5let \u00e4r fortfarande att maximera den lokala \u00e5tkomsten och <strong>Fj\u00e4rrminne<\/strong> som ska undvikas.<\/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>Att f\u00f6rst\u00e5 \u00f6vervakning och nyckeltal<\/h2>\n\n<p>Jag utv\u00e4rderar effekten av <strong>KSM<\/strong> med hj\u00e4lp av ett f\u00e5tal, men meningsfulla m\u00e4tv\u00e4rden: pages_sharing, pages_shared, pages_scanned, pages_unshared och full_scans. Om pages_sharing \u00f6kar stadigt och CPU-belastningen h\u00e5ller sig p\u00e5 en m\u00e5ttlig niv\u00e5, g\u00e5r min konfiguration i r\u00e4tt riktning. Om v\u00e4rdena f\u00f6rblir of\u00f6r\u00e4ndrade kontrollerar jag om g\u00e4sterna \u00f6verhuvudtaget markerar minnet som \u201dmergeable\u201d. Jag \u00f6vervakar dessutom host-swap, VM-latenser och IO-wait f\u00f6r att uppt\u00e4cka biverkningar i tid. Dashboards med tidsserier visar mig trender, s\u00e5 att jag <strong>Justeringar<\/strong> fattar beslut utifr\u00e5n data.<\/p>\n\n<h2>Praktiska exempel och besparingspotential<\/h2>\n\n<p>I testkluster med dussintals liknande Linux-VM:er kunde jag tack vare <strong>KSM<\/strong> i vissa fall tv\u00e5siffriga besparingar i RAM-utnyttjande uttryckt i procentenheter och d\u00e4rmed m\u00e4rkbart h\u00f6gre densitet. Java-arbetsbelastningar med m\u00e5nga identiska klasser och bibliotek gav s\u00e4rskilt konsekventa vinster. Ju mer homogena g\u00e4sterna \u00e4r, desto mer minskar minnesavtrycket; heterogena stackar ger mindre, men \u00e4nd\u00e5 anv\u00e4ndbara resultat. I kombination med korrekt konfigurerad \u00f6verbel\u00e4ggning h\u00e5ller jag kostnaderna per instans l\u00e5ga och k\u00f6r fler tj\u00e4nster p\u00e5 samma h\u00e5rdvara. P\u00e5 s\u00e5 s\u00e4tt skapas en tydlig <strong>Ekonomisk effekt<\/strong> med f\u00f6ruts\u00e4gbar kvalitet.<\/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 alternativ: Avgr\u00e4nsning och samverkan<\/h2>\n\n<p>Jag satsar p\u00e5 en <strong>Portf\u00f6lj<\/strong> kompletterande minnestekniker som fungerar p\u00e5 olika s\u00e4tt beroende p\u00e5 m\u00e5let. KSM eliminerar redundans i RAM-minnet, medan Ballooning dynamiskt \u00e5tervinner minne till g\u00e4sterna och Huge Pages f\u00f6rb\u00e4ttrar CPU-effektiviteten. Ingen teknik ers\u00e4tter den andra; jag kombinerar dem m\u00e5lmedvetet beroende p\u00e5 arbetsbelastningsprofil och densitetsm\u00e5l. F\u00f6r nyb\u00f6rjare kan f\u00f6ljande \u00f6versikt hj\u00e4lpa till att snabbare fatta ett val. Som n\u00e4sta steg \u00e4r det v\u00e4rt att ta en titt p\u00e5 <a href=\"https:\/\/webhosting.de\/sv\/servervirtualisering-kvm-xen-openvz-hosting-kernelboost\/\">KVM och Xen<\/a> i j\u00e4mf\u00f6relse med, f\u00f6r att <strong>Val av plattform<\/strong> placera p\u00e5 r\u00e4tt plats.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Teknik<\/th>\n      <th>Uppgift<\/th>\n      <th>F\u00f6rdel<\/th>\n      <th>Nackdel<\/th>\n      <th>L\u00e4mplig f\u00f6r<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>KSM<\/td>\n      <td>Deduplicering av identiska RAM-sidor<\/td>\n      <td>H\u00f6g <strong>RAM-besparing<\/strong> f\u00f6r liknande virtuella maskiner<\/td>\n      <td>Extra belastning p\u00e5 processorn till f\u00f6ljd av skanningar<\/td>\n      <td>M\u00e5nga likartade g\u00e4ster, KVM-v\u00e4rdar<\/td>\n    <\/tr>\n    <tr>\n      <td>Ballongflygning i minnet<\/td>\n      <td>Dynamisk \u00e5tervinning av gaslager<\/td>\n      <td>B\u00e4ttre <strong>Anv\u00e4ndning<\/strong> vid varierande arbetsbelastning<\/td>\n      <td>Det kr\u00e4vs en ballongf\u00f6rare per g\u00e4st<\/td>\n      <td>Blandade utnyttjandeprofiler<\/td>\n    <\/tr>\n    <tr>\n      <td>Stora sidor<\/td>\n      <td>St\u00f6rre sidstorlekar f\u00f6r f\u00e4rre TLB-missar<\/td>\n      <td>H\u00f6gre <strong>CPU-effektivitet<\/strong> vid minneskr\u00e4vande appar<\/td>\n      <td>Mindre sannolikhet f\u00f6r deduplicering<\/td>\n      <td>Databaser, JVM:er, in-memory-motorer<\/td>\n    <\/tr>\n    <tr>\n      <td>NUMA-pinning<\/td>\n      <td>Koppling av virtuella maskiner till lokala lagringsnoder<\/td>\n      <td>konstant <strong>F\u00f6rdr\u00f6jning<\/strong> och bandbredd<\/td>\n      <td>Mindre flexibilitet vid schemal\u00e4ggningen<\/td>\n      <td>V\u00e4rddatorer med flera socklar, arbetsbelastningar d\u00e4r latensen \u00e4r avg\u00f6rande<\/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 och v\u00e4rdhandb\u00f6cker<\/h2>\n<p>P\u00e5 v\u00e4rdniv\u00e5 har jag en pragmatisk inst\u00e4llning: Jag startar ksm\/ksmtuned och anger standardv\u00e4rden som har visat sig fungera bra i drift. Exempel:<\/p>\n<pre><code>Aktivera #-tj\u00e4nster (beroende p\u00e5 distribution)\nsystemctl enable --now ksm ksmtuned\n\nManuell inst\u00e4llning av # (tr\u00e4der i kraft omedelbart, g\u00e4ller fram till omstart)\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 styr jag delningen f\u00f6r varje virtuell maskin. Som standard markerar QEMU g\u00e4st-RAM som sammanfogbart. F\u00f6r s\u00e4rskilt k\u00e4nsliga virtuella maskiner inaktiverar jag delningen uttryckligen:<\/p>\n<pre><code><!-- Inaktivera KSM f\u00f6r denna virtuell maskin -->\n<\/code><\/pre>\n<p>P\u00e5 s\u00e5 s\u00e4tt h\u00e5ller jag en tydlig linje: bred aktivering p\u00e5 v\u00e4rddatorer med homogena arbetsbelastningar, riktade undantag f\u00f6r s\u00e4rskilda fall.<\/p>\n\n<h2>Finjustering av KSM-parametrarna i detalj<\/h2>\n<ul>\n  <li><strong>k\u00f6r<\/strong>: 0 = av, 1 = aktiv, 2 = av och ta bort redan sammanfl\u00e4tade sidor. Jag anv\u00e4nder \u201e2\u201c endast f\u00f6r specifika tester eller n\u00e4r jag vill \u00e5terst\u00e4lla delningen p\u00e5 ett s\u00e4kert s\u00e4tt f\u00f6re underh\u00e5llsf\u00f6nster.<\/li>\n  <li><strong>sidor_att_skanna<\/strong>: Hur m\u00e5nga sidor som kontrolleras per cykel. H\u00f6gre v\u00e4rden p\u00e5skyndar s\u00f6kningen efter identiska sidor, men \u00f6kar samtidigt belastningen p\u00e5 processorn.<\/li>\n  <li><strong>sleep_millisecs<\/strong>: Paus mellan cyklerna. L\u00e4ngre pauser minskar overheadkostnaden, men det tar l\u00e4ngre tid innan besparingsniv\u00e5n stabiliseras.<\/li>\n  <li><strong>merge_across_nodes<\/strong>: F\u00f6r NUMA-v\u00e4rdar st\u00e4ller jag in detta p\u00e5 0, s\u00e5 att sammanslagning endast sker inom en NUMA-nod. Detta bevarar lokaliteten.<\/li>\n  <li><strong>use_zero_pages<\/strong>: Om denna funktion \u00e4r aktiverad delar processer noll-sidor effektivt med k\u00e4rnans noll-sida. Detta ger \u201es\u00e4kra\u201c besparingar utan COW-kostnader.<\/li>\n<\/ul>\n<p>Med ksmtuned justerar jag dynamiskt utifr\u00e5n RAM-tr\u00f6skelv\u00e4rden. S\u00e5 snart det b\u00f6rjar bli ont om ledigt minne \u00f6kar ksmtuned skanningshastigheten (Npagen-Boost); n\u00e4r belastningen minskar s\u00e4nker det hastigheten igen. Detta ger en adaptiv, \u201eandande\u201c konfiguration utan manuella ingrepp.<\/p>\n\n<h2>Interaktion med THP, Huge Pages och ballooning (f\u00f6rdjupning)<\/h2>\n<p><strong>Transparenta stora sidor (THP)<\/strong> och <strong>Stora sidor<\/strong> optimerar CPU-effektiviteten, medan KSM minskar redundansen i RAM-minnet. Jag tar h\u00e4nsyn till f\u00f6ljande:<\/p>\n<ul>\n  <li>KSM arbetar med vanliga 4 KB-sidor. THP-sidor (oftast 2 MB) kan inte dedupliceras. Ju mer THP anv\u00e4nds, desto mindre material har KSM att arbeta med.<\/li>\n  <li>F\u00f6r latenskritiska eller CPU-bundna arbetsbelastningar l\u00e5ter jag THP\/Huge Pages ta \u00f6ver. F\u00f6r v\u00e4rddatorer med begr\u00e4nsat RAM-minne och homogena virtuella maskiner prioriterar jag KSM.<\/li>\n  <li>Ballooning kompletterar KSM: Balloon-drivrutinen \u00e5terl\u00e4mnar ledigt gasminne till v\u00e4rden. Samtidigt minskar KSM behovet genom att konsolidera identiska sidor. Tillsammans j\u00e4mnar jag ut toppbelastningar och f\u00f6rhindrar f\u00f6rhastad swapping.<\/li>\n<\/ul>\n<p>Jag fattar beslut utifr\u00e5n empiriska data: Prestandatester med och utan THP\/Huge Pages samt med aktivt KSM visar mig vilken kombination som ger b\u00e4st kostnadseffektivitet totalt sett.<\/p>\n\n<h2>S\u00e4kerhetsmodeller och moderna CPU-funktioner<\/h2>\n<p>I milj\u00f6er med <strong>strikt \u00e5tskillnad mellan klienter<\/strong> st\u00e4nger jag konsekvent av delning per VM\/v\u00e4rd. Detta minimerar sidledes informationsfl\u00f6den genom delade sidor och f\u00f6renklar efterlevnadskontroller. Moderna <strong>Lagringskryptering<\/strong> P\u00e5 v\u00e4rd-\/g\u00e4stniv\u00e5 (t.ex. per VM-nyckel) f\u00f6rhindrar detta i praktiken att KSM kan sammanfoga data mellan g\u00e4ster p\u00e5 ett meningsfullt s\u00e4tt, eftersom identiskt inneh\u00e5ll inte l\u00e4ngre finns bit f\u00f6r bit i det fysiska RAM-minnet. I s\u00e5dana kluster undviker jag aggressiv skanning och l\u00e5ter ksmd vara passivt f\u00f6r att inte sl\u00f6sa bort CPU-resurser i on\u00f6dan.<\/p>\n<p>F\u00f6r mindre k\u00e4nsliga men homogena stackar beh\u00e5ller jag KSM som standard. Jag dokumenterar policyn f\u00f6r varje kluster: \u201eStandardinst\u00e4llning p\u00e5, undantag via nosharepages\u201c eller \u201eStandardinst\u00e4llning av, delning endast f\u00f6r definierade pooler\u201c \u2013 b\u00e5da alternativen \u00e4r giltiga s\u00e5 l\u00e4nge de implementeras p\u00e5 ett transparent och reproducerbart s\u00e4tt.<\/p>\n\n<h2>L\u00e4mplighet f\u00f6r arbetsbelastning och anti-m\u00f6nster<\/h2>\n<p>KSM utm\u00e4rker sig vid enhetliga arbetsbelastningar med m\u00e5nga instanser (t.ex. m\u00e5nga identiska app-servrar, JVM-baserade tj\u00e4nster, agenter). F\u00f6ljande drar mindre nytta av det:<\/p>\n<ul>\n  <li><strong>Starkt varierande, kortvariga allokeringar<\/strong> (t.ex. m\u00e5nga sm\u00e5 buffertar som \u00e4ndras snabbt), eftersom sannolikheten f\u00f6r COW \u00e4r h\u00f6g.<\/li>\n  <li><strong>Komprimerade, krypterade eller pseudorandomiserade data<\/strong> \u2013 identiska sidor f\u00f6rekommer s\u00e4llan.<\/li>\n  <li><strong>Stora in-memory-databaser<\/strong> med aggressiv sid\u00e5tervinning n\u00e4r data f\u00f6r\u00e4ndras snabbt. H\u00e4r \u00f6verv\u00e4ger ofta f\u00f6rdelarna med Huge Pages\/THP.<\/li>\n<\/ul>\n<p>I containerfarmar kan KSM ocks\u00e5 fungera, f\u00f6rutsatt att processer markerar lagringsutrymmen som \u201dmergeable\u201d. I praktiken fokuserar jag dock fr\u00e4mst p\u00e5 virtuella maskiner (VM) n\u00e4r det g\u00e4ller KSM, eftersom QEMU d\u00e4r redan s\u00e4tter de n\u00f6dv\u00e4ndiga madvise-flaggorna.<\/p>\n\n<h2>Fels\u00f6kning och typiska st\u00f6testenar<\/h2>\n<ul>\n  <li><strong>delningen av sidor stagnerar<\/strong>: Jag kontrollerar om QEMU\/VM:er verkligen skapar sammanfogbart minne (ingen nosharepages-direktiv i libvirt-XML) och om ksmd k\u00f6rs. Om det f\u00f6rblir of\u00f6r\u00e4ndrat \u00e4r arbetsbelastningen f\u00f6rmodligen f\u00f6r heterogen.<\/li>\n  <li><strong>CPU-belastningen \u00e4r f\u00f6r h\u00f6g<\/strong>: Jag \u00f6kar sleep_millisecs och\/eller minskar pages_to_scan. Dessutom kan jag inaktivera sammanslagning \u00f6ver NUMA-gr\u00e4nserna f\u00f6r att minska s\u00f6komr\u00e5det.<\/li>\n  <li><strong>Ov\u00e4ntade toppar i latensen<\/strong>: Jag kontrollerar om COW-h\u00e4ndelser korrelerar med belastningstoppar. I s\u00e5dana fall s\u00e4nker jag skanningsfrekvensen eller utesluter tillf\u00e4lligt ber\u00f6rda virtuella maskiner fr\u00e5n delningen.<\/li>\n  <li><strong>\u00d6verbel\u00e4ggning eskalerar till swap<\/strong>: KSM \u00e4r inget substitut f\u00f6r kapacitetsplanering. Jag ser alltid till att ha en reserv av ledigt RAM-minne och justerar ksmd endast som en buffert, inte som en n\u00f6dl\u00f6sning.<\/li>\n<\/ul>\n\n<h2>Planering, dimensionering och automatisering<\/h2>\n<p>F\u00f6r att kunna planera resultaten definierar jag m\u00e5lv\u00e4rden f\u00f6r varje v\u00e4rd:<\/p>\n<ul>\n  <li><strong>Headroom<\/strong>: En fast procentuell buffert av ledigt RAM-minne, under vilken ksmtuned b\u00f6rjar agera mer aggressivt. P\u00e5 s\u00e5 s\u00e4tt skjuter jag upp dedupliceringen till perioder d\u00e5 det verkligen beh\u00f6vs.<\/li>\n  <li><strong>R\u00e4ttvisa<\/strong>: Vid oj\u00e4mn arbetsbelastning delar jag upp poolerna (t.ex. efter projekt\/milj\u00f6) s\u00e5 att likartade virtuella maskiner kan dra nytta av varandra utan att olikartade \u201ef\u00f6rsvagar\u201c dem.<\/li>\n  <li><strong>Gr\u00e4nsv\u00e4rden<\/strong>: Jag s\u00e4tter gr\u00e4nser f\u00f6r maximala skanningshastigheter och kontrollerar regelbundet om besparingarna motiverar CPU-anv\u00e4ndningen.<\/li>\n<\/ul>\n<p>Inom automatisering ser jag KSM som en repeterbar, versionshanterad handbok (t.ex. Systemd-drop-ins eller Cloud-Init-snippets). P\u00e5 s\u00e5 s\u00e4tt s\u00e4kerst\u00e4ller jag att nya v\u00e4rddatorer tas i drift med identiska parametrar och att avvikelser snabbt uppt\u00e4cks.<\/p>\n\n<h2>Sammanfattning f\u00f6r administrat\u00f6rer<\/h2>\n\n<p>Jag anv\u00e4nder <strong>KSM<\/strong>, n\u00e4r v\u00e4rddatorer k\u00f6r m\u00e5nga liknande virtuella maskiner och RAM-minnet \u00e4r den begr\u00e4nsande faktorn. D\u00e5 ger deduplicering den st\u00f6rsta effekten, medan jag noggrant styr CPU-kostnaden med hj\u00e4lp av ksmtuned och sysfs-parametrar. I NUMA-konfigurationer h\u00e5ller jag sammanslagningen lokal, kombinerar KSM med ballooning och huge pages och m\u00e4ter effekten via pages_sharing samt latensm\u00e5tt. F\u00f6r k\u00e4nsliga g\u00e4stsystem st\u00e4nger jag av delningen p\u00e5 ett m\u00e5linriktat s\u00e4tt och dokumenterar undantag p\u00e5 ett transparent s\u00e4tt. P\u00e5 s\u00e5 s\u00e4tt \u00f6kar jag <strong>t\u00e4thet<\/strong>, s\u00e4kerst\u00e4lla snabba svarstider och s\u00e4nka eurokostnaderna per instans p\u00e5 l\u00e5ng sikt.<\/p>","protected":false},"excerpt":{"rendered":"<p>L\u00e4r dig hur Kernel Samepage Merging (KSM) i Linux-k\u00e4rnan optimerar RAM-anv\u00e4ndningen och g\u00f6r det m\u00f6jligt att k\u00f6ra fler virtuella maskiner p\u00e5 samma h\u00e5rdvara. Artikeln f\u00f6rklarar hur det fungerar, hur man konfigurerar det och vilka effekter det har p\u00e5 virtualiseringsprestandan \u2013 inklusive praktiska tips f\u00f6r administrat\u00f6rer.<\/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":"132","_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\/sv\/wp-json\/wp\/v2\/posts\/21223","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/comments?post=21223"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/posts\/21223\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/media\/21216"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/media?parent=21223"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/categories?post=21223"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/tags?post=21223"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}