Speicher / RAM unter Mac OS X verteilen???

A

anelts

Aktives Mitglied
Thread Starter
Dabei seit
09.01.2003
Beiträge
133
Reaktionspunkte
1
Hallo!
mit der Arbeitsspeicherverteilung unter Mac OS X komme ich irgendwie überhaupt nicht zurecht.....
Unter 9 war das ja immer eine relativ klare Sache - aber es heißt ja immer, das X das die RAM-Verteilung selbständig regelt.....ist das wirklich so?
Habe meinen Rechner (Powerbook) gerade von 256 MB Arbeitsspeicher auf 512 aufgerüstet und auf meiner Festplatte sind auch noch ca. 9 GB frei......aber irgendwie werde ich das Gefühl nicht los, dass der Rechner eigentlich schneller arbeiten müsste.
Kann ich bei der Arbeitsspeicherverwaltung irgendwie "mithelfen"?
Würde mich freuen, wenn mir das mit dem RAM unter Mac OS X mal jemand genauer erklären könnte.....
DANKE schon einmal im Vorraus!!!!!
 
Also, exakt kann ich Dirs nicht erklären. Aber unter OS X musst Du Dich "eigentlich" nicht um die Speicherverwaltung kümmern. Der Speicher wird dynamisch geladen und ebenso dynamisch wieder freigegeben. Hier verhält sich OS X - korrigiert mich jemand wenns nicht ganz stimmt - wie ein UNIX.

Hast Du mit nem passenden Arbeitsspeicher-Riegel aufgerüstet, ich meine, passt er von der Taktrate?

Grüße, Manfred
 
Der groesste Unterschied ist, dass das Betriebssystem unter OSX die Speicher-Resourcen verwaltet und nicht mehr die Anwendung dem System diktiert, wieviel Speicher es wo und wann benoetigt.

Unter OS9 hast du einer Anwendung Speicher zugewiesen, der dann gnadenlos belegt worden ist - unabhaengig davon ob die Anwendung auch wirklich soviel Platz benoetigt hat. Wenn Speicherplatz formell belegt ist, kann er fuer nichts anderes verwendet werden. Wenn das trotzdem versucht wird (manche Anwendungen wollen unter OS9 auf einen ganz bestimmten Speicherbereich zugreifen) schmiert in der Regel der Rechner ab.

Virtuelles Memory war unter OS9 ein Bereich auf der Platte, in den Programme schon beim Starten weniger hauefig benoetigte Module ausgelagert haben, die nur bei Bedarf nachgeladen wurden. Das entlastet zwar den physikalischen Speicher aber verlangsamt unter Umstaenden die Verarbeitung erheblich.

Unter OS X werden bei einem Mangel an physikalischem Speicher ganze Hauptspeicher Inhalte in ein sogenanntes swap file geschrieben. Man kann fuer das swap file eine eigenes Volume anlegen, dass nicht kleiner als 500MB (besser 1Gig) sein sollte. Das hilft, ein starkes fragmentieren des swap files auf der System Disk zu verhindern und damit das Zurueckladen in den Speicher zu beschleunigen. Aber auch unter OSX gilt natuerlich, je mehr Speicher desto weniger swapping und desto schneller die Verarbeitung.

Die Verwaltung des Speichers durch das System ermoeglicht erst so nuetzliche Dinge wie preemptives Multitasking und symmetrisches Multiprozessing. Jedes Eingreifen durch den Benutzer wuerde sich da wohl eher stoerend auswirken :D

PS: 512 MB fuer ein PBook finde ich ausreichend und sollte nicht der Grund fuer ein scheinbar lahmes System sein
 
Hi!

Ich würde mal im Apfel-Menü unter "Über diesem Mac" schauen, ob der Speicherriegel erkannt wurde. Wenn damit alles OK ist, kannst Du im Prinzip gar nichts ändern.

Ob evtl. irgendein Hintergrundprogramm übermäßig viel Rechenzeit "frißt" kannst Du überprüfen, indem Du das Terminal startest (in Applications:Utilities) und dort "top" eingibst und Return drückst (das Terminalfenster möglichst groß aufziehen). Dann siehst Du alle Prozesse und deren Rechenzeitverbrauch. Steht da irgendwas dauernd über ca. 10%, obwohl du nix an Programmen anfaßt, dann zieht dieser Prozeß unnötige Rechenzeit.
Wenn Dir hier was auffält, poste den Namen des Prozesses hier ins Forum.

Btw, welches Powerbook hast Du denn?

No.
 
Danke!

Danke ersteinmal für eure Hilfe!
Habe jetzt endlich etwas mehr Ahnung über Speicherverwaltung unter Mac OS X etc....

Wie lege ich denn ein Volumen an für die swap files?

Aus dem Terminal bin ich leider auch nicht viel schlauer geworden - - -

Wie sieht es eigentlich mit den Classic - Programmen aus. Wenn ich die Classic-umgebung starte und mit Classic - Programmen arbeite. Sollte ich denen dann eher wenig oder viel Speicher zuweisen???
Arbeite aus Kostengründen nämlich noch mit Photoshop 6.0......:( - wie sollte ich es also mit der Speicherzuteilung und den Classics handhaben???

Verlangsamt das System auch, wenn Classic im Hintergrund läuft (ich meine erheblich?)

DANKE für Eure Hilfe!!!!
 
Mac OS hatte eine sehr einfache Speicherverwaltung:
Das System wird in den Speicherbereich von Adresse 0 aufwärts geladen, alle Programme bekommen beim Starten einen festen Speicherbereich von der obersten verfügbaren Adresse abwärts zugewiesen. Das ganze geht solange, bis zwischen System und Programmen keine Adressen mehr frei sind, in die Programme geladen werden können. Wie groß dieser Speicherbereich ist, kann im Infofenster eines Programmes eingestellt werden. In Mac OS greift ein Programm immer direkt auf eine physikalische Adresse im Arbeitsspeicher zu.

Mac OS X hat eine komplett andere Speicherverwaltung. Die Speicherverwaltung des MACH-Kernels ist kompliziert und hocheffektiv, besonders im Vergleich zu der primitven Variante von Mac OS. Sie kann nicht vom Benutzer beeinflusst werden:
Jeder Prozess bekommt einen eigenen Speicherbereich von bis zu 4GB zugewiesen, immer beginnend mit der Adresse 0. (In der Regel verlangen Programme aber erst mal nur einen Bruchteil davon.)
Der MACH-Kernel teilt den Speicher für die Prozesse (Programme und Shared Librarys etc.) in Pages auf, Bereiche von 4KB. Die Pages, die tatsächlich bebraucht werden, werden in den Arbeitsspeicher geladen. Die physikalischen Adressen der jeweiligen Pages im Arbeitsspeicher, kennt nur der MACH-Kernel.
Wenn irgendwann mehr Pages in den Speicher sollen, als Arbeitsspeicher zur Verfügung steht, lagert der MACH-Kernel die Pages, die am wenigsten gebraucht werden (bzw. wurden) in eine Datei auf der Festplatte aus. Diese Datei mit dem Namen swapfile0 (in /var/vm, wenn Du sie im Finder sehen willst, Menü Gehe zu, Gehe zu Ordner) ist genau 80000000 Bytes groß. Wenn die Datei voll ist, wird eine weitere angelegt (swapfile1) usw.. Wenn eine Page gebraucht wird, die im Swapfile liegt, wird sie wieder in den Arbeistspeicher geladen, dafür werden dann andere, die nicht gebraucht werden, ausgelagert. Die Prozessse selber haben dabei überhaupt keine Ahnung davon, wo sich ihre Objekte gerade im Arbeitsspeicher tatsächlich befinden, sie kennen nur die virtuellen Adressen innerhalb ihres 4GB-Bereichs. In Wirklichkeit können die Objekte aber wild im Arbeitsspeicher und in den swapfiles verteilt sein.
Wieviele Pageouts und Pageins Dein System seit den Start gemacht hat, kannst Du mit dem Befehl "top" im Terminal ansehen. Wieviel Speicher ein Prozess gerade benutzt, kannst Du in der Spalte VSIZE sehen.
 
Re: Danke!

Original geschrieben von anelts
Wie sieht es eigentlich mit den Classic - Programmen aus. Wenn ich die Classic-umgebung starte und mit Classic - Programmen arbeite. Sollte ich denen dann eher wenig oder viel Speicher zuweisen???
Arbeite aus Kostengründen nämlich noch mit Photoshop 6.0......:( - wie sollte ich es also mit der Speicherzuteilung und den Classics handhaben???
Verlangsamt das System auch, wenn Classic im Hintergrund läuft (ich meine erheblich?)

Die Classic-Umgebung ist für Mac OS X nichts weiter, als ein normaler Prozess. Classic und das Mac OS 9 zusammen mit den Proigrammen, die unter Mac OS 9 laufen, wird wie ein einzelnes Programm behandelt. Es ist jedoch ein Programm, dass sehr viel Arbveitsspeicher braucht. Daher wird es bei laufendem Classic-Umgebung mit vielen Programmen auch relativ viele Pageouts und Pageins geben. Auch hier gilt, nur die Pages, die tatsächlich gebraucht werden, landen im physikalischen Speicher.

Innerhalb von Classic bleibt jedoch alles beim alten.



P.S. Die swapfiles auf ein eigenes Volume auszulagern ist von Apple nicht vorgesehen und wenn überhaupt nur was für Frickler mit UNIX-Erfahrung. Da sollte man als normler Mensch die Finger von lassen.
 
Zwar scho 8 Jahre am Start der Thread tut aber nix zur Sache :)

Mein "jdownloader" Programm belegt immens viel Ram. Der wenn läuft sind meine 4GB belegt bis auf 20-30mb. Morgen kommen 8GB ram, ich geb davon aus das er wieder alles belegt unter Vollast.

Kann man unter SnowLeopard das so einstellen das jdownloader max. 2-3GB bekommt?

Danke für eure Tipps.
 
Naja, wenn möglich, kann man das Programm im 32bit-Modus ausführen, dann kann es maximal 4 GB Speicher belegen. Ein anderer Weg wäre mir nicht bekannt.

Wenn es sich bei dem Programm aber nicht um ein Programm handelt, dass eigentlich so viele Ressourcen belegen sollte (Computeralgebrasoftware, die komplexe Berechnungen durchführt, komplexere Bild-/Filmbearbeitung etc.), was ich bei dem Namen mal tippen würde, dann würde ich eher annehmen, dass das Programm irgendwie fehlerhaft läuft. Oder aber es ist schlecht programmiert. In beiden Fällen würde ich raten es ggf. neu zu installieren (vorher alle Reste in der Library entfernen ggf. einen Deinstaller verwenden, wenn er dabei war) oder auf das Programm komplett zu verzichten.
 
Mein "jdownloader" Programm belegt immens viel Ram. Der wenn läuft sind meine 4GB belegt bis auf 20-30mb. Morgen kommen 8GB ram, ich geb davon aus das er wieder alles belegt unter Vollast.

Kann man unter SnowLeopard das so einstellen das jdownloader max. 2-3GB bekommt?

das ist ein java programm, da kannst du die heap size ändern.
guck einfach mal in die plist der app, da gibt es unter java ein VMoptions und einen wert -Xmx
 
Danke für den Tipp, evtl. kannst du mir sagen WAS ich WIE ändern muss? Das wäre die komplette Datei:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
<plist version="0.9">
<dict>
<key>CFBundleName</key>
<string>JDownloader</string>
<key>CFBundleExecutable</key>
<string>JavaApplicationStub</string>
<key>CFBundleIconFile</key>
<string>app.icns</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleIdentifier</key>
<string>com.install4j.1489-3350-5074-6281.26</string>
<key>CFBundleVersion</key>
<string>0.9</string>
<key>CFBundleGetInfoString</key>
<string> 0.9</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleAllowMixedLocalizations</key>
<true/>
<key>CFBundleDocumentTypes</key>
<array>
<!-- I4J_INSERT_DOCTYPE -->
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>metalink</string>
</array>
<key>CFBundleTypeName</key>
<string>Metalinks</string>
<key>CFBundleTypeIconFile</key>
<string>i4j_extf_9_btfqxz_18t4isd.icns</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>rsdf</string>
</array>
<key>CFBundleTypeName</key>
<string>RSD Link Container</string>
<key>CFBundleTypeIconFile</key>
<string>i4j_extf_9_btfqxz_18t4isd.icns</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>ccf</string>
</array>
<key>CFBundleTypeName</key>
<string>Cryptload Link Container</string>
<key>CFBundleTypeIconFile</key>
<string>i4j_extf_9_btfqxz_18t4isd.icns</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>jdc</string>
</array>
<key>CFBundleTypeName</key>
<string>JDownloader Linkbackup Format</string>
<key>CFBundleTypeIconFile</key>
<string>i4j_extf_9_btfqxz_18t4isd.icns</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>dlc</string>
</array>
<key>CFBundleTypeName</key>
<string>JDownloader Link Container</string>
<key>CFBundleTypeIconFile</key>
<string>i4j_extf_9_btfqxz_18t4isd.icns</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
</array>
<key>Java</key>
<dict>
<key>MainClass</key>
<string>com.install4j.runtime.launcher.MacLauncher</string>
<key>VMOptions</key>
<string>-Xmx512m -Xms64m</string><!-- I4J_INSERT_VMOPTIONS -->
<key>Arguments</key>
<string></string>
<key>Properties</key>
<dict>
<key>exe4j.moduleName</key>
<string>$APP_PACKAGE</string>
<key>install4j.swt</key>
<string>false</string>
<key>install4j.launcherId</key>
<string>26</string>
<!-- I4J_INSERT_PROPERTIES -->
</dict>
<key>JVMVersion</key>
<string>1.6+</string>
<key>ClassPath</key>
<string>$APP_PACKAGE/Contents/Resources/app/.install4j/i4jruntime.jar:$APP_PACKAGE/Contents/Resources/app/JDownloader.jar</string><!-- I4J_INSERT_CLASSPATH -->
<key>WorkingDirectory</key>
<string>$APP_PACKAGE/Contents/Resources/app/./.</string>
</dict>
</dict>
</plist>
 
<key>VMOptions</key>
<string>-Xmx512m -Xms64m</string><!-- I4J_INSERT_VMOPTIONS -->

Da ist der Wert: -Xmx512m -Xms64m
Der Heap scheint auf 512MB begrenzt zu sein. Ehrlich gesagt finde ich das für ein Programm, das eigentlich nicht mehr machen soll als Dateien von Websites runterzuladen, eine Menge Arbeitsspeicher...
Wenn dich das wirklcih stört, stell es einfach mal auf -Xmx256m und schau was passiert. Sollte die JVM abstürzen, braucht jDownloader eben so viel. ;)

Viele Grüße,
Seb
 
Zurück
Oben Unten