Forum: PC Hard- und Software Wie Windows Page Cache füllen?


von Erwin M. (nobodyy)


Lesenswert?

Unter Linux kann man ja Dateien in den Page Cache, und damit in das RAM, 
bekommen indem man sie einmal einliest, z. B. mit einem cat nach 
/dev/null :

http://www.commandlinefu.com/commands/view/9682/load-file-into-ram-cache-for-faster-accessing-for-repeated-usage

Funktioniert das ebenso unter Microsoft Windows, also mittels Cygwin?

von Hans (Gast)


Lesenswert?

Probiers doch einfach aus. Mit RamMap aus der Sysinternals Suite kannst 
Du sehen, ob die Datei danach im Speicher liegt.

von Erwin M. (nobodyy)


Lesenswert?

Ok, ich probiere das mal aus.

von Jope (Gast)


Lesenswert?

Ja, läuft bei Windows genauso. Einlesen führt zum Cachen.
Und mit RAMMap kannst Du Dir die anschauen welche Dateien zur Zeit im 
Cache sind (unter 'Physical Pages').

https://docs.microsoft.com/en-us/sysinternals/downloads/rammap

von Jim M. (turboj)


Lesenswert?

Kann funktionieren, muss aber nicht: Nur "vorwärts" gelesene Daten 
werden auch schnell wieder aus dem Page Cache rausgeschmissen.

Ich würde statt dreckigen Ticks eher schnelle SSD einsetzen.

von meckerziege (Gast)


Lesenswert?

Ka ob windows das kann, aber unter Linux kannst du ramdisks anlegen. 
Damit liegt die Datei dann garantiert im RAM und du hast ordentlichen 
Zugriff drauf. Beim Cache Trick ist das nicht gegeben, die Daten könnten 
bereits eine Sekunde später wieder raus fliegen.

von AntiMaker (Gast)


Lesenswert?

meckerziege schrieb:
> Damit liegt die Datei dann garantiert im RAM

Genau das will man aber oft nicht.
Sobald das System "was besseres" mit dem RAM vorhat, soll es die Dateien 
gerne wieder aus dem Cache schmeißen.

Typischer Anwendungsfall für solche erzwungenen Read-Aheads:

Systemstart, RAM ist frei, CPU&Platten wären Idle während auf den 
User-Login gewartet wird. Diese Warte-Zeit kann man sinnvoll nutzen, 
indem man schonmal Sachen in den Cache prügelt, die der User nach seinem 
Login sowieso höchstwahrscheinlich benutzt.

Wenn man da mal daneben liegt, und der Benutzer z.B. unerwartet statt 
mit einer Runde Websurfen zu starten direkt den Compiler anwirft, 
entsteht kein Nachteil. Dann fliegt der Firefox halt aus dem Cache, 
sobald der Compiler RAM sehen will.

Mit solchen Tricks konnte man Früher™ die Schwuppdiztät von alten 
Krücken doch erheblich steigern.
Heute baut man lieber SSDs ein.

von Bernd K. (prof7bit)


Lesenswert?

AntiMaker schrieb:
> Systemstart, RAM ist frei, CPU&Platten wären Idle während auf den
> User-Login gewartet wird. Diese Warte-Zeit kann man sinnvoll nutzen,
> indem man schonmal Sachen in den Cache prügelt, die der User nach seinem
> Login sowieso höchstwahrscheinlich benutzt.

Beispiele:

e4rat (boot)
ureadahead (boot)
preload (user)

: Bearbeitet durch User
von Erwin M. (nobodyy)


Lesenswert?

Ich habe es mal ausprobiert, aber das Einlesen von 10 GB mit cat dauerte 
über eine halbe Stunde (auf dem Firmen-Notebook), so das es praktisch zu 
langsam ist. Daher ziehe ich von HDD auf SSD um.

von Hans (Gast)


Lesenswert?

Vermutlich ist das Einlesen und vor allem Ausgeben mit den Cygwin-Tools 
ziemlich ineffizient. Ein C-Programm, das nur die Win32-API-Funktionen 
CreateFile und ReadFile aufruft, ohne etwas mit den Daten zu machen, 
dürfte wesentlich schneller sein. Bei 85 MB/s wären die 10 GB in zwei 
Minuten eingelesen.

Die SSD ist aber unabhängig davon eine gute Entscheidung. Gerade in 
einem Notebook, das offenbar > 8 GB RAM hat, sollte das eigentlich 
Standard sein.

von Erwin M. (nobodyy)


Lesenswert?

Naja, auf dem Firmen-Notebook läuft ja mindestens ein Virenscanner im 
Hintergrund, so das auch der bremst.
Bei einer kleinen Firma hatte ich ständig Admin-Rechte und keine 
Partition war verschlüsselt, so das ich den Virenscanner problemlos 
abschalten/verschieben konnte und danach dauerte ein Build nur halb so 
lange.
Privat verwende ich PCIe-SSDs, die mindestens 2000 MB/s schreibend und 
3000 MB/s lesend schaffen (Samsung 960 Pro M.2), so das ich das Problem 
nicht zuhause habe.

von Irgendwer (Gast)


Lesenswert?

Bernd K. schrieb:
> AntiMaker schrieb:
>> Systemstart, RAM ist frei, CPU&Platten wären Idle während auf den
>> User-Login gewartet wird. Diese Warte-Zeit kann man sinnvoll nutzen,
>> indem man schonmal Sachen in den Cache prügelt, die der User nach seinem
>> Login sowieso höchstwahrscheinlich benutzt.
>
> Beispiele:
>
> e4rat (boot)
> ureadahead (boot)
> preload (user)

Es gibt sogar Betriebssysteme die das von Haus aus können:
https://de.wikipedia.org/wiki/SuperFetch

von Bernd K. (prof7bit)


Lesenswert?

Irgendwer schrieb:
> Es gibt sogar Betriebssysteme die das von Haus aus können

Definiere "von Haus aus können".

* Daß es im Repository ist und mit einem Mausklick aktiviert werden 
kann?
* Daß es per Default installiert und aktiviert ist (so wie damals zu HDD 
Zeiten ureadahead bei Ubuntu)?


Definiere "Betriebssystem"

* Der Kernel?
* Die Distribution?

BTW: Mein OT-Warnsystem meldet gerade daß wir mit 95% Wahrscheinlichkeit 
Gefahr laufen vom Thema abzuschweifen.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.