Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[OT] Allgemeine Frage zu Swap-Speicher
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum
View previous topic :: View next topic  
Author Message
sprittwicht
l33t
l33t


Joined: 04 Dec 2003
Posts: 644

PostPosted: Mon Jul 19, 2004 7:24 pm    Post subject: [OT] Allgemeine Frage zu Swap-Speicher Reply with quote

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
View user's profile Send private message
st4n
n00b
n00b


Joined: 03 Oct 2003
Posts: 64
Location: Germany // Bielefeld

PostPosted: Mon Jul 19, 2004 7:26 pm    Post subject: Reply with quote

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
View user's profile Send private message
schmutzfinger
Veteran
Veteran


Joined: 26 Oct 2003
Posts: 1287
Location: Dresden/Germany

PostPosted: Mon Jul 19, 2004 7:30 pm    Post subject: Reply with quote

was sagt denn
Code:
cat /proc/swaps
?
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
View user's profile Send private message
sprittwicht
l33t
l33t


Joined: 04 Dec 2003
Posts: 644

PostPosted: Mon Jul 19, 2004 7:46 pm    Post subject: Reply with quote

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
View user's profile Send private message
toskala
Advocate
Advocate


Joined: 14 Dec 2002
Posts: 2080
Location: hamburg, germany

PostPosted: Mon Jul 19, 2004 8:09 pm    Post subject: Reply with quote

-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
View user's profile Send private message
sprittwicht
l33t
l33t


Joined: 04 Dec 2003
Posts: 644

PostPosted: Mon Jul 19, 2004 8:23 pm    Post subject: Reply with quote

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
View user's profile Send private message
flammenflitzer
Advocate
Advocate


Joined: 25 Nov 2003
Posts: 3483
Location: Berlin

PostPosted: Mon Jul 19, 2004 8:25 pm    Post subject: Reply with quote

.... 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
View user's profile Send private message
sprittwicht
l33t
l33t


Joined: 04 Dec 2003
Posts: 644

PostPosted: Mon Jul 19, 2004 8:37 pm    Post subject: Reply with quote

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
View user's profile Send private message
flammenflitzer
Advocate
Advocate


Joined: 25 Nov 2003
Posts: 3483
Location: Berlin

PostPosted: Mon Jul 19, 2004 8:46 pm    Post subject: Reply with quote

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
View user's profile Send private message
sprittwicht
l33t
l33t


Joined: 04 Dec 2003
Posts: 644

PostPosted: Mon Jul 19, 2004 9:27 pm    Post subject: Reply with quote

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
View user's profile Send private message
psyqil
Advocate
Advocate


Joined: 26 May 2003
Posts: 2767

PostPosted: Mon Jul 19, 2004 9:34 pm    Post subject: Reply with quote

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 :P
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum All times are GMT
Page 1 of 1

 
Jump to:  
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