Det kan hända att du har upplevt systemlager, tung byte eller lågminnesproblem i ditt Linux-system. Ett vanligt råd är att "sänka swappiness-värdet", minska bytesförbrukningen. men vad är swappiness? Och är det verkligen bra att tweak det?

Obs! Vi kommer inte att gå in i detalj om swap-partitionen. Du kan läsa allt om det i vår artikel om vad du behöver veta om Swap-partition på Linux.

swappiness

Det finns ett värde som kallas swappiness i UNIX-liknande system som bestämmer hur sidor i minnet ska hanteras. Standardvärdet för de flesta system är "60", men det kan ställas in på allt mellan 0 och 100. Om minnet går lågt kommer kärnan antingen att sätta ut några filcaches för att få mer ledigt RAM för processer, eller det kommer att byta någon process sidor från RAM till disk.

En standard med 60-bytesbyte kommer att användas mindre, och I / O-caches kommer sannolikt att frigöras för omfördelning av RAM. Att utse cachar anses vara billigare (mindre resursintensiv), medan byte av sidor innehåller skivläsning och skrivning, vilket gör dem mer "dyra". Med ett värde av '60 kommer bytesförbrukningen att vara något lägre än cache-återanvändning. Om värdet av swappiness ökas till 100, kommer byte och filcache-utkastning att användas med lika stor vikt. Det betyder att mer byta och snabbare I / O än standard. Lägre värden som "10" betyder att swapping kommer att användas mycket mindre, och I / O-cachar kan mycket tidigt förkastas till förmån för processer. Detta kan öka interaktiviteten men kan också skada I / O-hastighet.

Minskande swappiness

Du kommer ofta att se råd på webbplatser och forum för att minska swappiness till "10." Det här är tänkt att påskynda saker genom att använda mindre byte och hålla fler processer i fysiskt RAM. Denna logik kan vara något för enkel och kanske inte en "en storlek passar alla lösningar."

Att minska värdet på swappiness kan vara bra i följande scenarier:

  • För databassystem, eller om du använder många databasintensiva applikationer : Databaser hanterar i allmänhet filhantering långt bättre än OS skulle. Om du minskar swappiness kommer du att begränsa operativsystemets caching, vilket ger en chans till databasen att hantera sina egna caches.
  • För interaktivitet : Om du multitaskar mycket men hanterar några filer eller inte öppnar stora dokument kan detta förbättra hur smidig ditt system kommer att känna. Mindre processer skrivs ut till disken, och eftersom RAM-åtkomst är mycket snabbare kan din dator känna sig snabbare. Du måste också komma ihåg att detta kan minska I / O-prestanda. Om du har långsamma skivor eller gör något jag / O-intensiv, kan det till och med skada prestanda.
  • För placebo : Många tror att en lägre swappiness kommer att påskynda systemet. Allvarligt, tror du att ditt system är snabbare, det kan få effekten att uppleva det för att vara snabbare också.

Tänk på att minskad swappiness kan leda till krascher och processer som slumpmässigt dödas av systemet för att frigöra minne. Minskande swappiness blir bäst om du har tillräckligt med RAM för att köra ditt system smidigt. Men du borde hålla värdet över "10", eftersom vissa bytesanvändningar är bra att ha.

Ökande swappiness

Ökande swappiness kan ha den allmänna fördelen att påskynda I / O. Även om det inte ofta rekommenderas, kan ökande swappiness vara till nytta om:

  • Du utför vissa I / O-intensiva operationer, och du har långsamma, gamla hårddiskar . Till exempel: att utföra säkerhetskopior eller batchredigeringsbilder kan vara I / O-intensiva (Ett anmärkningsvärt undantag är databaser som är naturligt I / O-intensiva men kan dra nytta av ett lägre swappiness-värde enligt ovan.).
  • Du har lågt minne men har relativt snabba diskar. I det här osannolika scenariot kan ett högre värde av swappiness hjälpa till att hantera minnet mer effektivt (även om det ställs för högt kan det igen skada prestanda.).

Hur hanterar swappiness

Först bör du överväga om du behöver röra det här värdet alls. Upplever du prestanda? Och ännu viktigare, har du försökt andra system tweaks än? Om inte, är det troligen bäst att leta någon annanstans först. Men om du har ett specifikt scenario i åtanke, kanske du vill fortsätta.

Därefter, hur tung är din swap-användning? Du kan ta reda på det med alla prestandaövervakningsverktyg efter eget val eller med det free kommandot. free -m ger dig en bild av minnesanvändningen i megabyte. För kontinuerlig övervakning kanske du vill använda watch.

 titta -n 1 gratis -m 

Detta kommer att köra kommandot free -m varje sekund och skriva ut dess produktion tills du trycker på "Ctrl + C."

Som du ser ovan används väldigt lite byte av det system som denna artikel skrivs på.

Nu om du upplever att byta kan du vara intresserad av hur mycket det är aktivt. Kommandot vmstat kommer att berätta allt du behöver veta om ditt systems virtuella minnesanvändning (byt och fysisk ram tillsammans).

 vmstat 1 

Du måste kolla swap kolumnen där si betyder "swap in", och so betyder "swap out." Om siffrorna är höga betyder det mycket bytesaktivitet som är en indikator på problem med lågt minne. Om du ser byte av användning med free men lite aktiv byte, kan tweaking swappiness vara förfallen.

Det är också en bra idé att fastställa andra prestationsbenämningar som disk I / O, lägsta medelvärden etc., så när du testar dina nya swappiness-värden har du något att jämföra med.

För att testa ett annat swappiness-värde kan du ställa det tillfälligt med sysctl kommandot. Detta behöver ingen omstart, och effekten är omedelbar. I själva verket kommer omstart att återställa standardvärdet, så du är ganska säker att experimentera:

 sudo sysctl vm.swappiness = 10 

Naturligtvis kan du lägga till något värde istället för "10" (mellan "0" och "100").

När du har hittat ditt föredragna värde kan du permanent ändra systemkonfigurationen genom att redigera "/etc/sysctl.conf"

 sudo nano /etc/sysctl.conf 

och lägger till linjerna

 #Sätt swappiness-värde vm.swappiness = 10 

till slutet av den här filen, med värdet inställt på din inställning än en gång, förstås.

Slutsats

Att sänka swappiness till "10" rekommenderas ofta som en lösning med en storlek, men den faktiska användningen av tekniken kan vara en liten bit mer komplicerad än det. Genom att skapa riktmärken, känna till ditt system, hur du använder det och vad du behöver av det, kan du finjustera din swap-användning och uppnå en viss prestanda (antingen interaktivitet eller I / O).