Bernd Brodesser schrieb in 1,5K (38 Zeilen):
* Wolfgang Weisselberg schrieb am 01.Jun.2000:
Speicher == Programcode + Daten + Buffer + Cache ...
Das ist wohl so, aber trotzdem, Matthias hat recht. Wenn man eine Zeitlang mit KDE und Netscape gearbeitet hat fängt Linux an zu swapen. Natürlich dauert dann alles viel länger.
Wenn ich euch richtig verstanden habe: Wenn man mehrere grosse, geg. schlecht lokalisierte Programme lange Zeit auf Linux laufen laesst und z.T. benutzt, dann werden irgendwelche Teile (Welche? was sagt z.B. qps?) ausgeswapped. Vermutung: bdflush/update lagern Teile aus (Code wird direkt aus dem Executable geladen, geht also nicht in den Swap, Daten landen im Swap, Cache/Buffers werden geschrieben if dirty und gepurged). Grund dafuer sind z.B. cron.(daily|weekly|monthly), oder das Lesen/Schreiben grosser Datenmengen.[1] Symptom ware ein Rechner, der am Morgen (bzw. bei erster Benutzung nach Mitternacht) 'viel' Speicher frei hat, aber ueber-'normal' Swap benutzt. Beim Benutzen von Programmen wuerde dann erstmal Swapperei losgehen. [1] Werden diese danach rm'd/umounted/inaccessible, dann wird der vorher benoetigte Cache-Speicher sofort wieder freigegeben. Sort benutzt temporaere Dateien. Klar? Andere Vermutung: Mem ist gut genutzt, und zwar ueberwiegend mit Programcode/daten und/oder shared[2]. In diesem Falle passiert folgendes: Du startest ein neues Programm. Dieses braucht Platz, der ist im Hauptspeicher nicht gegeben, also muss zunaechst Platz geschaffen werden. Um so weniger Buffer/Cache da ist, um so seltener kann davon eine Page gekillt werden und um so eher muss eine Page aus den Programmdaten genommen werden. In der Regel ist aber der Code wesendlich kleiner als die Daten und zudem haeufiger benutzt (der Rest ist eh schon ausgelagert) ... und damit muss ausgeswappt werden. Wenn jetzt dieses Programm diese Daten wieder braucht[3], wird diese Page (die in der Tat lange nicht gebraucht wurde), wieder eingeswappt. [2] nein, /proc/meminfo liefert einen viel zu hohen Wert fuer shared zurueck: jede Shared-Page wird mit der Anzahl der 'links' darauf multipliziert! /proc/memstat's 1Count liefert die KB der non-shared Seiten zurueck, die Differenz ist shared. memstat ist unter /usr/doc/packages/xosview/memstat/ zu finden.) [3] weil es sie ueber seinen ganzen benoetigten Speicher verstreut hat (schlecht lokalisiert), anstatt die wichtigsten an wenigen Orten zu buendeln (gut lokalisiert) In diesem Falle koenne z.B. ein echo "256 512 2560" > /proc/sys/vm/freepages helfen. Der Default sind 256 512 768, IIRC, die Werte sind Pages (i.e. 4k --> 1/2/3MB) und bedeuten 1. Platz fuer atomare Operationen, immer freigehalten 2. Ab hier wird aggressiv geswapped 3. Ab hier wird lazy (im Hintergrund) geswapped. Durch das Erhoehen von 3. wird der Kernel in seiner Freizeit diesen Speicher freimachen (und damit 'verschwenden'), aber fuer Programmstarts ist dann (bei mir) 8 MB sofort zur Verfuegung und 1 weiteres unter schwerem Swappen, statt nur 1 MB + 1 MB.
Selbst wenn man dann die meisten Prozesse zurückfährt swapt Linux weiter.
Bist du dir sicher, dass Linux *swappt*? Oder siehst du nur die Platte roedeln? cron & find koennten das z.B. auch sein! Schliesse mal die speicherhungringen Applikationen (Netscape, GIMP, grosses KDE-Zeugs, ... siehe qps, z.B.). Da muesste zwar erstmal das Roedeln starten (schliesslich ist der Exit-code ausgeswappt!), aber dann *viel* Swap freiwerden.
Wie kommt das? Nach dem booten kommen die gleiche Prozesse ohne swapen aus.
Daten ...
Wird erst mal ausgelagert, so kommt es zu ständigen Plattenzugriffe, selbst wenn man nur noch wenige Prozesse laufen hat.
Welche Prozesse laufen denn? Welche verusachen den Plattenzugriffe? xosview kann neben den Balken auch 'load'-aehnliche Graphiken fuer CPU, Mem, Swap, Disk, ... anzeigen (braucht halt mehr Platz). Das kann sehr aufschlussreich sein! Im Uebrigen ist klar, dass ein Engpass sich selber verschlimmern kann: Stell dir eine Supermarktkasse vor, die ca 100 Leute pro Stunde abarbeiten kann, und es kommen ca 80/h. Jetzt kommen auf einen Schub 200. Selbst wenn du dann es auf 10/h drosselst, ist die Kasse erstmal 2 1/4 Stunden gut ausgelastet! -Wolfgang --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com