{"id":20866,"date":"2026-08-21T15:06:21","date_gmt":"2026-08-21T13:06:21","guid":{"rendered":"https:\/\/webhosting.de\/vm-swappiness-optimieren-linux-hosting-server-tuning-swap\/"},"modified":"2026-08-21T15:06:21","modified_gmt":"2026-08-21T13:06:21","slug":"optimera-vm-swappiness-linux-webbhotell-serveroptimering-swap","status":"publish","type":"post","link":"https:\/\/webhosting.de\/sv\/vm-swappiness-optimieren-linux-hosting-server-tuning-swap\/","title":{"rendered":"St\u00e4lla in vm.swappiness korrekt f\u00f6r optimal serverprestanda"},"content":{"rendered":"<p>Jag visar hur du st\u00e4ller in vm.swappiness s\u00e5 att webb- och databastj\u00e4nster p\u00e5 webbhotellsservrar reagerar snabbare och orsakar mindre I\/O. Med tydliga steg, l\u00e4mpliga startv\u00e4rden och \u00f6vervakning f\u00e5r du ut mer av det befintliga RAM-minnet och minskar <strong>F\u00f6rdr\u00f6jningar<\/strong> och f\u00f6rhindrar on\u00f6dig swapping.<\/p>\n\n<h2>Centrala punkter<\/h2>\n\n<p>Dessa punkter ger dig en snabb \u00f6versikt \u00f6ver inst\u00e4llningar som du kan anv\u00e4nda direkt.<\/p>\n<ul>\n  <li><strong>Swappiness-beteende<\/strong>: Styr hur tidigt k\u00e4rnan flyttar RAM-minne till swap-utrymmet.<\/li>\n  <li><strong>Relation till arbetsbelastning<\/strong>: Anpassa v\u00e4rdena efter applikationstyp, t.ex. databas eller webb.<\/li>\n  <li><strong>Testa tillf\u00e4lligt<\/strong>: Kontrollera f\u00f6rst i praktiken, fastst\u00e4ll sedan permanent.<\/li>\n  <li><strong>Swap-layout<\/strong>: T\u00e4nk p\u00e5 storlek, omfattning och prioriteringar.<\/li>\n  <li><strong>\u00d6vervakning<\/strong>: \u00d6vervaka och justera I\/O, RAM och svarstider.<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/optimale-servereinstellung-5932.png\" alt=\"En server med optimala inst\u00e4llningar f\u00f6r enast\u00e5ende prestanda\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Vad vm.swappiness \u00e4r och hur det fungerar<\/h2>\n\n<p>K\u00e4rnparametern <strong>vm.swappiness<\/strong> best\u00e4mmer hur aggressivt Linux flyttar minnessidor fr\u00e5n RAM till swap. Du hittar det aktuella v\u00e4rdet i pseudofilsystemet under \/proc\/sys\/vm\/swappiness och kan \u00e4ndra det under k\u00f6rning eller permanent. Ett h\u00f6gt v\u00e4rde leder till tidigare utlagring, medan ett l\u00e5gt v\u00e4rde h\u00e5ller inneh\u00e5llet kvar l\u00e4ngre i RAM-minnet. M\u00e5let \u00e4r att uppn\u00e5 en bra balans mellan RAM-utnyttjande, sidcache och kontrollerat swap-beteende. Jag h\u00e5ller f\u00f6ljande i \u00e5tanke: RAM-minnet \u00e4r mycket snabbare \u00e4n vilken SSD som helst, s\u00e5 jag f\u00f6redrar <strong>Arbetsminne<\/strong> klart f\u00f6re swappen.<\/p>\n\n<h2>Varf\u00f6r swappiness \u00e4r viktigt p\u00e5 webbhotellsservrar<\/h2>\n\n<p>P\u00e5 webb- och applikationsservrar avg\u00f6r inst\u00e4llningen av <strong>Swappiness<\/strong> om reaktionstid och genomstr\u00f6mning. Aggressiv swapping skapar extra I\/O-belastning och bromsar f\u00f6rfr\u00e5gningar, framf\u00f6r allt vid databasintensiva arbetsbelastningar. F\u00f6r l\u00e5ga v\u00e4rden medf\u00f6r d\u00e4remot risken f\u00f6r senare OOM-h\u00e4ndelser, som avbryter processer abrupt. D\u00e4rf\u00f6r utv\u00e4rderar jag, f\u00f6rutom RAM och swap, \u00e4ven typiska belastningstoppar, cacher och f\u00f6rfr\u00e5gningsm\u00f6nster. Den som minskar latensen f\u00f6rhindrar hackande och h\u00e5ller transaktionerna m\u00e4rkbart <strong>v\u00e4tska<\/strong>.<\/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\/servermeeting_swappiness_3847.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Rekommendationer utifr\u00e5n arbetsbelastning<\/h2>\n\n<p>Ett enda v\u00e4rde passar s\u00e4llan f\u00f6r alla scenarier, d\u00e4rf\u00f6r b\u00f6rjar jag med bepr\u00f6vade intervall och anpassar sedan utifr\u00e5n m\u00e4tdata. Databaser m\u00e5r bra av mycket l\u00e5ga inst\u00e4llningar, medan rena webbservrar ofta t\u00e5l n\u00e5got h\u00f6gre v\u00e4rden. Test- eller utvecklingssystem kan k\u00f6ras n\u00e4rmare standardv\u00e4rdena, eftersom anv\u00e4ndarv\u00e4nligheten spelar en st\u00f6rre roll. F\u00f6ljande schema anv\u00e4nder jag som en pragmatisk utg\u00e5ngspunkt f\u00f6r <strong>Hosting<\/strong>-Arbetsbelastningar. D\u00e4refter \u00f6vervakar jag I\/O, swap-anv\u00e4ndning och svarstider och justerar inst\u00e4llningarna efter behov.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Arbetsbelastning<\/th>\n      <th>Rekommenderad swappiness<\/th>\n      <th>M\u00e5l<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td><strong>Databaser<\/strong> (MySQL, PostgreSQL)<\/td>\n      <td>0\u201310<\/td>\n      <td>H\u00e5lla buffertar i RAM-minnet, minimera latensen<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Realtid\/l\u00e5g latens<\/strong><\/td>\n      <td>0\u201310<\/td>\n      <td>Undvika I\/O-toppar genom att anv\u00e4nda swap<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Webbserver<\/strong> med cacher<\/td>\n      <td>10\u201320 (ibland 10\u201330)<\/td>\n      <td>Flytta kalla sidor till lagringsenheten, aktiva f\u00f6rfr\u00e5gningar i RAM-minnet<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Utveckling\/Testning<\/strong><\/td>\n      <td>30\u201360<\/td>\n      <td>Komfort och stabilitet f\u00f6re latens<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Kontrollera aktuellt v\u00e4rde<\/h2>\n\n<p>Innan jag \u00e4ndrar v\u00e4rdena l\u00e4ser jag av statusen och dokumenterar den <strong>Baslinje<\/strong>. Jag anv\u00e4nder antingen `cat \/proc\/sys\/vm\/swappiness` eller `sysctl vm.swappiness`, och b\u00e5da metoderna ger ett tal som 60. Samtidigt kontrollerar jag RAM- och swap-anv\u00e4ndningen med `free -h`. Med swapon \u2013show kan jag se storlek, prioritet och medium f\u00f6r de aktiva swap-enheterna. Dessa utg\u00e5ngsdata hj\u00e4lper mig att senare analysera effekterna <strong>f\u00f6rdela<\/strong> f\u00f6r att kunna g\u00f6ra det.<\/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\/server-optimierung-swappiness-4287.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Testa tillf\u00e4lligt ist\u00e4llet f\u00f6r att g\u00f6ra en permanent \u00e4ndring direkt<\/h2>\n\n<p>Jag testar Swappiness f\u00f6rst f\u00f6r att se hur det g\u00e5r i verkliga <strong>Last<\/strong> att se. Kommandot sysctl vm.swappiness=10 tr\u00e4der i kraft omedelbart, men g\u00e4ller bara fram till n\u00e4sta omstart. Under testerna f\u00f6ljer jag top eller htop, kontrollerar vmstat och iostat och m\u00e4ter tj\u00e4nsternas svarstider. Om swapfrekvensen minskar och latenserna f\u00f6rblir stabila g\u00e5r jag vidare i rimliga steg. F\u00f6rst n\u00e4r m\u00e4tv\u00e4rdena \u00e4r \u00f6vertygande skriver jag in v\u00e4rdet <strong>permanent<\/strong> fast.<\/p>\n\n<h2>Konfigurera permanent<\/h2>\n\n<p>Om testv\u00e4rdet st\u00e4mmer l\u00e4gger jag in det i en sysctl-konfiguration och laddar om inst\u00e4llningarna. I \/etc\/sysctl.conf l\u00e4gger jag till raden vm.swappiness=10 och aktiverar den med sysctl -p. Jag tycker att det blir snyggare att ha en egen fil i \/etc\/sysctl.d\/, till exempel 99-swappiness.conf, och ladda den med sysctl \u2013system. Det g\u00e5r bra att versionshantera och integrera i automatisering. En f\u00f6rdjupad \u00f6versikt \u00f6ver relaterade parametrar finns i det h\u00e4r inl\u00e4gget om <a href=\"https:\/\/webhosting.de\/sv\/sysctl-optimering-av-webbhotellsserverns-prestanda\/\">sysctl-trimning<\/a>, som hj\u00e4lper mig att strukturera \u00e4ndringarna och <strong>Klarhet<\/strong> ger.<\/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\/serverperformance_8432.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Swap-storlek, minneslayout och lagringsmedia<\/h2>\n\n<p>Swappiness verkar aldrig isolerat, d\u00e4rf\u00f6r bed\u00f6mer jag storleken och l\u00e4get p\u00e5 <strong>Byta<\/strong> alltid med. F\u00f6r lite swap blir snabbt fullt, medan en \u00f6verdimensionerad swap f\u00f6rl\u00e4nger I\/O-faserna under belastning. P\u00e5 SSD eller NVMe \u00e4r swap snabbare \u00e4n p\u00e5 HDD, men RAM ligger fortfarande flera storleksordningar f\u00f6re. Flera swap-enheter med prioriteringar hj\u00e4lper till att anv\u00e4nda det snabbaste mediet f\u00f6rst. Den som vill f\u00f6rdjupa sig i f\u00f6r- och nackdelarna hittar i denna \u00f6versikt \u00f6ver <a href=\"https:\/\/webhosting.de\/sv\/aer-swap-meningsfullt-vid-webbhotell-eller-aer-det-en-prestandadoedare-ramboost\/\">Swap vid webbhotell<\/a> anv\u00e4ndbara tankest\u00e4llare f\u00f6r <strong>\u00d6vning<\/strong>.<\/p>\n\n<h2>Arbetsfl\u00f6de i praktiken: steg f\u00f6r steg<\/h2>\n\n<p>Jag b\u00f6rjar med att kartl\u00e4gga l\u00e4get: noterar aktuellt Swappiness-v\u00e4rde, RAM- och swap-anv\u00e4ndning, CPU och I\/O och sparar detta som <strong>Referens<\/strong> s\u00e4kerst\u00e4lla. D\u00e4refter klassificerar jag arbetsbelastningen: fr\u00e4mst databas, webb med cache, blandad drift eller containeriserad. D\u00e4refter fastst\u00e4ller jag ett m\u00e5l: f\u00f6r databaser 0\u201310, f\u00f6r webb oftast 10\u201320, f\u00f6r blandade belastningar g\u00e5r jag f\u00f6rsiktigt fram. Jag st\u00e4ller in v\u00e4rdet tillf\u00e4lligt, observerar flera belastningsfaser och j\u00e4mf\u00f6r m\u00e4tv\u00e4rden. Om bilden st\u00e4mmer upprepade g\u00e5nger fastst\u00e4ller jag v\u00e4rdet, dokumenterar \u00e4ndringen och kontrollerar den efter k\u00e4rn-, h\u00e5rdvaru- eller <strong>Release<\/strong>-Byt igen.<\/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\/serverperformance_vm_4512.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>S\u00e4rskilda scenarier: containrar, virtuella maskiner och molnet<\/h2>\n\n<p>I containrar och virtuella maskiner utv\u00e4rderar jag swappiness p\u00e5 v\u00e4rd- och g\u00e4stniv\u00e5 <strong>tillsammans<\/strong> . Orkestreringsplattformar som Kubernetes drar oftast nytta av mycket l\u00e5ga inst\u00e4llningar p\u00e5 arbetarnoderna f\u00f6r att h\u00e5lla latensen i podarna l\u00e5g. I virtuella maskiner st\u00e4ller jag in l\u00e4mpliga v\u00e4rden internt, men ser till att hypervisorn inte motverkar detta. I elastiska molnmilj\u00f6er hj\u00e4lper konservativa v\u00e4rden till att j\u00e4mna ut toppar tills skalningen tr\u00e4der i kraft. Jag undviker att en enskild container genom intensivt swap-beteende belastar hela <strong>Plattform<\/strong> bromsar.<\/p>\n\n<h2>\u00d6vervakning och fels\u00f6kning<\/h2>\n\n<p>Typiska varningssignaler p\u00e5 ol\u00e4mplig swappiness ser jag i form av h\u00f6g I\/O-belastning trots ledigt RAM-minne, varierande svarstider och tr\u00f6ga databasfr\u00e5gor. Jag kontrollerar s\u00e5dana m\u00f6nster med vmstat, iostat, sar samt m\u00e4tv\u00e4rden fr\u00e5n min observability-stack. Om systemet visar h\u00f6g swap-anv\u00e4ndning trots ledigt RAM-minne s\u00e4nker jag oftast swappiness-v\u00e4rdet. Om jag ser OOM-loggar eller avbrott vid brist p\u00e5 RAM-minne h\u00f6jer jag swappiness-v\u00e4rdet m\u00e5ttligt eller justerar swap-inst\u00e4llningarna. F\u00f6ljande tabell sorterar symtom p\u00e5 en trolig <strong>Orsak<\/strong> och ger en f\u00f6rsta riktning.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Symptom<\/th>\n      <th>Sannolik orsak<\/th>\n      <th>N\u00e4sta steg<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td><strong>H\u00f6g I\/O<\/strong> n\u00e4r det finns ledigt RAM-minne<\/td>\n      <td>Swappiness f\u00f6r h\u00f6g<\/td>\n      <td>Minska v\u00e4rdet, m\u00e4ta effekten<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>OOM-h\u00e4ndelser<\/strong> under belastning<\/td>\n      <td>Swappiness f\u00f6r l\u00e5g eller f\u00f6r lite swap<\/td>\n      <td>H\u00f6j v\u00e4rdet, kontrollera swapstorleken<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>L\u00e5ngsamma s\u00f6kfr\u00e5gor<\/strong> trots CPU-reserv<\/td>\n      <td>Databasbuffert flyttad<\/td>\n      <td>V\u00e4rde mellan 0 och 10, analysera DB-buffert<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Belastningstoppar<\/strong> utan flaskhals i processorn<\/td>\n      <td>Swap-orsakade I\/O-toppar<\/td>\n      <td>Minska swappiness, kontrollera cache-tr\u00e4ffar<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Att f\u00f6rst\u00e5 finf\u00f6rdelade m\u00e4tv\u00e4rden<\/h2>\n\n<p>F\u00f6r att objektivt utv\u00e4rdera swappiness tittar jag n\u00e4rmare p\u00e5 k\u00e4rnans r\u00e4knare. I \/proc\/vmstat anger pswpin och pswpout antalet inl\u00e4sta respektive utlagrade sidor. pgscan_kswapd_* och pgsteal_* visar hur aggressivt \u00e5tervinningsprogrammet arbetar. Om pgmajfault (Major Page Faults) hopar sig tyder det p\u00e5 I\/O-tunga omladdningar. Jag l\u00e4ser av dessa v\u00e4rden upprepade g\u00e5nger eller med sar -B och sar -W f\u00f6r att se frekvenser, inte bara \u00f6gonblicksbilder. Med vmstat 1 kan jag se si\/so (Swap in\/out) och koppla toppar till faktiska h\u00e4ndelser. Dessutom ger \/proc\/pressure\/memory en uppskattning av hur starkt uppgifter p\u00e5verkas av minnespress <strong>block<\/strong> (PSI). Om dessa v\u00e4rden stiger n\u00e5got eller helt, har jag en tydlig indikation p\u00e5 att \u00e5tervinningen \u00e4r f\u00f6r aggressiv eller att swappiness-v\u00e4rdet \u00e4r ol\u00e4mpligt.<\/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\/serverperformance-8734.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Swappiness 0 vs. 1: vad k\u00e4rnan egentligen g\u00f6r<\/h2>\n\n<p>Man antar ofta att Swappiness=0 inaktiverar swap helt. Det st\u00e4mmer inte riktigt. V\u00e4rdet 0 signalerar till k\u00e4rnan att undvika swap s\u00e5 l\u00e5ngt det g\u00e5r och endast anv\u00e4nda det vid verklig minnesbrist. I praktiken r\u00e4cker ett v\u00e4rde mellan 1 och 10 f\u00f6r att uppn\u00e5 ett mycket \u00e5terh\u00e5llsamt beteende, medan 0 i vissa versioner ibland kan leda till sena, men d\u00e4remot kraftiga, \u00e5tervinningsfaser. F\u00f6r tj\u00e4nster d\u00e4r latensen \u00e4r avg\u00f6rande anv\u00e4nder jag oftast v\u00e4rden mellan 1 och 5 och observerar om pswpout\/pswpin i praktiken f\u00f6rblir n\u00e4ra noll. Om v\u00e4rdet 0 leder till OOM-h\u00e4ndelser under belastningstoppar h\u00f6jer jag v\u00e4rdet n\u00e5got, s\u00e5 att k\u00e4rnan avlastar trycket tidigare och mjukare, ist\u00e4llet f\u00f6r att g\u00f6ra det abrupt. <strong>att bryta sig in<\/strong>.<\/p>\n\n<h2>Att anv\u00e4nda Zswap och ZRAM p\u00e5 ett meningsfullt s\u00e4tt<\/h2>\n\n<p>F\u00f6rutom klassisk swap p\u00e5 h\u00e5rddisken anv\u00e4nder jag, beroende p\u00e5 profil, antingen Zswap eller ZRAM. Zswap komprimerar de sidor som har flyttats ut och lagrar dem f\u00f6rst i RAM-minnet innan de vid behov flyttas till lagringsenheten. Detta minskar I\/O-belastningen och j\u00e4mnar ut latenserna, men kr\u00e4ver dock CPU-resurser. P\u00e5 v\u00e4rddatorer med stor CPU-reserv \u00e4r detta en <strong>l\u00f6nsammare<\/strong> Avv\u00e4gning. ZRAM tillhandah\u00e5ller komprimerad swap direkt i RAM-minnet \u2013 perfekt f\u00f6r sporadiska belastningar eller mycket sm\u00e5 virtuella maskiner, d\u00e4r jag hellre anv\u00e4nder komprimerat RAM-minne \u00e4n l\u00e5ngsam I\/O. Viktigt: Jag v\u00e4ljer medvetet ett av koncepten och prioriterar s\u00e5 att den snabbaste v\u00e4gen betj\u00e4nas f\u00f6rst. Swappiness f\u00f6rblir ett styrverktyg: \u00e4ven med Zswap\/ZRAM vill jag undvika on\u00f6diga \u00e5tervinningsv\u00e5gor.<\/p>\n\n<h2>Sidcache, vfs_cache_pressure och cache-tr\u00e4ffar<\/h2>\n\n<p>Swappiness samverkar med sidcachen, som lagrar filer och inoder i RAM-minnet. Med vm.vfs_cache_pressure styr jag hur aggressivt k\u00e4rnan rensar dessa cacher n\u00e4r det g\u00e4ller anonyma sidor. F\u00f6r h\u00f6ga v\u00e4rden g\u00f6r att metadatacacherna f\u00f6rsvinner f\u00f6r snabbt, vilket bromsar webbservrarna. Jag b\u00f6rjar oftast med 50\u2013100, m\u00e4ter cache-tr\u00e4fffrekvenserna och observerar hur latenserna f\u00f6r statiska resurser och API-svar utvecklas. M\u00e5let \u00e4r att beh\u00e5lla ofta anv\u00e4nt inneh\u00e5ll i RAM-minnet utan att s\u00e4llan anv\u00e4nda sidor tar upp f\u00f6r mycket utrymme i minnet. Om tr\u00e4fffrekvensen f\u00f6rblir god och I\/O-belastningen l\u00e5g fungerar samspelet bra; i annat fall justerar jag swappiness och vfs_cache_pressure i <strong>Tandem<\/strong>.<\/p>\n\n<h2>Undvika \u201ddirty writeback\u201d och I\/O-toppar<\/h2>\n\n<p>Skrivv\u00e4gar p\u00e5verkar latensen lika mycket som swap. Med vm.dirty_background_ratio\/bytes och vm.dirty_ratio\/bytes best\u00e4mmer jag hur mycket \u201dsmutsig\u201d cache som ska bildas innan k\u00e4rnan skriver ut data. Jag f\u00f6redrar *_bytes framf\u00f6r procent f\u00f6r att s\u00e4tta definierade \u00f6vre gr\u00e4nser \u2013 s\u00e4rskilt i konfigurationer med stort RAM-minne, d\u00e4r procenttal kan generera enorma skrivv\u00e5gor. M\u00e5l: kontinuerlig, planerbar skrivning ist\u00e4llet f\u00f6r sporadiska toppar som tillsammans med swap skapar I\/O-l\u00e5sningar. Jag \u00f6vervakar iostat och writeback-k\u00f6erna och h\u00e5ller v\u00e4rdena s\u00e5 att SSD\/NVMe utnyttjas konstant, men inte <strong>k\u00f6ra \u00f6ver<\/strong> bli.<\/p>\n\n<h2>NUMA, Zone Reclaim och stora v\u00e4rdar<\/h2>\n\n<p>P\u00e5 system med NUMA spelar minneslokalitet en roll. Om vm.zone_reclaim_mode \u00e4r aktiverat kan k\u00e4rnan p\u00e5 ett mer aggressivt s\u00e4tt \u00e5tervinna minne p\u00e5 den lokala NUMA-noden, vilket oavsiktligt kan utl\u00f6sa toppar i \u00e5tervinningen. F\u00f6r m\u00e5nga hosting-arbetsbelastningar inaktiverar jag Zone Reclaim och \u00f6verl\u00e5ter placeringen till schemal\u00e4ggaren f\u00f6r att uppn\u00e5 ett stabilare beteende. Dessutom kontrollerar jag Transparent Huge Pages (THP): Databaser reagerar ofta b\u00e4ttre p\u00e5 THP=never eller madvise, eftersom oplanerad defragmentering och THP-tilldelningar kan utl\u00f6sa latensspikar. Swappiness kan vara perfekt \u2013 men om THP eller NUMA-policyer st\u00f6r, f\u00f6rblir <strong>Hakkningar<\/strong>.<\/p>\n\n<h2>Finjusteringar av container- och cgroups-inst\u00e4llningar<\/h2>\n\n<p>Med Cgroups v2 har jag, f\u00f6rutom host-swappiness, ytterligare reglage: memory.high utl\u00f6ser en mjuk \u00e5tervinning, memory.max s\u00e4tter h\u00e5rda \u00f6vre gr\u00e4nser och memory.swap.max begr\u00e4nsar swap per arbetsbelastning. P\u00e5 s\u00e5 s\u00e4tt f\u00f6rhindrar jag att enskilda containrar bromsar ner v\u00e4rden genom swap. Jag st\u00e4ller in l\u00e5ga Swappiness-v\u00e4rden p\u00e5 noden och ger kritiska arbetsbelastningar prioritet via memory.low, s\u00e5 att deras hotsets stannar kvar l\u00e4ngre i RAM-minnet. I Kubernetes h\u00e5ller jag koll p\u00e5 hur noden hanterar swap och testar f\u00f6rst \u00e4ndringar i icke-produktionspooler. Det \u00e4r viktigt att ha en helhetsbild: v\u00e4rdparametrar, Cgroup-gr\u00e4nser och orkestratorn m\u00e5ste st\u00e4mma \u00f6verens, annars flyttas belastningen bara fr\u00e5n en niv\u00e5 till <strong>andra<\/strong>.<\/p>\n\n<h2>Inf\u00f6rande, automatisering och \u00e5terfall<\/h2>\n\n<p>Jag rullar ut \u00e4ndringar i Swappiness p\u00e5 samma kontrollerade s\u00e4tt som alla andra prestandaoptimeringar: f\u00f6rst p\u00e5 en liten grupp n\u00e4stan identiska noder (Canary), sedan stegvis i st\u00f6rre skala. Systemd-sysctl eller konfigurationshantering integrerar v\u00e4rdena p\u00e5 ett reproducerbart s\u00e4tt. Jag dokumenterar start- och m\u00e5lv\u00e4rden, tidpunkter, ber\u00f6rda v\u00e4rddatorer och <strong>M\u00e4tetal<\/strong>. F\u00f6r att hantera ett eventuellt \u00e5terfall planerar jag i f\u00f6rv\u00e4g en mot\u00e5tg\u00e4rd (t.ex. sysctl vm.swappiness=60) och sparar de tidigare sysctl-filerna. Under underh\u00e5llsperioder m\u00e4ter jag medvetet typiska belastningsscenarier f\u00f6r att inte f\u00f6rv\u00e4xla f\u00f6r\u00e4ndringar med fluktuationer i tid p\u00e5 dygnet eller trafikvolym. Endast p\u00e5 s\u00e5 s\u00e4tt f\u00f6rblir besluten tillf\u00f6rlitliga och inom teamet <strong>begriplig<\/strong>.<\/p>\n\n<h2>Vanliga missuppfattningar och antim\u00f6nster<\/h2>\n\n<ul>\n  <li><strong>\u201eSwappiness=0 st\u00e4nger av swap\u201c<\/strong>: Nej, k\u00e4rnan forts\u00e4tter att anv\u00e4nda swap \u2013 men endast i mycket begr\u00e4nsad utstr\u00e4ckning.<\/li>\n  <li><strong>\u201eJu mer swap, desto s\u00e4krare\u201c<\/strong>: F\u00f6r mycket swap f\u00f6rl\u00e4nger belastningsperioder och d\u00f6ljer RAM-flaskhalsar ist\u00e4llet f\u00f6r att l\u00f6sa dem.<\/li>\n  <li><strong>\u201eMed NVMe spelar swapping ingen roll\u201c<\/strong>: NVMe \u00e4r snabbt, men flera storleksordningar l\u00e5ngsammare \u00e4n RAM. F\u00f6rdr\u00f6jningarna \u00e4r fortfarande m\u00e4rkbara.<\/li>\n  <li><strong>\u201eEtt v\u00e4rde f\u00f6r alla servrar\u201c<\/strong>: Arbetsbelastningarna varierar kraftigt. Utan m\u00e4tningar blir optimeringen en slumpfr\u00e5ga.<\/li>\n  <li><strong>\u201eSwappiness l\u00f6ser alla f\u00f6rdr\u00f6jningar\u201c<\/strong>: Problem beror ofta p\u00e5 cache-tr\u00e4ffar, writeback, THP, fr\u00e5geplaner eller n\u00e4tverksv\u00e4gar.<\/li>\n<\/ul>\n\n<h2>Sammanfattning f\u00f6r snabb start<\/h2>\n\n<p>Jag brukar st\u00e4lla in vm.swappiness till 10\u201320 f\u00f6r webbservrar och till 0\u201310 f\u00f6r databaser, testar effekten och observerar I\/O, latenser och <strong>Byta<\/strong>-andel. Det slutgiltiga v\u00e4rdet skriver jag in i \/etc\/sysctl.d\/ via sysctl och ser till att \u00e4ndringarna g\u00e5r att sp\u00e5ra. Samtidigt ser jag till att swap-layouten \u00e4r v\u00e4l avv\u00e4gd: l\u00e4mplig storlek, snabbt lagringsmedium, rimliga prioriteringar. N\u00e4r det g\u00e4ller minnesbelastning h\u00e5ller jag dessutom koll p\u00e5 sidcachen och dess beteende; den h\u00e4r \u00f6versikten ger en bra introduktion till <a href=\"https:\/\/webhosting.de\/sv\/server-page-cache-eviction-linux-minne-utskriftsoptimering-insikt\/\">Rensning av sidcache<\/a>, som hj\u00e4lper mig att analysera orsakerna och <strong>Sammanhang<\/strong> finns. Med denna metod uppn\u00e5r jag tillf\u00f6rlitliga svarstider, f\u00f6rhindrar \u00f6verbelastning av swap-minnet och utnyttjar det befintliga RAM-minnet effektivt.<\/p>","protected":false},"excerpt":{"rendered":"<p>L\u00e4r dig hur du optimerar vm.swappiness specifikt f\u00f6r din Linux-hostingserver och avsev\u00e4rt f\u00f6rb\u00e4ttrar serverns prestanda genom l\u00e4mplig Linux-swap-justering.<\/p>","protected":false},"author":1,"featured_media":20859,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-20866","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":"151","_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":"vm.swappiness","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":"20859","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/posts\/20866","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=20866"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/posts\/20866\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/media\/20859"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/media?parent=20866"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/categories?post=20866"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/tags?post=20866"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}