Caching Verhalten unter Windows

Smagjus

Rear Admiral
Registriert
Feb. 2011
Beiträge
6.131
Ich bin auf etwas merkwürdiges gestoßen, was damit zu tun hat wie Windows den RAM als Cache benutzt und wollte mal fragen, ob jemand eine logische Erklärung dafür kennt.

Folgendes Problem:
Das Spiel PUBG hat einige Performanceprobleme. Eines jedoch tritt nur auf, wenn der RAM in irgendeiner Weise komplett voll ist. Z.B. so LHW3ZrB[1].png

In diesem Fall treten vermehrt kurze Ruckler im Spiel auf. Das Problem tritt im gleichen Maße auf, wenn die Dateien, die durch's Caching den RAM füllen vom Spiel selbst stammen. Gibt man den Arbeitsspeicher manuell frei, indem man alle Dateien (z.B. mit EmptyStandbyList.exe) aus dem Cache entfernen lässt, sind die Ruckler sofort weg.

Und das ergibt meiner Ansicht nach keinen Sinn. Wenn das Spiel die eigenen Dateien im Cache liegen hat, sollte es eigentlich besser laufen, weil es nicht mehr so oft auf die langsamere SSD zugreifen muss. Genauso sollte es für das Spiel doch kein großes Problem sein Windows anzuweisen Teile des Standby-RAMs freizugeben.

Hat jemand eine Ahnung was hier schief läuft? Wenn's am Spiel selber liegt, würde ich die Erkenntnisse gerne dazu nutzen einen Bugreport zu verfassen.
 
Windows sollte intelligent genug sein den Platz frei zu machen, wenn es das Spiel anfordert.
Es kann natürlich sein das du irgendwelche Programme/Dienste im Hintergrund hast die die ganze Zeit gecached werden.
 
Windows selbst fängt bei vollem Ram an, sich selbst und gerade nicht Aktive Programme, auf den Festplattencache auszulagern, evntl liegt da dein Problem.
Ist das bei dir Aktiviert (ist Standart) und wenn ja, liegt das auf einer HDD oder auf einer SSD ? (Standart auf dem selben laufwerk auf dem Windows installiert ist).
 
Ich habe jedenfalls noch nichts angefasst, auch prefetch und superfetch habe ich bisher auf standard belassen. C: ist eine NVME SSD, das Spiel liegt hingegen auf einer Sata SSD.

Wie heißt das Feature denn, damit ich mal eine Gegenprobe ohne das Ding machen kann?
 
Such mal nach "auslagerungsdatei" , und die halt mal deaktivieren. Benötigt aber glaub ich immernoch einen Neustart des Systems. Beim nachherigen Aktivieren gehts dann ohne Neustart.
Aber PUBG ist eigentlich bekannt dafür, nicht gerade am saubersten Programmiert zu sein, im Zweifel würd ich den Fehler dann doch eher dort Vermuten :/

edit: ja, ich las eben nochmal deinen Ersten Post: das Umschaufeln von der Auslagerungsdatei scheint nicht das Problem zu sein, sondern echt irgendwas in der RAM Verwaltung.
Pubg macht echt die 32GB voll und leert die nicht Selber beim Spielen/Streamen ?
 
Um es etwas zu präzisieren. PUBG macht in der Regel den Cache nicht alleine voll, reagiert jedoch allergisch darauf, wenn er das ist. Dabei ist es egal auf welche Weise dieser gefüllt wird. Auf meiner Maschine passiert das meistens durch Acronis True Image.

Ich habe für meine Tests aber ein Programm geschrieben, das die PUBG-Spieldateien liest und dadruch in den Cache befördert.

Meine 1% und 0.1% Minimum FPS sind 40% niedriger, wenn der RAM durch Standby-Memory komplett gefüllt ist.

Für Spieler mit weniger RAM ist die Problematik auf jeden Fall relevanter, weil es hier passieren kann, dass das Spiel alleine dafür sorgt, dass kein RAM mehr frei ist.
 
Einen Memoryleak hab ich bei einem Spiel das ich Progge auch schon selber hinbekommen, es lag dann an einem Shader, einen echtzeit-Mirrorshader um genau zu sein, der halt alles "gesammelt" hat... :D
Natürlich im Ram, nicht in der GPU ...

Spaßeshalber würde mich dann doch interessieren, was passiert, wenn die Auslagerungsdatei aus ist, weil eigentlich müsste Windows dann den garbage Ram selber aufräumen ... vorrausgesetzt, PUBG hat das entsprechend gekennzeichnet...

> Ich habe für meine Tests aber ein Programm geschrieben, das die PUBG-Spieldateien liest und dadruch in den Cache
> befördert.
>Meine 1% und 0.1% Minimum FPS sind 40% niedriger, wenn der RAM durch Standby-Memory komplett gefüllt ist.

kannst du ungefähr sagen, ab wieviel benutzten RAM PUBG anfängt zu schwächeln? also ab über 8gb oder so ? gibts da eine nachvollziehbare Grenze? Weil *eigentlich* basierts auf der UE4 engine, und "nur" der NetCode soll wirklich furchtbar sein, die generelle miese Performance liegt glaub ich am Fehlerhaftem LOD system, aber ich habs selber nicht und es nur die letzen Jahre interessehalber verfolgt.
 
pvcf schrieb:
Windows selbst fängt bei vollem Ram an, sich selbst und gerade nicht Aktive Programme, auf den Festplattencache auszulagern, evntl liegt da dein Problem.
Ist das bei dir Aktiviert (ist Standart) und wenn ja, liegt das auf einer HDD oder auf einer SSD ? (Standart auf dem selben laufwerk auf dem Windows installiert ist).
Und genau das ist nicht der Fall! Windows lagert immer aus, um erst keinen Speichermangel entstehen zu lassen und ungenutze Speicherseiten aus dem Speicher zu entfernen. Die Auslagerung spielt dabei eine äusserst wichtige Rolle als Cache!

Dein Wissen stammt aus der Ära Windows 3.11 - ME, aber nicht von den Windows Versionen ab XP ff. Ab XP paged Windows, nutzt den Speicher äusserst flexibel und ist sogar in der Lage komplette Programme direkt aus den Cache wieder zu starten.
 
areiland schrieb:
Und genau das ist nicht der Fall! Windows lagert immer aus, um erst keinen Speichermangel entstehen zu lassen und ungenutze Speicherseiten aus dem Speicher zu entfernen. Die Auslagerung spielt dabei eine äusserst wichtige Rolle als Cache!

Yo, nur scheint das bei ihm nicht zu klappen. Aber ich hab das übrigens einen Post weiter selber als Fehlerursache ausgeschlossen, die erste Idee war halt, dass die Auslagerungsdatei auf ner vollen HDD ist, aber ist halt nicht so.

Was empfiehlst du denn zum ersten Fehlereingrenzen ?
 
Zuletzt bearbeitet:
@pcvf
Die Auslagerung systemverwaltet auf dem schnellsten Datenträger des Systems anlegen zu lassen, was sonst?
 
areiland schrieb:
@pcvf
Die Auslagerung systemverwaltet auf dem schnellsten Datenträger des Systems anlegen zu lassen, was sonst?

Das Ding liegt bei ihm schon auf einer NVME, das scheints also schonmal nicht zu sein.
Aber danke für deinen Input!
 
Ich hatte nicht allzuviel Zeit zum Testen, deswegen hat die Antwort hier so unglaublich lange gedauert. Das kuriose Vorweg: Bei mir legt Windows von Haus die Auslagerungsdatei auf E: ab, was die einzige mechanische Platte in meinem System ist. Bei C: und D: wird hingegen keine Auslagerungsdatei genutzt.

Das ist allerdings nicht das Problem gewesen, da selbst mit der Datei auf C: die gleichen Probleme auftreten.

Jedenfalls bin ich bei meiner Recherche darauf gestoßen, dass das Problem, das ich entdeckt habe, weder neu noch auf PUBG beschränkt ist. Das Problem ist sogar so bekannt, dass sich jemand die Mühe gemacht hat ein Tool zu schreiben, welches automatisiert den Standby-RAM leert:

https://www.wagnardsoft.com/content/intelligent-standby-list-cleaner-v1000-released

Und das kommt dabei raus, wenn man das Forum nach dem Tool durchsucht:

https://www.computerbase.de/forum/search/166197/?q=ISLC&o=relevance

Angeblich soll es sich um eine Performanceregression von Windows 10 handeln. Sollte ich mehr herausfinden, werde ich den Thread updaten.
 
  • Gefällt mir
Reaktionen: pvcf
Zurück
Oben