View previous topic :: View next topic |
Author |
Message |
sprittwicht l33t
Joined: 04 Dec 2003 Posts: 644
|
Posted: Mon Jul 19, 2004 7:24 pm Post subject: [OT] Allgemeine Frage zu Swap-Speicher |
|
|
Hallo!
Hab mal ne generelle Frage zum Swappen unter Linux. Hab den aktuellen MySQL-Ebuild auf einem Rechner mit 256 MB RAM nicht mehr kompiliert gekriegt. Auf der Festplatte war noch Platz satt. Die Ausgabe von 'top' zeigte an, dass der reelle Arbeitsspeicher recht schnell aufgefressen war, trotzdem fing der Rechner nicht an zu swappen. Stattdessen brach er irgendwann mitten im Kompilieren mit einer nichtssagenden Fehlermeldung ab.
Jetzt hab ich MySQL per distcc (bei deaktiviertem localhost) auf einem anderen Rechner mit 512 MB RAM kompiliert, ohne Probleme.
Nun endlich meine allgemeine Frage:
Was genau geschieht beim Swappen? Wird dadurch bestehenden und / oder neuen Prozessen lediglich ein Speicherraum sichergestellt, der der Größe des tatsächlichen RAMs entspricht (hier also 256 MB), oder kann ein Prozess dadurch z.B. auch auf virtuelle 512 MB zurückgreifen, die dann wild auf RAM und Swap verteilt werden? In letzterem Fall kann ich nämlich nicht verstehen, wieso der Kompiliervorgang auf dem 256 MB-Rechner immer abbrach. |
|
Back to top |
|
|
st4n n00b
Joined: 03 Oct 2003 Posts: 64 Location: Germany // Bielefeld
|
Posted: Mon Jul 19, 2004 7:26 pm Post subject: |
|
|
hm, ich wette mit dir, dass das nichts mit dem speicher zutun hatte :P
wenn ich die auslastung von meinem speicher auf meiner kiste so beaeugle is der fast immer voll und ich hab ehrlichgesagt nochnie genutzten swap gesehen (habe 512mb) |
|
Back to top |
|
|
schmutzfinger Veteran
Joined: 26 Oct 2003 Posts: 1287 Location: Dresden/Germany
|
Posted: Mon Jul 19, 2004 7:30 pm Post subject: |
|
|
was sagt denn ?
ich hatte zwar schon ewig ne 500mb swap partition aber die wurde wirklich nie genutzt, bis ich mal festgestellt habe das sie gar nicht formatiert war und damit gar nicht eingbunden werden konnte.
[/code] |
|
Back to top |
|
|
sprittwicht l33t
Joined: 04 Dec 2003 Posts: 644
|
Posted: Mon Jul 19, 2004 7:46 pm Post subject: |
|
|
Auf meinem 512 MB-Rechner wird auch relativ selten geswappt, aber auf dem 256er ist da schon oft was belegt... Ist dementsprechend auch formatiert und aktiviert.
Woran, wenn nicht am Speicher, könnte es denn sonst noch liegen? Hab eigentlich keine Probleme mit dem Rechner, kompilier sonst auch alles da drauf.
Hab leider während dem Kompilieren von MySQL nicht drauf geachtet, wieviel Platz der gcc-Prozess tatsächlich belegt, kurz bevor er abkackt. Aber hab vorher schon mal geguckt (als ich mit MAKEOPTS="-j5" kompiliert hatte), da hatten die Prozesse schon alle so 100 - 200 MB geschluckt. Und da wurde dann auch HEFTIGST geswappt, nur so nebenbei.
Das wär also jetzt das einzige, was mir so spontan einfallen würde. Dass der Prozess irgendwann an die 256 MB rangeht und dann trotz verfügbarem Swapspeicher einfach nicht mehr kriegt. |
|
Back to top |
|
|
toskala Advocate
Joined: 14 Dec 2002 Posts: 2080 Location: hamburg, germany
|
Posted: Mon Jul 19, 2004 8:09 pm Post subject: |
|
|
-j5... hast du denn 4 prozessoren?
nur weil du -j benutzen kannst, musst du das noch lange nicht tun. manch ein software produkt nimmt dir das übel und kompiliert eben nicht.
bau mal vernünftig, mit -j1 dann sag obs geht.
klar ballert -j5 den swap zu... du spawnst ja auch 5 parallele gcc instanzen. _________________ adopt an unanswered post
erst denken, dann posten |
|
Back to top |
|
|
sprittwicht l33t
Joined: 04 Dec 2003 Posts: 644
|
Posted: Mon Jul 19, 2004 8:23 pm Post subject: |
|
|
Das war natürlich keine Absicht.
Das mit dem j5 war ein Überbleibsel aus meiner distcc-Experimentierphase. Hatte irgendwo gelesen, man sollte mal ein bisschen rumprobieren. Eine Empfehlung war halt auch Anzahl Prozessoren * 2 + 1, deshalb hatte ich das probiert und mit j3 verglichen. Hab aber wohl vergessen das zurückzustellen, was sich halt erst bemerkbar gemacht hat, als 1 CPU mit 5 dicken gcc-Jobs belästigt / überfordert wurde.
Hatte auch j1 probiert, ging nicht. Erst auf dem anderen Rechner konnte ich's kompilieren. Diesmal übrigens mit j2. |
|
Back to top |
|
|
flammenflitzer Advocate
Joined: 25 Nov 2003 Posts: 3483 Location: Berlin
|
Posted: Mon Jul 19, 2004 8:25 pm Post subject: |
|
|
.... Swapping
Neben den Datenpartionen verwendet UNIX eine Partition zum Swappen. Unter Swapping versteht man das Ein- und Auslagern von Prozessen aus dem Hauptspeicher auf die Festplatte. UNIX lagert Prozesse, die längere Zeit nicht aktiv wurden aus, wenn der Hauptspeicher eng wird. Dadurch ist es möglich, dass mehr Prozesse arbeiten, als in den Hauptspeicher passen.
Nun ist das Auslagern auf Platte und das Zurückholen in den Hauptspeicher ein recht zeitaufwändiges Verfahren, da die Platte einen sehr viel langsameren Zugriff hat als Hauptspeicher. Tatsächlich belastet das Swappen das System bei den ersten Fällen der Speicherengpässe nicht unerheblich. Je länger das System allerdings läuft, desto ruhiger wird es, weil mit der Zeit diejenigen Hintergrundprozesse ausgelagert werden, die selten zum Einsatz kommen. Solche Hintergrundprozesse, die nur auf ein bestimmtes Ereignis warten um aktiv zu werden und die restliche Zeit schlafen, gibt es in einem UNIX-System in hoher Zahl. Insofern ist es auch nicht beunruhigend, wenn der Swapbereich belegt ist.
Kritisch wird es erst dann, wenn Bewegung ins Spiel kommt, also das System häufig auslagern muss. Dann sollte man den Hauptspeicher erweitern, weil das ständige Wechseln der Prozesse die Maschine belastet. Wenn der Speicher derart überlastet ist, dass die Maschine ständig die Prozesse ein- und auslagert und sonst fast nicht mehr arbeitet, redet man vom Thrashing.
Heutiges Swappen ist Paging
An sich ist der Name Swappen nicht mehr ganz korrekt, da es an sich das Auslagern ganzer Prozesse bezeichnet. Heutige Systeme arbeiten längst mit Pagingverfahren. Das bedeutet, dass das Auslagern nicht mehr auf Prozessebene stattfindet, sondern dass Speicherseiten fester Größe ausgelagert werden. Man kann sich das so vorstellen, dass der Hauptspeicher in Kacheln gleicher Größe aufgeteilt ist und das System kontrolliert, welche Kachel wie oft benutzt wird. Auf diese Weise können Prozesse teils im RAM und teils auf Platte liegen. Paging ist aufwändiger, aber auch wesentlich effizienter als Swapping. Man spricht auch von virtuellem Speicher, da der Prozess nicht merkt, dass sein Speicher zum Teil eigentlich auf der Platte ist....
http://www.willemer.de/informatik/unix/unplatte.htm |
|
Back to top |
|
|
sprittwicht l33t
Joined: 04 Dec 2003 Posts: 644
|
Posted: Mon Jul 19, 2004 8:37 pm Post subject: |
|
|
Hm, das ist zwar informativ, aber hilft mir eigentlich nicht bei meiner Ausgangsfrage weiter:
Kann ein Prozess nur so viel virtuellen Speicher benutzen, wie auch physikalisch vorhanden ist, oder steht ihm der gesamte Bereich RAM + Swap zu Verfügung? |
|
Back to top |
|
|
flammenflitzer Advocate
Joined: 25 Nov 2003 Posts: 3483 Location: Berlin
|
Posted: Mon Jul 19, 2004 8:46 pm Post subject: |
|
|
Also m.E. beantwortet der Artikel Deine am Anfang gestellte Frage ( über ihren Umfang hinaus).
Wo bestehen denn noch Unklarheiten? Es steht doch da, daß nicht Prozesse, sondern Speicherseiten ausgelagert werden, wodurch ein Prozeß sowohl im RAM als auch auf den SWAP-Bereich liegen kann. Und auch über die Größe der SXAP-Partition steht da etwas. Mit 250 MB würde ich c.a. 750MB SWAP nehmen. Ich habe auf meinen verschiedenen Systemen immer c.a. 1 GB genommen. Also sollte m.E. dem Prozeß der gesamte freie RAM und SWAP-Bereich zur Verfügung stehen, den die anderen Prozesse nicht belegen. |
|
Back to top |
|
|
sprittwicht l33t
Joined: 04 Dec 2003 Posts: 644
|
Posted: Mon Jul 19, 2004 9:27 pm Post subject: |
|
|
Tjoa... Ich les aus dem Artikel auch, dass ein Prozess teilweise im RAM, teilweise im Swap liegen kann. Das ist aber keine Aussage darüber, wieviel Platz davon er tatsächlich belegen darf. Haarspalterei, ich weiß, aber darum ging's ja. |
|
Back to top |
|
|
psyqil Advocate
Joined: 26 May 2003 Posts: 2767
|
Posted: Mon Jul 19, 2004 9:34 pm Post subject: |
|
|
sprittwicht wrote: | Das ist aber keine Aussage darüber, wieviel Platz davon er tatsächlich belegen darf. Haarspalterei, ich weiß, aber darum ging's ja. | Soviel frei ist? Vielleicht versteh ich ja die Frage nicht, aber mit Haaren hab ich auch schon länger nichts mehr am Hut |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|