Vraag Hoeveel SWAP-ruimte op een systeem van 2-4 GB?


Hoe moet ik beslissen welke maat ik mijn swap op een nieuwe Linux-machine (Debian) met 2-4 GB RAM moet gebruiken? Heb ik echt ruimte nodig om te wisselen?


52
2018-05-07 15:15


oorsprong


2-4 GB is 5 jaar later geen echt hoog geheugen meer. - guaka
@KasperSouren Nee, dat is het niet. Was een redelijk bedrag op het moment. - C. Ross


antwoorden:


Er zijn veel manieren om uit te zoeken hoeveel swap er in een machine moet worden gebruikt. Veelvoorkomende suggesties gebruiken formules op basis van RAM, zoals 2 x RAM, 1,5 x RAM, 1 x RAM, 0,75 x RAM en 0,5 x RAM. Vaak zijn de formules afhankelijk van de hoeveelheid RAM (dus een doos met 1 GB RAM kan 2 x RAM-swap gebruiken (2 GB), terwijl een doos met 16 GB ram misschien .5 x RAM-swap (8 GB) zou kunnen gebruiken.

Een ander ding om te overwegen, is waar de doos voor zal worden gebruikt. Als u een groot aantal gelijktijdige actieve processen op de doos wilt hebben, maar een aanzienlijk aantal ervan zal gedurende langere perioden niet gebruikt worden, dan is het zinvol om extra swap toe te voegen. Als je een klein aantal kritieke processen wilt uitvoeren, is het zinvol om extra swap toe te voegen (dit lijkt misschien contra-intuïtief, maar ik zal het zo meteen uitleggen). Als u een box als bureaublad gebruikt, is het zinvol om extra swap toe te voegen.

Over de vraag of u swap moet opnemen, ja, dat zou u moeten doen. Je moet altijd ruilruimte opnemen tenzij jij werkelijk weet wat je doet, en daar heb je echt een goede reden voor.

Kijk, de manier waarop de Linux kernel werkt, swap wordt niet alleen gebruikt als je alle fysieke geheugen hebt uitgeput. De Linux-kernel zal toepassingen gebruiken die niet actief zijn (slapen) en na een bepaalde tijd de toepassing verplaatsen om uit het echte geheugen te wisselen. Het resultaat is dat wanneer u die applicatie nodig hebt, er een tijdelijke vertraging is (meestal slechts een seconde of twee) terwijl het geheugen van de toepassing wordt teruggelezen van swap naar RAM. En dit is meestal een goede zaak.

Hiermee kunt u inactieve applicaties in de slaapstand zetten, waardoor uw actieve applicaties toegang hebben tot extra RAM. Bovendien zal Linux elk beschikbaar (niet-toegewezen) RAM-geheugen op een machine gebruiken als schijfcache, waardoor de meeste (langzame) schijfactiviteit sneller en sneller reageert. Uitschakelen van inactieve processen geeft u meer schijfcache en maakt uw machine over het algemeen sneller.

Tenslotte, laten we eerlijk zijn, schijfruimte is goedkoop. Heel goedkoop. Er is echt geen goede reden om geen (relatief) klein stukje ruimte te swipen. Als ik met 2 GB - 4 GB RAM in een computer zou werken, zou ik waarschijnlijk mijn swap-ruimte instellen op minimaal gelijk aan de RAM. Als het minder dan 2 GB RAM zou zijn, zou ik nog steeds met ten minste 2 GB swap werken.

UPDATE: Zoals een uitstekende opmerking vermeld (en ik vergat mee te nemen), als je een laptop of een desktop gebruikt die je misschien in de slaapstand wilt zetten (Suspend to Disk), dan altijd wil minstens zoveel swappen als je geheugen. De swapspace wordt gebruikt om de inhoud van het RAM op te slaan in de computer terwijl deze 'slaapt'.


54
2018-05-07 16:07



Geweldig antwoord, maar je bent maar één ding vergeten. Als het een desktop of laptop is, zorg er dan voor dat swap minstens zo groot is als het RAM-geheugen dat je hebt, zodat je je computer in slaapstand kunt houden. Dit bespaart het RAM-geheugen om te wisselen. - Sander Marechal
Goede post. Sander versloeg me met het enige dat ik eraan zou toevoegen. Als er een extra item is, als je meerdere schijven hebt, kan het verbeteren van je prestaties als je je schijf op een schijf zet die de rest van je actieve bestandssystemen niet heeft, omdat er niet zoveel conflicten zijn. - GreenKiwi
zoals ik kwam erachter deze afgelopen zomer moet je veel swapruimte hebben als je Java gebruikt - warren
Als de gebruiker een hoeveelheid RAM heeft die veel groter is dan het bedrag dat ze daadwerkelijk zullen gebruiken (16 GB / 32 GB) op een 100% uptime-desktopcomputer (geen winterslaap), stelt u dan toch voor om processen aan SWAP te vragen? Het lijkt me dat er voordelen zouden zijn om alles op het RAM-geheugen te laten staan, tenzij je ooit de capaciteit ervan zou naderen. - earthmeLon
@earthmeLon - Ik zou willen voorstellen nog steeds een beetje te ruilen. Schijven zijn tegenwoordig groot en goedkoop, dus het verlies van een paar GB schijfruimte om te wisselen is verwaarloosbaar. Als je wat swapruimte hebt, krijg je een verzekeringspolis voor het geval iets meer RAM ophaalt dan je zou verwachten. - Christopher Cashell


rode Hoed beveelt de volgende formule voor servers met veel ram:

if MEM < 2GB then SWAP = MEM*2 else SWAP = MEM+2GB

Als uw systeem 1 GB ram heeft, zou uw swap 2 GB zijn, voor 16 GB zou dit 18 GB zijn.


17
2017-07-09 13:13



Relevante link uit de RHEL6-opslaggids: docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/... - Ophidian
Een server zou behoorlijk vastlopen als hij consequent 1 GB swap zou gebruiken omdat de ram vol zou zijn. - user2284570


Laat antwoord, en ik denk dat dit vrij veel werd behandeld in het geselecteerde antwoord, maar er is een aantal goede en gemakkelijk verteerbare informatie in het antwoord van @ssapkota hier (hieronder kopiëren / plakken).

Dit is een goede aanbeveling van RedHat:Aanbevolen ruimte voor systeemruil

Een uittreksel van dezelfde link:

In de afgelopen jaren nam de aanbevolen hoeveelheid swapruimte lineair toe met de hoeveelheid RAM in het systeem. Maar omdat de hoeveelheid geheugen in moderne systemen is toegenomen tot honderden gigabytes, nu wordt erkend dat de hoeveelheid swapruimte die een systeem nodig heeft een functie is van de geheugenwerkbelasting die op dat systeem wordt uitgevoerd. Omdat swapspace echter meestal tijdens de installatie wordt aangegeven, en dat het moeilijk kan zijn om vooraf de geheugenbelasting van een systeem te bepalen, raden we aan systeem-swap te bepalen met behulp van de volgende tabel.

Huidige tabel (vanaf december 2012):

Amount of RAM in the system   Recommended swap space         Recommended swap space 
                                                             if allowing for hibernation
---------------------------   ----------------------------   ---------------------------
2GB of RAM or less            2 times the amount of RAM      3 times the amount of RAM
2GB to 8GB of RAM             Equal to the amount of RAM     2 times the amount of RAM
8GB to 64GB of RAM            0.5 times the amount of RAM    1.5 times the amount of RAM
64GB of RAM or more           4GB of swap space              No extra space needed

Originele tabel:

Amount of RAM in the System     Recommended Amount of Swap Space
4GB of RAM or less              a minimum of 2GB of swap space
4GB to 16GB of RAM              a minimum of 4GB of swap space
16GB to 64GB of RAM             a minimum of 8GB of swap space
64GB to 256GB of RAM            a minimum of 16GB of swap space
256GB to 512GB of RAM           a minimum of 32GB of swap space 

12
2018-03-29 15:38





Het hangt er nogal van af wat je ermee doet. Met de passende werkbelasting, hebt u eigenlijk geen swapruimte nodig, of je hebt 16 MB of 16384 MB RAM; inderdaad de meeste ingebedde Linux-apparaten worden uitgevoerd zonder iets (waar zouden ze naar ruilen?)

Als u RAM-prijzen in aanmerking neemt, gebruikt u waarschijnlijk geen swap voor actief berekening. Wat blijft er over?

  1. Op desktops wordt swapspace gebruikt voor suspend-to-disk. Deze swapruimte moet ongeveer 1 × RAM zijn, afhankelijk van hoe goed de geheugeninhoud is samenpersen.
  2. Toestaan ​​dat inactieve taken uit het RAM worden verwijderd om meer ruimte te maken voor schijf cache
  3. Hetzelfde, maar om actieve processen toe te staan ​​om het in plaats daarvan te gebruiken voor heap / stack

(2) en (3) zijn sterk afhankelijk van de werklast. Op mijn bureaubladen kan ik gemakkelijk gebruiken 4 GB + aan (2), van het verlaten van vims, xterms, enz. Op andere desktops.

Op de meeste servers die ik run, is er bijna nooit iets geruild en 1-2 GB swap (ongeacht RAM-hoeveelheid) lijkt in orde.


8
2018-05-07 16:01



swap space wordt ook gebruikt als je draait iets dat maakt gebruik van de JVM: niet chintz en vergeet om swap space toe te wijzen als je Java gebruikt! - warren
@warren: Ik heb Tomcat-instanties, elk meer dan 3GiB, maar zonder swap (en één gebruikt enorme pagina's en kan dus niet worden geruild). Ik weet niet zeker waar je het over hebt. - derobert
er is een semi-obscure bug in de JVM met betrekking tot de minimale en maximale geheugeninstellingen die ik deze afgelopen zomer tegenkwam (antipaucity.com/?p=984). TL; DR - elke keer dat de JVM vraagt ​​om meer geheugen van het besturingssysteem, schrijft het zichzelf uit om te wisselen, krijgt het een nieuw geheugenblok en leest zichzelf terug in de RAM zodat het geheugen aaneengesloten is - warren
@warren: OK, ik draai OpenJDK op 64-bit, met Xmx en Xms hetzelfde. Maar ik weet niet zeker hoe java zichzelf zou dwingen om te ruilen, de enige syscall close zou zijn madvise, maar dat zal niet falen ... die bug heeft het over onvoldoende geheugen tijdens garbage collection. Het toevoegen van swap voorkomt dat, natuurlijk, maar dat geldt ook voor het toevoegen van RAM. Misschien komt het door 32-bits met PAE? - derobert
het gebeurt ook met de 64-bit JVM: als dat zo is Xms en Xmx niet ingesteld op dezelfde waarden, het kan je slecht bijten: veroorzaakte grote problemen voor ons gedurende twee weken tot we het uiteindelijk opgespoord hadden - warren


Wel, het hangt af van welke diensten en applicaties u van plan bent uit te voeren. U kunt uw geheugengebruik bekijken met gratis -m en pas uw swappartitie dienovereenkomstig in de tijd aan.

Dit is een interessante discussie over het onderwerp. Persoonlijk (en na het lezen van die discussie) liet ik nog steeds ongeveer 1 GB over voor ruil.


4
2018-05-07 15:30





Ik kan niet rechtstreeks met Debian praten, maar ik weet dat wanneer je boven 2 GB RAM komt, de oorspronkelijke vergelijking met 2xRAM verandert, meestal naar 1xRAM. Ik denk dat als je eenmaal 16 GB RAM hebt geraakt, de suggestie weer naar 0.75xRAM gaat.

Natuurlijk vond ik dit waar voor Solaris, en is eigenlijk de metriek die wordt gebruikt voor Oracle-installaties, dus YMMV, afhankelijk van de apps die je daar gaat gebruiken.


2
2018-05-07 15:24





Ik maak altijd zoveel swap (tenminste) als RAM. Voor het geval ik de machine op een dag wil overwinteren. Kan met minder werken, maar kan net zo goed niet.

HDD-ruimte is tegenwoordig goedkoop en daarom aarzel ik niet om swapspace weg te geven.


2
2018-05-07 16:12





Swap-ruimte kan dienen als "padding" wanneer u anders zonder geheugen zou komen te zitten.

Wanneer een proces al het beschikbare RAM-geheugen verbruikt, zal een deel van het apparaat heel langzaam werken, maar meestal kunt u het herstellen. Het zal ook gemakkelijker zijn om te zien welk proces het probleem veroorzaakt.


2
2018-05-23 08:53



Dit is een tweesnijdend zwaard: op mijn thuis-pc heb ik swap verwijderd toen ik Firefox 2.x gebruikte, omdat het langzaam alle geheugen opslokte, en toen de machine ging swappen werd het volledig onbruikbaar; zonder swap, werd het firefox-proces simpelweg afgesloten door de kernel :) - wazoox


In de loop der jaren heb ik de regel gevolgd dat voor Windows-machines je net zo veel ruilt als je RAM hebt ... Op Novell zouden we swap hoger afstemmen als we meer printers zouden hebben ... Voor linux is de regel en oefening voor mij 1GB ruilen voor elke 2GB RAM die je hebt. En u plaatst het aan de voorkant van de schijf, zodat het sneller wordt geopend.

  • Als het een mail / spam-gateway is, gebruik ik het dubbele van de swap naar RAM
  • Als het een * server is, gebruik ik helemaal geen swap
  • als het een LAMP-server is, is de 1/2-regel van kracht.

  • Kilometerstand varieert afhankelijk van de toepassing en het GUI-gebruik.


1
2018-05-07 15:46



Eigenlijk zou ik denken dat die in de midden- van de schijf zou het snelst worden benaderd. - Eddie


Ik maak 1 GB swap en koop meer RAM-geheugen de tweede wordt gebruikt. Je hoeft niet echt van moderne computers te wisselen, RAM is zo goedkoop.


0
2018-05-07 15:24