Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Software>10.5 "Ram System" - was ist "Reserviert"?

10.5 "Ram System" - was ist "Reserviert"?

Dachdecker01.04.0911:40
Hallo,

weiß Jemand was OSX mit "Reserviert" meint? Auf den "Aktiv" Wert komme ich wenn ich alle laufenden Prozesse addiere (also die RSIZE) Werte.

Kanne es mit meiner GPU zusammenhängen? Ich habe ein MBP Late 2008 die 9400 reserviert sich 256 mb vom RAM.
0

Kommentare

Marcel Bresink01.04.0911:53
Nein, "reservierter Speicher" ist die etwas irreführende Übersetzung des Fachbegriffs "wired-down memory", heißt also eigentlich "festgeketteter Speicher".

Das ist derjenige Teil des virtuellen Speicherraums, der immer im echten, physischen Speicher verbleibt, also niemals am Auslagerungsverfahren ("Swapping") teilnimmt.

Der innerste Kern des Betriebssystems, insbesondere die Teile, die für Speicherverwaltung und Festplattenzugriffe zuständig sind, dürfen niemals ausgelagert werden. Ansonsten könnte nämlich eine kleine Katastrophe passieren, und zwar wenn diese Teile auf die Idee kommen, sich selbst auszulagern ...

Das System könnte sich sonst den Boden unter den Füßen wegziehen, da es sich dann nicht selbst wieder in den Hauptspeicher zurückholen könnte.
0
Dachdecker01.04.0911:57
Ah ok. Dh die aktuell laufenden Programme brauchen 1.15 GB + 0.681 GB Ram? Also 1.8 GB für iTunes, Safari, Mail? Und ich dachte OSX sei nicht so hungrig wie Vista!
0
Brandy
Brandy01.04.0912:28
Die Speicheranzeige bezieht sich auch auf benötigte Bibliotheken, die das Programm verwendet. Allerdings werden diese nur einmal geladen, auch wenn mehrere Programme sie verwenden.
0
Knork01.04.0913:36
Marcel Bresink
Das ist derjenige Teil des virtuellen Speicherraums, der immer im echten, physischen Speicher verbleibt, also niemals am Auslagerungsverfahren ("Swapping") teilnimmt.

Der innerste Kern des Betriebssystems, insbesondere die Teile, die für Speicherverwaltung und Festplattenzugriffe zuständig sind, dürfen niemals ausgelagert werden. Ansonsten könnte nämlich eine kleine Katastrophe passieren, und zwar wenn diese Teile auf die Idee kommen, sich selbst auszulagern ...

Hm.

Laut obigem Screenshot wären das 681 MB, die niemals nie nicht ausgelagert werden dürfen.

Wie kommt es dann, daß hier Mac OS X 10.4.11 auf einem Mac Mini (PPC G4 1,25 GHz) mit nur 256 MB RAM laufen kann?
0
Marcel Bresink01.04.0913:55
Dachdecker
Ah ok. Dh die aktuell laufenden Programme brauchen 1.15 GB + 0.681 GB Ram?

Nein, mit RAM hat diese gesamte Anzeige zunächst mal überhaupt nichts zu tun. Außer dem Systemkern hat kein Prozess das Recht, überhaupt von echtem RAM etwas zu "wissen". Bereits im Prozessor wird per Hardware der gesamte Speicherraum virtualisiert. Jedes Programm kann nur virtuellen Speicher "sehen".

Wie der virtuelle Speicher dann gerade auf RAM und Auslagerungsspeicher auf der Platte verteilt wird und ob viele Speicherblöcke in Wirklichkeit von mehreren Prozessen gemeinsam benutzt und somit mehrfach gezählt werden, geht die Programme nichts an und ist auch in der Statistik nicht direkt sichtbar.

Am ehesten lässt sich der echte RAM-Verbrauch pro Prozess durch einen Wert abschätzen, der standardmäßig gar nicht angezeigt wird. Dazu muss man im Aktivitätsmonitor die Anzeigespalte "Privater Speicher" aktivieren.
0
Marcel Bresink01.04.0914:09
Knork
Laut obigem Screenshot wären das 681 MB, die niemals nie nicht ausgelagert werden dürfen.

Jein. Auf Dackdeckers Rechner ist im Moment die Speicherbelegung so, dass der Systemkern es für sinnvoll erachtet, 681 MB im RAM zu halten. Das System kann diese Einordnung alle paar Millisekunden überdenken und bei einem Computer mit weniger Speicher wird sich das System schon beim Bootzeitpunkt so konfigurieren, dass sehr viel weniger RAM vom Kern für sich selbst reserviert wird.
Knork
Wie kommt es dann, daß hier Mac OS X 10.4.11 auf einem Mac Mini (PPC G4 1,25 GHz) mit nur 256 MB RAM laufen kann?

Das ist kein Problem, da Tiger dann weniger Speicher "ankettet". Dachdecker hat offenbar 4 GB RAM in seinem Rechner, deshalb kann (und sollte) der Systemkern da sehr viel verschwenderischer mit RAM umgehen. Es werden zum Beispiel erheblich größere Pufferspeicher für Plattenzugriffe angelegt als auf einem 256-MB-Rechner.
0
Dachdecker01.04.0914:12
Marcel Bresink
Dachdecker
Ah ok. Dh die aktuell laufenden Programme brauchen 1.15 GB + 0.681 GB Ram?

Nein, mit RAM hat diese gesamte Anzeige zunächst mal überhaupt nichts zu tun. Außer dem Systemkern hat kein Prozess das Recht, überhaupt von echtem RAM etwas zu "wissen". Bereits im Prozessor wird per Hardware der gesamte Speicherraum virtualisiert. Jedes Programm kann nur virtuellen Speicher "sehen".

Wie der virtuelle Speicher dann gerade auf RAM und Auslagerungsspeicher auf der Platte verteilt wird und ob viele Speicherblöcke in Wirklichkeit von mehreren Prozessen gemeinsam benutzt und somit mehrfach gezählt werden, geht die Programme nichts an und ist auch in der Statistik nicht direkt sichtbar.

Am ehesten lässt sich der echte RAM-Verbrauch pro Prozess durch einen Wert abschätzen, der standardmäßig gar nicht angezeigt wird. Dazu muss man im Aktivitätsmonitor die Anzeigespalte "Privater Speicher" aktivieren.

Ok, aber wieso kommt das ganze OS ins trudeln wenn ein Programm 3GB für sich beansprucht und sonst nix läuft? Ich habe 4GB Ram! Deswegen bin ich auf diesen "reserviert" Teil gestoßen und habe mich gefragt was diese 680 MB füllt....
0
Marcel Bresink01.04.0914:37
Dachdecker
Ok, aber wieso kommt das ganze OS ins trudeln wenn ein Programm 3GB für sich beansprucht und sonst nix läuft?

Da müsstest Du schon näher erklären, was Du mit "ins Trudeln kommen" und mit "für sich beanspruchen" meinst und um welches Programm es geht.

Die meisten Programme sind immer noch 32-Bit-Programme, die aufgrund bestimmter Beschränkungen maximal 2GB Speicher "für private Zwecke" dynamisch anfordern dürfen. Das Programm läuft dann innerhalb eines Speicherraums von 4 GB, in denen auch das Programm selbst, sowie alle Teile des Betriebssystems, die das Programm während seiner Laufzeit nutzen darf, eingeblendet werden müssen. Auch Dateien, die das Programm öffnet, werden in der Regel in kompletter Länge in diesen 4 GB-Raum eingeblendet.

Es ist übrigens ein Trugschluss, zu glauben, ein System wäre besser, wenn es weniger RAM "verbraucht". Die Aufgabe eines Betriebssystems ist es ja gerade, die vorhandene Hardware bestmöglich auszunutzen, d.h. das gesamte RAM auch einzusetzen und nicht brach liegen zu lassen.

Im obigen Bild sind gerade 1,93 GB RAM ungenutzt (Summe aus frei und inaktiv). Das heißt, Du hättest für die gerade laufende Menge von Prozessen sogar "zu viel" Speicher, die das System gar nicht sinnvoll zuordnen kann.
0
Dachdecker01.04.0914:54
Ja ok da hast du Recht. Ich programmiere viel mit Java für die Uni und zum Teil brauchen da Algos schon mal 2 oder 3 GB Ram. Java läuft bei mir als 64 Bit Programm. Als "dummes" Beispiel mal diesen Java Code. Hier simuliere ich einfach mal eine Speicherhungrige Berechnung. Sobald der Java Prozess bei mir mehr als ca 2 GB verbraucht hängen die meisten anderen Programme. Alles ruckelt. Es gibt Soundaussetzter usw. Die CPU Last ist unter 50% - kann also nicht daran liegen.

Aber eigentlich sollte das doch ohne Probleme machbar sein, oder?


javac RamTest.java; java -Xmx3072m RamTest

import java.util.*;

public class RamTest {
    List<Long> list = new LinkedList<Long>();
    public static void main(String[] args) {
        RamTest ramTest = new RamTest();
        for(int i=0; i<Integer.MAX_VALUE; i++) {
            ramTest.list.add(new Long(Long.MAX_VALUE));
        }
        try {Thread.sleep(100000);} catch (Exception e) {}
    }
}
0
Marcel Bresink01.04.0915:28
Dachdecker
Aber eigentlich sollte das doch ohne Probleme machbar sein, oder?

Naja, das Programm läuft ja auch korrekt, bis die 3GB allokiert sind und es zu einer Java heap space exception kommt.

Neben dem "reservierten" Speicher wird auch RAM durch ein Dutzend weiterer laufender Systemprozesse und durch die Java Virtual Machine belegt. Die JVM dürfte für sich selbst schon etwa 300 MB RAM aufnehmen. Hinzu kommen Finder, Dock (inklusive Dashboard), Terminal, Window-Server, Aktivitätsmonitor, usw. ... Es kann durchaus sein, dass 4 GB hierfür nicht reichen.

Ist der kritische Punkt des Speicherverbrauchs erreicht, muss Mac OS X anfangen, Seiten auszulagern. Das kann bei einem so aggressiv Speicher reservierenden Programm wie dem hier schon zu deutlichem Ruckeln führen.

Und wenn man Pech hat, sind die laufenden Prozesse so organisiert, dass auf gerade ausgelagerte Seiten sofort wieder zugegriffen werden muss. Es kann dann zu einer Art Kettenreaktion kommen, bei der eine Auslagerung einer Seite indirekt zu Wiederein- und Wiederauslagerungen anderer Seiten führt. Das nennt man "Seitenflattern".
0
Dachdecker01.04.0915:30
Ich glaube ich muss mich damit abfinden das es so ist und warten bis die 4GB Ram Bausteine günstiger werden...
0
Marcel Bresink01.04.0915:43
Normalerweise optimiert der Kern von Leopard beim Systemstart (und auch dynamisch später) den eigenen Speicherverbrauch selbständig. Übrigens verwendet Mac OS X Server hier andere Optimierungen als ein Standard-Mac OS X.

Wenn Du den besagten "reservierten" Speicher von Hand zugunsten Deiner Java-VM reduzieren willst, kannst Du mit den Systemwerten kern.maxnbuf, kern.maxvnodes, net.inet.tcp.sendspace und net.inet.tcp.recvspace experimentieren. Näheres findest Du, wenn Du nach diesen Begriffen googelst.
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.