Hallo! Daniel Bauer wrote:
leider habe ich den Thread nicht vollständig mitverfolgt, aber gab/gibt es nicht die Regel das der Cache doppelt so groß sein soll wie der reale Speicher? Ist das heute nicht mehr nötig, ich sehe auch bei meinen Maschinen die mit 1-2 GB ausgestattet sind kaum Zugriffe auf den Cache???
Vorweg: Swap ist nicht gleich Cache! Bitte wuerfel die Begriffe nicht durcheinander. Hier geht es um die Groesse des Swap-Bereiches. Es gab tatsaechlich Kernel, da musste der Swap-Bereich doppelt so gross sein wie der physikalisch vorhandene RAM, das stimmt aber bei aktuellen Kerneln nicht. Es macht also in vielen Faellen keinen Sinn, so viel Swap Space anzulegen[*]. Hier ein paar grundsaetzliche Gedanken: 1. Sollte man bei genug RAM ueberhaupt Swap anlegen? Hier ist die Antwort "ja", auch wenn es zunaechst unsinnig erscheint. Selbst bei genuegend RAM kann ein Swap aber Vorteile bringen, da Speicherseiten, auf die lange nicht zugegriffen wurde, ausgelagert werden koennen. So kann der physikalische RAM fuer bessere Dinge, z.B. als Cache, genutzt werden, was dem System Vorteile bringt! Es ist also immer gut, einen gewissen Swap Space zu haben - der Kernel kuemmert sich automatisch um die Entscheidung des Swappens (soll nun gewisser Speicherbereich ausgelagert werden oder nicht?), normalerweise hat der User mit dieser "Magie" nichts zu tun. 2. Wie gross soll der Swap sein? Das kann man sich einfach ueberlegen, wenn man ein "worst case" Szenario macht - wenn ich all die Programme, die ich immer mal so brauche, gleichzeitig verwende, wie viel Speicher wird dann insgesamt maximal verwendet? Von diesem Wert zieht man den physikalisch vorhandenen RAM ab, und dann hat man eine ungefaehre Groesse fuer den benoetigten Swap-Bereich. Sollte die ermittelte Groesse weit ueber dem physikalisch vorhandenen RAM liegen und/oder wird im normalen Betrieb momentan sehr viel geswappt, dann waere das Aufruesten des RAM sicher vorteilhaft. Natuerlich sollte man zu der ermittelten Zahl noch ein wenig Spielraum geben (z.B. kann ein g++ beim Uebersetzen von C++ Quellcode mal eben sehr viel Speicher brauchen), ebenfalls sollte man Punkt 1 beachten, und dann hat man fuer gaengige Systeme eine gute Faustregel. Swap ist sehr langsame im Vergleich zu anderen "Speichern" - am schnellsten ist das CPU Register, dann kommen die Level 1 und 2 (und evtl. 3) Caches, dagegen ist das normale RAM dann schon sehr langsam, und Swap, naja, Swap ist quasi aus der Sicht der CPU gesehen ein totaler Stillstand... Wenn also viel geswappt wird im Regelbetrieb, dann bremst das gewaltig, insofern ist Swap eben eher ein Speicher-Notnagel, um etwas machen zu koennen, was viel VM braucht, aber es sollte nicht die Regel sein. Es gibt Systeme, bei der sollte man von o.a. Faustregel abweichen, aber darauf soll hier jetzt mal nicht eingegangen werden. Fuer normale Heimsysteme sollte die Regel funktionieren. 3. Wenn man nun nach der Regel vorgegangen ist und braucht doch einmal mehr virtuellen Speicher, was dann? Es kann natuerlich vorkommen, dass in Einzelfaellen mehr VM gebraucht wird (RAM + Swap), als durch obige Regel zur Verfuegung steht. Das heisst aber nicht, dass man deswegen von vorne herein seinen Swap-Space fuer diesen Ausnahmefall utopisch gross dimensionieren muss. In diesem Falle hilft einfach ein Swap-File weiter, das ebenfalls zur Auslagerung benutzt werden kann (siehe z.B. Archiv der Liste oder aktueller Thread; es sollte dann aber auch die "priority" der Swap-Bereiche beachtet werden, wenn es mehrere gibt). War bei Kernel 2.4 ein Swap-File nochmal deutlich langsamer als eine Swap-Partition, so ist bei Kernel 2.6 ein Swap-File nur noch relativ wenig langsamer. Damit kann man in diesen Einzelfaellen also ganz gut leben. 4. Was ist mit Laptops? Bei Laptops werden im Schlafmodus die Speicherseiten im Swap-Bereich auf einer HDD abgelegt. Man sollte also darauf achten, dass hier dann genug Swap zur Verfuegung steht, falls das Feature genutzt wird. Ich hoffe, das klaert Deine Frage und hilft auch sonst etwas weiter. Gruesse aus London, Thomson [*] Man kann sich natuerlich auf den Standpunkt stellen, dass es bei der Groesse heutiger Festplatten keine Rolle spielt, ob man 300MB, 1GB oder 2GB fuer eine Swap-Partition abzwackt, wo ingesamt vielleicht 2 x 250GB SATA Platten vorhanden sind. Dieser Gedanke hat natuerlich prinzipiell seine Berechtigung... Auch wenn ich persoenlich es ein wenig anders sehe.