Jump to content
Sign in to follow this  
SwatCorp

Meine 32GB Arbeitsspeicher werden nur zur Hälfte genutzt?

Recommended Posts

Ich besitze 32GB Arbeitsspeicher, jedoch komme ich nie über die 16GB, stattdessen nutzt er dann immer den virtuellen Speicher. Wenn ich den virtuellen Speicher komplett deaktiviere, komme ich trotzdem nicht über die 16GB Grenze.. (und ich nutze unter anderem auch ortho texturen)

Und ohne virtuellen Speicher läuft der Simulator noch schlechter

 

edit

 

ups.. hab aus versehen das falsche Forum genutzt, bitte verschieben

arbeitsspeicher.PNG

Share this post


Link to post
Share on other sites
On 29.6.2019 at 11:37, SwatCorp sagte:

Ich besitze 32GB Arbeitsspeicher, jedoch komme ich nie über die 16GB,

Das heißt das er bei deiner X-Plane installation einfach keinen Bedarf gefunden hat mehr als 16 GB für diesen Prozess zu reservieren. Virtueller Speicher wird gerne eingesetzt einfach weil er ab und zu Speicher benöt8igt bei dem jedoch abzusehen ist das er ihn konkret gar nicht aktiv benutzt sondern nur wenn er Speicher wieder freigibt. Den packt man dann gerne vorsorglich auf Platte auch wenn er teilweise aktiv versteckt im RAM gehalten wird.

StandBy bedeutet nicht das der Speicher nicht genutzt wird sondern er wird vom System genutzt um Zugriffe zu optimieren doch diese Vorgänge sind keinem User/Prozeß zugeteilt sondern nur dem System. Eigentlich ist das eine Speicherverteilung die Windows gerne anstrebt. Und die Zeiten wo der Mensch bei der Speicheroptimierung noch helfen kann sind schon lange vorbei.

Share this post


Link to post
Share on other sites

Das Thema ist spannend und immer wierder etwas verwirrend.

Deshalb starte ich den Versuch, für jene, die es interessiert, die Verwirrung zu veringern (ich hoffe, das gelingt mir 🙂 )

 

Zuerst einmal sollte zwischen Auslagerungsdatei, phys Memory und virtuellem Speicher unterschieden werden.

 

Stand der Technik ist, dass Prozessoren und Betriebssysteme virtuellen Speicher unterstützen.

Stell dir vor, du schreibst ein Programm, welches an der Speicheradresse 123456 einen bestimmten Wert vorhält.

Jetzt lässt du das Programm 10 mal gleichzeitig laufen.

Greifen jetzt alle Programme auf denselben Speicher zu?

Nein, das wäre das Chaos pur 🙂

Die Speicheradressen der Programme sind virtuelle Adressen, jedes der 10 laufenden Programme greift auf die virtuelle (scheinbare) Adresse 123456 zu,

welche physikalische Adresse dies ist, ist nicht von Belang, die kann sich sogar während des Programmablaufes ändern.

Welche virtuellen  Adressen zu welchen physikalischen Adressen gehören, das verwaltet das Betriebssystem.

 

Und damit das virtuelle Konzept gut funktioniert, muss man sich den Speicher jetzt wie eine gekachelte Wand vorstellen.

Jede Kachel (Seite, page) enthält z.B. 4096 Bytes und damit diese Anzahl virtueller Adressen.

Wenn Speicher verwendet, eingelagert, ausgelagert wird, sind es immer ganze Kacheln.

 

Dieses Vorgehen erzeugt Flexibilität!

 

Bei einem 64Bit System ist der Adressraum (die verfügbaren Hausnummern) des virtuellen Speichers riesig:      

4 Milliarden x 4 Milliarden Bytes!         (das ergibt NICHT 16 Milliarden)

 

Theoretisch könnte ein 64Bit Programm vom Betriebssystem z.B. 100 GByte Memory anfordern (je nach Rechenart also NUR 100 Milliarden),

kann das Betriebssystem diesen Speicher dem Programm zusichern?

 

Die Antwort: Ja, genau dann, wenn der freie Platz im vorhandenen virtuellen Speicher noch zur Verfügung steht.

 

Wichtig ist hier das Wort zusichern,  das bedeutet nicht, dass der Speicher tatsächlich als physikalischer Speicher (RAM Riegel) frei ist,

er muss in dieser Größe nicht einmal vorhanden sein, der Speicherplatz wird nur reserviert, steht also, auch wenn unbenutzt, nicht für andere Programme zur Verfügung.

 

Zusichern (reservieren) bedeutet aber auch, dass, sollte das Programm den zugesicherten Speicher tatsächlich vollschreiben, die Daten irgendwo aufgehoben werden müssen,

und hier kommt jetzt die Auslagerungsdatei in's Spiel.

 

Zugesicherter Speicher muss frei gehalten werden, auch wenn er nicht benutzt wird.

Ansonsten könnten sich die Programme nicht darauf verlassen, dass sie den für sie reservierten Speicher auch vollschreiben dürfen.

 

Da die Zusicherung Platz im virtuellen Speicher reserviert, macht man diesen einfach dadurch größer, dass man für das eigentlich Speichern auch Plattenplatz verwendet, die Auslagerungsdatei.

 

Der Größe des virtuellen Speichers ist also immer so gross, wie der physikalische Speicher und die Auslagerungsdatei zusammen.

Der Verbrauch an virtuellem Speicher ist die Summe aller Reservierungen, nicht der tatsächlich verwendete Speicher.

 

Wird der reservierte Speicher tatsächlich beschrieben,  dann wird dazu pysikalischer Speicher verwendet, reicht der physikalische Speicher nicht aus,

wird eine Kachel davon (eine, auf die schon länger nicht zugegriffen wurde) in die Auslagerungsdatei geschrieben und die so freigewordene Kachel kann neu beschrieben werden.

 

Greift ein Programm auf eine Adresse zu, deren Daten sich z.B. zur Zeit in der Auslagerungsdatei befinden (harter Fehler), muss diese Page eingelesen und in eine pys Memorypage kopiert werden.

Tritt jetzt der Fall ein, dass zum Einlesen einer Page aus der Auslagerungsdatei keine freie phys Page vorhanden ist, muss erst eine weniger benutze Page in die Auslagrungsdatei geschrieben werden, danach kann diese memPage für das Einlesen verwendet werden.

Dies ist der Zeitpunkt, an welchem das System zwar immer noch läuft (solange kein Bug in die Quere kommt) aber drastisch an Performance verliert.

In dieser Situation wäre der Einbau von mehr Memory sinnvoll.

 

 

 

Deshalb plädiere ich dafür, die Auslagerungsdatei groß genug zu wählen, sonst könnte der Fall eintreten, dass zwar noch genügend phys Memory frei ist, aber kein neues Programm gestartet werden kann oder noch schlimmer, eine Reservierungsanfrage eines laufenden Programmes negativ beschieden wird.

 

Eine zu groß gewählte Auslagerungsdatei schadet nicht weiter, als dass sie Plattenplatz benötigt, sie macht kein Programm langsamer, als es ohne diese Datei laufen würde.

Denn, ist diese Datei zu klein, würde keines dieser Programm neu starten oder weiterlaufen.

Die Frage ist also, lieber zeitweise etwas langsamer oder gar nicht?

 

 

/Othello

 

  • Like 1

Share this post


Link to post
Share on other sites

Noch ein Wort zu StandBy

Ein anderes Wort könnte dafür Cache sein.

 

Memorypages, deren Inhalt zwar nicht mehr gebraucht wird aber noch gültig ist, werden nicht gelöscht, stehen aber bei Bedarf für die Vergabe angefragten Memories zur Verfügung.

StandBy Memory ist also freier Memory, der aber noch gültige Daten enthält.

 

Beispiel: Ich schreibe einen Text und speichere ihn in eine Datei, danach beende ich das Programm.

Solange niemand den Inhalt der eben geschriebenen Datei ändert, ist der Inhalt der Speicherseite immer noch gültig.

 

Will ich jetzt den Text ändern und rufe die Datei erneut auf, müssen die Daten nicht nochmals aus der Datei in eine Memory Page gelesen werden,

sondern es wird einfach die noch beschriebene StandBy Page verwendet, und das ist genau die Funktion eines Cashes.

 

Dies ist eine sinnvolle Nutzung des ansonsten umsonst vorhandenen Speichers  🙂

 

  • Like 1

Share this post


Link to post
Share on other sites

Hab ich das jetzt richtig verstanden, dass es normal ist, dass ich nie über die 16GB Ram Nutzung hinaus gehe, weil die anderen 16 schon bereits genutzt werden, mir nur nicht im Tastk-Manager angezeigt werden ^^

Share this post


Link to post
Share on other sites

Nein, sie werden nicht gebraucht.

Wenn du magst, schicke ich dir ein kleines Testprogramm, welches 24 GB Mem belegt.

Dann kannst du sehen, ob die Werte richtig angezeigt werden.

 

 

Es sind ungefähr 26 GByte deines Speicher belegt, davon 16 GB richtig. die weiteren 11 GB enthalten noch brauchbare Daten (Cache Standby), stehen aber, wenn sonst kein freier Speicher mehr vorhanden ist, zur Verfügung.

 

Im Cache könnten Daten von überflogenen Sceneries sein, wenn du zurückfliegst, könnten diese Daten aus dem Cache genommen werden, statt sie erneut von der Platte zu lesen.

Share this post


Link to post
Share on other sites

Ich hab das Programm MemTest mal laufen lassen. Der haut die kompletten 32GB voll. Scheint alles soweit gut zu sein

Share this post


Link to post
Share on other sites

Danke für die ausführliche Erklärung, fühle mich nun wieder etwas beruhigt :D

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...