PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : XP/VISTA/7 virtueller Arbeitsspeicher: Grösse und Fragmentierung


Detritus
2009-10-13, 06:33:04
Ich habe @work den Vorschlag gemacht, man könne doch bei der Installation neuer PC den virtuellen Arbeisspeicher auf eine eigene Partition (16GiB) legen mit einer festdefinierten Grösse von 1,5xRAM, also je nach Ausstattung 3, 6 oder 12GiB um einer Fragmentierung vorzubeugen.

Das wurde nun abgelehnt, da laut MS die Auslagerungsdatei nicht grösser als 4GiB sein dürfe und eine Fragmentierung bei gleichem Anfangs- und Endwert nicht stattfände.

Das kommt mir ein bisschen komisch vor.

1. empfiehlt MS wirklich nicht mehr als 4GiB swap? Für XP, Vista und W7? Imo war es 1,5xRAM.
2. Imo defragmentiert der swap beim Fixieren auf eine bestimmte Grösse nur dann nicht, wenn die Partition komplett defragmentiert war. Liege ich da richtig?
Leider kann ich das mangels Defragmentierungstool nicht überprüfen.
3. Behandeln XP bis W7 die Auslagerungsdatei auf die gleiche Weise?

Maorga
2009-10-13, 11:39:09
Hallo Deritus,

ja es ist richtig das MS mehr als 4GiB als Auslagerungsdatei nicht wünscht, der Grund hierfür sind noch alte Mitbringsel aus der 32bit Zeit.

Auch würde ich sagen, dass dir eine riesige Auslagerungsdatei 12GiB und mehr nichts bringt und das im wahrsten Sinne.

Der Faktor 1,5x ist schon sehr alt und stammt noch aus Zeiten als alles noch ein wenig langsamer war. Es ist nicht mehr notwendig sich so riesige Auslagerungsdateien zu erstellen. Hier sollte eher schon ein wenig mehr Speicher zugelegt werden.

Die Platte wird nicht mehr Fragmentiert - also keine weitere Fragmentierung sofern die Werte gleich sind. Allerdings kann die Auslagerungsdatei trotzdem fragmentiert sein, da diese ja erst später eingerichtet wird und die Festplatte schon hier und da eine Lücke hat.
Hier bietet es sich wirklich an eine seperate Partition nur für die Auslagerungsdatei zu machen so entgeht man dem Problem der Fragmentierung.

Zu deiner 3ten Frage sage ich mal Jein. Es wird natürlich wie ehh und je vom Speicher unnötiges ausgelagert - wie und unter welchen Bedingungen ist von OS zu OS unterschiedlich.

MFG

Maorga

Grestorn
2009-10-14, 07:40:20
Zu deiner 3ten Frage sage ich mal Jein. Es wird natürlich wie ehh und je vom Speicher unnötiges ausgelagert - wie und unter welchen Bedingungen ist von OS zu OS unterschiedlich.

Woher nimmst Du (oder andere) das wissen, was genau wann ausgelagert wird?

Detritus
2009-10-19, 06:31:17
ja es ist richtig das MS mehr als 4GiB als Auslagerungsdatei nicht wünscht, der Grund hierfür sind noch alte Mitbringsel aus der 32bit Zeit.

Auch würde ich sagen, dass dir eine riesige Auslagerungsdatei 12GiB und mehr nichts bringt und das im wahrsten Sinne.
Danke für die Erläuterungen!
Wie sieht es bei einer 64bit-Version des Betriebssystems aus?

Ich habe gerade 8GiB Auslagerungsdatei mit DualXeon und 4GiB RAM mit 64bit-XP und in Extremfällen von den 8GiB 5 benötigt.


Die Platte wird nicht mehr Fragmentiert - also keine weitere Fragmentierung sofern die Werte gleich sind. Allerdings kann die Auslagerungsdatei trotzdem fragmentiert sein, da diese ja erst später eingerichtet wird und die Festplatte schon hier und da eine Lücke hat.
Hier bietet es sich wirklich an eine seperate Partition nur für die Auslagerungsdatei zu machen so entgeht man dem Problem der Fragmentierung. Genauso, wie ich vermutete.
Man könnte auch vor dem Anlegen der Auslagerungsdatei defragmentieren, um sie nicht zu "zerstückeln". Das hiesse aber, sie vor dem Anlegen auszuschalten.
Eine eigene Partition ist wohl am sinnvollsten.


Zu deiner 3ten Frage sage ich mal Jein. Es wird natürlich wie ehh und je vom Speicher unnötiges ausgelagert - wie und unter welchen Bedingungen ist von OS zu OS unterschiedlich.
Ob da immer Unnötiges ausgelagert wird, bezweifle ich. Nach meiner Beobachtung wächst der Beträg des virtuellen Speichers am grössten bei dem Prozess, der auch die höchste RAM- und CPU-Last erzeugt.


Woher nimmst Du (oder andere) das Wissen, was genau wann ausgelagert wird?Das ist wohl ein ewiges Ratespiel. :rolleyes:

Maorga
2009-10-19, 18:17:43
So,

dann gebe ich mal mein Unwissen zum Besten:

Um Engpässe im physischen Speicher zu vermeiden, gehen ab einem gewissen Füllgrad besondere Prozesse ("Page stealer") dazu über, länger nicht benutzte Seiten auszulagern, um zusätzlichen physischen Platz zu gewinnen, damit das System auf eine entsprechende Anforderung schnell reagieren kann. Dieser Vorgang ist asynchron zu den Anwendungen und belastet das System nicht sonderlich, trotzdem ist die Zugriffsgeschwindigkeit der Festplatte relevant und eine Belastung des Systems relativ anzusehen. Weiter unten sind die wichtigsten Seitenersetzungsstrategien aufgelistet. Üblicherweise wird eine Kombination aus mehreren Verfahren angewandt: Zuerst ungelesene, dann unveränderte, dann länger nicht veränderte Seiten auslagern. Soweit eine noch aktuelle Kopie einer Seite in der Auslagerungsdatei existiert, kann diese Seite ohne Weiteres zum Überschreiben freigegeben werden.

NRU („not recently used“): Teilt Seiten anhand des Use-Bits und Dirty-Bits aus der Seitentabelle in vier Klassen und entfernt zufällig eine aus der untersten, nicht-leeren Klasse.

FIFO („first in, first out“): Jede Seite bekommt Zeitstempel; „älteste raus, hinten rein, vorne raus“
Second-Chance-Algorithmus: Variante von FIFO, die verhindert, dass Seiten ausgelagert werden, die noch häufig benutzt werden.

LFU („least frequently used“): Jede Seite hat ein Feld, das Aufschluss über letzte Nutzung gibt; bei Seitenfehler müssen alle Seiten auf bislang nicht benutzte Zeit durchsucht werden

Working-Set-Algorithmus ersetzt gleich den ganzen Arbeitsbereich (working set) eines Prozesses. Er zählt zu den Prepaging-Strategien, da Seiten geladen werden, noch bevor sie gebraucht werden.

Clock-Algorithmus: Funktionsweise analog zum Second-Chance-Algorithmus. Die Seiten werden in Form einer virtuellen Uhr mit Zeigern abgebildet. Im Verdrängungsfall wird der Uhrzeiger so lange um ein Element weitergeschaltet, bis eine Seite mit einem zurückgesetzten R-Bit gefunden wird. Seiten mit gesetztem R-Bit werden bei der Überquerung des Zeigers zurückgesetzt. Bei großer Anzahl an Hauptspeicherseiten ist dieses Verfahren zu langsam. Daher werden z.B. bei BSD-UNIX zwei Zeiger - mit konstantem Abstand - zur Laufzeitverbesserung verwendet. Der vordere Zeiger setzt das R-Bit im Seitendeskriptor zurück und der hintere prüft das R-Bit und führt bei zurückgesetztem Bit die Verdrängung durch.

Belady-Theorem der optimalen Verdrängung: Hierbei werden die Seiten verdrängt, die in Zukunft am längsten nicht referenziert werden. Nicht umsetzbar, da das Programmverhalten nicht vorhergesagt werden kann.

Es wird also immer ausgelagert. Was aber nicht heißt, dass die entsprechende Pageframes (Teile des Arbeitsspeichers - muss nicht unbedingt ein Programm betreffen) nicht ebenso existent im Speicher bleiben. Erst ab einen Gewissen Füllgrad gibt die Speicherverwaltungseinheit bestimmte Teile des Rams frei die schon auf die Swapfile gepaged wurde.

Mit welchen Alhorithmus ausgelagert wird oder wann weshalb und warum obliegt dem einzelnen Betriebssystem bei Win2k kann man das Kernelauslagern unterdrücken wie das bei Vista oder Win7 weiß ich nicht.

Im Endeffekt hat es für dich keinen Nachteil, sofern du genügend Platz im RAM hast. Wenn du 2 Programme offen hast die jetzt sagen wir mal 6GiB benötigen du aber nur 3 GiB frei zu Verfügung hast so lagert das OS zuerst die Sachen aus die am längsten unverändert geblieben sind und gibt diese Frei. Da man im Normalfall jetzt nicht unbedingt alles benötigt was im Speicher ist.

Falls es aber extrem wird du hast nur 512 MiB dann hilft dir auch keine große Auslagerungsdatei nicht mehr da sie ständig swappen müßte und daher nur noch mit Seitenfehler das OS beschäftigt und nicht der eigentliche Prozess.



Also für alle auch wenn die Auslagerungsdatei benutzt wird "belegt ist" muss das noch lange nicht heißen, dass es aus dem Arbeitsspeicher hinausgeschmissen wurde. Es ist nur eine Vorsichtsmaßnahme um beim Bedarfsfall den Speicher freizugeben.

Biba

Maorga

Grestorn
2009-10-19, 18:42:37
Um Engpässe im physischen Speicher zu vermeiden, gehen ab einem gewissen Füllgrad besondere Prozesse ("Page stealer") dazu über, länger nicht benutzte Seiten auszulagern, um zusätzlichen physischen Platz zu gewinnen

Das ist prinzipiell richtig, was Du aber unterschlägst ist der "gewisse Füllgrad". Es ist zwar nichts genaues bekannt, aber es würde mich extrem überraschen, wenn Windows vor 80% Auslastung des Hauptspeichers anfangen würde, auszulagern. Bei weniger macht es einfach keinen Sinn.

Und daraus folgt: Bei genügend Speicher wird im Normalfall nicht ausgelagert.

Maorga
2009-10-19, 23:24:27
Nein nein Grestorn,

das ist ja das tolle es wird sofort ausgelagert - aber es bleibt noch im Speicher vorhanden. Ich versuch' das mal zu erklären:

Wir haben hier einen großen Speicher den virtuellen, der besteht aus dem RAM und der Swapfile.
Der Speichermanager sorgt dafür das im RAM die benötigten Informationen sind. Sofern das System nicht zuviel zu tun hat legt der Speichermanager eine KOPIE in der Swapfile an. Er lagert also Pages aus nach bestimmten Kriterien. Das heißt aber nicht das es den RAM leert. Nein es bleibt im RAM, dies bedeutet wenn ihr darauf zugreift ist es im RAM.

Die Seite (pageframe) wird erst freigegeben, wenn eine Anwendung Speicherplatz benötigt und es nicht mehr genügend RAM zu Verfügung steht. Das System leert die Seiten des RAMs welche als kopie irgendwann in der SWAPFILE abeglegt wurde. Dadurch schafft der Speichermanager schnell und ohne viel Aufwand wieder Platz für die Anwendunge zum schaffen.

Tritt aber nun der Fall ein das nun wieder ein Programm wovon teile nur noch in der SWAPFILE vorhanden ist meldet der Speichermanager einen Seitenfehler und schafft nun wiederum Platz im RAM, um die DATEN von der Festplatte (LANGSAM) wieder in den Speicher einzulesen, erst wenn dies geschehen ist arbeitet die Anwendung wieder schnell.


Daraus folgt sofern man genügend Speicher hat, KOPIERT der Speichermanager nur die DATEN in die SWAPFILE, aber sie bleiben immer noch im RAM erhalten.

Ich hab hier ein 4GiB System und den Taskmanager offen dort steht unter dem Reiter Leistung CPU Auslastung und die Auslastung des Arbeitspeichers und die Belegung der Auslagerungsdatei.

Physikalischer Speicher (MB)
Insgesamt.4093
Im Cache..3117 (wird immer als erstes Freigegeben)
Frei.............63

Kernel Speicher
Insgesamt..........339
Ausgelagert........279
Nicht ausgelagert.68

System
Handles..........15447
Threads.............624
Prozesse..............53
Laufzeit........6:45:16
Auslagerungsdatei......1417M / 4096M

So nun starte ich den Resourcenmonitor

Hier kann ich sehen welcher Prozess bzw. Programm einen Seitenfehler (Pagefault) verursacht und daher nachgeladen werden muss von der Swapfile. Siehe da es steht überall 0 dran.


Im Endeffekt solange man nicht über das Limit des Arbeitsspeichers geht lädt der Speichermanager nicht nach. Bei mir versucht der Speichermanager auch nur 60MB freizuhalten das sind von 4093MB gerade mal 1,5% des Speichers also gehe ich davon aus das der Speichermanager auch bis zu diesem Limit geht ohne anfangen zu swappen.

Auch wenn die Swapdatei bei mir 1,4GiB groß ist habe ich keine Seitenfehler denn so gut wie alles ist im RAM und nicht woanders. woher der Unterschied von den 900 MB zu den 1,4 GiB kommt kann ich auch nur raten aber ich denke mal der komplette Kernel 339 befindet sich immer als ABBILD in der Swapfile.

Biba

Maorga

Maorga
2009-10-19, 23:43:17
Mir ist ejtzt g'rad' ein gutes Beispiel eingefallen:

Wir haben hier ein PC mit 256 MiB Ram. Auf diesem PC lassen wir ein Video abspielen welches sich mal so 240MiB RAM vom System Schnappt nun schreiben wir noch viele Seiten in ein Worddokument mit einigen Bildern. Irgendwann kommen wir sehr nah an das Speicherlimit. In weiser Voraussicht hat der PC schon einiges in die Swapfile transportiert. Wir sind nun auf Seite 50 angekommen und der Speicher müsste nun rein theoretisch voll sein. Aber Der Speichermanager hat schon einige Pages auf die Festplatte geschrieben. Nun wollen wir erneurt ein 2MiB großes Bild einfügen um diesen Speicherplatz frei zu schaufeln gibt der Speichermanager die ältesten Änderungen an dem Worddokument frei. Wir bemerken keinen Geschwindigkeitseinbruch da der Speicher nicht schlagartig in die Swapfile kopiert werden muss, dies geschah schon schleichend davor.

Nun wenn wir dann noch WinAmp starten und einen Radiostream anhören wollen und dazu noch die neuesten News im Internet mit einem Browser angucken wollen gibt es ein Problem, alles zusammen paßt nicht mehr in die 256MiB rein nun muss eins nach dem anderen in die Pagefile geschrieben und wieder geholt werden - der Prozessor langweilt sich da die Daten viel zu langsam immer wieder von der Festplatte geholt und in den Speicher geschrieben werden muss.
Für uns hackt das System und scheint überlastet zu sein, obwohl der Prozessor in gähnender Langeweile Luftlöcher in den Kühler starrt.

Ich hoffe das war anschaulich :)

Biba

Maorga

Detritus
2009-10-20, 06:19:06
Das ist prinzipiell richtig, was Du aber unterschlägst ist der "gewisse Füllgrad". Es ist zwar nichts genaues bekannt, aber es würde mich extrem überraschen, wenn Windows vor 80% Auslastung des Hauptspeichers anfangen würde, auszulagern. Bei weniger macht es einfach keinen Sinn.

Und daraus folgt: Bei genügend Speicher wird im Normalfall nicht ausgelagert.Ein Blick in den Taskmanager mit hinzugeschalteten Spalten "Speicherauslastung" und "Virtueller Speicher" zeigt sofort, dass Deine Theorie nicht stimmt. Egal bei welchem Prozess, "Virtueller Speicher" wird immer benutzt. Der Betrag an RAM scheint allerdings höher auszufallen.

Mir ist ejtzt g'rad' ein gutes Beispiel eingefallen:

[...Geschichte...]

Ich hoffe das war anschaulich :)
Ja, und das kennen wir alle noch.
Danke auch für die vorhergehenden Erläuterungen.

Was ich allerdings nicht verstehe: warum lagert das OS (in dem Fall XP) schon Kopien aus dem RAM in die Auslagerungsdatei, während das Programm noch gestartet wird? Liegen diese Dateien auf der selben Fesplatte, wird das System imo unnötig ausgebremst. Das OS könnte in dem Falle doch mit dem Auslagern warten, bis das Programm geladen ist oder die Menge des freien RAMs kritisch wird. Besonders bei 4GiB oder mehr.

Andi_669
2009-10-20, 07:54:09
Was ich allerdings nicht verstehe: warum lagert das OS (in dem Fall XP) schon Kopien aus dem RAM in die Auslagerungsdatei, während das Programm noch gestartet wird? Liegen diese Dateien auf der selben Fesplatte, wird das System imo unnötig ausgebremst. Das OS könnte in dem Falle doch mit dem Auslagern warten, bis das Programm geladen ist oder die Menge des freien RAMs kritisch wird. Besonders bei 4GiB oder mehr.
Das hab ich mich auch schon mehrfach gefragt,
ich glaube die Software Entwickler sind einfach von der Hardware Entwicklung überrascht worden,
bei einen XP mit 1GB macht das Verhalten ja noch Sinn, u. die haben einfach nicht damit gerechnet das man zur Laufzeit von XP mal 4GB für ~30 bekommt ;)

aber für XP 32bit gibt es ja auch ne Lösung die ich jetzt seit ca. 4 Wochen betreibe:
Gavotte Ramdisk (http://www.forum-3dcenter.org/vbulletin/showthread.php?t=466476)
eventuell ist das ja auch was für euch, einfach mal testen selbst bei 4GB kann man bequem 750MB für die Auslagerung benutzen u. XP verschiebt wenn die Auslagerung so klein ist auch nicht so schnell in die Auslagerung,
klar kommt jetzt das Argument das bei 4GB gesamt Nutzung dann Schluss ist,
aber als ich mit XP angefangen habe, haben viele nur 1GB Arbeitsspeicher gehabt u. die Auslagerung auf ca. 2GB begrenzt gehabt u. das lief auch immer Problemlos :)

Grestorn
2009-10-20, 08:06:17
Ich glaube, ihr interpretiert die Spalten im Explorer falsch (auch wenn ich im Moment keine Quelle finde). Ich kann mich erinnern, dass auch die Übersetzung im deutschen Windows nicht wirklich gelungen ist, nur kann ich im Moment auf kein englisches XP zurückgreifen, um nachzusehen wie die Spalten dort bezeichnet sind.

Nach meiner Kenntnis gibt die Spalte "Virtueller Speicher" lediglich an, wieviel virtueller Adressraum für eine Applikation bereitgestellt wird, sprich wieviel Speicher von einer App tatsächlich angefordert wurde oder indirekt genutzt wird (z.B. über Einbindung anderer DLLs).

Dieser Speicher muss aber nicht tatsächlich auch gerade benutzt werden. Eine App kann Speicher allokieren ohne jemals auf ihn zugegriffen zu haben. Solch brachliegender Adressbereich wird zunächst im RAM auch nicht bereitgestellt, erst beim ersten Zugriff darauf.

Auch werden viele globale Speicherbereiche im virtuellen Adressraum einer App eingeblendet, die aber de Fakto von mehreren Prozessen im System gleichzeitig genutzt werden, also nur einmal im physichen Speicher vorliegen. Auch diese Speicherbereiche werden aber zum "virtuellen Speicher" jeder Applikation zugerechnet, die die Bereiche nutzt.

Die "Speicherauslastung" gibt meines Wissens an, wieviel Speicher die Applikation tatsächlich gerade nutzt (also physisch und im Pagefile zusammengenommen). Meist ist die Speicherauslastung kleiner (weil die App mehr Adressraum hat als tatsächlichen Speicherbedarf), aber sie kann auch um einige MB höher sein, vermutlich sind das dann Daten die das System zum Prozess anleget, die aber nicht als Teil des Prozess-Adressraums zur Verfügung stehen (das ist jetzt lediglich eine Vermutung).

Leider finde ich im Moment keine schlüssige Beschreibung der Spalten des Taskmanagers im Netz, ich möchte also nicht mit 100%iger Sicherheit sagen, dass ich das korrekt zusammengefasst habe. Ich bin mir aber ziemlich sicher, dass die Spalten keineswegs angeben, wieviel Speicher eine Applikation zu einem gegebenen Zeitpunkt im Pagefile ausgelagert hat.

Andi_669
2009-10-20, 10:05:18
Ich glaube, ihr interpretiert die Spalten im Explorer falsch (auch wenn ich im Moment keine Quelle finde). Ich kann mich erinnern, dass auch die Übersetzung im deutschen Windows nicht wirklich gelungen ist, nur kann ich im Moment auf kein englisches XP zurückgreifen, um nachzusehen wie die Spalten dort bezeichnet sind.

Nach meiner Kenntnis gibt die Spalte "Virtueller Speicher" lediglich an, wieviel virtueller Adressraum für eine Applikation bereitgestellt wird, sprich wieviel Speicher von einer App tatsächlich angefordert wurde oder indirekt genutzt wird (z.B. über Einbindung anderer DLLs).

Dieser Speicher muss aber nicht tatsächlich auch gerade benutzt werden. Eine App kann Speicher allokieren ohne jemals auf ihn zugegriffen zu haben. Solch brachliegender Adressbereich wird zunächst im RAM auch nicht bereitgestellt, erst beim ersten Zugriff darauf.

Auch werden viele globale Speicherbereiche im virtuellen Adressraum einer App eingeblendet, die aber de Fakto von mehreren Prozessen im System gleichzeitig genutzt werden, also nur einmal im physichen Speicher vorliegen. Auch diese Speicherbereiche werden aber zum "virtuellen Speicher" jeder Applikation zugerechnet, die die Bereiche nutzt.

Die "Speicherauslastung" gibt meines Wissens an, wieviel Speicher die Applikation tatsächlich gerade nutzt (also physisch und im Pagefile zusammengenommen). Meist ist die Speicherauslastung kleiner (weil die App mehr Adressraum hat als tatsächlichen Speicherbedarf), aber sie kann auch um einige MB höher sein, vermutlich sind das dann Daten die das System zum Prozess anleget, die aber nicht als Teil des Prozess-Adressraums zur Verfügung stehen (das ist jetzt lediglich eine Vermutung).

Leider finde ich im Moment keine schlüssige Beschreibung der Spalten des Taskmanagers im Netz, ich möchte also nicht mit 100%iger Sicherheit sagen, dass ich das korrekt zusammengefasst habe. Ich bin mir aber ziemlich sicher, dass die Spalten keineswegs angeben, wieviel Speicher eine Applikation zu einem gegebenen Zeitpunkt im Pagefile ausgelagert hat.
Stimmt die Übersetzung ist falsch, was sich da Virtueller Speicher nennt ist einfach der Physikalische Speicher + die Auslagerungsdatei :)
was aber nichts daran ändert das Win (XP) sehr früh anfängt auch die Auslagerungsdatei zu nutzen,
mit TuneUp (2004) kann man das schön sehen, da wird der Physikalische Speicher getrennt angezeigt.

Maorga
2009-10-20, 11:24:21
So ich sitz hier an einem Labtop mit WinXP drauf. Im Taskmanger sind folgende Informationen angegeben.

CPU Auslastung und deren Verlauf
Auslagerungsdatei und deren Verlauf

Das System hier hat 1,5GiB und die Auslagerungsdatei ist 391 MB groß laut der Anzeige.

Im Grunde ist es so, dass das System schleichend auslagert und dies schon beginn an. Nur wird das nicht bis zum Anschlag vom System betrieben eher wenn mal weniger zu tun ist und der Prozessor und die Festplatte sind eher selten voll ausgelastet so schreibt er pö a pö Daten in die Auslagerungsdatei, was aber nicht heißt, dass diese im Speicher gelöscht werden. Nein die Daten bleiben im RAM auch wenn eine Kopie davon in der Auslagerungsdatei vorliegt.

Sobald das System Speicher benötigt wird im RAM bereiche freigegeben die schon gepaged, also in der Auslagerungsdatei sind. Dadurch entsteht kein Flaschenkopf durch die Festplatte den müsste der PC erst mal das halbe Gigabyte auf die Festplatte schaffen bei sagen wir mal 50 MB/s müsste der User auf Grund der Auslagerung runde 10 Sekunden warten noch dazu ist es ja ein gegenläufiger Prozess da meist von der Festplatte auch noch die entsprechenden Daten für das Programm ja geladen werden muss. Es würde ein ultimativen Slowdown geben.

Daher ist der Speichermanager so programmiert eben rechtzeitig sich kopien im Swapfile auf der Festplatte anzulegen. Und den RAM nur im BEDARFSFALL freizugeben. Wer genügend Speicher hat kann switchen zwischen den Programmen ohne ein nachladen in der Auslagerungsdatei zu haben. Denn es bleibt alles im RAM sofern nicht durch eine weitere Applikation der maximale Bedarf größer als der RAMSpeicher selbst ist. Dann muss der Speicherraum im RAM freigegeben werden und dadurch gibt es nur noch die Daten in der Swapfile.

Der Auslagerungsprozess ist nicht Programm oder Anwendungsbezogen. Es werden Seiten aus dem Speicher kopiert egal ob es von einer Anwendung X oder Y benutzt wird. Hier macht der Speichermanager keinen Unterschied für ihn zählen nur seine Algorithmen. Daher kann man bereits über dem Limit des RAM seins aber trotzdem hin- und herswitchen zwischen den Anwendungen da nicht immer alle Daten benötigt werden. So hat man ein schnelles und komfortables System.

Halten wir also fest der Speichermanager versucht immer eine Kopie des RAMs zu machen. Was aber nicht eine RAM Leerung zur Folge hat. Das System versucht immer den RAM voll auszunutzen und erst im Bedarfsfall wird RAM freigegeben der als Kopie in der Swapfile hinterlegt ist.

MFG

Maorga

Gast
2009-10-20, 11:58:12
[...]
Nach meiner Kenntnis gibt die Spalte "Virtueller Speicher" lediglich an, wieviel virtueller Adressraum für eine Applikation bereitgestellt wird, sprich wieviel Speicher von einer App tatsächlich angefordert wurde oder indirekt genutzt wird (z.B. über Einbindung anderer DLLs).

Dieser Speicher muss aber nicht tatsächlich auch gerade benutzt werden. Eine App kann Speicher allokieren ohne jemals auf ihn zugegriffen zu haben. Solch brachliegender Adressbereich wird zunächst im RAM auch nicht bereitgestellt, erst beim ersten Zugriff darauf.

Das kann ich mir schwer vorstellen. Wenn eine Applikation Speicher anfordert dann muss der Speicher meiner Meinung nach auch im RAM bereitgestellt werden. Das BS kann ja nicht wissen ob gleich oder später darauf zugegriffen wird und sagen "naja, kümmert mich erstmal nicht". Wenn du ein int *data = new int[1 << 16]; machst dann belegt deine App diesen Speicher im RAM. Sofort. Egal ob du was damit machst oder nicht.

Auch werden viele globale Speicherbereiche im virtuellen Adressraum einer App eingeblendet, die aber de Fakto von mehreren Prozessen im System gleichzeitig genutzt werden, also nur einmal im physichen Speicher vorliegen. Auch diese Speicherbereiche werden aber zum "virtuellen Speicher" jeder Applikation zugerechnet, die die Bereiche nutzt.

[...]

san.salvador
2009-10-20, 12:16:54
Für Apps sollte es nur "Speicher" geben. Ob Ram oder pagefile oder sonstwas entscheidet doch wohl das OS.

Grestorn
2009-10-20, 12:30:23
So ich sitz hier an einem Labtop mit WinXP drauf. Im Taskmanger sind folgende Informationen angegeben.

CPU Auslastung und deren Verlauf
Auslagerungsdatei und deren Verlauf

Das System hier hat 1,5GiB und die Auslagerungsdatei ist 391 MB groß laut der Anzeige.

Das ist nicht die Größe oder die Nutzung der Auslagerungsdatei sondern der gerade genutze Speicher (egal ob physisch oder ausgelagert). Diese Anzeige hat schon unzählige Menschen irritiert.

Grestorn
2009-10-20, 12:31:27
Das kann ich mir schwer vorstellen. Wenn eine Applikation Speicher anfordert dann muss der Speicher meiner Meinung nach auch im RAM bereitgestellt werden. Das BS kann ja nicht wissen ob gleich oder später darauf zugegriffen wird und sagen "naja, kümmert mich erstmal nicht". Wenn du ein int *data = new int[1 << 16]; machst dann belegt deine App diesen Speicher im RAM. Sofort. Egal ob du was damit machst oder nicht.

Doch, das BS kann das wissen. Wenn auf physisch nicht bereitgestellten Speicher zugegriffen wird, gibt's nen PageFault und erst dann wird vom OS der Speicher (genauer: die Page) physisch eingeblendet.

fezie
2009-10-20, 12:44:29
Das kann ich mir schwer vorstellen. Wenn eine Applikation Speicher anfordert dann muss der Speicher meiner Meinung nach auch im RAM bereitgestellt werden. Das BS kann ja nicht wissen ob gleich oder später darauf zugegriffen wird und sagen "naja, kümmert mich erstmal nicht". Wenn du ein int *data = new int[1 << 16]; machst dann belegt deine App diesen Speicher im RAM. Sofort. Egal ob du was damit machst oder nicht.

Bei Linux kann man mittels overcommit_memory und overcommit_ratio einstellen ob überhaupt und wenn ja in welchem Verhältnis zum RAM der Kernel prüfen soll ob der virtuelle Adressraum eines Programms auch in den Swapspace + RAM passt:
http://manpages.debian.net/cgi-bin/man.cgi?query=proc&apropos=0&sektion=5&manpath=Debian+5.0+lenny&format=html&locale=en

Andi_669
2009-10-20, 12:59:12
So ich sitz hier an einem Labtop mit WinXP drauf. Im Taskmanger sind folgende Informationen angegeben.

CPU Auslastung und deren Verlauf
Auslagerungsdatei und deren Verlauf

Das System hier hat 1,5GiB und die Auslagerungsdatei ist 391 MB groß laut der Anzeige.

Im Grunde ist es so, dass das System schleichend auslagert und dies schon beginn an. Nur wird das nicht bis zum Anschlag vom System betrieben eher wenn mal weniger zu tun ist und der Prozessor und die Festplatte sind eher selten voll ausgelastet so schreibt er pö a pö Daten in die Auslagerungsdatei, was aber nicht heißt, dass diese im Speicher gelöscht werden. Nein die Daten bleiben im RAM auch wenn eine Kopie davon in der Auslagerungsdatei vorliegt.

Sobald das System Speicher benötigt wird im RAM bereiche freigegeben die schon gepaged, also in der Auslagerungsdatei sind. Dadurch entsteht kein Flaschenkopf durch die Festplatte den müsste der PC erst mal das halbe Gigabyte auf die Festplatte schaffen bei sagen wir mal 50 MB/s müsste der User auf Grund der Auslagerung runde 10 Sekunden warten noch dazu ist es ja ein gegenläufiger Prozess da meist von der Festplatte auch noch die entsprechenden Daten für das Programm ja geladen werden muss. Es würde ein ultimativen Slowdown geben.

Daher ist der Speichermanager so programmiert eben rechtzeitig sich kopien im Swapfile auf der Festplatte anzulegen. Und den RAM nur im BEDARFSFALL freizugeben. Wer genügend Speicher hat kann switchen zwischen den Programmen ohne ein nachladen in der Auslagerungsdatei zu haben. Denn es bleibt alles im RAM sofern nicht durch eine weitere Applikation der maximale Bedarf größer als der RAMSpeicher selbst ist. Dann muss der Speicherraum im RAM freigegeben werden und dadurch gibt es nur noch die Daten in der Swapfile.

Der Auslagerungsprozess ist nicht Programm oder Anwendungsbezogen. Es werden Seiten aus dem Speicher kopiert egal ob es von einer Anwendung X oder Y benutzt wird. Hier macht der Speichermanager keinen Unterschied für ihn zählen nur seine Algorithmen. Daher kann man bereits über dem Limit des RAM seins aber trotzdem hin- und herswitchen zwischen den Anwendungen da nicht immer alle Daten benötigt werden. So hat man ein schnelles und komfortables System.

Halten wir also fest der Speichermanager versucht immer eine Kopie des RAMs zu machen. Was aber nicht eine RAM Leerung zur Folge hat. Das System versucht immer den RAM voll auszunutzen und erst im Bedarfsfall wird RAM freigegeben der als Kopie in der Swapfile hinterlegt ist.

MFG

Maorga
Wenn das mal so wäre,
zu mindestens unter XP hab ich eine andere Beobachtung gemacht, als ich mit der Ramdisk angefangen habe, da hab ich mal Photoshop überwacht,
da hat es dann ein seltsames Verhalten gegeben,

Für Photoshop freigegeben 1,6 GB vom Speicher, u 4GB von der Ramdisk,
Physikalisch verfügbare Speicher 3,25GB Auslagerung aut einer Getrennten Partition auf einer 2. Platte ebenfalls 3,25GB,

Dann angefangen Photoshop zu füllen, bei ca. 800MB Ram Nutzung der Photoshop.exe fängt der mit einmal an wie wild auf der Festplatte rumzurödeln u. ich warte ca. 10-15sec bis Photoshop fertig ist, ;(
die Photoshop eigene Auslagerungsdatei in der Ramdisk war zu dem Zeitpunkt ca. 2GB belegt :redface:
Arbeitsspeicher war noch ca. 2GB frei also warum hat XP da ausgelagert u. mich genervt :confused:

Mag sein das das bei Vista Win7 64bit jetzt besser ist aber unter XP ist der Speichermanager stellenweise sehr dämlich.

Grestorn
2009-10-20, 13:23:04
Wann PS seine eigene Auslagerungsdatei nutzt liegt aber nicht in der Verantwortung des Betriebssystems.

beos
2009-10-20, 13:27:04
Wir dürften nicht vergessen, dass der Taskmanager (auch der von Vista) nur das WorkingSet eines Prozesses anzeigt.

Wenn z.B. wie jetzt bei mir Firefox.exe 233 MB laut Windows Taskmanager benutzt - zeigt mir der Sysinternal Prozess Explorer einen virtuellen Speicherverbrauch von fast 800 MB an.

Firefox "besetzt" also im adressierbaren Speicher des Betriebssystems fast das 4fache wie der Windowstaskmanager anzeigt.

Grestorn
2009-10-20, 13:30:52
Wir dürften nicht vergessen, dass der Taskmanager (auch der von Vista) nur das WorkingSet eines Prozesses anzeigt.

Wenn z.B. wie jetzt bei mir Firefox.exe 233 MB laut Windows Taskmanager benutzt - zeigt mir der Sysinternal Prozess Explorer einen virtuellen Speicherverbrauch von fast 800 MB an.

Firefox "besetzt" also im adressierbaren Speicher des Betriebssystems fast das 4fache wie der Windowstaskmanager anzeigt.

Das kann der Taskmanager auch, wenn man ihm sagt, dass er die Spalte "Virtueller Speicher" anzeigen soll. Genau das habe ich ja oben erklärt.

beos
2009-10-20, 13:33:31
Das kann der Taskmanager auch, wenn man ihm sagt, dass er die Spalte "Virtueller Speicher" anzeigen soll. Genau das habe ich ja oben erklärt.

Oh - sorry. Hab ich überlesen, dass Du das schon sagtest :)

Andi_669
2009-10-20, 15:43:23
Wann PS seine eigene Auslagerungsdatei nutzt liegt aber nicht in der Verantwortung des Betriebssystems.
Aber es liegt in der Verantwortung des Betriebssystems wieviel die EXE direckt nutzt, u. wenn das Betriebssystem da der Meinung ist bei noch 2GB freien Speicher wie verrückt auslagern zu müssen kann da PS auch nichts dran machen :confused:
ist ja nicht PS was da Blödsinn macht, sondern XP PS bevorzugt so weit wie geht erst mal den Physikalischen Speicher was ja auch richtig ist.;)

Grestorn
2009-10-20, 15:46:50
Die App kann unter XP (32bit) nicht mehr als 2GB nutzen. Deswegen lagert sie aus. Das ist schlicht eine Limitierung von 32bit, mehr nicht.

Mit dem Auslagerverhalten von Windows hat das nichts zu tun.

Andi_669
2009-10-20, 16:00:25
Die App kann unter XP (32bit) nicht mehr als 2GB nutzen. Deswegen lagert sie aus. Das ist schlicht eine Limitierung von 32bit, mehr nicht.

Mit dem Auslagerverhalten von Windows hat das nichts zu tun.
hast du eigentlich gelesen was ich oben geschrieben hab,
es geht nicht um das Auslagern von PS, das ist völlig in Ordnung,

es geht darum das XP anfängt wie Wild die Auslagerungsdatei zu nutzen wenn die Photoshop.exe ca. 800MB Speicher verbraucht, obwohl 1,6GB zugweisen sind u. 2GB frei sind,
XP fängt also schon an auszulagern obwohl PS noch 800MB zur Verfügung hat :confused:

Nach der Aktion läuft PS wider flüssig u. verbraucht dann nach u. nach auch fast die eingestellten 1,6GB ;)

Zugegeben ohne Ramdisk merkt man das nicht da von PS schon viel früher auf die Festplatte zugegriffen wird,

Hab ich das oben wider zu kompliziert formuliert, da hab ich leider einen Hang zu

Grestorn
2009-10-20, 16:06:56
hast du eigentlich gelesen was ich oben geschrieben hab,
es geht nicht um das Auslagern von PS, das ist völlig in Ordnung,

es geht darum das XP anfängt wie Wild die Auslagerungsdatei zu nutzen wenn die Photoshop.exe ca. 800MB Speicher verbraucht, obwohl 1,6GB zugweisen sind u. 2GB frei sind,
XP fängt also schon an auszulagern obwohl PS noch 800MB zur Verfügung hat :confused:

Nach der Aktion läuft PS wider flüssig u. verbraucht dann nach u. nach auch fast die eingestellten 1,6GB ;)

Zugegeben ohne Ramdisk merkt man das nicht da von PS schon viel früher auf die Festplatte zugegriffen wird,

Hab ich das oben wider zu kompliziert formuliert, da hab ich leider einen Hang zu

Ich hab mir nochmal durchgelesen, was Du da geschrieben hast. Ist ein wenig konfus.

Also, Du hast eine RAM-Disk. Auf welchem OS? 32bit? Knappst die RAM-Disk denn nicht was vom Adressbereich von XP ab? Vermutlich schon, oder? Das würde erklären, denn dann hättest Du deFakto weniger als 1 GB tatsächlich nutzbaren Speicher übrig!

Oder Du erklärst mal genauer, was Du eigentlich gemacht hast...

Andi_669
2009-10-20, 17:44:48
Ich hab mir nochmal durchgelesen, was Du da geschrieben hast. Ist ein wenig konfus.

Also, Du hast eine RAM-Disk. Auf welchem OS? 32bit? Knappst die RAM-Disk denn nicht was vom Adressbereich von XP ab? Vermutlich schon, oder? Das würde erklären, denn dann hättest Du deFakto weniger als 1 GB tatsächlich nutzbaren Speicher übrig!

Oder Du erklärst mal genauer, was Du eigentlich gemacht hast...
Nö ich Knappe da nichts ab,
die Gavotte Ramdisk im PAE-Modus benutzt den von Win nicht benutzbaren Adressbereich, u. da das so schön funktioniert hab ich mir 8GB rein gesteckt, wo jetzt der Ramdisk 4,75GB zur Verfügung stehen, :D
Das Laufwerk was die Ramdisk verkörpert ist das erste Laufwerk was PS zum Auslagern für die Arbeitsvolumens benutzt, (4GB)

ich hatte allerdings schon immer die Auslagerungsdatei von Win auf einer getrennten Partition auf einer 2. Platte, u. das hab ich nach Einrichten der Ramdisk erst mal so gelassen, dabei ist mir dann das seltsame Verhalten vom WinXP Speichermanager aufgefallen,

Sorry das wir aneinander vorbei geschrieben haben, ich hab einfach vorausgesetzt das du in meinen Link (http://www.forum-3dcenter.org/vbulletin/showthread.php?p=7569895#post7569895)von Seite 1 reingeschaut hast,
da haben wir das mit Der Gavotte Ramdisk hier schon mal besprochen ;)

Grestorn
2009-10-20, 17:46:48
Ich kann nicht glauben, dass XP anfängt bei einer App, die nur 800 MB belegt, so zu swappen, dass man minutenlang warten muss, bis sie reagiert.

Irgendwas war da faul bei Dir. Ich habe ständig Apps laufen, die deutlich mehr belegen, z.B. Gothic 3, dass mit dem LAA Flag mal eben über 3 GB belegen kann. Und da swappt nix bei mir.

Andi_669
2009-10-20, 17:56:51
Ich kann nicht glauben, dass XP anfängt bei einer App, die nur 800 MB belegt, so zu swappen, dass man minutenlang warten muss, bis sie reagiert.

Irgendwas war da faul bei Dir. Ich habe ständig Apps laufen, die deutlich mehr belegen, z.B. Gothic 3, dass mit dem LAA Flag mal eben über 3 GB belegen kann. Und da swappt nix bei mir.
Na ja minutenlang ist das ja nicht, aber wenn man schon im Fluss ist mit PS dann merkt man das schon wenn man mit einmal 15Sec warten muss :D
ich wüsse jetzt nicht was das sonnst sein soll,
mit Games hab ich keine Probleme,

Gothic 3 wird ja dann auch gleich deutlich mehr als 800GB verbrauchen, :)

wenn ich mal Lust habe versuche ich das noch mal nachzuvollziehen, im Moment läuft das recht gut so wie es ist. ;D

Grestorn
2009-10-20, 18:00:23
800GB?! Tippfehler?

Auch 15 Sekunden sind zu viel, wie Du richtig sagst, gibt es gar keinen Grund zu swappen, wenn noch physischer Speicher vorhanden ist. Und das deckt sich auch mit meinen Erfahrungen: Wartezeiten durch swappen habe ich praktisch gar nicht.

Andi_669
2009-10-20, 19:06:28
800GB?! Tippfehler?

Auch 15 Sekunden sind zu viel, wie Du richtig sagst, gibt es gar keinen Grund zu swappen, wenn noch physischer Speicher vorhanden ist. Und das deckt sich auch mit meinen Erfahrungen: Wartezeiten durch swappen habe ich praktisch gar nicht.
natürlich Tippfehler :freak:

Na was außer PS vergrößert den den Speicherverbrauch ohne gleichzeitig von der Festplatte zu lesen :)

Games jedenfalls nicht, die laden ja bei Start immer von der Platte, so das man ein eventuelles swappen nicht mitbekommt

Grestorn
2009-10-20, 22:10:10
natürlich Tippfehler :freak:

Na was außer PS vergrößert den den Speicherverbrauch ohne gleichzeitig von der Festplatte zu lesen :)

Games jedenfalls nicht, die laden ja bei Start immer von der Platte, so das man ein eventuelles swappen nicht mitbekommt

Oh, natürlich bekommt man swappen mit. Durch Festplatten-Thrashing beim Laden (rödel rödel, weil die Platte ständig zwischen zu ladenden Daten und Swapfile wechseln muss) und wenn man die Apps mit Alt-Tab wechselt. Ist die App ausgelagert, muss sie erst mühselig in den Speicher geschaufelt werden.

Wer das erleben will, muss sich nur etwas Speicher wegnehmen... :)

Ash-Zayr
2009-10-21, 14:36:42
Darf ich zur Verwirrung aller nun noch mal den Fragepunkt aufbringen, wie sich die ein oder andere These hier mit dem heiß diskutierten Abschalten der Pagefile verhält? Z.B. wie bei mir mit 8Gb unter Win7 64-bit?
Was geschieht, wenn Win nicht mehr "vorsorglich" auslagern kann. Erzwingt man sich damit nicht den ersehnten ruhenden Datenverkehr, und dass der RAM bitteschön so lange physisch mit Daten gefüllt wird, wie er auch physisch zur Verfüfung stellt?
Oder beudetet ein Abschalten der Pagefile, dass man als user im Sinne der Lotterie in ständiger Angst lebt und niemals den Tag erleben möchte, an dem der Speicher phsysisch voll ist, ein Auslagern aber nicht möglich, da keine Pagefile mehr?

Ash

Maorga
2009-10-21, 15:37:08
Hier mal was interessantes zum Lesen:

http://www-ti.informatik.uni-tuebingen.de/~heim/lehre/proseminar_ss99/ausarbeitung/martin_siebenhaller/virtmem.pdf

biba

Maorga

san.salvador
2009-10-21, 15:52:57
Hier mal was interessantes zum Lesen:

http://www-ti.informatik.uni-tuebingen.de/~heim/lehre/proseminar_ss99/ausarbeitung/martin_siebenhaller/virtmem.pdf

biba

Maorga
Passt aber nur tangentiell zum Thema. Das heißt "Pagefile/Swap", auch wenn der Threadtitel anderes vermuten lässt. ;)

Andi_669
2009-10-21, 16:28:23
Darf ich zur Verwirrung aller nun noch mal den Fragepunkt aufbringen, wie sich die ein oder andere These hier mit dem heiß diskutierten Abschalten der Pagefile verhält? Z.B. wie bei mir mit 8Gb unter Win7 64-bit?
Was geschieht, wenn Win nicht mehr "vorsorglich" auslagern kann. Erzwingt man sich damit nicht den ersehnten ruhenden Datenverkehr, und dass der RAM bitteschön so lange physisch mit Daten gefüllt wird, wie er auch physisch zur Verfüfung stellt?
Oder beudetet ein Abschalten der Pagefile, dass man als user im Sinne der Lotterie in ständiger Angst lebt und niemals den Tag erleben möchte, an dem der Speicher phsysisch voll ist, ein Auslagern aber nicht möglich, da keine Pagefile mehr?

Ash
Interessante Frage, aber unter 64Bit nehme ich mal an das wenn der Speicher wirklich komplett voll ist das System einfach stehen bleibt, :redface:
Im schlimmsten Fall kann Win dann noch nicht mal mehr Reagieren oder eine Fehlermeldung raus schmeißen, da dafür auch wiederum Speicher benötigt wird :freak:

Maorga
2009-10-21, 16:38:31
Klar bekommst du eine Fehlermeldung das nicht mehr genügend Speicherplatz frei ist. Und die Applikation startet nicht. Da muss man entweder andere Programme beenden (Speicher freigeben) und erst dann kann man die Applikation starten, sofern genügend Speicehr frei ist.

Biba

Maorga

Detritus
2009-10-26, 20:13:52
Danke für die rege Diskussion. Nach einem netten Email-Tausch mit dem, der meine Verbesserung ablehnte, ruht meine Vorschlag weiterhin. Man würde sich nur an MS-Vorgaben halten und nicht mehr als 4GiB swap definieren, welche nach der Defragmentierung der Erstinstallation per script fest eingestellt würde. :(