Innehåll

Virtuellt minne

Virtuellt minne
Virtuellt minne, om MMU:n
Virtuellt minne, om swap

 


03/01-01 | Janne Johansson | icepic@64bits.se


Virtuellt minne, fortsättning

Vad får då allt det här trixandet för effekter? Man ser ju att mer och mer går mot att man bara använder exakt så mycket minne som man gör av med. Det är inte längre en katastrof om ett program är 20 Meg, om 19 av dem bara består av en fet bild som kommer när man trycker "about". Eftersom man laddar saker efter behov kommer man dessutom att sprida ut diskläsningar mera över tiden, och på så sätt inte ha så extrema toppar som annars skulle dyka upp vid programstarter.

Man får dessutom en möjlighet att köra ett 500 Meg stort program trots att man bara har 128 Meg i maskinen. Utan att ens ta till swap i alla lägen. Swap ger en möjlighet att överboka extremt mycket, men på bekostnad av tid. Att få in/ut en page från disk kan ju ta upp emot en millisekund, vilket är en oändlighet för en cpu som går i GHz-fart. Är datorn inte för lastad just då kan den göra annat under tiden, men är det riktigt tjockt så står den och väntar enbart på disken.

Alternativet är ju tyvärr att inte kunna köra programmen alls, så det har ju kommit till den punkten att swap inte är ett val för normal varierad drift. Dessutom är det ju så att få OS swappar ju ut saker "på skoj", så det är sällan som det riktigt skadar att ha swap påslaget. Det beror som vanligt på vad man gör med maskinen.

Ett par punkter emot swap är om man lägger det som en swapfil mitt i körande filsystem, eftersom det förhindrar dig från köra dina filsystem i "read-only" mod, vilket kan vara riktigt trevligt ur säkerhetssynpunkt. Om datorn kraschar och man har swapfilen på ett filsystem är man ju dessutom garanterad att få köra filsystemscheck vid nästa boot, eftersom swapfilen så gott som alltid är öppen för skrivning. Att lägga sin swap på en egen partition är i mitt tycke ett bättre val, eftersom man aldrig behöver göra filsystemskontroller på den vid nästa boot, det är bara att skriva över igen, oavsett vad som stod där sen innan. Å andra sidan kräver det partitionering, så helt utan nackdelar är det kanske inte. Oavsett om det är en fil eller en egen partition ska man försöka att inte ha det på samma skiva som den mest använda skivan i systemet, om man har flera. Det är normalt sett ofta boot/OS- skivan som går mest, men självklart varierar även det från system till system.

Har storleken betydelse?

Vad det gäller valet av storlek på dem finns det lika många regler som det finns folk som svarar på frågan. En del säger över 2xRAM, andra mindre. Man får känna sig för lite grann. OS som dumpar minnet till swappen vid krascher kräver givetvis att man har minst lika mycket swap som internminne, men det finns sällan en övre gräns mer än vad ens cpu kan adressera. För x86 är det 4 Gig, så ram+swap är ingen ide att ställa högre än så. Man får säkert skapa en större, men den kommer inte användas förbi 4 Gig.

Har man 128 eller 256 Meg RAM kommer det dessutom inte vara skoj att köra så mycket program att den swappar ut 2-3 Gig heller. Det blir en naturlig gräns när man inte orkar vänta på swappandet. Kör man program som normalt kräver 500 Meg och verkligen använder dessa 500 Meg så ska man se till att ha 512 i datorn, istället för 64 Meg + 450 Meg swap eftersom datorn kommer att spendera all tid med att skyffla runt vilka 64 Meg som just nu ska vara aktiva, och aldrig få riktig tid att köra. Idag kostar inte minnen så mycket heller att det är lönt att låta datorn gå med alldeles för lite minne. Iallafall inte om man tar användandet på allvar.

Mäta på allvar

När man mäter hur mycket minne som går åt får man inte glömma att ledigt minne kan användas till filsystemscache och andra cachar, så att man inte stirrar sig blind och tror att datorn använder allt minne och att det är slut på ens 768 Meg trots att bara notepad just nu är inladdat. Se till att den mätare ni har visar vad som är bokat av program och inte bara vad som används, eftersom det är stor skillnad på dem. Att köra ett ramflushningsprogram kan användas för att få bort det "halvviktiga" minnet så att man ser hur mycket som verkligen är i bruk, men det är ju på bekostnad av att all cache:ad data åker ut, så det går inte fortare efteråt om man kör det. OS:et tömmer själv enkelt bort eventuella cachesidor som inte längre behövs, så att manuellt tömma dem ger inget extra vad prestandan anbelangar. Har man problem med prestanda vad det gäller minne, så är det bara mer RAM som verkligen hjälper, alla andra metoder är bara sätt att lindra symptomen på.

Och till sist får man inte glömma vad Seymour Cray sa om minne vs swap: (Han som skapade superdatorfirman Cray, senare uppköpta av Silicon Graphics)

-"Minne är som orgasmer, det lönar sig inte att fejka."

Har ni frågor eller undrar nåt i allmänhet så lämna en rad till IcePic@64bits så förklarar jag gärna.

BSD-licens


« Föregående  

 




03/01-01 | Janne Johansson | icepic@64bits.se

Diskutera denna artikeln i vårt forum!